From 14ec3d6012f73611fad99ffd808d09ebfc18d047 Mon Sep 17 00:00:00 2001 From: ioito Date: Mon, 13 Feb 2023 10:29:48 +0800 Subject: [PATCH] fix(region): change cdn to virtual resource --- go.mod | 2 +- go.sum | 4 +- pkg/apis/compute/cdn.go | 5 +- pkg/compute/models/cdn_domains.go | 68 ++++++++++++------- vendor/modules.txt | 2 +- .../x/cloudmux/pkg/cloudprovider/resources.go | 3 +- .../x/cloudmux/pkg/multicloud/aliyun/cdn.go | 4 ++ .../x/cloudmux/pkg/multicloud/qcloud/cdn.go | 6 +- 8 files changed, 63 insertions(+), 31 deletions(-) diff --git a/go.mod b/go.mod index dc4ec17eb4..b78251baf8 100644 --- a/go.mod +++ b/go.mod @@ -81,7 +81,7 @@ require ( k8s.io/client-go v0.19.3 k8s.io/cluster-bootstrap v0.19.3 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230206033857-e8424981e0bf + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230213021315-65e0d8248533 yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 yunion.io/x/jsonutils v1.0.1-0.20220819091305-3bab322ab4fd yunion.io/x/log v1.0.0 diff --git a/go.sum b/go.sum index a5c83da492..09bd72317c 100644 --- a/go.sum +++ b/go.sum @@ -1158,8 +1158,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230206033857-e8424981e0bf h1:gtcUu2XtnPHoMKvpd9mwo+NL1VHMoCuYVjOkzs/rO10= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230206033857-e8424981e0bf/go.mod h1:yEMFtIKPyIdIfPzsw7oTcH41JXc8G5StUAQw3ZoGj5I= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230213021315-65e0d8248533 h1:HfI2/30sJHCNO840f3TcpBBaveO+CpBjo2XKZMnIlDw= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230213021315-65e0d8248533/go.mod h1:yEMFtIKPyIdIfPzsw7oTcH41JXc8G5StUAQw3ZoGj5I= yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 h1:0zlZD5uhZoIHgLVAWCz2aHaYk2ZrNsACCYD7R6EIBII= yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/pkg/apis/compute/cdn.go b/pkg/apis/compute/cdn.go index 5d9d1bb74c..c37892b0e2 100644 --- a/pkg/apis/compute/cdn.go +++ b/pkg/apis/compute/cdn.go @@ -84,13 +84,14 @@ type CDNDomainCreateInput struct { } type CDNDomainDetails struct { - apis.EnabledStatusInfrasResourceBaseDetails + apis.VirtualResourceDetails ManagedResourceInfo } type CDNDomainListInput struct { - apis.EnabledStatusInfrasResourceBaseListInput + apis.VirtualResourceListInput apis.ExternalizedResourceBaseListInput + apis.EnabledResourceBaseListInput ManagedResourceListInput } diff --git a/pkg/compute/models/cdn_domains.go b/pkg/compute/models/cdn_domains.go index 04ea5e1fb0..d7695c632f 100644 --- a/pkg/compute/models/cdn_domains.go +++ b/pkg/compute/models/cdn_domains.go @@ -40,8 +40,9 @@ import ( ) type SCDNDomainManager struct { - db.SEnabledStatusInfrasResourceBaseManager + db.SVirtualResourceBaseManager db.SExternalizedResourceBaseManager + db.SEnabledResourceBaseManager SManagedResourceBaseManager SDeletePreventableResourceBaseManager } @@ -50,7 +51,7 @@ var CDNDomainManager *SCDNDomainManager func init() { CDNDomainManager = &SCDNDomainManager{ - SEnabledStatusInfrasResourceBaseManager: db.NewEnabledStatusInfrasResourceBaseManager( + SVirtualResourceBaseManager: db.NewVirtualResourceBaseManager( SCDNDomain{}, "cdn_domains_tbl", "cdn_domain", @@ -61,7 +62,8 @@ func init() { } type SCDNDomain struct { - db.SEnabledStatusInfrasResourceBase + db.SVirtualResourceBase + db.SEnabledResourceBase db.SExternalizedResourceBase SDeletePreventableResourceBase @@ -106,12 +108,12 @@ func (manager *SCDNDomainManager) FetchCustomizeColumns( isList bool, ) []api.CDNDomainDetails { rows := make([]api.CDNDomainDetails, len(objs)) - stdRows := manager.SEnabledStatusInfrasResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList) + virtRows := manager.SVirtualResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList) managerRows := manager.SManagedResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList) for i := range rows { rows[i] = api.CDNDomainDetails{ - EnabledStatusInfrasResourceBaseDetails: stdRows[i], - ManagedResourceInfo: managerRows[i], + VirtualResourceDetails: virtRows[i], + ManagedResourceInfo: managerRows[i], } } return rows @@ -178,6 +180,24 @@ func (self *SCloudprovider) SyncCDNDomains(ctx context.Context, userCred mcclien return result } +// 启用资源 +func (self *SCDNDomain) PerformEnable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformEnableInput) (jsonutils.JSONObject, error) { + err := db.EnabledPerformEnable(self, ctx, userCred, true) + if err != nil { + return nil, errors.Wrap(err, "EnabledPerformEnable") + } + return nil, nil +} + +// 禁用资源 +func (self *SCDNDomain) PerformDisable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformDisableInput) (jsonutils.JSONObject, error) { + err := db.EnabledPerformEnable(self, ctx, userCred, false) + if err != nil { + return nil, errors.Wrap(err, "EnabledPerformEnable") + } + return nil, nil +} + func (self *SCDNDomain) syncRemoveCloudCDNDomain(ctx context.Context, userCred mcclient.TokenCredential) error { lockman.LockObject(ctx, self) defer lockman.ReleaseObject(ctx, self) @@ -204,7 +224,7 @@ func (self *SCDNDomain) ValidateDeleteCondition(ctx context.Context, info jsonut if self.DisableDelete.IsTrue() { return httperrors.NewInvalidStatusError("CDN is locked, cannot delete") } - return self.SEnabledStatusInfrasResourceBase.ValidateDeleteCondition(ctx, nil) + return self.SVirtualResourceBase.ValidateDeleteCondition(ctx, nil) } func (self *SCDNDomain) GetICloudCDNDomain(ctx context.Context) (cloudprovider.ICloudCDNDomain, error) { @@ -263,11 +283,10 @@ func (self *SCDNDomain) SyncWithCloudCDNDomain(ctx context.Context, userCred mcc Action: notifyclient.ActionSyncUpdate, }) } - syncMetadata(ctx, userCred, self, ext) + syncVirtualResourceMetadata(ctx, userCred, self, ext) if provider := self.GetCloudprovider(); provider != nil { - SyncCloudDomain(userCred, self, provider.GetOwnerId()) - self.SyncShareState(ctx, userCred, provider.getAccountShareInfo()) + SyncCloudProject(ctx, userCred, self, provider.GetOwnerId(), ext, self.ManagerId) } return nil @@ -298,10 +317,8 @@ func (self *SCloudprovider) newFromCloudCDNDomain(ctx context.Context, userCred return nil, err } - syncMetadata(ctx, userCred, &domain, ext) - SyncCloudDomain(userCred, &domain, self.GetOwnerId()) - - domain.SyncShareState(ctx, userCred, self.getAccountShareInfo()) + syncVirtualResourceMetadata(ctx, userCred, &domain, ext) + SyncCloudProject(ctx, userCred, &domain, self.GetOwnerId(), ext, self.Id) db.OpsLog.LogEvent(&domain, db.ACT_CREATE, domain.GetShortDesc(ctx), userCred) notifyclient.EventNotify(ctx, userCred, notifyclient.SEventNotifyParam{ @@ -343,7 +360,7 @@ func (manager *SCDNDomainManager) ValidateCreateData( } func (self *SCDNDomain) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) { - self.SEnabledStatusInfrasResourceBase.PostCreate(ctx, userCred, ownerId, query, data) + self.SVirtualResourceBase.PostCreate(ctx, userCred, ownerId, query, data) self.StartCdnCreateTask(ctx, userCred, "") } @@ -382,7 +399,7 @@ func (self *SCDNDomain) Delete(ctx context.Context, userCred mcclient.TokenCrede } func (self *SCDNDomain) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error { - return self.SEnabledStatusInfrasResourceBase.Delete(ctx, userCred) + return self.SVirtualResourceBase.Delete(ctx, userCred) } // 列出CDN域名 @@ -394,9 +411,14 @@ func (manager *SCDNDomainManager) ListItemFilter( ) (*sqlchemy.SQuery, error) { var err error - q, err = manager.SEnabledStatusInfrasResourceBaseManager.ListItemFilter(ctx, q, userCred, query.EnabledStatusInfrasResourceBaseListInput) + q, err = manager.SVirtualResourceBaseManager.ListItemFilter(ctx, q, userCred, query.VirtualResourceListInput) if err != nil { - return nil, errors.Wrap(err, "SEnabledStatusInfrasResourceBaseManager.ListItemFilter") + return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemFilter") + } + + q, err = manager.SEnabledResourceBaseManager.ListItemFilter(ctx, q, userCred, query.EnabledResourceBaseListInput) + if err != nil { + return nil, errors.Wrap(err, "SEnabledResourceBaseManager.ListItemFilter") } q, err = manager.SExternalizedResourceBaseManager.ListItemFilter(ctx, q, userCred, query.ExternalizedResourceBaseListInput) @@ -416,7 +438,7 @@ func (manager *SCDNDomainManager) QueryDistinctExtraField(q *sqlchemy.SQuery, fi switch field { default: var err error - q, err = manager.SEnabledStatusInfrasResourceBaseManager.QueryDistinctExtraField(q, field) + q, err = manager.SVirtualResourceBaseManager.QueryDistinctExtraField(q, field) if err == nil { return q, nil } @@ -435,9 +457,9 @@ func (manager *SCDNDomainManager) OrderByExtraFields( userCred mcclient.TokenCredential, query api.CDNDomainListInput, ) (*sqlchemy.SQuery, error) { - q, err := manager.SEnabledStatusInfrasResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.EnabledStatusInfrasResourceBaseListInput) + q, err := manager.SVirtualResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.VirtualResourceListInput) if err != nil { - return nil, errors.Wrap(err, "SEnabledStatusInfrasResourceBaseManager.OrderByExtraFields") + return nil, errors.Wrap(err, "SVirtualResourceBaseManager.OrderByExtraFields") } q, err = manager.SManagedResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.ManagedResourceListInput) if err != nil { @@ -472,9 +494,9 @@ func (manager *SCDNDomainManager) ListItemExportKeys(ctx context.Context, userCred mcclient.TokenCredential, keys stringutils2.SSortedStrings, ) (*sqlchemy.SQuery, error) { - q, err := manager.SEnabledStatusInfrasResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys) + q, err := manager.SVirtualResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys) if err != nil { - return nil, errors.Wrap(err, "SEnabledStatusInfrasResourceBaseManager.ListItemExportKeys") + return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemExportKeys") } if keys.ContainsAny(manager.SManagedResourceBaseManager.GetExportKeys()...) { q, err = manager.SManagedResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys) diff --git a/vendor/modules.txt b/vendor/modules.txt index a086ed29c5..7db49da980 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1439,7 +1439,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230206033857-e8424981e0bf +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230213021315-65e0d8248533 ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go index 0d2d5a49b6..c46f3e6a9f 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go @@ -1578,7 +1578,8 @@ type ICloudNatSku interface { } type ICloudCDNDomain interface { - ICloudEnabledResource + IVirtualResource + GetEnabled() bool GetArea() string GetServiceType() string diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/cdn.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/cdn.go index 8eb17fcce8..a145dbfe03 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/cdn.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/cdn.go @@ -313,3 +313,7 @@ func (self *SAliyunClient) GetCdnDomain(domainName string) (*SCdnDomain, error) } return domain, nil } + +func (self *SCdnDomain) GetProjectId() string { + return self.ResourceGroupID +} diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/cdn.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/cdn.go index cf21deab78..404b0040de 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/cdn.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/cdn.go @@ -49,7 +49,7 @@ type SCdnDomain struct { Disable string `json:"Disable"` Domain string `json:"Domain"` Origin SCdnOrigin `json:"Origin"` - ProjectID int `json:"ProjectId"` + ProjectId string `json:"ProjectId"` Readonly string `json:"Readonly"` ResourceID string `json:"ResourceId"` ServiceType string `json:"ServiceType"` @@ -696,3 +696,7 @@ func (self *SCdnDomain) GetMaxAge() (*cloudprovider.SCDNMaxAge, error) { } return ret, nil } + +func (self *SCdnDomain) GetProjectId() string { + return self.ProjectId +}