Merge pull request #12728 from zexi/automated-cherry-pick-of-#12724-upstream-release-3.7

Automated cherry pick of #12724: fix(region): adjust the logic of rebuild guest
This commit is contained in:
Zexi Li
2021-11-23 10:14:56 +08:00
committed by GitHub
+21 -10
View File
@@ -228,7 +228,10 @@ func (self *SOpenStackGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.C
if err != nil {
return "", errors.Wrap(err, "guest.GetSystemDisk(")
}
storage, _ := sysDisk.GetStorage()
storage, err := sysDisk.GetStorage()
if err != nil {
return "", errors.Wrap(err, "sysDisk.GetStorage")
}
if storage.StorageType == api.STORAGE_OPENSTACK_NOVA { //不通过镜像创建磁盘的机器
conf := cloudprovider.SManagedVMRebuildRootConfig{
Account: desc.Account,
@@ -256,11 +259,10 @@ func (self *SOpenStackGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.C
detachDisks = append(detachDisks, iDisk.GetGlobalId())
}
}
defer self.attachDisks(ctx, ihost, instanceId, detachDisks)
eip, err := guest.GetElasticIp()
if err == nil && eip != nil {
ieip, err := eip.GetIEip()
var ieip cloudprovider.ICloudEIP
if eip, err := guest.GetElasticIp(); eip != nil {
ieip, err = eip.GetIEip()
if err != nil {
return "", errors.Wrap(err, "eip.GetIEip")
}
@@ -268,12 +270,10 @@ func (self *SOpenStackGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.C
if err != nil {
return "", errors.Wrap(err, "ieip.Dissociate")
}
conf := &cloudprovider.AssociateConfig{
InstanceId: instanceId,
AssociateType: api.EIP_ASSOCIATE_TYPE_SERVER,
}
defer ieip.Associate(conf)
} else if err != nil {
return "", err
}
err = iVM.DeleteVM(ctx)
if err != nil {
return "", errors.Wrap(err, "iVM.DeleteVM")
@@ -299,6 +299,17 @@ func (self *SOpenStackGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.C
}
iVM.StopVM(ctx, opts)
if ieip != nil {
conf := &cloudprovider.AssociateConfig{
InstanceId: instanceId,
AssociateType: api.EIP_ASSOCIATE_TYPE_SERVER,
}
if err = ieip.Associate(conf); err != nil {
return "", errors.Wrap(err, "eip.Associate")
}
}
self.attachDisks(ctx, ihost, instanceId, detachDisks)
iDisks, err = iVM.GetIDisks()
if err != nil {
return "", errors.Wrapf(err, "iVM.GetIDisks.AfterCreated")