diff --git a/slb/listeners.go b/slb/listeners.go index e735d17f..a233206e 100644 --- a/slb/listeners.go +++ b/slb/listeners.go @@ -99,6 +99,8 @@ type HTTPListenerType struct { UnhealthyThreshold int HealthCheckTimeout int HealthCheckInterval int + ForwardPort int + ListenerForward FlagType HealthCheckHttpCode HealthCheckHttpCodeType VServerGroup FlagType VServerGroupId string @@ -107,6 +109,9 @@ type HTTPListenerType struct { XForwardedFor_SLBIP FlagType XForwardedFor_proto FlagType Description string + AclId string + AclStatus string + AclType string } type CreateLoadBalancerHTTPListenerArgs HTTPListenerType @@ -162,6 +167,9 @@ type TCPListenerType struct { VServerGroup FlagType VServerGroupId string Description string + AclId string + AclStatus string + AclType string } type CreateLoadBalancerTCPListenerArgs TCPListenerType @@ -191,6 +199,10 @@ type UDPListenerType struct { VServerGroup FlagType VServerGroupId string Description string + + AclId string + AclStatus string + AclType string } type CreateLoadBalancerUDPListenerArgs UDPListenerType diff --git a/slb/loadbalancers.go b/slb/loadbalancers.go index d56ddb52..ca16d6de 100644 --- a/slb/loadbalancers.go +++ b/slb/loadbalancers.go @@ -52,6 +52,7 @@ type CreateLoadBalancerArgs struct { SlaveZoneId string LoadBalancerSpec LoadBalancerSpecType AddressIPVersion AddressIPVersionType + DeleteProtection FlagType } type CreateLoadBalancerResponse struct { @@ -228,6 +229,7 @@ type LoadBalancerType struct { InternetChargeType InternetChargeType CreateTime string //Why not ISO 6801 CreateTimeStamp util.ISO6801Time + DeleteProtection FlagType ListenerPorts struct { ListenerPort []int } @@ -336,3 +338,22 @@ func (client *Client) WaitForLoadBalancerAsyn(loadBalancerId string, status Stat } return nil } + +type SetLoadBalancerDeleteProtectionArgs struct { + LoadBalancerId string + DeleteProtection FlagType + RegionId common.Region +} + +type SetLoadBalancerDeleteProtectionResponse struct { + common.Response +} + +// SetLoadBalancerDeleteProtection loadbalancer delete protection +// +// You can read doc at https://help.aliyun.com/document_detail/122674.html?spm=a2c4g.11186623.6.720.694f4265hwOdXQ +func (client *Client) SetLoadBalancerDeleteProtection(args *SetLoadBalancerDeleteProtectionArgs) (err error) { + response := &SetLoadBalancerDeleteProtectionResponse{} + err = client.Invoke("SetLoadBalancerDeleteProtection", args, response) + return err +} diff --git a/slb/loadbalancers_test.go b/slb/loadbalancers_test.go index 431319d4..9da1ff3b 100644 --- a/slb/loadbalancers_test.go +++ b/slb/loadbalancers_test.go @@ -137,3 +137,42 @@ func TestClient_DescribeLoadBalancers(t *testing.T) { t.Logf("Result = %++v", slbs) } } + +func TestClient_SetLoadBalancerDeleteProtection(t *testing.T) { + client := NewTestNewSLBClientForDebug() + + creationArgs := CreateLoadBalancerArgs{ + RegionId: common.Beijing, + LoadBalancerName: "test-slb", + LoadBalancerSpec: S2Medium, + AddressType: InternetAddressType, + ClientToken: client.GenerateClientToken(), + } + + response, err := client.CreateLoadBalancer(&creationArgs) + if err != nil { + t.Fatalf("Failed to CreateLoadBalancer: %v", err) + } + + t.Logf("CreateLoadBalancer result: %v", *response) + lbId := response.LoadBalancerId + + args := &SetLoadBalancerDeleteProtectionArgs{ + LoadBalancerId: lbId, + DeleteProtection: OnFlag, + RegionId: common.Beijing, + } + + err = client.SetLoadBalancerDeleteProtection(args) + if err != nil { + t.Fatalf("Failed %++v", err) + } + t.Logf("SetLoadBalancerDeleteProtection result: %v", *response) + + err = client.DeleteLoadBalancer(lbId) + if err != nil { + t.Logf("DeleteLoadBalancer result: %++v", err) + } else { + t.Fatalf("Failed to set LoadBalancer delete protection.") + } +} diff --git a/slb/vserver_group.go b/slb/vserver_group.go index 258c7c04..c85fb0b3 100644 --- a/slb/vserver_group.go +++ b/slb/vserver_group.go @@ -5,10 +5,11 @@ import ( ) type VBackendServerType struct { - ServerId string - Weight int - Port int - Type string + ServerId string + Weight int + Port int + Type string + ServerIp string Description string }