Skip to content

Commit

Permalink
fix: 避免创建rds备份时对rds进行一些操作 (#7355)
Browse files Browse the repository at this point in the history
Co-authored-by: Qu Xuan <quxuan@yunionyun.com>
  • Loading branch information
ioito and Qu Xuan committed Jul 28, 2020
1 parent 0b8baee commit bd6b45a
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 21 deletions.
27 changes: 14 additions & 13 deletions pkg/apis/compute/dbinstance_const.go
Original file line number Diff line number Diff line change
Expand Up @@ -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" //调整配置失败
Expand Down
9 changes: 7 additions & 2 deletions pkg/compute/models/dbinstance_backups.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
1 change: 1 addition & 0 deletions pkg/compute/regiondrivers/aliyun.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions pkg/compute/regiondrivers/google.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 5 additions & 1 deletion pkg/compute/regiondrivers/managedvirtual.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/compute/tasks/dbinstance_backup_create_task.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())
}

Expand All @@ -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) {
Expand Down
9 changes: 7 additions & 2 deletions pkg/multicloud/google/dbinstance.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions pkg/multicloud/google/zone.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit bd6b45a

Please sign in to comment.