bugfix: 避免openstack磁盘扩容成功后未能挂载到虚拟机上

This commit is contained in:
ioito
2019-08-21 15:16:33 +08:00
parent d9a6621155
commit 1058e72597
+21 -6
View File
@@ -175,25 +175,40 @@ func (disk *SDisk) Delete(ctx context.Context) error {
return cloudprovider.WaitDeleted(disk, 10*time.Second, 8*time.Minute)
}
func (disk *SDisk) attachInstances(instanceIds []string) {
for _, instanceId := range instanceIds {
if err := disk.storage.zone.region.AttachDisk(instanceId, disk.ID); err != nil {
log.Errorf("recover attach disk %s => instance %s error: %v", disk.ID, instanceId, err)
func (disk *SDisk) attachInstances(attachments []Attachment) error {
for _, attachment := range attachments {
startTime := time.Now()
for time.Now().Sub(startTime) < 5*time.Minute {
if err := disk.storage.zone.region.AttachDisk(attachment.ServerID, disk.ID); err != nil {
if strings.Contains(err.Error(), "status must be available or downloading") {
time.Sleep(time.Second * 10)
continue
}
log.Errorf("recover attach disk %s => instance %s error: %v", disk.ID, attachment.ServerID, err)
return err
} else {
return nil
}
}
}
return nil
}
func (disk *SDisk) Resize(ctx context.Context, sizeMb int64) error {
instanceIds := []string{}
defer disk.attachInstances(instanceIds)
for _, attachement := range disk.Attachments {
if err := disk.storage.zone.region.DetachDisk(attachement.ServerID, disk.ID); err != nil {
return err
}
instanceIds = append(instanceIds, attachement.ServerID)
}
return disk.storage.zone.region.ResizeDisk(disk.ID, sizeMb)
err := disk.storage.zone.region.ResizeDisk(disk.ID, sizeMb)
if err != nil {
disk.attachInstances(disk.Attachments)
return err
}
return disk.attachInstances(disk.Attachments)
}
func (disk *SDisk) GetName() string {