@@ -23,6 +23,7 @@ import (
23
23
24
24
"yunion.io/x/jsonutils"
25
25
"yunion.io/x/pkg/errors"
26
+ "yunion.io/x/pkg/utils"
26
27
27
28
api "yunion.io/x/cloudmux/pkg/apis/compute"
28
29
"yunion.io/x/cloudmux/pkg/cloudprovider"
@@ -95,7 +96,7 @@ func (self *SLBListener) GetBackendServerPort() int {
95
96
// https://cloud.tencent.com/document/product/214/30691
96
97
func (self * SLBListener ) CreateILoadBalancerListenerRule (rule * cloudprovider.SLoadbalancerListenerRule ) (cloudprovider.ICloudLoadbalancerListenerRule , error ) {
97
98
hc := getListenerRuleHealthCheck (rule )
98
- requestId , err := self .lb .region .CreateLoadbalancerListenerRule (self .lb .GetId (),
99
+ resp , err := self .lb .region .CreateLoadbalancerListenerRule (self .lb .GetId (),
99
100
self .GetId (),
100
101
rule .Domain ,
101
102
rule .Path ,
@@ -106,7 +107,7 @@ func (self *SLBListener) CreateILoadBalancerListenerRule(rule *cloudprovider.SLo
106
107
return nil , err
107
108
}
108
109
109
- err = self .lb .region .WaitLBTaskSuccess (requestId , 5 * time .Second , 60 * time .Second )
110
+ err = self .lb .region .WaitLBTaskSuccess (resp . RequestId , 5 * time .Second , 60 * time .Second )
110
111
if err != nil {
111
112
return nil , err
112
113
}
@@ -116,14 +117,13 @@ func (self *SLBListener) CreateILoadBalancerListenerRule(rule *cloudprovider.SLo
116
117
return nil , err
117
118
}
118
119
119
- for _ , r := range self .Rules {
120
- if r . GetPath () == rule . Path {
121
- r . listener = self
120
+ for i := range self .Rules {
121
+ r := self . Rules [ i ]
122
+ if utils . IsInStringArray ( r . LocationId , resp . LocationIds ) {
122
123
return & r , nil
123
124
}
124
125
}
125
-
126
- return nil , cloudprovider .ErrNotFound
126
+ return nil , errors .Wrapf (cloudprovider .ErrNotFound , jsonutils .Marshal (resp ).String ())
127
127
}
128
128
129
129
func (self * SLBListener ) GetILoadBalancerListenerRuleById (ruleId string ) (cloudprovider.ICloudLoadbalancerListenerRule , error ) {
@@ -452,12 +452,13 @@ func (self *SRegion) GetLoadbalancerListeners(lbId string, lblisIds []string, pr
452
452
return listeners , nil
453
453
}
454
454
455
- // 返回requestId
456
- func (self * SRegion ) CreateLoadbalancerListenerRule (lbid string , listenerId string , domain string , url string , scheduler string , sessionExpireTime int , hc * HealthCheck ) (string , error ) {
457
- if len (lbid ) == 0 {
458
- return "" , fmt .Errorf ("loadbalancer id should not be empty" )
459
- }
455
+ type ListenerRuleResponse struct {
456
+ RequestId string
457
+ LocationIds []string
458
+ }
460
459
460
+ // 返回requestId
461
+ func (self * SRegion ) CreateLoadbalancerListenerRule (lbid string , listenerId string , domain string , url string , scheduler string , sessionExpireTime int , hc * HealthCheck ) (* ListenerRuleResponse , error ) {
461
462
params := map [string ]string {
462
463
"LoadBalancerId" : lbid ,
463
464
"ListenerId" : listenerId ,
@@ -482,10 +483,14 @@ func (self *SRegion) CreateLoadbalancerListenerRule(lbid string, listenerId stri
482
483
483
484
resp , err := self .clbRequest ("CreateRule" , params )
484
485
if err != nil {
485
- return "" , err
486
+ return nil , err
486
487
}
487
-
488
- return resp .GetString ("RequestId" )
488
+ ret := & ListenerRuleResponse {}
489
+ err = resp .Unmarshal (ret )
490
+ if err != nil {
491
+ return nil , err
492
+ }
493
+ return ret , nil
489
494
}
490
495
491
496
// 返回requestId
0 commit comments