fix: 避免创建rds备份时对rds进行一些操作 (#7354)

Co-authored-by: Qu Xuan <quxuan@yunionyun.com>
This commit is contained in:
屈轩
2020-07-28 18:46:57 +08:00
committed by GitHub
co-authored by Qu Xuan
parent 2fb32d1faf
commit 78a68bffd1
8 changed files with 46 additions and 21 deletions
+14 -13
View File
@@ -16,19 +16,20 @@ package compute
const (
//实例状态
DBINSTANCE_DEPLOYING = "deploying" //部署中
DBINSTANCE_RUNNING = "running" //运行中
DBINSTANCE_REBOOTING = "rebooting" //重启中
DBINSTANCE_MIGRATING = "migrating" //迁移中
DBINSTANCE_BACKING_UP = "backing_up" //备份中
DBINSTANCE_RESTORING = "restoring" //备份恢复中
DBINSTANCE_RESTORE_FAILED = "restore_failed"
DBINSTANCE_IMPORTING = "importing" //数据导入中
DBINSTANCE_CLONING = "cloning" //克隆
DBINSTANCE_DELETING = "deleting" //删除
DBINSTANCE_DELETE_FAILED = "delete_failed" //删除失败
DBINSTANCE_MAINTENANCE = "maintenance" //维护中
DBINSTANCE_UNKNOWN = "unknown"
DBINSTANCE_DEPLOYING = "deploying" //部署中
DBINSTANCE_RUNNING = "running" //运行中
DBINSTANCE_REBOOTING = "rebooting" //重启中
DBINSTANCE_MIGRATING = "migrating" //迁移中
DBINSTANCE_BACKING_UP = "backing_up" //备份中
DBINSTANCE_BACKING_UP_FAILED = "backing_up_failed" //备份失败
DBINSTANCE_RESTORING = "restoring" //备份恢复中
DBINSTANCE_RESTORE_FAILED = "restore_failed"
DBINSTANCE_IMPORTING = "importing" //数据导入
DBINSTANCE_CLONING = "cloning" //克隆
DBINSTANCE_DELETING = "deleting" //删除
DBINSTANCE_DELETE_FAILED = "delete_failed" //删除失败
DBINSTANCE_MAINTENANCE = "maintenance" //维护中
DBINSTANCE_UNKNOWN = "unknown"
DBINSTANCE_CHANGE_CONFIG = "change_config" //调整配置
DBINSTANCE_CHANGE_CONFIG_FAILED = "change_config_failed" //调整配置失败
+7 -2
View File
@@ -259,11 +259,16 @@ func (self *SDBInstanceBackup) PostCreate(ctx context.Context, userCred mcclient
}
func (self *SDBInstanceBackup) StartDBInstanceBackupCreateTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error {
self.SetStatus(userCred, api.DBINSTANCE_BACKUP_CREATING, "")
task, err := taskman.TaskManager.NewTask(ctx, "DBInstanceBackupCreateTask", self, userCred, data, parentTaskId, "", nil)
if err != nil {
return err
return errors.Wrap(err, "NewTask")
}
instance, err := self.GetDBInstance()
if err != nil {
return errors.Wrap(err, "GetDBInstance")
}
instance.SetStatus(userCred, api.DBINSTANCE_BACKING_UP, "")
self.SetStatus(userCred, api.DBINSTANCE_BACKUP_CREATING, "")
task.ScheduleRun(nil)
return nil
}
+1
View File
@@ -1109,6 +1109,7 @@ func (self *SAliyunRegionDriver) RequestCreateDBInstanceBackup(ctx context.Conte
}
result := models.DBInstanceBackupManager.SyncDBInstanceBackups(ctx, userCred, backup.GetCloudprovider(), instance, backup.GetRegion(), backups)
log.Infof("SyncDBInstanceBackups for dbinstance %s(%s) result: %s", instance.Name, instance.Id, result.Result())
instance.SetStatus(userCred, api.DBINSTANCE_RUNNING, "")
return nil, nil
})
return nil
+1
View File
@@ -265,6 +265,7 @@ func (self *SGoogleRegionDriver) RequestCreateDBInstanceBackup(ctx context.Conte
result := models.DBInstanceBackupManager.SyncDBInstanceBackups(ctx, userCred, backup.GetCloudprovider(), instance, backup.GetRegion(), backups)
log.Infof("SyncDBInstanceBackups for dbinstance %s(%s) result: %s", instance.Name, instance.Id, result.Result())
instance.SetStatus(userCred, api.DBINSTANCE_RUNNING, "")
return nil, nil
})
return nil
+5 -1
View File
@@ -2326,8 +2326,12 @@ func (self *SManagedVirtualizationRegionDriver) RequestCreateDBInstanceBackup(ct
backup.BackupSizeMb = iBackup.GetBackupSizeMb()
return nil
})
if err != nil {
return nil, errors.Wrap(err, "db.Update")
}
return nil, err
instance.SetStatus(userCred, api.DBINSTANCE_RUNNING, "")
return nil, nil
})
return nil
}
@@ -40,6 +40,10 @@ func (self *DBInstanceBackupCreateTask) taskFailed(ctx context.Context, backup *
backup.SetStatus(self.UserCred, api.DBINSTANCE_BACKUP_CREATE_FAILED, err.Error())
db.OpsLog.LogEvent(backup, db.ACT_CREATE, err.Error(), self.GetUserCred())
logclient.AddActionLogWithStartable(self, backup, logclient.ACT_CREATE, err.Error(), self.UserCred, false)
instance, _ := backup.GetDBInstance()
if instance != nil {
instance.SetStatus(self.UserCred, api.DBINSTANCE_BACKING_UP_FAILED, err.Error())
}
self.SetStageFailed(ctx, err.Error())
}
@@ -56,7 +60,11 @@ func (self *DBInstanceBackupCreateTask) CreateDBInstanceBackup(ctx context.Conte
}
self.SetStage("OnCreateDBInstanceBackupComplete", nil)
instance.GetRegion().GetDriver().RequestCreateDBInstanceBackup(ctx, self.UserCred, instance, backup, self)
err = instance.GetRegion().GetDriver().RequestCreateDBInstanceBackup(ctx, self.UserCred, instance, backup, self)
if err != nil {
self.taskFailed(ctx, backup, errors.Wrap(err, "RequestCreateDBInstanceBackup"))
return
}
}
func (self *DBInstanceBackupCreateTask) OnCreateDBInstanceBackupComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
+7 -2
View File
@@ -359,12 +359,17 @@ func (rds *SDBInstance) GetInternalConnectionStr() string {
}
func (rds *SDBInstance) GetZone1Id() string {
zone, err := rds.region.GetZone(rds.GceZone)
zones, err := rds.region.GetIZones()
if err != nil {
log.Errorf("failed to found rds %s zone %s", rds.Name, rds.GceZone)
return ""
}
return zone.GetGlobalId()
for _, zone := range zones {
if zone.GetId() == rds.GceZone {
return zone.GetGlobalId()
}
}
return ""
}
func (rds *SDBInstance) GetZone2Id() string {
+2 -2
View File
@@ -56,11 +56,11 @@ func (zone *SZone) GetName() string {
}
func (zone *SZone) GetGlobalId() string {
return zone.GetId()
return fmt.Sprintf("%s/%s", zone.region.GetGlobalId(), zone.Name)
}
func (zone *SZone) GetId() string {
return fmt.Sprintf("%s/%s", zone.region.GetGlobalId(), zone.Name)
return zone.Name
}
func (zone *SZone) GetIHostById(hostId string) (cloudprovider.ICloudHost, error) {