Select Git revision
ipasudorule.py
provisioner.go 20.51 KiB
package main
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"os"
"path/filepath"
"reflect"
"strconv"
"strings"
"sync"
"time"
"github.com/Sirupsen/logrus"
"github.com/pkg/errors"
v1 "k8s.io/api/core/v1"
k8serror "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
pvController "sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller"
)
type ActionType string
const (
ActionTypeCreate = "create"
ActionTypeDelete = "delete"
)
const (
KeyNode = "kubernetes.io/hostname"
NodeDefaultNonListedNodes = "DEFAULT_PATH_FOR_NON_LISTED_NODES"
helperScriptDir = "/script"
helperDataVolName = "data"
helperScriptVolName = "script"
envVolDir = "VOL_DIR"
envVolMode = "VOL_MODE"
envVolSize = "VOL_SIZE_BYTES"
)
const (
defaultCmdTimeoutSeconds = 120
defaultVolumeType = "hostPath"
)
const (
nodeNameAnnotationKey = "local.path.provisioner/selected-node"
)
var (
ConfigFileCheckInterval = 30 * time.Second
HelperPodNameMaxLength = 128
)
type LocalPathProvisioner struct {
ctx context.Context
kubeClient *clientset.Clientset
namespace string
helperImage string
serviceAccountName string