diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index fb606c96ef..39f4c3e9d1 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -941,16 +941,14 @@ func (self *SCloudaccount) importSubAccount(ctx context.Context, userCred mcclie return nil, isNew, cloudprovider.ErrDuplicateId } if providerCount == 1 { - providerObj, err := db.NewModelObject(CloudproviderManager) - if err != nil { - return nil, isNew, err - } - provider := providerObj.(*SCloudprovider) + provider := &SCloudprovider{} + provider.SetModelManager(CloudproviderManager, provider) err = q.First(provider) if err != nil { - return nil, isNew, err + return nil, isNew, errors.Wrapf(err, "q.First") } provider.markProviderConnected(ctx, userCred, subAccount.HealthStatus) + provider.updateName(ctx, userCred, subAccount.Name) return provider, isNew, nil } // not found, create a new cloudprovider diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index b8af6ac454..235c413e0d 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -1347,6 +1347,20 @@ func (provider *SCloudprovider) markProviderDisconnected(ctx context.Context, us return provider.ClearSchedDescCache() } +func (self *SCloudprovider) updateName(ctx context.Context, userCred mcclient.TokenCredential, name string) error { + if self.Name != name { + diff, err := db.Update(self, func() error { + self.Name = name + return nil + }) + if err != nil { + return errors.Wrapf(err, "db.Update") + } + db.OpsLog.LogEvent(self, db.ACT_UPDATE, diff, userCred) + } + return nil +} + func (provider *SCloudprovider) markProviderConnected(ctx context.Context, userCred mcclient.TokenCredential, healthStatus string) error { if healthStatus != provider.HealthStatus { diff, err := db.Update(provider, func() error {