修复lb同步时的一些小问题

This commit is contained in:
屈轩
2019-01-24 12:24:51 +08:00
parent 7690cefbc7
commit f6481b7363
9 changed files with 123 additions and 31 deletions
+8 -2
View File
@@ -5,6 +5,7 @@ import (
"strings"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
@@ -101,7 +102,12 @@ func (lb *SLoadbalancer) GetNetworkId() string {
}
func (lb *SLoadbalancer) GetZoneId() string {
return fmt.Sprintf("%s/%s", CLOUD_PROVIDER_ALIYUN, lb.MasterZoneId)
zone, err := lb.region.getZoneById(lb.MasterZoneId)
if err != nil {
log.Errorf("failed to find zone for lb %s error: %v", lb.LoadBalancerName, err)
return ""
}
return zone.GetGlobalId()
}
func (lb *SLoadbalancer) IsEmulated() bool {
@@ -142,7 +148,7 @@ func (region *SRegion) GetLoadbalancerDetail(loadbalancerId string) (*SLoadbalan
if err != nil {
return nil, err
}
lb := SLoadbalancer{}
lb := SLoadbalancer{region: region}
return &lb, body.Unmarshal(&lb)
}
+1 -1
View File
@@ -76,7 +76,7 @@ func (region *SRegion) GetLoadbalancerAclDetail(aclId string) (*SLoadbalancerAcl
if err != nil {
return nil, err
}
detail := SLoadbalancerAcl{}
detail := SLoadbalancerAcl{region: region}
return &detail, body.Unmarshal(&detail)
}
+4 -3
View File
@@ -3,6 +3,7 @@ package aliyun
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
type Rule struct {
@@ -51,15 +52,15 @@ func (backendgroup *SLoadbalancerBackendGroup) GetGlobalId() string {
}
func (backendgroup *SLoadbalancerBackendGroup) GetStatus() string {
return ""
return models.LB_STATUS_ENABLED
}
func (backendgroup *SLoadbalancerBackendGroup) IsDefault() bool {
return true
return false
}
func (backendgroup *SLoadbalancerBackendGroup) GetType() string {
return "standard"
return models.LB_BACKENDGROUP_TYPE_NORMAL
}
func (backendgroup *SLoadbalancerBackendGroup) GetMetadata() *jsonutils.JSONDict {
@@ -5,6 +5,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
type SLoadbalancerDefaultBackendGroup struct {
@@ -24,15 +25,15 @@ func (backendgroup *SLoadbalancerDefaultBackendGroup) GetGlobalId() string {
}
func (backendgroup *SLoadbalancerDefaultBackendGroup) GetStatus() string {
return ""
return models.LB_STATUS_ENABLED
}
func (backendgroup *SLoadbalancerDefaultBackendGroup) IsDefault() bool {
return false
return true
}
func (backendgroup *SLoadbalancerDefaultBackendGroup) GetType() string {
return "default"
return models.LB_BACKENDGROUP_TYPE_DEFAULT
}
func (backendgroup *SLoadbalancerDefaultBackendGroup) GetMetadata() *jsonutils.JSONDict {
+26 -3
View File
@@ -5,6 +5,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
type SLoadbalancerHTTPListener struct {
@@ -14,6 +15,7 @@ type SLoadbalancerHTTPListener struct {
BackendServerPort int // 负载均衡实例后端使用的端口。
Bandwidth int // 监听的带宽峰值。
Status string // 当前监听的状态。取值:starting | running | configuring | stopping | stopped
Description string
XForwardedFor string // 是否开启通过X-Forwarded-For头字段获取访者真实IP。
XForwardedFor_SLBIP string // 是否通过SLB-IP头字段获取客户端请求的真实IP。
@@ -52,9 +54,16 @@ type SLoadbalancerHTTPListener struct {
Rules Rules //监听下的转发规则列表,具体请参见RuleList。
ForwardPort int // HTTP至HTTPS的监听转发端口。暂时只支持将HTTP 80访问重定向转发至HTTPS 443。 说明 如果 ListenerForward的值为 off,该参数不显示。
ListenerForward string // 表示是否开启HTTP至HTTPS的监听转发。on:表示开启 off:表示未开启
VServerGroupId string // 绑定的服务器组ID
}
func (listener *SLoadbalancerHTTPListener) GetName() string {
if len(listener.Description) == 0 {
listener.Refresh()
}
if len(listener.Description) > 0 {
return listener.Description
}
return fmt.Sprintf("HTTP:%d", listener.ListenerPort)
}
@@ -67,7 +76,14 @@ func (listerner *SLoadbalancerHTTPListener) GetGlobalId() string {
}
func (listerner *SLoadbalancerHTTPListener) GetStatus() string {
return listerner.Status
switch listerner.Status {
case "starting", "running":
return models.LB_STATUS_ENABLED
case "configuring", "stopping", "stopped":
return models.LB_STATUS_DISABLED
default:
return models.LB_STATUS_UNKNOWN
}
}
func (listerner *SLoadbalancerHTTPListener) GetMetadata() *jsonutils.JSONDict {
@@ -79,7 +95,11 @@ func (listerner *SLoadbalancerHTTPListener) IsEmulated() bool {
}
func (listerner *SLoadbalancerHTTPListener) Refresh() error {
return nil
lis, err := listerner.lb.region.GetLoadbalancerHTTPListener(listerner.lb.LoadBalancerId, listerner.ListenerPort)
if err != nil {
return err
}
return jsonutils.Update(listerner, lis)
}
func (listerner *SLoadbalancerHTTPListener) GetListenerType() string {
@@ -91,7 +111,10 @@ func (listerner *SLoadbalancerHTTPListener) GetListenerPort() int {
}
func (listerner *SLoadbalancerHTTPListener) GetBackendGroupId() string {
return ""
if len(listerner.VServerGroupId) == 0 {
listerner.Refresh()
}
return listerner.VServerGroupId
}
func (listerner *SLoadbalancerHTTPListener) GetScheduler() string {
+25 -3
View File
@@ -5,6 +5,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
type SLoadbalancerHTTPSListener struct {
@@ -14,6 +15,7 @@ type SLoadbalancerHTTPSListener struct {
BackendServerPort int // 负载均衡实例后端使用的端口。
Bandwidth int // 监听的带宽峰值。
Status string // 当前监听的状态。取值:starting | running | configuring | stopping | stopped
Description string
XForwardedFor string // 是否开启通过X-Forwarded-For头字段获取访者真实IP。
XForwardedFor_SLBIP string // 是否通过SLB-IP头字段获取客户端请求的真实IP。
@@ -51,6 +53,12 @@ type SLoadbalancerHTTPSListener struct {
}
func (listener *SLoadbalancerHTTPSListener) GetName() string {
if len(listener.Description) == 0 {
listener.Refresh()
}
if len(listener.Description) > 0 {
return listener.Description
}
return fmt.Sprintf("HTTPS:%d", listener.ListenerPort)
}
@@ -63,7 +71,14 @@ func (listerner *SLoadbalancerHTTPSListener) GetGlobalId() string {
}
func (listerner *SLoadbalancerHTTPSListener) GetStatus() string {
return listerner.Status
switch listerner.Status {
case "starting", "running":
return models.LB_STATUS_ENABLED
case "configuring", "stopping", "stopped":
return models.LB_STATUS_DISABLED
default:
return models.LB_STATUS_UNKNOWN
}
}
func (listerner *SLoadbalancerHTTPSListener) GetMetadata() *jsonutils.JSONDict {
@@ -75,7 +90,11 @@ func (listerner *SLoadbalancerHTTPSListener) IsEmulated() bool {
}
func (listerner *SLoadbalancerHTTPSListener) Refresh() error {
return nil
lis, err := listerner.lb.region.GetLoadbalancerHTTPSListener(listerner.lb.LoadBalancerId, listerner.ListenerPort)
if err != nil {
return err
}
return jsonutils.Update(listerner, lis)
}
func (listerner *SLoadbalancerHTTPSListener) GetListenerType() string {
@@ -87,7 +106,10 @@ func (listerner *SLoadbalancerHTTPSListener) GetListenerPort() int {
}
func (listerner *SLoadbalancerHTTPSListener) GetBackendGroupId() string {
return ""
if len(listerner.VServerGroupId) == 0 {
listerner.Refresh()
}
return listerner.VServerGroupId
}
func (listerner *SLoadbalancerHTTPSListener) GetScheduler() string {
@@ -3,6 +3,7 @@ package aliyun
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
type SLoadbalancerMasterSlaveBackendGroup struct {
@@ -25,7 +26,7 @@ func (backendgroup *SLoadbalancerMasterSlaveBackendGroup) GetGlobalId() string {
}
func (backendgroup *SLoadbalancerMasterSlaveBackendGroup) GetStatus() string {
return ""
return models.LB_STATUS_ENABLED
}
func (backendgroup *SLoadbalancerMasterSlaveBackendGroup) GetMetadata() *jsonutils.JSONDict {
@@ -45,7 +46,7 @@ func (backendgroup *SLoadbalancerMasterSlaveBackendGroup) IsDefault() bool {
}
func (backendgroup *SLoadbalancerMasterSlaveBackendGroup) GetType() string {
return "master_slave"
return models.LB_BACKENDGROUP_TYPE_MASTER_SLAVE
}
func (region *SRegion) GetLoadbalancerMasterSlaveBackendgroups(loadbalancerId string) ([]SLoadbalancerMasterSlaveBackendGroup, error) {
+26 -7
View File
@@ -5,6 +5,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
type SLoadbalancerTCPListener struct {
@@ -14,11 +15,12 @@ type SLoadbalancerTCPListener struct {
BackendServerPort int // 负载均衡实例后端使用的端口。
Bandwidth int // 监听的带宽峰值。
Status string // 当前监听的状态,取值:starting | running | configuring | stopping | stopped
Description string
Scheduler string // 调度算法。
VServerGroupId string // 绑定的服务器组ID。
MaterSlaveServerGroupId string // 绑定的主备服务器组ID。
AclStatus string // 是否开启访问控制功能。取值:on | off(默认值)
Scheduler string // 调度算法。
VServerGroupId string // 绑定的服务器组ID。
MasterSlaveServerGroupId string // 绑定的主备服务器组ID。
AclStatus string // 是否开启访问控制功能。取值:on | off(默认值)
AclType string // 访问控制类型
@@ -33,6 +35,12 @@ type SLoadbalancerTCPListener struct {
}
func (listener *SLoadbalancerTCPListener) GetName() string {
if len(listener.Description) == 0 {
listener.Refresh()
}
if len(listener.Description) > 0 {
return listener.Description
}
return fmt.Sprintf("TCP:%d", listener.ListenerPort)
}
@@ -45,7 +53,14 @@ func (listerner *SLoadbalancerTCPListener) GetGlobalId() string {
}
func (listerner *SLoadbalancerTCPListener) GetStatus() string {
return listerner.Status
switch listerner.Status {
case "starting", "running":
return models.LB_STATUS_ENABLED
case "configuring", "stopping", "stopped":
return models.LB_STATUS_DISABLED
default:
return models.LB_STATUS_UNKNOWN
}
}
func (listerner *SLoadbalancerTCPListener) GetMetadata() *jsonutils.JSONDict {
@@ -57,7 +72,11 @@ func (listerner *SLoadbalancerTCPListener) IsEmulated() bool {
}
func (listerner *SLoadbalancerTCPListener) Refresh() error {
return nil
lis, err := listerner.lb.region.GetLoadbalancerTCPListener(listerner.lb.LoadBalancerId, listerner.ListenerPort)
if err != nil {
return err
}
return jsonutils.Update(listerner, lis)
}
func (listerner *SLoadbalancerTCPListener) GetListenerType() string {
@@ -71,7 +90,7 @@ func (listerner *SLoadbalancerTCPListener) GetBackendGroupId() string {
if len(listerner.VServerGroupId) > 0 {
return listerner.VServerGroupId
}
return listerner.MaterSlaveServerGroupId
return listerner.MasterSlaveServerGroupId
}
func (listerner *SLoadbalancerTCPListener) GetScheduler() string {
+26 -7
View File
@@ -5,6 +5,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
)
type SLoadbalancerUDPListener struct {
@@ -14,11 +15,12 @@ type SLoadbalancerUDPListener struct {
BackendServerPort int // 负载均衡实例后端使用的端口。
Bandwidth int // 监听的带宽峰值。
Status string // 当前监听的状态,取值:starting | running | configuring | stopping | stopped
Description string
Scheduler string // 调度算法
VServerGroupId string // 绑定的服务器组ID。
MaterSlaveServerGroupId string // 绑定的主备服务器组ID。
AclStatus string // 是否开启访问控制功能。取值:on | off(默认值)
Scheduler string // 调度算法
VServerGroupId string // 绑定的服务器组ID。
MasterSlaveServerGroupId string // 绑定的主备服务器组ID。
AclStatus string // 是否开启访问控制功能。取值:on | off(默认值)
AclType string // 访问控制类型:
@@ -33,6 +35,12 @@ type SLoadbalancerUDPListener struct {
}
func (listener *SLoadbalancerUDPListener) GetName() string {
if len(listener.Description) == 0 {
listener.Refresh()
}
if len(listener.Description) > 0 {
return listener.Description
}
return fmt.Sprintf("UDP:%d", listener.ListenerPort)
}
@@ -45,7 +53,14 @@ func (listerner *SLoadbalancerUDPListener) GetGlobalId() string {
}
func (listerner *SLoadbalancerUDPListener) GetStatus() string {
return listerner.Status
switch listerner.Status {
case "starting", "running":
return models.LB_STATUS_ENABLED
case "configuring", "stopping", "stopped":
return models.LB_STATUS_DISABLED
default:
return models.LB_STATUS_UNKNOWN
}
}
func (listerner *SLoadbalancerUDPListener) GetMetadata() *jsonutils.JSONDict {
@@ -57,7 +72,11 @@ func (listerner *SLoadbalancerUDPListener) IsEmulated() bool {
}
func (listerner *SLoadbalancerUDPListener) Refresh() error {
return nil
lis, err := listerner.lb.region.GetLoadbalancerUDPListener(listerner.lb.LoadBalancerId, listerner.ListenerPort)
if err != nil {
return err
}
return jsonutils.Update(listerner, lis)
}
func (listerner *SLoadbalancerUDPListener) GetListenerType() string {
@@ -72,7 +91,7 @@ func (listerner *SLoadbalancerUDPListener) GetBackendGroupId() string {
if len(listerner.VServerGroupId) > 0 {
return listerner.VServerGroupId
}
return listerner.MaterSlaveServerGroupId
return listerner.MasterSlaveServerGroupId
}
func (listerner *SLoadbalancerUDPListener) GetScheduler() string {