Fix for detach volume when node is not present/ powered off

pull/6/head
Balu Dontu 2017-02-07 13:36:36 -08:00
parent d82e51edc5
commit 9fe3cf9ec3
1 changed files with 12 additions and 25 deletions

View File

@ -924,11 +924,12 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b
} }
if !nodeExist { if !nodeExist {
glog.Warningf( glog.Errorf("DiskIsAttached failed to determine whether disk %q is still attached: node %q does not exist",
"Node %q does not exist. DiskIsAttached will assume vmdk %q is not attached to it.", volPath,
vSphereInstance, vSphereInstance)
volPath) return false, fmt.Errorf("DiskIsAttached failed to determine whether disk %q is still attached: node %q does not exist",
return false, nil volPath,
vSphereInstance)
} }
// Get VM device list // Get VM device list
@ -975,11 +976,12 @@ func (vs *VSphere) DisksAreAttached(volPaths []string, nodeName k8stypes.NodeNam
} }
if !nodeExist { if !nodeExist {
glog.Warningf( glog.Errorf("DisksAreAttached failed to determine whether disks %v are still attached: node %q does not exist",
"Node %q does not exist. DisksAreAttached will assume vmdk %v are not attached to it.", volPaths,
vSphereInstance, vSphereInstance)
volPaths) return attached, fmt.Errorf("DisksAreAttached failed to determine whether disks %v are still attached: node %q does not exist",
return attached, nil volPaths,
vSphereInstance)
} }
// Get VM device list // Get VM device list
@ -1145,21 +1147,6 @@ func (vs *VSphere) DetachDisk(volPath string, nodeName k8stypes.NodeName) error
vSphereInstance = nodeNameToVMName(nodeName) vSphereInstance = nodeNameToVMName(nodeName)
} }
nodeExist, err := vs.NodeExists(vs.client, nodeName)
if err != nil {
glog.Errorf("Failed to check whether node exist. err: %s.", err)
return err
}
if !nodeExist {
glog.Warningf(
"Node %q does not exist. DetachDisk will assume vmdk %q is not attached to it.",
nodeName,
volPath)
return nil
}
vm, vmDevices, _, dc, err := getVirtualMachineDevices(ctx, vs.cfg, vs.client, vSphereInstance) vm, vmDevices, _, dc, err := getVirtualMachineDevices(ctx, vs.cfg, vs.client, vSphereInstance)
if err != nil { if err != nil {
return err return err