mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #12467 from ioito/hotfix/qx-cdn-origins
fix(region): sync cdn domain origins
This commit is contained in:
@@ -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{}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1508,6 +1508,8 @@ type ICloudCDNDomain interface {
|
||||
|
||||
GetArea() string
|
||||
GetServiceType() string
|
||||
GetCname() string
|
||||
GetOrigins() *SCdnOrigins
|
||||
|
||||
Delete() error
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user