fix(region): sync resource owner with auto-create-project options (#19319)

This commit is contained in:
屈轩
2024-01-26 11:14:10 +08:00
committed by GitHub
parent cd7b1f2bb2
commit a4a1794c78
30 changed files with 87 additions and 72 deletions
+1 -1
View File
@@ -295,7 +295,7 @@ func (self *SCloudregion) newFromCloudApp(ctx context.Context, userCred mcclient
if result.IsError() {
return &app, errors.Wrap(result.AllError(), "unable to SyncAppEnvironments")
}
SyncCloudProject(ctx, userCred, &app, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, &app, provider.GetOwnerId(), ext, provider)
syncVirtualResourceMetadata(ctx, userCred, &app, ext, false)
db.OpsLog.LogEvent(&app, db.ACT_CREATE, app.GetShortDesc(ctx), userCred)
+1 -1
View File
@@ -180,7 +180,7 @@ func (a *SApp) newFromCloudAppEnvironment(ctx context.Context, userCred mcclient
return nil, errors.Wrapf(err, "newFromCloudAppEnvironment.Insert")
}
SyncCloudProject(ctx, userCred, &appEnvironment, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, &appEnvironment, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(&appEnvironment, db.ACT_CREATE, appEnvironment.GetShortDesc(ctx), userCred)
return nil, nil
}
+2 -2
View File
@@ -238,7 +238,7 @@ func (manager *SBucketManager) newFromCloudBucket(
return nil, err
}
SyncCloudProject(ctx, userCred, &bucket, provider.GetOwnerId(), extBucket, provider.Id)
SyncCloudProject(ctx, userCred, &bucket, provider.GetOwnerId(), extBucket, provider)
notifyclient.EventNotify(ctx, userCred, notifyclient.SEventNotifyParam{
Obj: &bucket,
Action: notifyclient.ActionSyncCreate,
@@ -335,7 +335,7 @@ func (bucket *SBucket) syncWithCloudBucket(
}
if provider != nil {
SyncCloudProject(ctx, userCred, bucket, provider.GetOwnerId(), extBucket, provider.Id)
SyncCloudProject(ctx, userCred, bucket, provider.GetOwnerId(), extBucket, provider)
bucket.SyncShareState(ctx, userCred, provider.getAccountShareInfo())
}
+11 -5
View File
@@ -626,7 +626,7 @@ func (self *SCachedimage) canDeleteLastCache() bool {
return false
}
func (self *SCachedimage) syncWithCloudImage(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, image cloudprovider.ICloudImage, managerId string) error {
func (self *SCachedimage) syncWithCloudImage(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, image cloudprovider.ICloudImage, provider *SCloudprovider) error {
diff, err := db.UpdateWithLock(ctx, self, func() error {
if options.Options.EnableSyncName {
newName, err := db.GenerateAlterName(self, image.GetName())
@@ -651,11 +651,13 @@ func (self *SCachedimage) syncWithCloudImage(ctx context.Context, userCred mccli
})
db.OpsLog.LogSyncUpdate(self, diff, userCred)
SyncCloudProject(ctx, userCred, self, ownerId, image, managerId)
if provider != nil {
SyncCloudProject(ctx, userCred, self, ownerId, image, provider)
}
return err
}
func (manager *SCachedimageManager) newFromCloudImage(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, image cloudprovider.ICloudImage, managerId string) (*SCachedimage, error) {
func (manager *SCachedimageManager) newFromCloudImage(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, image cloudprovider.ICloudImage, provider *SCloudprovider) (*SCachedimage, error) {
cachedImage := SCachedimage{}
cachedImage.SetModelManager(manager, &cachedImage)
@@ -667,6 +669,8 @@ func (manager *SCachedimageManager) newFromCloudImage(ctx context.Context, userC
cachedImage.ImageType = string(image.GetImageType())
cachedImage.ExternalId = image.GetGlobalId()
cachedImage.Status = image.GetStatus()
cachedImage.ProjectId = ownerId.GetProjectId()
cachedImage.DomainId = ownerId.GetProjectDomainId()
cachedImage.PublicScope = string(image.GetPublicScope())
switch image.GetPublicScope() {
case rbacscope.ScopeNone:
@@ -689,7 +693,9 @@ func (manager *SCachedimageManager) newFromCloudImage(ctx context.Context, userC
return nil, err
}
SyncCloudProject(ctx, userCred, &cachedImage, ownerId, image, managerId)
if provider != nil {
SyncCloudProject(ctx, userCred, &cachedImage, ownerId, image, provider)
}
return &cachedImage, nil
}
@@ -723,7 +729,7 @@ func (image *SCachedimage) requestRefreshExternalImage(ctx context.Context, user
log.Errorf("iCache.GetIImageById fail %s", err)
return nil, err
}
err = image.syncWithCloudImage(ctx, userCred, nil, iImage, "")
err = image.syncWithCloudImage(ctx, userCred, nil, iImage, nil)
if err != nil {
log.Errorf("image.syncWithCloudImage fail %s", err)
return nil, err
+2 -2
View File
@@ -291,7 +291,7 @@ func (self *SCDNDomain) SyncWithCloudCDNDomain(ctx context.Context, userCred mcc
}
if provider := self.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, self.ManagerId)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
}
return nil
@@ -323,7 +323,7 @@ func (self *SCloudprovider) newFromCloudCDNDomain(ctx context.Context, userCred
}
syncVirtualResourceMetadata(ctx, userCred, &domain, ext, false)
SyncCloudProject(ctx, userCred, &domain, self.GetOwnerId(), ext, self.Id)
SyncCloudProject(ctx, userCred, &domain, self.GetOwnerId(), ext, self)
db.OpsLog.LogEvent(&domain, db.ACT_CREATE, domain.GetShortDesc(ctx), userCred)
notifyclient.EventNotify(ctx, userCred, notifyclient.SEventNotifyParam{
+8 -13
View File
@@ -2570,13 +2570,12 @@ func (manager *SCloudproviderregionManager) initAllRecords() {
}
}
func SyncCloudProject(ctx context.Context, userCred mcclient.TokenCredential, model db.IVirtualModel, syncOwnerId mcclient.IIdentityProvider, extModel cloudprovider.IVirtualResource, managerId string) {
func SyncCloudProject(ctx context.Context, userCred mcclient.TokenCredential, model db.IVirtualModel, syncOwnerId mcclient.IIdentityProvider, extModel cloudprovider.IVirtualResource, manager *SCloudprovider) {
account, err := manager.GetCloudaccount()
if err != nil {
return
}
newOwnerId, err := func() (mcclient.IIdentityProvider, error) {
_manager, err := CloudproviderManager.FetchById(managerId)
if err != nil {
return nil, errors.Wrapf(err, "CloudproviderManager.FetchById(%s)", managerId)
}
manager := _manager.(*SCloudprovider)
rm, err := manager.GetProjectMapping()
if err != nil {
if errors.Cause(err) == cloudprovider.ErrNotFound {
@@ -2584,10 +2583,6 @@ func SyncCloudProject(ctx context.Context, userCred mcclient.TokenCredential, mo
}
return nil, errors.Wrapf(err, "GetProjectMapping")
}
account, err := manager.GetCloudaccount()
if err != nil {
return nil, errors.Wrapf(err, "GetCloudaccount")
}
if rm != nil && rm.Enabled.Bool() && rm.IsNeedResourceSync() {
model.SetProjectSrc(apis.OWNER_SOURCE_CLOUD)
extTags, err := extModel.GetTags()
@@ -2616,8 +2611,8 @@ func SyncCloudProject(ctx context.Context, userCred mcclient.TokenCredential, mo
if err != nil {
log.Errorf("try sync project for %s %s by tags error: %v", model.Keyword(), model.GetName(), err)
}
if extProjectId := extModel.GetProjectId(); len(extProjectId) > 0 && newOwnerId == nil {
extProject, err := ExternalProjectManager.GetProject(extProjectId, managerId)
if extProjectId := extModel.GetProjectId(); len(extProjectId) > 0 && account.AutoCreateProject && newOwnerId == nil {
extProject, err := ExternalProjectManager.GetProject(extProjectId, manager.Id)
if err != nil {
log.Errorf("sync project for %s %s error: %v", model.Keyword(), model.GetName(), err)
} else if len(extProject.ProjectId) > 0 {
@@ -2628,7 +2623,7 @@ func SyncCloudProject(ctx context.Context, userCred mcclient.TokenCredential, mo
newOwnerId = syncOwnerId
}
if newOwnerId == nil {
newOwnerId = userCred
newOwnerId = manager.GetOwnerId()
}
model.SyncCloudProjectId(userCred, newOwnerId)
}
+2 -2
View File
@@ -484,7 +484,7 @@ func (self *SDBInstanceBackup) SyncWithCloudDBInstanceBackup(
}
if len(self.ProjectId) == 0 {
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), extBackup, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), extBackup, provider)
}
return nil
@@ -543,7 +543,7 @@ func (manager *SDBInstanceBackupManager) newFromCloudDBInstanceBackup(
}
if len(backup.ProjectId) == 0 {
SyncCloudProject(ctx, userCred, &backup, provider.GetOwnerId(), extBackup, provider.Id)
SyncCloudProject(ctx, userCred, &backup, provider.GetOwnerId(), extBackup, provider)
}
return nil
+2 -2
View File
@@ -1761,7 +1761,7 @@ func (self *SDBInstance) SyncWithCloudDBInstance(ctx context.Context, userCred m
if account := self.GetCloudaccount(); account != nil {
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogSyncUpdate(self, diff, userCred)
if len(diff) > 0 {
notifyclient.EventNotify(ctx, userCred, notifyclient.SEventNotifyParam{
@@ -1858,7 +1858,7 @@ func (manager *SDBInstanceManager) newFromCloudDBInstance(ctx context.Context, u
}
syncVirtualResourceMetadata(ctx, userCred, &instance, extInstance, false)
SyncCloudProject(ctx, userCred, &instance, provider.GetOwnerId(), extInstance, provider.Id)
SyncCloudProject(ctx, userCred, &instance, provider.GetOwnerId(), extInstance, provider)
db.OpsLog.LogEvent(&instance, db.ACT_CREATE, instance.GetShortDesc(ctx), userCred)
+6 -2
View File
@@ -1719,7 +1719,9 @@ func (self *SDisk) syncWithCloudDisk(ctx context.Context, userCred mcclient.Toke
}
if len(guests) == 0 {
SyncCloudProject(ctx, userCred, self, syncOwnerId, extDisk, storage.ManagerId)
if provider := storage.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, self, syncOwnerId, extDisk, provider)
}
} else {
self.SyncCloudProjectId(userCred, guests[0].GetOwnerId())
}
@@ -1785,7 +1787,9 @@ func (manager *SDiskManager) newFromCloudDisk(ctx context.Context, userCred mccl
syncVirtualResourceMetadata(ctx, userCred, &disk, extDisk, false)
SyncCloudProject(ctx, userCred, &disk, syncOwnerId, extDisk, storage.ManagerId)
if provider := storage.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, &disk, syncOwnerId, extDisk, provider)
}
db.OpsLog.LogEvent(&disk, db.ACT_CREATE, disk.GetShortDesc(ctx), userCred)
+2 -2
View File
@@ -512,7 +512,7 @@ func (self *SDnsZone) syncWithDnsZone(ctx context.Context, userCred mcclient.Tok
if account, _ := provider.GetCloudaccount(); account != nil {
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, self.ManagerId)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
}
return nil
@@ -534,7 +534,7 @@ func (self *SCloudprovider) newFromCloudDnsZone(ctx context.Context, userCred mc
}
syncVirtualResourceMetadata(ctx, userCred, zone, ext, false)
SyncCloudProject(ctx, userCred, zone, self.GetOwnerId(), ext, self.Id)
SyncCloudProject(ctx, userCred, zone, self.GetOwnerId(), ext, self)
return zone, nil
}
+2 -2
View File
@@ -512,7 +512,7 @@ func (self *SElasticSearch) SyncWithCloudElasticSearch(ctx context.Context, user
}
if provider := self.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
}
db.OpsLog.LogSyncUpdate(self, diff, userCred)
return nil
@@ -615,7 +615,7 @@ func (self *SCloudregion) newFromCloudElasticSearch(ctx context.Context, userCre
// 同步标签
syncVirtualResourceMetadata(ctx, userCred, &es, ext, false)
// 同步项目归属
SyncCloudProject(ctx, userCred, &es, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, &es, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(&es, db.ACT_CREATE, es.GetShortDesc(ctx), userCred)
+2 -2
View File
@@ -650,7 +650,7 @@ func (self *SElasticcache) SyncWithCloudElasticcache(ctx context.Context, userCr
if err != nil {
return errors.Wrapf(err, "syncWithCloudElasticcache.Update")
}
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), extInstance, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), extInstance, provider)
if account := self.GetCloudaccount(); account != nil {
syncVirtualResourceMetadata(ctx, userCred, self, extInstance, account.ReadOnly)
}
@@ -779,7 +779,7 @@ func (self *SCloudregion) newFromCloudElasticcache(ctx context.Context, userCred
return nil, errors.Wrapf(err, "newFromCloudElasticcache.Insert")
}
SyncCloudProject(ctx, userCred, &instance, provider.GetOwnerId(), extInstance, provider.Id)
SyncCloudProject(ctx, userCred, &instance, provider.GetOwnerId(), extInstance, provider)
syncVirtualResourceMetadata(ctx, userCred, &instance, extInstance, false)
db.OpsLog.LogEvent(&instance, db.ACT_CREATE, instance.GetShortDesc(ctx), userCred)
+2 -2
View File
@@ -584,7 +584,7 @@ func (self *SElasticip) SyncWithCloudEip(ctx context.Context, userCred mcclient.
if res := self.GetAssociateResource(); res != nil && len(res.GetOwnerId().GetProjectId()) > 0 {
self.SyncCloudProjectId(userCred, res.GetOwnerId())
} else {
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, self.ManagerId)
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, provider)
}
return nil
@@ -650,7 +650,7 @@ func (manager *SElasticipManager) newFromCloudEip(ctx context.Context, userCred
if res := eip.GetAssociateResource(); res != nil && len(res.GetOwnerId().GetProjectId()) > 0 {
eip.SyncCloudProjectId(userCred, res.GetOwnerId())
} else {
SyncCloudProject(ctx, userCred, &eip, syncOwnerId, extEip, eip.ManagerId)
SyncCloudProject(ctx, userCred, &eip, syncOwnerId, extEip, provider)
}
db.OpsLog.LogEvent(&eip, db.ACT_CREATE, eip.GetShortDesc(ctx), userCred)
+4 -1
View File
@@ -533,7 +533,10 @@ func (self *SGlobalVpc) newFromCloudSecurityGroup(
})
syncVirtualResourceMetadata(ctx, userCred, ret, ext, false)
SyncCloudProject(ctx, userCred, ret, syncOwnerId, ext, ret.ManagerId)
if provider := self.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, ret, syncOwnerId, ext, provider)
}
rules, err := ext.GetRules()
if err != nil {
+7 -2
View File
@@ -3132,7 +3132,9 @@ func (g *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.TokenCre
if account := host.GetCloudaccount(); account != nil {
syncVirtualResourceMetadata(ctx, userCred, g, extVM, account.ReadOnly)
}
SyncCloudProject(ctx, userCred, g, syncOwnerId, extVM, host.ManagerId)
if cloudprovider := host.GetCloudprovider(); cloudprovider != nil {
SyncCloudProject(ctx, userCred, g, syncOwnerId, extVM, cloudprovider)
}
if provider.GetFactory().IsSupportPrepaidResources() && recycle {
vhost, _ := g.GetHost()
@@ -3235,7 +3237,10 @@ func (manager *SGuestManager) newCloudVM(ctx context.Context, userCred mcclient.
guest.SyncOsInfo(ctx, userCred, extVM)
syncVirtualResourceMetadata(ctx, userCred, &guest, extVM, false)
SyncCloudProject(ctx, userCred, &guest, syncOwnerId, extVM, host.ManagerId)
if cloudprovider := host.GetCloudprovider(); cloudprovider != nil {
SyncCloudProject(ctx, userCred, &guest, syncOwnerId, extVM, cloudprovider)
}
db.OpsLog.LogEvent(&guest, db.ACT_CREATE, guest.GetShortDesc(ctx), userCred)
+2 -2
View File
@@ -181,7 +181,7 @@ func (self *SIPv6Gateway) SyncWithCloudIPv6Gateway(ctx context.Context, userCred
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
return nil
}
@@ -214,7 +214,7 @@ func (self *SVpc) newFromCloudIPv6Gateway(ctx context.Context, userCred mcclient
}
syncVirtualResourceMetadata(ctx, userCred, ret, ext, false)
SyncCloudProject(ctx, userCred, ret, provider.GetOwnerId(), ext, self.ManagerId)
SyncCloudProject(ctx, userCred, ret, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(ret, db.ACT_CREATE, ret.GetShortDesc(ctx), userCred)
notifyclient.EventNotify(ctx, userCred, notifyclient.SEventNotifyParam{
+2 -2
View File
@@ -507,7 +507,7 @@ func (self *SKafka) SyncWithCloudKafka(ctx context.Context, userCred mcclient.To
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
if provider := self.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
}
db.OpsLog.LogSyncUpdate(self, diff, userCred)
return nil
@@ -611,7 +611,7 @@ func (self *SCloudregion) newFromCloudKafka(ctx context.Context, userCred mcclie
// 同步标签
syncVirtualResourceMetadata(ctx, userCred, &kafka, ext, false)
// 同步项目归属
SyncCloudProject(ctx, userCred, &kafka, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, &kafka, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(&kafka, db.ACT_CREATE, kafka.GetShortDesc(ctx), userCred)
+1 -1
View File
@@ -481,7 +481,7 @@ func (man *SCachedLoadbalancerAclManager) newFromCloudLoadbalancerAcl(ctx contex
return nil, errors.Wrap(err, "cachedLoadbalancerAclManager.new.InsertAcl")
}
SyncCloudProject(ctx, userCred, localAcl, provider.GetOwnerId(), extAcl, provider.GetId())
SyncCloudProject(ctx, userCred, localAcl, provider.GetOwnerId(), extAcl, provider)
}
{
@@ -312,7 +312,7 @@ func (self *SCloudprovider) newFromCloudLoadbalancerCertificate(ctx context.Cont
return errors.Wrapf(err, "Insert lbcert")
}
SyncCloudProject(ctx, userCred, c, self.GetOwnerId(), ext, self.GetId())
SyncCloudProject(ctx, userCred, c, self.GetOwnerId(), ext, self)
}
lbcert.CertificateId = c.Id
lbcert.Name = ext.GetName()
+2 -2
View File
@@ -1070,7 +1070,7 @@ func (region *SCloudregion) newFromCloudLoadbalancer(ctx context.Context, userCr
}
syncVirtualResourceMetadata(ctx, userCred, &lb, ext, false)
SyncCloudProject(ctx, userCred, &lb, syncOwnerId, ext, provider.Id)
SyncCloudProject(ctx, userCred, &lb, syncOwnerId, ext, provider)
db.OpsLog.LogEvent(&lb, db.ACT_CREATE, lb.GetShortDesc(ctx), userCred)
@@ -1285,7 +1285,7 @@ func (lb *SLoadbalancer) syncWithCloudLoadbalancer(ctx context.Context, userCred
syncVirtualResourceMetadata(ctx, userCred, lb, ext, account.ReadOnly)
}
provider := lb.GetCloudprovider()
SyncCloudProject(ctx, userCred, lb, provider.GetOwnerId(), ext, lb.ManagerId)
SyncCloudProject(ctx, userCred, lb, provider.GetOwnerId(), ext, provider)
lb.syncLoadbalancerNetwork(ctx, userCred, networkIds)
return err
+2 -2
View File
@@ -192,7 +192,7 @@ func (self *SMiscResource) SyncWithCloudMiscResource(ctx context.Context, userCr
if account := self.GetCloudaccount(); account != nil {
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogSyncUpdate(self, diff, userCred)
return nil
@@ -230,7 +230,7 @@ func (self *SCloudregion) newFromCloudMiscResource(ctx context.Context, userCred
}
syncVirtualResourceMetadata(ctx, userCred, &misc, ext, false)
SyncCloudProject(ctx, userCred, &misc, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, &misc, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(&misc, db.ACT_CREATE, misc.GetShortDesc(ctx), userCred)
+2 -2
View File
@@ -462,7 +462,7 @@ func (self *SModelartsPool) SyncWithCloudModelartsPool(ctx context.Context, user
}
if provider := self.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
}
db.OpsLog.LogSyncUpdate(self, diff, userCred)
return nil
@@ -516,7 +516,7 @@ func (self *SCloudregion) newFromCloudModelartsPool(ctx context.Context, userCre
// 同步标签
syncVirtualResourceMetadata(ctx, userCred, &pool, ext, false)
// 同步项目归属
SyncCloudProject(ctx, userCred, &pool, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, &pool, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(&pool, db.ACT_CREATE, pool.GetShortDesc(ctx), userCred)
+2 -2
View File
@@ -572,7 +572,7 @@ func (self *SMongoDB) SyncWithCloudMongoDB(ctx context.Context, userCred mcclien
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
if provider := self.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
}
db.OpsLog.LogSyncUpdate(self, diff, userCred)
return nil
@@ -667,7 +667,7 @@ func (self *SCloudregion) newFromCloudMongoDB(ctx context.Context, userCred mccl
})
syncVirtualResourceMetadata(ctx, userCred, &ins, ext, false)
SyncCloudProject(ctx, userCred, &ins, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, &ins, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(&ins, db.ACT_CREATE, ins.GetShortDesc(ctx), userCred)
return &ins, nil
+3 -4
View File
@@ -723,7 +723,6 @@ func (snet *SNetwork) syncRemoveCloudNetwork(ctx context.Context, userCred mccli
}
func (snet *SNetwork) SyncWithCloudNetwork(ctx context.Context, userCred mcclient.TokenCredential, extNet cloudprovider.ICloudNetwork, syncOwnerId mcclient.IIdentityProvider, provider *SCloudprovider) error {
vpc, _ := snet.GetVpc()
diff, err := db.UpdateWithLock(ctx, snet, func() error {
if options.Options.EnableSyncName {
newName, _ := db.GenerateAlterName(snet, extNet.GetName())
@@ -760,9 +759,10 @@ func (snet *SNetwork) SyncWithCloudNetwork(ctx context.Context, userCred mcclien
}
//syncVirtualResourceMetadata(ctx, userCred, snet, extNet)
SyncCloudProject(ctx, userCred, snet, syncOwnerId, extNet, vpc.ManagerId)
if provider != nil {
SyncCloudProject(ctx, userCred, snet, syncOwnerId, extNet, provider)
shareInfo := provider.getAccountShareInfo()
if utils.IsInStringArray(provider.Provider, api.PRIVATE_CLOUD_PROVIDERS) && extNet.GetPublicScope() == rbacscope.ScopeNone {
shareInfo = apis.SAccountShareInfo{
@@ -817,11 +817,10 @@ func (manager *SNetworkManager) newFromCloudNetwork(ctx context.Context, userCre
return nil, errors.Wrapf(err, "Insert")
}
vpc, _ := wire.GetVpc()
syncVirtualResourceMetadata(ctx, userCred, &net, extNet, false)
SyncCloudProject(ctx, userCred, &net, syncOwnerId, extNet, vpc.ManagerId)
if provider != nil {
SyncCloudProject(ctx, userCred, &net, syncOwnerId, extNet, provider)
shareInfo := provider.getAccountShareInfo()
if utils.IsInStringArray(provider.Provider, api.PRIVATE_CLOUD_PROVIDERS) && extNet.GetPublicScope() == rbacscope.ScopeNone {
shareInfo = apis.SAccountShareInfo{
+4 -2
View File
@@ -1265,7 +1265,9 @@ func (self *SSecurityGroup) SyncWithCloudSecurityGroup(
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, self.ManagerId)
if provider, _ := self.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, provider)
}
if !syncRule {
return nil
@@ -1331,7 +1333,7 @@ func (self *SCloudregion) newFromCloudSecurityGroup(
}
syncVirtualResourceMetadata(ctx, userCred, ret, ext, false)
SyncCloudProject(ctx, userCred, ret, syncOwnerId, ext, ret.ManagerId)
SyncCloudProject(ctx, userCred, ret, syncOwnerId, ext, provider)
rules, err := ext.GetRules()
if err != nil {
+2 -2
View File
@@ -324,7 +324,7 @@ func (self *SSnapshotPolicy) SyncWithCloudPolicy(
syncOwnerId := provider.GetOwnerId()
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, provider.Id)
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, provider)
if account, _ := provider.GetCloudaccount(); account != nil {
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
@@ -376,7 +376,7 @@ func (self *SCloudregion) newFromCloudPolicy(
if err != nil {
return nil, errors.Wrapf(err, "Insert")
}
SyncCloudProject(ctx, userCred, policy, syncOwnerId, ext, provider.Id)
SyncCloudProject(ctx, userCred, policy, syncOwnerId, ext, provider)
syncVirtualResourceMetadata(ctx, userCred, policy, ext, false)
err = policy.SyncDisks(ctx, userCred, ext)
+2 -2
View File
@@ -1003,7 +1003,7 @@ func (self *SSnapshot) SyncWithCloudSnapshot(ctx context.Context, userCred mccli
if disk != nil {
self.SyncCloudProjectId(userCred, disk.GetOwnerId())
} else {
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, self.GetCloudprovider().Id)
SyncCloudProject(ctx, userCred, self, syncOwnerId, ext, self.GetCloudprovider())
}
return nil
@@ -1056,7 +1056,7 @@ func (manager *SSnapshotManager) newFromCloudSnapshot(ctx context.Context, userC
if localDisk != nil {
snapshot.SyncCloudProjectId(userCred, localDisk.GetOwnerId())
} else {
SyncCloudProject(ctx, userCred, &snapshot, syncOwnerId, extSnapshot, snapshot.ManagerId)
SyncCloudProject(ctx, userCred, &snapshot, syncOwnerId, extSnapshot, provider)
}
db.OpsLog.LogEvent(&snapshot, db.ACT_CREATE, snapshot.GetShortDesc(ctx), userCred)
+2 -2
View File
@@ -303,7 +303,7 @@ func (s *SSSLCertificate) SyncWithCloudSSLCertificate(ctx context.Context, userC
}
if provider := s.GetCloudprovider(); provider != nil {
SyncCloudProject(ctx, userCred, s, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, s, provider.GetOwnerId(), ext, provider)
}
db.OpsLog.LogSyncUpdate(s, diff, userCred)
return nil
@@ -365,7 +365,7 @@ func (r *SCloudprovider) newFromCloudSSLCertificate(
// 同步标签
_ = syncVirtualResourceMetadata(ctx, userCred, &s, ext, false)
// 同步项目归属
SyncCloudProject(ctx, userCred, &s, r.GetOwnerId(), ext, r.Id)
SyncCloudProject(ctx, userCred, &s, r.GetOwnerId(), ext, r)
db.OpsLog.LogEvent(&s, db.ACT_CREATE, s.GetShortDesc(ctx), userCred)
+4 -3
View File
@@ -413,7 +413,7 @@ func (self *SStoragecachedimage) syncWithCloudImage(ctx context.Context, userCre
}
if len(cachedImage.ExternalId) > 0 {
self.SetStatus(userCred, image.GetStatus(), "")
return cachedImage.syncWithCloudImage(ctx, userCred, ownerId, image, managerId)
return cachedImage.syncWithCloudImage(ctx, userCred, ownerId, image, nil)
} else {
return nil
}
@@ -421,6 +421,7 @@ func (self *SStoragecachedimage) syncWithCloudImage(ctx context.Context, userCre
func (manager *SStoragecachedimageManager) newFromCloudImage(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, image cloudprovider.ICloudImage, cache *SStoragecache) error {
var cachedImage *SCachedimage
provider := cache.GetCloudprovider()
imgObj, err := db.FetchByExternalId(CachedimageManager, image.GetGlobalId())
if err != nil {
if err != sql.ErrNoRows {
@@ -442,7 +443,7 @@ func (manager *SStoragecachedimageManager) newFromCloudImage(ctx context.Context
}
if cachedImage == nil {
// no such image
cachedImage, err = CachedimageManager.newFromCloudImage(ctx, userCred, ownerId, image, cache.ManagerId)
cachedImage, err = CachedimageManager.newFromCloudImage(ctx, userCred, ownerId, image, provider)
if err != nil {
log.Errorf("CachedimageManager.newFromCloudImage fail %s", err)
return err
@@ -452,7 +453,7 @@ func (manager *SStoragecachedimageManager) newFromCloudImage(ctx context.Context
cachedImage = imgObj.(*SCachedimage)
}
if len(cachedImage.ExternalId) > 0 {
cachedImage.syncWithCloudImage(ctx, userCred, ownerId, image, cache.ManagerId)
cachedImage.syncWithCloudImage(ctx, userCred, ownerId, image, provider)
}
scimg := manager.Register(ctx, userCred, cache.GetId(), cachedImage.GetId(), image.GetStatus())
if scimg == nil {
+2 -2
View File
@@ -179,7 +179,7 @@ func (self *STablestore) SyncWithCloudTablestore(ctx context.Context, userCred m
syncVirtualResourceMetadata(ctx, userCred, self, ext, account.ReadOnly)
}
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, provider)
return nil
}
@@ -212,7 +212,7 @@ func (self *SCloudregion) newFromCloudTablestore(ctx context.Context, userCred m
}
syncVirtualResourceMetadata(ctx, userCred, ret, ext, false)
SyncCloudProject(ctx, userCred, ret, provider.GetOwnerId(), ext, provider.Id)
SyncCloudProject(ctx, userCred, ret, provider.GetOwnerId(), ext, provider)
db.OpsLog.LogEvent(ret, db.ACT_CREATE, ret.GetShortDesc(ctx), userCred)
notifyclient.EventNotify(ctx, userCred, notifyclient.SEventNotifyParam{