Merge pull request #12467 from ioito/hotfix/qx-cdn-origins

fix(region): sync cdn domain origins
This commit is contained in:
Zexi Li
2021-10-19 22:31:29 +08:00
committed by GitHub
4 changed files with 73 additions and 8 deletions
+31
View File
@@ -14,6 +14,13 @@
package cloudprovider
import (
"reflect"
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/gotypes"
)
type SCdnDomain struct {
// cdn加速域名
Domain string
@@ -28,3 +35,27 @@ type SCdnDomain struct {
// 源站类型 domain|ip|bucket
OriginType string
}
type SCdnOrigin struct {
Type string
Origin string
ServerName string
Protocol string
Path string
}
type SCdnOrigins []SCdnOrigin
func (self SCdnOrigins) IsZero() bool {
return len(self) == 0
}
func (self SCdnOrigins) String() string {
return jsonutils.Marshal(self).String()
}
func init() {
gotypes.RegisterSerializable(reflect.TypeOf(&SCdnOrigins{}), func() gotypes.ISerializable {
return &SCdnOrigins{}
})
}
+2
View File
@@ -1508,6 +1508,8 @@ type ICloudCDNDomain interface {
GetArea() string
GetServiceType() string
GetCname() string
GetOrigins() *SCdnOrigins
Delete() error
}
+8
View File
@@ -64,6 +64,10 @@ type SCDNDomain struct {
SDeletePreventableResourceBase
SManagedResourceBase
Cname string `list:"user" width:"256"`
// 源站信息
Origins *cloudprovider.SCdnOrigins `list:"user"`
// 服务类别
ServiceType string `list:"user" width:"32" update:"admin" create:"admin_required"`
// 加速区域
@@ -188,6 +192,8 @@ func (self *SCDNDomain) SyncWithCloudCDNDomain(ctx context.Context, userCred mcc
self.Status = ext.GetStatus()
self.Area = ext.GetArea()
self.ServiceType = ext.GetServiceType()
self.Cname = ext.GetCname()
self.Origins = ext.GetOrigins()
return nil
})
if err != nil {
@@ -214,6 +220,8 @@ func (self *SCloudprovider) newFromCloudCDNDomain(ctx context.Context, userCred
domain.Status = ext.GetStatus()
domain.Area = ext.GetArea()
domain.ServiceType = ext.GetServiceType()
domain.Cname = ext.GetCname()
domain.Origins = ext.GetOrigins()
err := CDNDomainManager.TableSpec().Insert(ctx, &domain)
if err != nil {
+32 -8
View File
@@ -26,14 +26,14 @@ import (
)
type SCdnOrigin struct {
Origins []string `json:"Origins"`
OriginType string `json:"OriginType"`
ServerName string `json:"ServerName"`
CosPrivateAccess string `json:"CosPrivateAccess"`
OriginPullProtocol string `json:"OriginPullProtocol"`
BackupOrigins []interface{} `json:"BackupOrigins"`
BackupOriginType interface{} `json:"BackupOriginType"`
BackupServerName interface{} `json:"BackupServerName"`
Origins []string `json:"Origins"`
OriginType string `json:"OriginType"`
ServerName string `json:"ServerName"`
CosPrivateAccess string `json:"CosPrivateAccess"`
OriginPullProtocol string `json:"OriginPullProtocol"`
BackupOrigins []string `json:"BackupOrigins"`
BackupOriginType string `json:"BackupOriginType"`
BackupServerName string `json:"BackupServerName"`
}
type SCdnDomain struct {
@@ -76,6 +76,30 @@ func (self *SCdnDomain) GetEnabled() bool {
return self.Disable == "normal"
}
func (self *SCdnDomain) GetCname() string {
return self.Cname
}
func (self *SCdnDomain) GetOrigins() *cloudprovider.SCdnOrigins {
ret := cloudprovider.SCdnOrigins{}
for _, org := range self.Origin.Origins {
ret = append(ret, cloudprovider.SCdnOrigin{
Type: self.Origin.OriginType,
ServerName: self.Origin.ServerName,
Protocol: self.Origin.OriginPullProtocol,
Origin: org,
})
}
for _, org := range self.Origin.BackupOrigins {
ret = append(ret, cloudprovider.SCdnOrigin{
Type: self.Origin.BackupOriginType,
ServerName: self.Origin.BackupServerName,
Origin: org,
})
}
return &ret
}
func (self *SCdnDomain) GetArea() string {
return self.Area
}