@@ -42,22 +42,22 @@ type SElbListener struct {
4242 lb * SElb
4343 group * SElbBackendGroup
4444
45- Port int `json :"Port"`
46- Protocol string `json :"Protocol"`
45+ Port int `xml :"Port"`
46+ Protocol string `xml :"Protocol"`
4747 DefaultActions []DefaultAction `xml:"DefaultActions>member"`
48- SSLPolicy string `json :"SslPolicy"`
49- Certificates []Certificate `json :"Certificates"`
50- LoadBalancerArn string `json :"LoadBalancerArn"`
51- ListenerArn string `json :"ListenerArn"`
48+ SSLPolicy string `xml :"SslPolicy"`
49+ Certificates []Certificate `xml :"Certificates>member "`
50+ LoadBalancerArn string `xml :"LoadBalancerArn"`
51+ ListenerArn string `xml :"ListenerArn"`
5252}
5353
5454type Certificate struct {
55- CertificateArn string `json :"CertificateArn"`
55+ CertificateArn string `xml :"CertificateArn"`
5656}
5757
5858type DefaultAction struct {
59- TargetGroupArn string `json :"TargetGroupArn"`
60- Type string `json :"Type"`
59+ TargetGroupArn string `xml :"TargetGroupArn"`
60+ Type string `xml :"Type"`
6161}
6262
6363func (self * SElbListener ) GetId () string {
@@ -379,7 +379,7 @@ func (self *SElbListener) CreateILoadBalancerListenerRule(rule *cloudprovider.SL
379379}
380380
381381func (self * SElbListener ) GetILoadBalancerListenerRuleById (ruleId string ) (cloudprovider.ICloudLoadbalancerListenerRule , error ) {
382- rule , err := self .lb .region .GetElbListenerRule (ruleId )
382+ rule , err := self .lb .region .GetElbListenerRule (self . ListenerArn , ruleId )
383383 if err != nil {
384384 return nil , errors .Wrap (err , "GetElbListenerRule" )
385385 }
@@ -389,19 +389,13 @@ func (self *SElbListener) GetILoadBalancerListenerRuleById(ruleId string) (cloud
389389
390390func (self * SElbListener ) GetILoadbalancerListenerRules () ([]cloudprovider.ICloudLoadbalancerListenerRule , error ) {
391391 ret := []cloudprovider.ICloudLoadbalancerListenerRule {}
392- marker := ""
393- for {
394- part , marker , err := self .lb .region .GetElbListenerRules (self .ListenerArn , "" , marker )
395- if err != nil {
396- return nil , err
397- }
398- for i := range part {
399- part [i ].listener = self
400- ret = append (ret , & part [i ])
401- }
402- if len (marker ) == 0 || len (part ) == 0 {
403- break
404- }
392+ rules , err := self .lb .region .GetElbListenerRules (self .ListenerArn , "" )
393+ if err != nil {
394+ return nil , err
395+ }
396+ for i := range rules {
397+ rules [i ].listener = self
398+ ret = append (ret , & rules [i ])
405399 }
406400 return ret , nil
407401}
@@ -603,36 +597,45 @@ func (self *SRegion) CreateElbListener(lbId string, opts *cloudprovider.SLoadbal
603597 return nil , errors .Wrapf (cloudprovider .ErrNotFound , "after created" )
604598}
605599
606- func (self * SRegion ) GetElbListenerRules (listenerId string , ruleId , marker string ) ([]SElbListenerRule , string , error ) {
600+ func (self * SRegion ) GetElbListenerRules (listenerId string , ruleId string ) ([]SElbListenerRule , error ) {
607601 params := map [string ]string {}
608602 if len (listenerId ) > 0 {
609603 params ["ListenerArn" ] = listenerId
610604 }
611605 if len (ruleId ) > 0 {
612606 params ["RuleArns.member.1" ] = ruleId
613607 }
614- if len (marker ) > 0 {
615- params ["Marker" ] = marker
616- }
617- ret := & SElbListenerRules {}
618- err := self .elbRequest ("DescribeRules" , params , ret )
619- if err != nil {
620- return nil , "" , errors .Wrapf (err , "DescribeRules" )
608+
609+ ret := []SElbListenerRule {}
610+ for {
611+ part := struct {
612+ Rules []SElbListenerRule `xml:"Rules>member"`
613+ NextMarker string
614+ }{}
615+ err := self .elbRequest ("DescribeRules" , params , & part )
616+ if err != nil {
617+ return nil , errors .Wrapf (err , "DescribeRules" )
618+ }
619+ ret = append (ret , part .Rules ... )
620+ if len (part .NextMarker ) == 0 || len (part .Rules ) == 0 {
621+ break
622+ }
623+ params ["Marker" ] = part .NextMarker
621624 }
622- return ret . Rules , ret . NextMarker , nil
625+ return ret , nil
623626}
624627
625- func (self * SRegion ) GetElbListenerRule (id string ) (* SElbListenerRule , error ) {
626- rules , _ , err := self .GetElbListenerRules ("" , id , "" )
628+ func (self * SRegion ) GetElbListenerRule (lisId , ruleId string ) (* SElbListenerRule , error ) {
629+ rules , err := self .GetElbListenerRules (lisId , ruleId )
627630 if err != nil {
628631 return nil , errors .Wrapf (err , "GetElbListenerRules" )
629632 }
630633 for i := range rules {
631- if rules [i ].RuleArn == id {
634+ if rules [i ].RuleArn == ruleId {
632635 return & rules [i ], nil
633636 }
634637 }
635- return nil , errors .Wrapf (cloudprovider .ErrNotFound , id )
638+ return nil , errors .Wrapf (cloudprovider .ErrNotFound , ruleId )
636639}
637640
638641func (self * SRegion ) DeleteElbListener (id string ) error {
0 commit comments