diff --git a/cmd/climc/shell/compute/cdn_domains.go b/cmd/climc/shell/compute/cdn_domains.go index fdb1975246..15de6a5615 100644 --- a/cmd/climc/shell/compute/cdn_domains.go +++ b/cmd/climc/shell/compute/cdn_domains.go @@ -28,4 +28,8 @@ func init() { cmd.Update(&compute.CDNDomainUpdateOptions{}) cmd.Delete(&options.BaseIdOptions{}) cmd.Create(&compute.CDNDomainCreateOptions{}) + cmd.Perform("clear-cache", &compute.CDNClearCacheOptions{}) + cmd.Perform("change-config", &compute.CDNChangeConfigOptions{}) + cmd.Perform("delete-custom-hostname", &compute.CDNDeleteCustomHostnameOptions{}) + cmd.Get("custom-hostnames", &compute.CDNCustomHostnameOptions{}) } diff --git a/go.mod b/go.mod index 27ba111295..d146287470 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,6 @@ require ( github.com/gorilla/websocket v1.4.1 github.com/gosuri/uitable v0.0.0-20160404203958-36ee7e946282 github.com/hako/durafmt v0.0.0-20180520121703-7b7ae1e72ead - github.com/hugozhu/godingtalk v1.0.6 github.com/influxdata/influxql v1.1.0 github.com/influxdata/promql/v2 v2.12.0 github.com/jaypipes/ghw v0.11.0 @@ -96,7 +95,7 @@ require ( k8s.io/cri-api v0.22.17 k8s.io/klog/v2 v2.20.0 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250623020750-d1f03ea14cc5 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250624083118-c1609c10d3b5 yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0 yunion.io/x/jsonutils v1.0.1-0.20250507052344-1abcf4f443b1 yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91 diff --git a/go.sum b/go.sum index 2a6643f315..cba90c7e65 100644 --- a/go.sum +++ b/go.sum @@ -452,7 +452,6 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -518,15 +517,12 @@ github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0 github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huaweicloud/huaweicloud-sdk-go v1.0.26 h1:aWTl4Ng9lZUW1DupYyqYiqkTwuTKMmqUZBKLmX0iWxo= github.com/huaweicloud/huaweicloud-sdk-go v1.0.26/go.mod h1:YHXxw/bm7AohI4jTY8Z43JYw+DPCDLqjxoLTqmcyja4= -github.com/hugozhu/godingtalk v1.0.6 h1:K280OQGbYVS/UQuVWJz5cHhv/Wvfj1FHNo8lbbLGsNQ= -github.com/hugozhu/godingtalk v1.0.6/go.mod h1:Je6PSjUH7IKCPpFq5ti2I9ak1szzSNgCIMlP0s+8pbQ= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/influxdata/influxql v1.1.0 h1:sPsaumLFRPMwR5QtD3Up54HXpNND8Eu7G1vQFmi3quQ= github.com/influxdata/influxql v1.1.0/go.mod h1:KpVI7okXjK6PRi3Z5B+mtKZli+R1DnZgb3N+tzevNgo= -github.com/ipandtcp/godingtalk v0.0.0-20180410032244-ca3d6ac197fb/go.mod h1:3umLciE1jBnh2LgrL15R2zbEe+HVPRZXnlSjjb/dYiw= github.com/jaypipes/ghw v0.11.0 h1:i0pKvAM7eZk0KvLm9vzpcpDKTRnfR6AQ5pFkPVnYJXU= github.com/jaypipes/ghw v0.11.0/go.mod h1:jeJGbkRB2lL3/gxYzNYzEDETV1ZJ56OKr+CSeSEym+g= github.com/jdcloud-api/jdcloud-sdk-go v1.55.0 h1:mzVj8r6fluEwjn8ogqtGfYW2qSIVUaEq0JAsvjCav3A= @@ -1236,7 +1232,6 @@ google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEt google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= @@ -1255,7 +1250,6 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.4/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -1412,8 +1406,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.20250623020750-d1f03ea14cc5 h1:BIbMRsvXq0WZY7LYjzKOxzhazD7Rusm/JRda0mZ53WM= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250623020750-d1f03ea14cc5/go.mod h1:FXxAEbdNfWXX9gjME3K2nJhkydHY5EKEUZb+RLEzVwQ= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250624083118-c1609c10d3b5 h1:3Ew4ACwSuMR3E/thsGb+GI7Xm+JBwVPCgIElqq8I0Pg= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250624083118-c1609c10d3b5/go.mod h1:FXxAEbdNfWXX9gjME3K2nJhkydHY5EKEUZb+RLEzVwQ= yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0 h1:msG4SiDSVU7CrXH06WuHlNEZXIooTcmNbfrIGHuIHBU= yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0/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 c37892b0e2..cb5930596e 100644 --- a/pkg/apis/compute/cdn.go +++ b/pkg/apis/compute/cdn.go @@ -95,3 +95,11 @@ type CDNDomainListInput struct { ManagedResourceListInput } + +type CDNCustomHostnameOutput struct { + Data []cloudprovider.CustomHostname +} + +type CDNDeleteCustomHostnameInput struct { + Id string +} diff --git a/pkg/compute/models/cdn_domains.go b/pkg/compute/models/cdn_domains.go index 8578e815b1..5e67788cae 100644 --- a/pkg/compute/models/cdn_domains.go +++ b/pkg/compute/models/cdn_domains.go @@ -91,6 +91,16 @@ type SCDNDomain struct { Referer *cloudprovider.SCDNReferer `list:"user" create:"domain_optional"` // 浏览器缓存配置 MaxAge *cloudprovider.SCDNMaxAge `list:"user" create:"domain_optional"` + // 是否启用DNSSEC + DNSSECEnabled bool `default:"false" list:"user" create:"optional"` + // SSL加密模式 + SSLSetting string `list:"user" width:"16" create:"domain_optional"` + // 是否启用HTTPS重写 + HTTPSRewrites bool `default:"false" list:"user" create:"optional"` + // 缓存级别 + CacheLevel string `list:"user" width:"32" create:"domain_optional"` + // 浏览器缓存TTL + BrowserCacheTTL int `nullable:"true" list:"user"` } func (manager *SCDNDomainManager) GetContextManagers() [][]db.IModelManager { @@ -182,6 +192,72 @@ func (self *SCloudprovider) SyncCDNDomains(ctx context.Context, userCred mcclien return result } +func (self *SCDNDomain) PerformClearCache(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input *cloudprovider.CacheClearOptions) (jsonutils.JSONObject, error) { + cdn, err := self.GetICloudCDNDomain(ctx) + if err != nil { + return nil, err + } + err = cdn.ClearCache(input) + if err != nil { + return nil, err + } + return nil, nil +} + +func (self *SCDNDomain) PerformChangeConfig(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input *cloudprovider.CacheConfig) (jsonutils.JSONObject, error) { + cdn, err := self.GetICloudCDNDomain(ctx) + if err != nil { + return nil, err + } + err = cdn.ChangeConfig(input) + if err != nil { + return nil, err + } + + err = self.SyncWithCloudCDNDomain(ctx, userCred, cdn) + if err != nil { + return nil, err + } + return nil, nil +} + +func (self *SCDNDomain) PerformDeleteCustomHostname(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input *api.CDNDeleteCustomHostnameInput) (jsonutils.JSONObject, error) { + cdn, err := self.GetICloudCDNDomain(ctx) + if err != nil { + return nil, err + } + err = cdn.DeleteCustomHostname(input.Id) + if err != nil { + return nil, err + } + return nil, nil +} + +func (self *SCDNDomain) PerformAddCustomHostname(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input *cloudprovider.CustomHostnameCreateOptions) (jsonutils.JSONObject, error) { + cdn, err := self.GetICloudCDNDomain(ctx) + if err != nil { + return nil, err + } + err = cdn.AddCustomHostname(input) + if err != nil { + return nil, err + } + return nil, nil +} + +func (self *SCDNDomain) GetDetailsCustomHostnames(ctx context.Context, userCred mcclient.TokenCredential, input jsonutils.JSONObject) (*api.CDNCustomHostnameOutput, error) { + cdn, err := self.GetICloudCDNDomain(ctx) + if err != nil { + return nil, err + } + ret := &api.CDNCustomHostnameOutput{} + ret.Data, err = cdn.GetCustomHostnames() + if err != nil { + return nil, err + } + return ret, nil +} + // 启用资源 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) @@ -273,6 +349,12 @@ func (self *SCDNDomain) SyncWithCloudCDNDomain(ctx context.Context, userCred mcc if maxAge, err := ext.GetMaxAge(); err == nil { self.MaxAge = maxAge } + + self.DNSSECEnabled = ext.GetDNSSECEnabled() + self.SSLSetting = ext.GetSSLSetting() + self.HTTPSRewrites = ext.GetHTTPSRewrites() + self.CacheLevel = ext.GetCacheLevel() + self.BrowserCacheTTL = ext.GetBrowserCacheTTL() return nil }) if err != nil { @@ -316,6 +398,11 @@ func (self *SCloudprovider) newFromCloudCDNDomain(ctx context.Context, userCred domain.ForceRedirect, _ = ext.GetForceRedirect() domain.Referer, _ = ext.GetReferer() domain.MaxAge, _ = ext.GetMaxAge() + domain.DNSSECEnabled = ext.GetDNSSECEnabled() + domain.SSLSetting = ext.GetSSLSetting() + domain.HTTPSRewrites = ext.GetHTTPSRewrites() + domain.CacheLevel = ext.GetCacheLevel() + domain.BrowserCacheTTL = ext.GetBrowserCacheTTL() err := CDNDomainManager.TableSpec().Insert(ctx, &domain) if err != nil { diff --git a/pkg/mcclient/options/compute/cdn_domains.go b/pkg/mcclient/options/compute/cdn_domains.go index a4cc68bae6..b1dada3429 100644 --- a/pkg/mcclient/options/compute/cdn_domains.go +++ b/pkg/mcclient/options/compute/cdn_domains.go @@ -15,6 +15,7 @@ package compute import ( + "yunion.io/x/cloudmux/pkg/cloudprovider" "yunion.io/x/jsonutils" "yunion.io/x/onecloud/pkg/mcclient/options" @@ -25,7 +26,7 @@ type CDNDomainListOptions struct { } func (opts *CDNDomainListOptions) Params() (jsonutils.JSONObject, error) { - return options.StructToParams(opts) + return options.ListStructToParams(opts) } type CDNDomainCreateOptions struct { @@ -74,3 +75,34 @@ func (opts *CDNDomainUpdateOptions) Params() (jsonutils.JSONObject, error) { } return params, nil } + +type CDNClearCacheOptions struct { + options.BaseIdOptions + cloudprovider.CacheClearOptions +} + +func (opts *CDNClearCacheOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts.CacheClearOptions), nil +} + +type CDNChangeConfigOptions struct { + options.BaseIdOptions + cloudprovider.CacheConfig +} + +func (opts *CDNChangeConfigOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts.CacheConfig), nil +} + +type CDNDeleteCustomHostnameOptions struct { + options.BaseIdOptions + CustomHostnameId string +} + +func (opts *CDNDeleteCustomHostnameOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(map[string]string{"id": opts.CustomHostnameId}), nil +} + +type CDNCustomHostnameOptions struct { + options.BaseIdOptions +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 51bcf02c14..915b3c8fba 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -760,8 +760,6 @@ github.com/huandu/xstrings # github.com/huaweicloud/huaweicloud-sdk-go v1.0.26 ## explicit github.com/huaweicloud/huaweicloud-sdk-go/auth/aksk -# github.com/hugozhu/godingtalk v1.0.6 -## explicit; go 1.13 # github.com/imdario/mergo v0.3.6 ## explicit github.com/imdario/mergo @@ -1851,7 +1849,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.20250623020750-d1f03ea14cc5 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250624083118-c1609c10d3b5 ## explicit; go 1.21 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cdn.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cdn.go index 4fd1cae188..9d5699d647 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cdn.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cdn.go @@ -273,6 +273,72 @@ func (self SCDNMaxAge) String() string { return jsonutils.Marshal(self).String() } +type CacheClearOptions struct { + PurgeEverything *bool + Tags []string + Hosts []string + Prefixes []string + Filters []interface{} +} + +type CacheConfig struct { + DNSSECEnabled *bool + HTTPSEnabled *bool + CacheLevel string + BrowserCacheTTL int + HTTPSRewrites *bool + SSLSetting string +} + +type CustomHostname struct { + Id string + Hostname string + OwnershipVerification struct { + Name string + Type string + Value string + } + OwnershipVerificationHttp struct { + HttpBody string + HttpUrl string + } + SSL struct { + BundleMethod string + CertificateAuthority string + DcvDelegationRecords []struct { + Cname string + CnameTarget string + } + Id string + Method string + Settings struct { + MinTLSVersion string `json:"min_tls_version"` + } + Status string + Type string + ValidationRecords []struct { + Status string + TxtName string + TxtValue string + } + Wildcard bool + } + Status string +} + +type CustomHostnameCreateOptions struct { + Hostname string + SSL struct { + CertificateAuthority string + Method string + Settings struct { + MinTLSVersion string `json:"min_tls_version"` + } + Type string + Wildcard bool + } +} + func init() { gotypes.RegisterSerializable(reflect.TypeOf(&SCdnOrigins{}), func() gotypes.ISerializable { return &SCdnOrigins{} diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go index d5f1f63644..1eeef2e78a 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go @@ -1741,6 +1741,19 @@ type ICloudCDNDomain interface { // 浏览器缓存配置 GetMaxAge() (*SCDNMaxAge, error) + GetDNSSECEnabled() bool + // SSL/TLS加密模式 + GetSSLSetting() string + + GetHTTPSRewrites() bool + GetCacheLevel() string + ClearCache(opts *CacheClearOptions) error + GetBrowserCacheTTL() int + ChangeConfig(opts *CacheConfig) error + GetCustomHostnames() ([]CustomHostname, error) + AddCustomHostname(opts *CustomHostnameCreateOptions) error + DeleteCustomHostname(id string) error + Delete() error } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/cdn.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/cdn.go index 886e8b68ff..6eadb6dff8 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/cdn.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/cdn.go @@ -57,7 +57,7 @@ type DistributionConfigType struct { } type SCdnDomain struct { - multicloud.SResourceBase + multicloud.SCDNDomainBase AwsTags client *SAwsClient diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/cdn_domain_base.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/cdn_domain_base.go index 403dd7e2ac..b68356f8d8 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/cdn_domain_base.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/cdn_domain_base.go @@ -50,3 +50,43 @@ func (self *SCDNDomainBase) GetReferer() (*cloudprovider.SCDNReferer, error) { func (self *SCDNDomainBase) GetMaxAge() (*cloudprovider.SCDNMaxAge, error) { return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "GetMaxAge") } + +func (self *SCDNDomainBase) GetDNSSECEnabled() bool { + return false +} + +func (self *SCDNDomainBase) GetSSLSetting() string { + return "" +} + +func (self *SCDNDomainBase) GetHTTPSRewrites() bool { + return false +} + +func (self *SCDNDomainBase) GetCacheLevel() string { + return "" +} + +func (self *SCDNDomainBase) ClearCache(opts *cloudprovider.CacheClearOptions) error { + return errors.Wrapf(cloudprovider.ErrNotImplemented, "ClearCache") +} + +func (self *SCDNDomainBase) GetBrowserCacheTTL() int { + return 0 +} + +func (self *SCDNDomainBase) ChangeConfig(opts *cloudprovider.CacheConfig) error { + return errors.Wrapf(cloudprovider.ErrNotImplemented, "ChangeConfig") +} + +func (self *SCDNDomainBase) GetCustomHostnames() ([]cloudprovider.CustomHostname, error) { + return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "GetCustomHostnames") +} + +func (self *SCDNDomainBase) AddCustomHostname(opts *cloudprovider.CustomHostnameCreateOptions) error { + return errors.Wrapf(cloudprovider.ErrNotImplemented, "AddCustomHostname") +} + +func (self *SCDNDomainBase) DeleteCustomHostname(id string) error { + return errors.Wrapf(cloudprovider.ErrNotImplemented, "DeleteCustomHostname") +} diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/cdn.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/cdn.go index 687d5976bf..6939db2c79 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/cdn.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/cdn.go @@ -38,7 +38,7 @@ type SCdnSource struct { } type SCdnDomain struct { - multicloud.SResourceBase + multicloud.SCDNDomainBase HuaweiTags client *SHuaweiClient 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 404b0040de..2fa14d3d3d 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/cdn.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/cdn.go @@ -38,7 +38,7 @@ type SCdnOrigin struct { } type SCdnDomain struct { - multicloud.SResourceBase + multicloud.SCDNDomainBase QcloudTags client *SQcloudClient