in sharedlibraries/gce/gce.go [379:397]
func (g *GCE) DetachDisk(ctx context.Context, instanceName, project, dataDiskZone, dataDiskName, dataDiskDeviceName string) error {
log.CtxLogger(ctx).Infow("Detatching disk", "diskName", dataDiskName, "deviceName", dataDiskDeviceName)
op, err := g.service.Instances.DetachDisk(project, dataDiskZone, instanceName, dataDiskDeviceName).Do()
if err != nil {
return fmt.Errorf("failed to detach old data disk: %v", err)
}
if err := g.WaitForDiskOpCompletionWithRetry(ctx, op, project, dataDiskZone); err != nil {
return fmt.Errorf("detach data disk operation failed: %v", err)
}
_, ok, err := g.DiskAttachedToInstance(project, dataDiskZone, instanceName, dataDiskName)
if err != nil {
return fmt.Errorf("failed to check if disk %v is still attached to the instance", dataDiskName)
}
if ok {
return fmt.Errorf("Disk %v is still attached to the instance", dataDiskName)
}
return nil
}