fix: 虚拟机漂移后设置新的hostId

This commit is contained in:
Qu Xuan
2019-11-07 21:23:27 +08:00
parent 9ff06291de
commit 9a09f2d5cc
3 changed files with 37 additions and 6 deletions
+13 -2
View File
@@ -1224,8 +1224,19 @@ func (self *SDisk) syncRemoveCloudDisk(ctx context.Context, userCred mcclient.To
if err != nil {
return err
}
_, err = iregion.GetIDiskById(self.ExternalId)
if err != nil && err != cloudprovider.ErrNotFound {
iDisk, err := iregion.GetIDiskById(self.ExternalId)
if err == nil {
if storageId := iDisk.GetIStorageId(); len(storageId) > 0 {
storage, err := db.FetchByExternalId(StorageManager, storageId)
if err == nil {
_, err = db.Update(self, func() error {
self.StorageId = storage.GetId()
return nil
})
return err
}
}
} else if err != cloudprovider.ErrNotFound {
return err
}
+14 -2
View File
@@ -2090,8 +2090,20 @@ func (self *SGuest) syncRemoveCloudVM(ctx context.Context, userCred mcclient.Tok
if err != nil {
return err
}
_, err = iregion.GetIVMById(self.ExternalId)
if err != nil && err != cloudprovider.ErrNotFound {
iVM, err := iregion.GetIVMById(self.ExternalId)
if err == nil { //漂移归位
if hostId := iVM.GetIHostId(); len(hostId) > 0 {
host, err := db.FetchByExternalId(HostManager, hostId)
if err == nil {
_, err = db.Update(self, func() error {
self.HostId = host.GetId()
self.Status = iVM.GetStatus()
return nil
})
return err
}
}
} else if err != cloudprovider.ErrNotFound {
return err
}
+10 -2
View File
@@ -87,11 +87,19 @@ func (region *SRegion) Refresh() error {
}
func (self *SRegion) GetIVMById(id string) (cloudprovider.ICloudVM, error) {
return self.GetInstance(id)
vm, err := self.GetInstance(id)
if err != nil {
return nil, err
}
return vm, nil
}
func (self *SRegion) GetIDiskById(id string) (cloudprovider.ICloudDisk, error) {
return self.GetDisk(id)
disk, err := self.GetDisk(id)
if err != nil {
return nil, err
}
return disk, nil
}
func (region *SRegion) GetIHostById(id string) (cloudprovider.ICloudHost, error) {