Skip to content

Commit ba07527

Browse files
authored
Merge pull request kubernetes#82640 from andyzhangx/detach-azuredisk-not-found
fix: azure disk detach failure if node not exists
2 parents 07e58a3 + d11cac9 commit ba07527

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_common.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,17 +150,23 @@ func (c *controllerCommon) AttachDisk(isManagedDisk bool, diskName, diskURI stri
150150

151151
// DetachDisk detaches a disk from host. The vhd can be identified by diskName or diskURI.
152152
func (c *controllerCommon) DetachDisk(diskName, diskURI string, nodeName types.NodeName) error {
153-
vmset, err := c.getNodeVMSet(nodeName)
154-
if err != nil {
155-
return err
156-
}
157-
158153
instanceid, err := c.cloud.InstanceID(context.TODO(), nodeName)
159154
if err != nil {
155+
if err == cloudprovider.InstanceNotFound {
156+
// if host doesn't exist, no need to detach
157+
klog.Warningf("azureDisk - failed to get azure instance id(%q), DetachDisk(%s) will assume disk is already detached",
158+
nodeName, diskURI)
159+
return nil
160+
}
160161
klog.Warningf("failed to get azure instance id (%v)", err)
161162
return fmt.Errorf("failed to get azure instance id for node %q (%v)", nodeName, err)
162163
}
163164

165+
vmset, err := c.getNodeVMSet(nodeName)
166+
if err != nil {
167+
return err
168+
}
169+
164170
klog.V(2).Infof("detach %v from node %q", diskURI, nodeName)
165171

166172
// make the lock here as small as possible

staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_common_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ func TestCommonDetachDisk(t *testing.T) {
8888
expectedErr bool
8989
}{
9090
{
91-
desc: "an error shall be returned if there's no such instance corresponding to given nodeName",
91+
desc: "error should not be returned if there's no such instance corresponding to given nodeName",
9292
nodeName: "vm1",
93-
expectedErr: true,
93+
expectedErr: false,
9494
},
9595
{
9696
desc: "no error shall be returned if there's no matching disk according to given diskName",

0 commit comments

Comments
 (0)