Merge pull request #42422 from vmware/fix-42399.kerneltime

Automatic merge from submit-queue

Fix adding disks to more than one scsi adapter. Fixes #42399

**What this PR does / why we need it**: Allows a single node to use more than 16 disks.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #42399

**Special notes for your reviewer**: 

**Release note**:

```release-note
Fix adding disks to more than one scsi adapter.
```
pull/6/head
Kubernetes Submit Queue 2017-03-22 19:23:19 -07:00 committed by GitHub
commit a84f100faa
1 changed files with 11 additions and 10 deletions

View File

@ -764,7 +764,15 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, nodeName k8stypes.NodeName) (di
return "", "", err return "", "", err
} }
scsiController = getSCSIController(vmDevices, vs.cfg.Disk.SCSIControllerType) // Get VM device list
_, vmDevices, _, err := getVirtualMachineDevices(ctx, vs.cfg, vs.client, vSphereInstance)
if err != nil {
glog.Errorf("cannot get vmDevices for VM err=%s", err)
return "", "", fmt.Errorf("cannot get vmDevices for VM err=%s", err)
}
scsiControllersOfRequiredType := getSCSIControllersOfType(vmDevices, diskControllerType)
scsiController := getAvailableSCSIController(scsiControllersOfRequiredType)
if scsiController == nil { if scsiController == nil {
glog.Errorf("cannot find SCSI controller in VM") glog.Errorf("cannot find SCSI controller in VM")
// attempt clean up of scsi controller // attempt clean up of scsi controller
@ -1024,7 +1032,7 @@ func (vs *VSphere) DisksAreAttached(volPaths []string, nodeName k8stypes.NodeNam
} }
func checkDiskAttached(volPath string, vmdevices object.VirtualDeviceList, dc *object.Datacenter, client *govmomi.Client) (bool, error) { func checkDiskAttached(volPath string, vmdevices object.VirtualDeviceList, dc *object.Datacenter, client *govmomi.Client) (bool, error) {
virtualDiskControllerKey, err := getVirtualDiskControllerKey(volPath, vmdevices, dc, client) _, err := getVirtualDiskControllerKey(volPath, vmdevices, dc, client)
if err != nil { if err != nil {
if err == ErrNoDevicesFound { if err == ErrNoDevicesFound {
return false, nil return false, nil
@ -1032,15 +1040,8 @@ func checkDiskAttached(volPath string, vmdevices object.VirtualDeviceList, dc *o
glog.Errorf("Failed to check whether disk is attached. err: %s", err) glog.Errorf("Failed to check whether disk is attached. err: %s", err)
return false, err return false, err
} }
for _, controllerType := range supportedSCSIControllerType {
controllerkey, _ := getControllerKey(controllerType, vmdevices)
if controllerkey == virtualDiskControllerKey {
return true, nil return true, nil
} }
}
return false, ErrNonSupportedControllerType
}
// Returns the object key that denotes the controller object to which vmdk is attached. // Returns the object key that denotes the controller object to which vmdk is attached.
func getVirtualDiskControllerKey(volPath string, vmDevices object.VirtualDeviceList, dc *object.Datacenter, client *govmomi.Client) (int32, error) { func getVirtualDiskControllerKey(volPath string, vmDevices object.VirtualDeviceList, dc *object.Datacenter, client *govmomi.Client) (int32, error) {