@@ -31,17 +31,23 @@ type SLBBackendGroup struct {
3131 QcloudTags
3232 lb * SLoadbalancer // 必须不能为nil
3333 listener * SLBListener // 可能为nil
34+ domain string
35+ path string
3436}
3537
3638// 返回requestid
37- func (self * SLBBackendGroup ) appLBBackendServer (action string , serverId string , weight int , port int ) (string , error ) {
39+ func (self * SLBBackendGroup ) appLBBackendServer (action string , serverId string , weight int , port int , domain , url string ) (string , error ) {
3840 params := map [string ]string {
3941 "LoadBalancerId" : self .lb .LoadBalancerId ,
4042 "ListenerId" : self .listener .ListenerId ,
4143 "Targets.0.InstanceId" : serverId ,
4244 "Targets.0.Port" : strconv .Itoa (port ),
4345 "Targets.0.Weight" : strconv .Itoa (weight ),
4446 }
47+ if len (domain ) > 0 {
48+ params ["Domain" ] = domain
49+ params ["Url" ] = url
50+ }
4551
4652 resp , err := self .lb .region .clbRequest (action , params )
4753 if err != nil {
@@ -94,7 +100,7 @@ func (self *SLBBackendGroup) updateBackendServerPort(action string, serverId str
94100// https://cloud.tencent.com/document/product/214/30676
95101// https://cloud.tencent.com/document/product/214/31789
96102func (self * SLBBackendGroup ) AddBackendServer (serverId string , weight int , port int ) (cloudprovider.ICloudLoadbalancerBackend , error ) {
97- requestId , err := self .appLBBackendServer ("RegisterTargets" , serverId , weight , port )
103+ requestId , err := self .appLBBackendServer ("RegisterTargets" , serverId , weight , port , self . domain , self . path )
98104 if err != nil {
99105 return nil , err
100106 }
@@ -117,7 +123,7 @@ func (self *SLBBackendGroup) AddBackendServer(serverId string, weight int, port
117123// https://cloud.tencent.com/document/product/214/30687
118124// https://cloud.tencent.com/document/product/214/31794
119125func (self * SLBBackendGroup ) RemoveBackendServer (serverId string , weight int , port int ) error {
120- requestId , err := self .appLBBackendServer ("DeregisterTargets" , serverId , weight , port )
126+ requestId , err := self .appLBBackendServer ("DeregisterTargets" , serverId , weight , port , self . domain , self . path )
121127 if err != nil {
122128 if strings .Contains (err .Error (), "not registered" ) {
123129 return nil
@@ -146,15 +152,18 @@ func backendGroupIdGen(lbid string, secondId string) string {
146152}
147153
148154func (self * SLBBackendGroup ) GetId () string {
149- return self .listener .GetId ()
155+ if len (self .domain ) == 0 {
156+ return self .listener .GetGlobalId ()
157+ }
158+ return fmt .Sprintf ("%s:%s%s" , self .listener .GetGlobalId (), self .domain , self .path )
150159}
151160
152161func (self * SLBBackendGroup ) GetName () string {
153162 return self .GetId ()
154163}
155164
156165func (self * SLBBackendGroup ) GetGlobalId () string {
157- return self .listener . GetGlobalId ()
166+ return self .GetId ()
158167}
159168
160169func (self * SLBBackendGroup ) GetStatus () string {
@@ -180,13 +189,9 @@ func (self *SLBBackendGroup) GetILoadbalancerBackends() ([]cloudprovider.ICloudL
180189 }
181190
182191 ret := []cloudprovider.ICloudLoadbalancerBackend {}
183- globalIds := map [string ]bool {}
184192 for i := range backends {
185193 backends [i ].group = self
186- if _ , ok := globalIds [backends [i ].GetGlobalId ()]; ! ok {
187- globalIds [backends [i ].GetGlobalId ()] = true
188- ret = append (ret , & backends [i ])
189- }
194+ ret = append (ret , & backends [i ])
190195 }
191196
192197 return ret , nil
@@ -210,8 +215,12 @@ func (self *SLBBackendGroup) GetBackends() ([]SLBBackend, error) {
210215 if err != nil {
211216 return nil , err
212217 }
218+ ret := []SLBBackend {}
213219 for i := range backends {
214- backends [i ].group = self
220+ if backends [i ].Domain == self .domain && backends [i ].Url == self .path {
221+ backends [i ].group = self
222+ ret = append (ret , backends [i ])
223+ }
215224 }
216- return backends , nil
225+ return ret , nil
217226}
0 commit comments