func (plugin *cinderPlugin) Init(host volume.VolumeHost) error { plugin.host = host plugin.volumeLocks = keymutex.NewKeyMutex() return nil }
"k8s.io/kubernetes/pkg/util/sets" "k8s.io/kubernetes/pkg/volume" ) const ( diskPartitionSuffix = "" diskXVDPath = "/dev/xvd" diskXVDPattern = "/dev/xvd*" maxChecks = 60 maxRetries = 10 checkSleepDuration = time.Second errorSleepDuration = 5 * time.Second ) // Singleton key mutex for keeping attach/detach operations for the same PD atomic var attachDetachMutex = keymutex.NewKeyMutex() type AWSDiskUtil struct{} // Attaches a disk to the current kubelet. // Mounts the disk to it's global path. func (diskUtil *AWSDiskUtil) AttachAndMountDisk(b *awsElasticBlockStoreBuilder, globalPDPath string) error { glog.V(5).Infof("AttachAndMountDisk(...) called for PD %q. Will block for existing operations, if any. (globalPDPath=%q)\r\n", b.volumeID, globalPDPath) // Block execution until any pending detach operations for this PD have completed attachDetachMutex.LockKey(b.volumeID) defer attachDetachMutex.UnlockKey(b.volumeID) glog.V(5).Infof("AttachAndMountDisk(...) called for PD %q. Awake and ready to execute. (globalPDPath=%q)\r\n", b.volumeID, globalPDPath) xvdBefore, err := filepath.Glob(diskXVDPattern)
type azureDiskAttacher struct { host volume.VolumeHost azureProvider azureCloudProvider } var _ volume.Attacher = &azureDiskAttacher{} var _ volume.AttachableVolumePlugin = &azureDataDiskPlugin{} const ( checkSleepDuration = time.Second ) // acquire lock to get an lun number var getLunMutex = keymutex.NewKeyMutex() // NewAttacher initializes an Attacher func (plugin *azureDataDiskPlugin) NewAttacher() (volume.Attacher, error) { azure, err := getAzureCloudProvider(plugin.host.GetCloudProvider()) if err != nil { glog.V(4).Infof("failed to get azure provider") return nil, err } return &azureDiskAttacher{ host: plugin.host, azureProvider: azure, }, nil }
func (plugin *azureDataDiskPlugin) Init(host volume.VolumeHost) error { plugin.host = host plugin.volumeLocks = keymutex.NewKeyMutex() return nil }