1package ess 2 3import "github.com/denverdino/aliyungo/common" 4 5type LifecycleState string 6 7const ( 8 Active = LifecycleState("Active") 9 Inacitve = LifecycleState("Inacitve") 10 Deleting = LifecycleState("Deleting") 11 InService = LifecycleState("InService") 12 Pending = LifecycleState("Pending") 13 Removing = LifecycleState("Removing") 14) 15 16type CreateScalingGroupArgs struct { 17 RegionId common.Region 18 ScalingGroupName string 19 LoadBalancerId string 20 VpcId string 21 VSwitchId string 22 MaxSize int 23 MinSize int 24 DefaultCooldown int 25 RemovalPolicy common.FlattenArray 26 DBInstanceId common.FlattenArray 27} 28 29type CreateScalingGroupResponse struct { 30 common.Response 31 ScalingGroupId string 32} 33 34// CreateScalingGroup create scaling group 35// 36// You can read doc at https://help.aliyun.com/document_detail/25936.html?spm=5176.doc25940.6.617.vm6LXF 37func (client *Client) CreateScalingGroup(args *CreateScalingGroupArgs) (resp *CreateScalingGroupResponse, err error) { 38 response := CreateScalingGroupResponse{} 39 err = client.InvokeByFlattenMethod("CreateScalingGroup", args, &response) 40 41 if err != nil { 42 return nil, err 43 } 44 return &response, nil 45} 46 47type ModifyScalingGroupArgs struct { 48 ScalingGroupId string 49 ScalingGroupName string 50 ActiveScalingConfigurationId string 51 MinSize int 52 MaxSize int 53 DefaultCooldown int 54 RemovalPolicy common.FlattenArray 55} 56 57type ModifyScalingGroupResponse struct { 58 common.Response 59} 60 61// ModifyScalingGroup modify scaling group 62// 63// You can read doc at https://help.aliyun.com/document_detail/25937.html?spm=5176.doc25936.6.618.iwDcXT 64func (client *Client) ModifyScalingGroup(args *ModifyScalingGroupArgs) (resp *ModifyScalingGroupResponse, err error) { 65 response := ModifyScalingGroupResponse{} 66 err = client.InvokeByFlattenMethod("ModifyScalingGroup", args, &response) 67 68 if err != nil { 69 return nil, err 70 } 71 return &response, nil 72} 73 74type DescribeScalingGroupsArgs struct { 75 RegionId common.Region 76 ScalingGroupId common.FlattenArray 77 ScalingGroupName common.FlattenArray 78 common.Pagination 79} 80 81type DescribeInstancesResponse struct { 82 common.Response 83 common.PaginationResult 84 ScalingGroups struct { 85 ScalingGroup []ScalingGroupItemType 86 } 87} 88 89type ScalingGroupItemType struct { 90 ScalingGroupId string 91 ScalingGroupName string 92 ActiveScalingConfigurationId string 93 RegionId string 94 LoadBalancerId string 95 VSwitchId string 96 CreationTime string 97 LifecycleState LifecycleState 98 MinSize int 99 MaxSize int 100 DefaultCooldown int 101 TotalCapacity int 102 ActiveCapacity int 103 PendingCapacity int 104 RemovingCapacity int 105 RemovalPolicies RemovalPolicySetType 106 DBInstanceIds DBInstanceIdSetType 107} 108 109type RemovalPolicySetType struct { 110 RemovalPolicy []string 111} 112 113type DBInstanceIdSetType struct { 114 DBInstanceId []string 115} 116 117// DescribeScalingGroups describes scaling groups 118// 119// You can read doc at https://help.aliyun.com/document_detail/25938.html?spm=5176.doc25937.6.619.sUUOT7 120func (client *Client) DescribeScalingGroups(args *DescribeScalingGroupsArgs) (groups []ScalingGroupItemType, pagination *common.PaginationResult, err error) { 121 args.Validate() 122 response := DescribeInstancesResponse{} 123 124 err = client.InvokeByFlattenMethod("DescribeScalingGroups", args, &response) 125 126 if err == nil { 127 return response.ScalingGroups.ScalingGroup, &response.PaginationResult, nil 128 } 129 130 return nil, nil, err 131} 132 133type DescribeScalingInstancesArgs struct { 134 RegionId common.Region 135 ScalingGroupId string 136 ScalingConfigurationId string 137 HealthStatus string 138 CreationType string 139 LifecycleState LifecycleState 140 InstanceId common.FlattenArray 141 common.Pagination 142} 143 144type DescribeScalingInstancesResponse struct { 145 common.Response 146 common.PaginationResult 147 ScalingInstances struct { 148 ScalingInstance []ScalingInstanceItemType 149 } 150} 151 152type ScalingInstanceItemType struct { 153 InstanceId string 154 ScalingGroupId string 155 ScalingConfigurationId string 156 HealthStatus string 157 CreationTime string 158 CreationType string 159 LifecycleState LifecycleState 160} 161 162// DescribeScalingInstances describes scaling instances 163// 164// You can read doc at https://help.aliyun.com/document_detail/25942.html?spm=5176.doc25941.6.623.2xA0Uj 165func (client *Client) DescribeScalingInstances(args *DescribeScalingInstancesArgs) (instances []ScalingInstanceItemType, pagination *common.PaginationResult, err error) { 166 args.Validate() 167 response := DescribeScalingInstancesResponse{} 168 169 err = client.InvokeByFlattenMethod("DescribeScalingInstances", args, &response) 170 171 if err == nil { 172 return response.ScalingInstances.ScalingInstance, &response.PaginationResult, nil 173 } 174 175 return nil, nil, err 176} 177 178type EnableScalingGroupArgs struct { 179 ScalingGroupId string 180 ActiveScalingConfigurationId string 181 InstanceId common.FlattenArray 182} 183 184type EnableScalingGroupResponse struct { 185 common.Response 186} 187 188// EnableScalingGroup enable scaling group 189// 190// You can read doc at https://help.aliyun.com/document_detail/25939.html?spm=5176.doc25938.6.620.JiJhkx 191func (client *Client) EnableScalingGroup(args *EnableScalingGroupArgs) (resp *EnableScalingGroupResponse, err error) { 192 response := EnableScalingGroupResponse{} 193 err = client.InvokeByFlattenMethod("EnableScalingGroup", args, &response) 194 195 if err != nil { 196 return nil, err 197 } 198 return &response, nil 199} 200 201type DisableScalingGroupArgs struct { 202 ScalingGroupId string 203} 204 205type DisableScalingGroupResponse struct { 206 common.Response 207} 208 209// DisableScalingGroup disable scaling group 210// 211// You can read doc at https://help.aliyun.com/document_detail/25940.html?spm=5176.doc25939.6.621.M8GuuY 212func (client *Client) DisableScalingGroup(args *DisableScalingGroupArgs) (resp *DisableScalingGroupResponse, err error) { 213 response := DisableScalingGroupResponse{} 214 err = client.InvokeByFlattenMethod("DisableScalingGroup", args, &response) 215 216 if err != nil { 217 return nil, err 218 } 219 return &response, nil 220} 221 222type DeleteScalingGroupArgs struct { 223 ScalingGroupId string 224 ForceDelete bool 225} 226 227type DeleteScalingGroupResponse struct { 228 common.Response 229} 230 231// DeleteScalingGroup delete scaling group 232// 233// You can read doc at https://help.aliyun.com/document_detail/25941.html?spm=5176.doc25940.6.622.mRBCuw 234func (client *Client) DeleteScalingGroup(args *DeleteScalingGroupArgs) (resp *DeleteScalingGroupResponse, err error) { 235 response := DeleteScalingGroupResponse{} 236 err = client.InvokeByFlattenMethod("DeleteScalingGroup", args, &response) 237 238 if err != nil { 239 return nil, err 240 } 241 return &response, nil 242} 243 244type AttachInstancesArgs struct { 245 ScalingGroupId string 246 InstanceId common.FlattenArray 247} 248 249type AttachInstancesResponse struct { 250 common.Response 251 ScalingActivityId string 252} 253 254// AttachInstances attach instances to scaling group 255// 256// You can read doc at https://help.aliyun.com/document_detail/25954.html?spm=5176.product25855.6.633.y5gmzX 257func (client *Client) AttachInstances(args *AttachInstancesArgs) (resp *AttachInstancesResponse, err error) { 258 response := AttachInstancesResponse{} 259 err = client.InvokeByFlattenMethod("AttachInstances", args, &response) 260 261 if err != nil { 262 return nil, err 263 } 264 return &response, nil 265} 266 267// RemoveInstances detach instances from scaling group 268// 269// You can read doc at https://help.aliyun.com/document_detail/25955.html?spm=5176.doc25954.6.634.GtpzuJ 270func (client *Client) RemoveInstances(args *AttachInstancesArgs) (resp *AttachInstancesResponse, err error) { 271 response := AttachInstancesResponse{} 272 err = client.InvokeByFlattenMethod("RemoveInstances", args, &response) 273 274 if err != nil { 275 return nil, err 276 } 277 return &response, nil 278}