diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index b9430ea7ea..9e6bae0886 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -344,10 +344,13 @@ func (self *SCloudaccount) StartSyncCloudProviderInfoTask(ctx context.Context, u taskItems = append(taskItems, &cloudProviders[i]) } } + originState := self.Status + self.MarkStartSync(userCred) task, err := taskman.TaskManager.NewParallelTask(ctx, "CloudAccountSyncInfoTask", taskItems, userCred, params, "", "", nil) if err != nil { log.Errorf("CloudAccountSyncInfoTask newTask error %s", err) + self.SetStatus(userCred, originState, err.Error()) } else { task.ScheduleRun(nil) } diff --git a/pkg/compute/tasks/cloud_account_sync_task.go b/pkg/compute/tasks/cloud_account_sync_task.go index 6806cf5508..5869316d9d 100644 --- a/pkg/compute/tasks/cloud_account_sync_task.go +++ b/pkg/compute/tasks/cloud_account_sync_task.go @@ -33,15 +33,13 @@ func (self *CloudAccountSyncInfoTask) OnInit(ctx context.Context, objs []db.ISta self.SetStageFailed(ctx, "cloudprovide fail to get valid cloudaccount") return } - account.MarkStartSync(self.UserCred) } else { - account.SetStatus(self.UserCred, models.CLOUD_PROVIDER_CONNECTED, "") - self.SetStageComplete(ctx, nil) + self.SetStageFailed(ctx, "no cloudprovider for sync") return } if _, err := account.GetSubAccounts(); err != nil { - account.SetStatus(self.UserCred, models.CLOUD_PROVIDER_DISCONNECTED, "") + account.SetStatus(self.UserCred, models.CLOUD_PROVIDER_DISCONNECTED, err.Error()) self.SetStageFailed(ctx, err.Error()) return }