浏览代码

ECS SDK Auto Released By ansen.as,Version:1.39.0

Signed-off-by: yixiong.jxy <yixiong.jxy@alibaba-inc.com>
yixiong.jxy 7 年之前
父节点
当前提交
bed3252b76
共有 55 个文件被更改,包括 3259 次插入14 次删除
  1. 3 0
      ChangeLog.txt
  2. 108 0
      services/ecs/add_ip_range.go
  3. 109 0
      services/ecs/assign_ipv6_addresses.go
  4. 108 0
      services/ecs/attach_volume.go
  5. 2 0
      services/ecs/authorize_security_group.go
  6. 2 0
      services/ecs/authorize_security_group_egress.go
  7. 108 0
      services/ecs/bind_ip_range.go
  8. 108 0
      services/ecs/cancel_user_event.go
  9. 116 0
      services/ecs/check_auto_snapshot_policy.go
  10. 109 0
      services/ecs/check_disk_enable_auto_snapshot_validation.go
  11. 110 0
      services/ecs/create_user_event.go
  12. 122 0
      services/ecs/create_volume.go
  13. 107 0
      services/ecs/delete_volume.go
  14. 109 0
      services/ecs/describe_auto_snapshot_policy.go
  15. 119 0
      services/ecs/describe_event_detail.go
  16. 117 0
      services/ecs/describe_events.go
  17. 112 0
      services/ecs/describe_intranet_attribute_kb.go
  18. 116 0
      services/ecs/describe_ip_ranges.go
  19. 128 0
      services/ecs/describe_volumes.go
  20. 108 0
      services/ecs/detach_volume.go
  21. 109 0
      services/ecs/modify_intranet_bandwidth_kb.go
  22. 2 0
      services/ecs/modify_security_group_egress_rule.go
  23. 2 0
      services/ecs/modify_security_group_rule.go
  24. 110 0
      services/ecs/modify_user_event_attribute.go
  25. 109 0
      services/ecs/modify_volume_attribute.go
  26. 108 0
      services/ecs/re_init_volume.go
  27. 109 0
      services/ecs/resize_volume.go
  28. 2 0
      services/ecs/revoke_security_group.go
  29. 2 0
      services/ecs/revoke_security_group_egress.go
  30. 108 0
      services/ecs/rollback_volume.go
  31. 2 0
      services/ecs/run_instances.go
  32. 22 0
      services/ecs/struct_auto_snapshot_excution_status.go
  33. 18 10
      services/ecs/struct_auto_snapshot_policy.go
  34. 1 1
      services/ecs/struct_disk.go
  35. 2 0
      services/ecs/struct_disk_device_mapping.go
  36. 28 0
      services/ecs/struct_event.go
  37. 21 0
      services/ecs/struct_events.go
  38. 22 0
      services/ecs/struct_ip_range.go
  39. 21 0
      services/ecs/struct_ip_ranges.go
  40. 21 0
      services/ecs/struct_ipv6_set.go
  41. 21 0
      services/ecs/struct_ipv6_sets.go
  42. 1 1
      services/ecs/struct_mount_instance.go
  43. 2 2
      services/ecs/struct_mount_instances_in_describe_disks.go
  44. 21 0
      services/ecs/struct_mount_instances_in_describe_volumes.go
  45. 1 0
      services/ecs/struct_network_interface_set.go
  46. 21 0
      services/ecs/struct_operation_locks_in_describe_volumes.go
  47. 2 0
      services/ecs/struct_permission.go
  48. 21 0
      services/ecs/struct_tags_in_describe_volumes.go
  49. 36 0
      services/ecs/struct_triggered_group_rule.go
  50. 1 0
      services/ecs/struct_v_switch.go
  51. 39 0
      services/ecs/struct_volume.go
  52. 21 0
      services/ecs/struct_volumes.go
  53. 108 0
      services/ecs/unassign_ipv6_addresses.go
  54. 108 0
      services/ecs/unbind_ip_range.go
  55. 116 0
      services/ecs/validate_security_group.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2018-11-15 Version: 1.39.0
+1, ECS support ipv6Address
+
 2018-11-15 Version: 1.38.3
 1, update version
 

+ 108 - 0
services/ecs/add_ip_range.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AddIpRange invokes the ecs.AddIpRange API synchronously
+// api document: https://help.aliyun.com/api/ecs/addiprange.html
+func (client *Client) AddIpRange(request *AddIpRangeRequest) (response *AddIpRangeResponse, err error) {
+	response = CreateAddIpRangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddIpRangeWithChan invokes the ecs.AddIpRange API asynchronously
+// api document: https://help.aliyun.com/api/ecs/addiprange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddIpRangeWithChan(request *AddIpRangeRequest) (<-chan *AddIpRangeResponse, <-chan error) {
+	responseChan := make(chan *AddIpRangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddIpRange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddIpRangeWithCallback invokes the ecs.AddIpRange API asynchronously
+// api document: https://help.aliyun.com/api/ecs/addiprange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddIpRangeWithCallback(request *AddIpRangeRequest, callback func(response *AddIpRangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddIpRangeResponse
+		var err error
+		defer close(result)
+		response, err = client.AddIpRange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddIpRangeRequest is the request struct for api AddIpRange
+type AddIpRangeRequest struct {
+	*requests.RpcRequest
+	IpAddress            string           `position:"Query" name:"IpAddress"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	ZoneId               string           `position:"Query" name:"ZoneId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AddIpRangeResponse is the response struct for api AddIpRange
+type AddIpRangeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddIpRangeRequest creates a request to invoke AddIpRange API
+func CreateAddIpRangeRequest() (request *AddIpRangeRequest) {
+	request = &AddIpRangeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "AddIpRange", "ecs", "openAPI")
+	return
+}
+
+// CreateAddIpRangeResponse creates a response to parse from AddIpRange response
+func CreateAddIpRangeResponse() (response *AddIpRangeResponse) {
+	response = &AddIpRangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ecs/assign_ipv6_addresses.go

@@ -0,0 +1,109 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AssignIpv6Addresses invokes the ecs.AssignIpv6Addresses API synchronously
+// api document: https://help.aliyun.com/api/ecs/assignipv6addresses.html
+func (client *Client) AssignIpv6Addresses(request *AssignIpv6AddressesRequest) (response *AssignIpv6AddressesResponse, err error) {
+	response = CreateAssignIpv6AddressesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AssignIpv6AddressesWithChan invokes the ecs.AssignIpv6Addresses API asynchronously
+// api document: https://help.aliyun.com/api/ecs/assignipv6addresses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AssignIpv6AddressesWithChan(request *AssignIpv6AddressesRequest) (<-chan *AssignIpv6AddressesResponse, <-chan error) {
+	responseChan := make(chan *AssignIpv6AddressesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AssignIpv6Addresses(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AssignIpv6AddressesWithCallback invokes the ecs.AssignIpv6Addresses API asynchronously
+// api document: https://help.aliyun.com/api/ecs/assignipv6addresses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AssignIpv6AddressesWithCallback(request *AssignIpv6AddressesRequest, callback func(response *AssignIpv6AddressesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AssignIpv6AddressesResponse
+		var err error
+		defer close(result)
+		response, err = client.AssignIpv6Addresses(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AssignIpv6AddressesRequest is the request struct for api AssignIpv6Addresses
+type AssignIpv6AddressesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Ipv6AddressCount     requests.Integer `position:"Query" name:"Ipv6AddressCount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	NetworkInterfaceId   string           `position:"Query" name:"NetworkInterfaceId"`
+	Ipv6Address          *[]string        `position:"Query" name:"Ipv6Address"  type:"Repeated"`
+}
+
+// AssignIpv6AddressesResponse is the response struct for api AssignIpv6Addresses
+type AssignIpv6AddressesResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAssignIpv6AddressesRequest creates a request to invoke AssignIpv6Addresses API
+func CreateAssignIpv6AddressesRequest() (request *AssignIpv6AddressesRequest) {
+	request = &AssignIpv6AddressesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "AssignIpv6Addresses", "ecs", "openAPI")
+	return
+}
+
+// CreateAssignIpv6AddressesResponse creates a response to parse from AssignIpv6Addresses response
+func CreateAssignIpv6AddressesResponse() (response *AssignIpv6AddressesResponse) {
+	response = &AssignIpv6AddressesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/ecs/attach_volume.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AttachVolume invokes the ecs.AttachVolume API synchronously
+// api document: https://help.aliyun.com/api/ecs/attachvolume.html
+func (client *Client) AttachVolume(request *AttachVolumeRequest) (response *AttachVolumeResponse, err error) {
+	response = CreateAttachVolumeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AttachVolumeWithChan invokes the ecs.AttachVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/attachvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachVolumeWithChan(request *AttachVolumeRequest) (<-chan *AttachVolumeResponse, <-chan error) {
+	responseChan := make(chan *AttachVolumeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AttachVolume(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AttachVolumeWithCallback invokes the ecs.AttachVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/attachvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachVolumeWithCallback(request *AttachVolumeRequest, callback func(response *AttachVolumeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AttachVolumeResponse
+		var err error
+		defer close(result)
+		response, err = client.AttachVolume(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AttachVolumeRequest is the request struct for api AttachVolume
+type AttachVolumeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AttachVolumeResponse is the response struct for api AttachVolume
+type AttachVolumeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAttachVolumeRequest creates a request to invoke AttachVolume API
+func CreateAttachVolumeRequest() (request *AttachVolumeRequest) {
+	request = &AttachVolumeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "AttachVolume", "ecs", "openAPI")
+	return
+}
+
+// CreateAttachVolumeResponse creates a response to parse from AttachVolume response
+func CreateAttachVolumeResponse() (response *AttachVolumeResponse) {
+	response = &AttachVolumeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 0
services/ecs/authorize_security_group.go

@@ -84,6 +84,8 @@ type AuthorizeSecurityGroupRequest struct {
 	Description             string           `position:"Query" name:"Description"`
 	SourceGroupOwnerId      requests.Integer `position:"Query" name:"SourceGroupOwnerId"`
 	SourceGroupOwnerAccount string           `position:"Query" name:"SourceGroupOwnerAccount"`
+	Ipv6SourceCidrIp        string           `position:"Query" name:"Ipv6SourceCidrIp"`
+	Ipv6DestCidrIp          string           `position:"Query" name:"Ipv6DestCidrIp"`
 	Policy                  string           `position:"Query" name:"Policy"`
 	PortRange               string           `position:"Query" name:"PortRange"`
 	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`

+ 2 - 0
services/ecs/authorize_security_group_egress.go

@@ -82,6 +82,8 @@ type AuthorizeSecurityGroupEgressRequest struct {
 	ClientToken           string           `position:"Query" name:"ClientToken"`
 	SecurityGroupId       string           `position:"Query" name:"SecurityGroupId"`
 	Description           string           `position:"Query" name:"Description"`
+	Ipv6DestCidrIp        string           `position:"Query" name:"Ipv6DestCidrIp"`
+	Ipv6SourceCidrIp      string           `position:"Query" name:"Ipv6SourceCidrIp"`
 	Policy                string           `position:"Query" name:"Policy"`
 	PortRange             string           `position:"Query" name:"PortRange"`
 	ResourceOwnerAccount  string           `position:"Query" name:"ResourceOwnerAccount"`

+ 108 - 0
services/ecs/bind_ip_range.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// BindIpRange invokes the ecs.BindIpRange API synchronously
+// api document: https://help.aliyun.com/api/ecs/bindiprange.html
+func (client *Client) BindIpRange(request *BindIpRangeRequest) (response *BindIpRangeResponse, err error) {
+	response = CreateBindIpRangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// BindIpRangeWithChan invokes the ecs.BindIpRange API asynchronously
+// api document: https://help.aliyun.com/api/ecs/bindiprange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) BindIpRangeWithChan(request *BindIpRangeRequest) (<-chan *BindIpRangeResponse, <-chan error) {
+	responseChan := make(chan *BindIpRangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.BindIpRange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// BindIpRangeWithCallback invokes the ecs.BindIpRange API asynchronously
+// api document: https://help.aliyun.com/api/ecs/bindiprange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) BindIpRangeWithCallback(request *BindIpRangeRequest, callback func(response *BindIpRangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *BindIpRangeResponse
+		var err error
+		defer close(result)
+		response, err = client.BindIpRange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// BindIpRangeRequest is the request struct for api BindIpRange
+type BindIpRangeRequest struct {
+	*requests.RpcRequest
+	IpAddress            string           `position:"Query" name:"IpAddress"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// BindIpRangeResponse is the response struct for api BindIpRange
+type BindIpRangeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateBindIpRangeRequest creates a request to invoke BindIpRange API
+func CreateBindIpRangeRequest() (request *BindIpRangeRequest) {
+	request = &BindIpRangeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "BindIpRange", "ecs", "openAPI")
+	return
+}
+
+// CreateBindIpRangeResponse creates a response to parse from BindIpRange response
+func CreateBindIpRangeResponse() (response *BindIpRangeResponse) {
+	response = &BindIpRangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/ecs/cancel_user_event.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CancelUserEvent invokes the ecs.CancelUserEvent API synchronously
+// api document: https://help.aliyun.com/api/ecs/canceluserevent.html
+func (client *Client) CancelUserEvent(request *CancelUserEventRequest) (response *CancelUserEventResponse, err error) {
+	response = CreateCancelUserEventResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CancelUserEventWithChan invokes the ecs.CancelUserEvent API asynchronously
+// api document: https://help.aliyun.com/api/ecs/canceluserevent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelUserEventWithChan(request *CancelUserEventRequest) (<-chan *CancelUserEventResponse, <-chan error) {
+	responseChan := make(chan *CancelUserEventResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CancelUserEvent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CancelUserEventWithCallback invokes the ecs.CancelUserEvent API asynchronously
+// api document: https://help.aliyun.com/api/ecs/canceluserevent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelUserEventWithCallback(request *CancelUserEventRequest, callback func(response *CancelUserEventResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CancelUserEventResponse
+		var err error
+		defer close(result)
+		response, err = client.CancelUserEvent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CancelUserEventRequest is the request struct for api CancelUserEvent
+type CancelUserEventRequest struct {
+	*requests.RpcRequest
+	EventId              string           `position:"Query" name:"EventId"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceId           string           `position:"Query" name:"ResourceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// CancelUserEventResponse is the response struct for api CancelUserEvent
+type CancelUserEventResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	EventId   string `json:"EventId" xml:"EventId"`
+}
+
+// CreateCancelUserEventRequest creates a request to invoke CancelUserEvent API
+func CreateCancelUserEventRequest() (request *CancelUserEventRequest) {
+	request = &CancelUserEventRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "CancelUserEvent", "ecs", "openAPI")
+	return
+}
+
+// CreateCancelUserEventResponse creates a response to parse from CancelUserEvent response
+func CreateCancelUserEventResponse() (response *CancelUserEventResponse) {
+	response = &CancelUserEventResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/ecs/check_auto_snapshot_policy.go

@@ -0,0 +1,116 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CheckAutoSnapshotPolicy invokes the ecs.CheckAutoSnapshotPolicy API synchronously
+// api document: https://help.aliyun.com/api/ecs/checkautosnapshotpolicy.html
+func (client *Client) CheckAutoSnapshotPolicy(request *CheckAutoSnapshotPolicyRequest) (response *CheckAutoSnapshotPolicyResponse, err error) {
+	response = CreateCheckAutoSnapshotPolicyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CheckAutoSnapshotPolicyWithChan invokes the ecs.CheckAutoSnapshotPolicy API asynchronously
+// api document: https://help.aliyun.com/api/ecs/checkautosnapshotpolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CheckAutoSnapshotPolicyWithChan(request *CheckAutoSnapshotPolicyRequest) (<-chan *CheckAutoSnapshotPolicyResponse, <-chan error) {
+	responseChan := make(chan *CheckAutoSnapshotPolicyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CheckAutoSnapshotPolicy(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CheckAutoSnapshotPolicyWithCallback invokes the ecs.CheckAutoSnapshotPolicy API asynchronously
+// api document: https://help.aliyun.com/api/ecs/checkautosnapshotpolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CheckAutoSnapshotPolicyWithCallback(request *CheckAutoSnapshotPolicyRequest, callback func(response *CheckAutoSnapshotPolicyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CheckAutoSnapshotPolicyResponse
+		var err error
+		defer close(result)
+		response, err = client.CheckAutoSnapshotPolicy(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CheckAutoSnapshotPolicyRequest is the request struct for api CheckAutoSnapshotPolicy
+type CheckAutoSnapshotPolicyRequest struct {
+	*requests.RpcRequest
+	DataDiskPolicyEnabled             requests.Boolean `position:"Query" name:"DataDiskPolicyEnabled"`
+	ResourceOwnerId                   requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DataDiskPolicyRetentionDays       requests.Integer `position:"Query" name:"DataDiskPolicyRetentionDays"`
+	ResourceOwnerAccount              string           `position:"Query" name:"ResourceOwnerAccount"`
+	SystemDiskPolicyRetentionLastWeek requests.Boolean `position:"Query" name:"SystemDiskPolicyRetentionLastWeek"`
+	OwnerAccount                      string           `position:"Query" name:"OwnerAccount"`
+	SystemDiskPolicyTimePeriod        requests.Integer `position:"Query" name:"SystemDiskPolicyTimePeriod"`
+	OwnerId                           requests.Integer `position:"Query" name:"OwnerId"`
+	DataDiskPolicyRetentionLastWeek   requests.Boolean `position:"Query" name:"DataDiskPolicyRetentionLastWeek"`
+	SystemDiskPolicyRetentionDays     requests.Integer `position:"Query" name:"SystemDiskPolicyRetentionDays"`
+	DataDiskPolicyTimePeriod          requests.Integer `position:"Query" name:"DataDiskPolicyTimePeriod"`
+	SystemDiskPolicyEnabled           requests.Boolean `position:"Query" name:"SystemDiskPolicyEnabled"`
+}
+
+// CheckAutoSnapshotPolicyResponse is the response struct for api CheckAutoSnapshotPolicy
+type CheckAutoSnapshotPolicyResponse struct {
+	*responses.BaseResponse
+	RequestId              string `json:"RequestId" xml:"RequestId"`
+	AutoSnapshotOccupation int    `json:"AutoSnapshotOccupation" xml:"AutoSnapshotOccupation"`
+	IsPermittedModify      string `json:"IsPermittedModify" xml:"IsPermittedModify"`
+}
+
+// CreateCheckAutoSnapshotPolicyRequest creates a request to invoke CheckAutoSnapshotPolicy API
+func CreateCheckAutoSnapshotPolicyRequest() (request *CheckAutoSnapshotPolicyRequest) {
+	request = &CheckAutoSnapshotPolicyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "CheckAutoSnapshotPolicy", "ecs", "openAPI")
+	return
+}
+
+// CreateCheckAutoSnapshotPolicyResponse creates a response to parse from CheckAutoSnapshotPolicy response
+func CreateCheckAutoSnapshotPolicyResponse() (response *CheckAutoSnapshotPolicyResponse) {
+	response = &CheckAutoSnapshotPolicyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ecs/check_disk_enable_auto_snapshot_validation.go

@@ -0,0 +1,109 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CheckDiskEnableAutoSnapshotValidation invokes the ecs.CheckDiskEnableAutoSnapshotValidation API synchronously
+// api document: https://help.aliyun.com/api/ecs/checkdiskenableautosnapshotvalidation.html
+func (client *Client) CheckDiskEnableAutoSnapshotValidation(request *CheckDiskEnableAutoSnapshotValidationRequest) (response *CheckDiskEnableAutoSnapshotValidationResponse, err error) {
+	response = CreateCheckDiskEnableAutoSnapshotValidationResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CheckDiskEnableAutoSnapshotValidationWithChan invokes the ecs.CheckDiskEnableAutoSnapshotValidation API asynchronously
+// api document: https://help.aliyun.com/api/ecs/checkdiskenableautosnapshotvalidation.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CheckDiskEnableAutoSnapshotValidationWithChan(request *CheckDiskEnableAutoSnapshotValidationRequest) (<-chan *CheckDiskEnableAutoSnapshotValidationResponse, <-chan error) {
+	responseChan := make(chan *CheckDiskEnableAutoSnapshotValidationResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CheckDiskEnableAutoSnapshotValidation(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CheckDiskEnableAutoSnapshotValidationWithCallback invokes the ecs.CheckDiskEnableAutoSnapshotValidation API asynchronously
+// api document: https://help.aliyun.com/api/ecs/checkdiskenableautosnapshotvalidation.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CheckDiskEnableAutoSnapshotValidationWithCallback(request *CheckDiskEnableAutoSnapshotValidationRequest, callback func(response *CheckDiskEnableAutoSnapshotValidationResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CheckDiskEnableAutoSnapshotValidationResponse
+		var err error
+		defer close(result)
+		response, err = client.CheckDiskEnableAutoSnapshotValidation(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CheckDiskEnableAutoSnapshotValidationRequest is the request struct for api CheckDiskEnableAutoSnapshotValidation
+type CheckDiskEnableAutoSnapshotValidationRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	DiskIds              string           `position:"Query" name:"DiskIds"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// CheckDiskEnableAutoSnapshotValidationResponse is the response struct for api CheckDiskEnableAutoSnapshotValidation
+type CheckDiskEnableAutoSnapshotValidationResponse struct {
+	*responses.BaseResponse
+	RequestId              string `json:"RequestId" xml:"RequestId"`
+	IsPermitted            string `json:"IsPermitted" xml:"IsPermitted"`
+	AutoSnapshotOccupation int    `json:"AutoSnapshotOccupation" xml:"AutoSnapshotOccupation"`
+}
+
+// CreateCheckDiskEnableAutoSnapshotValidationRequest creates a request to invoke CheckDiskEnableAutoSnapshotValidation API
+func CreateCheckDiskEnableAutoSnapshotValidationRequest() (request *CheckDiskEnableAutoSnapshotValidationRequest) {
+	request = &CheckDiskEnableAutoSnapshotValidationRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "CheckDiskEnableAutoSnapshotValidation", "ecs", "openAPI")
+	return
+}
+
+// CreateCheckDiskEnableAutoSnapshotValidationResponse creates a response to parse from CheckDiskEnableAutoSnapshotValidation response
+func CreateCheckDiskEnableAutoSnapshotValidationResponse() (response *CheckDiskEnableAutoSnapshotValidationResponse) {
+	response = &CheckDiskEnableAutoSnapshotValidationResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/ecs/create_user_event.go

@@ -0,0 +1,110 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateUserEvent invokes the ecs.CreateUserEvent API synchronously
+// api document: https://help.aliyun.com/api/ecs/createuserevent.html
+func (client *Client) CreateUserEvent(request *CreateUserEventRequest) (response *CreateUserEventResponse, err error) {
+	response = CreateCreateUserEventResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUserEventWithChan invokes the ecs.CreateUserEvent API asynchronously
+// api document: https://help.aliyun.com/api/ecs/createuserevent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserEventWithChan(request *CreateUserEventRequest) (<-chan *CreateUserEventResponse, <-chan error) {
+	responseChan := make(chan *CreateUserEventResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUserEvent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUserEventWithCallback invokes the ecs.CreateUserEvent API asynchronously
+// api document: https://help.aliyun.com/api/ecs/createuserevent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserEventWithCallback(request *CreateUserEventRequest, callback func(response *CreateUserEventResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUserEventResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUserEvent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUserEventRequest is the request struct for api CreateUserEvent
+type CreateUserEventRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PlanTime             string           `position:"Query" name:"PlanTime"`
+	ExpireTime           string           `position:"Query" name:"ExpireTime"`
+	ResourceId           string           `position:"Query" name:"ResourceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	EventType            string           `position:"Query" name:"EventType"`
+}
+
+// CreateUserEventResponse is the response struct for api CreateUserEvent
+type CreateUserEventResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	EventId   string `json:"EventId" xml:"EventId"`
+}
+
+// CreateCreateUserEventRequest creates a request to invoke CreateUserEvent API
+func CreateCreateUserEventRequest() (request *CreateUserEventRequest) {
+	request = &CreateUserEventRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "CreateUserEvent", "ecs", "openAPI")
+	return
+}
+
+// CreateCreateUserEventResponse creates a response to parse from CreateUserEvent response
+func CreateCreateUserEventResponse() (response *CreateUserEventResponse) {
+	response = &CreateUserEventResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 122 - 0
services/ecs/create_volume.go

@@ -0,0 +1,122 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateVolume invokes the ecs.CreateVolume API synchronously
+// api document: https://help.aliyun.com/api/ecs/createvolume.html
+func (client *Client) CreateVolume(request *CreateVolumeRequest) (response *CreateVolumeResponse, err error) {
+	response = CreateCreateVolumeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateVolumeWithChan invokes the ecs.CreateVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/createvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVolumeWithChan(request *CreateVolumeRequest) (<-chan *CreateVolumeResponse, <-chan error) {
+	responseChan := make(chan *CreateVolumeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateVolume(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateVolumeWithCallback invokes the ecs.CreateVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/createvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVolumeWithCallback(request *CreateVolumeRequest, callback func(response *CreateVolumeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateVolumeResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateVolume(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateVolumeRequest is the request struct for api CreateVolume
+type CreateVolumeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer   `position:"Query" name:"ResourceOwnerId"`
+	SnapshotId           string             `position:"Query" name:"SnapshotId"`
+	VolumeName           string             `position:"Query" name:"VolumeName"`
+	VolumeEncrypted      requests.Boolean   `position:"Query" name:"VolumeEncrypted"`
+	ResourceOwnerAccount string             `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string             `position:"Query" name:"ClientToken"`
+	OwnerAccount         string             `position:"Query" name:"OwnerAccount"`
+	Description          string             `position:"Query" name:"Description"`
+	OwnerId              requests.Integer   `position:"Query" name:"OwnerId"`
+	VolumeCategory       string             `position:"Query" name:"VolumeCategory"`
+	Size                 requests.Integer   `position:"Query" name:"Size"`
+	ZoneId               string             `position:"Query" name:"ZoneId"`
+	Tag                  *[]CreateVolumeTag `position:"Query" name:"Tag"  type:"Repeated"`
+}
+
+// CreateVolumeTag is a repeated param struct in CreateVolumeRequest
+type CreateVolumeTag struct {
+	Value string `name:"Value"`
+	Key   string `name:"Key"`
+}
+
+// CreateVolumeResponse is the response struct for api CreateVolume
+type CreateVolumeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	VolumeId  string `json:"VolumeId" xml:"VolumeId"`
+}
+
+// CreateCreateVolumeRequest creates a request to invoke CreateVolume API
+func CreateCreateVolumeRequest() (request *CreateVolumeRequest) {
+	request = &CreateVolumeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "CreateVolume", "ecs", "openAPI")
+	return
+}
+
+// CreateCreateVolumeResponse creates a response to parse from CreateVolume response
+func CreateCreateVolumeResponse() (response *CreateVolumeResponse) {
+	response = &CreateVolumeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/ecs/delete_volume.go

@@ -0,0 +1,107 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteVolume invokes the ecs.DeleteVolume API synchronously
+// api document: https://help.aliyun.com/api/ecs/deletevolume.html
+func (client *Client) DeleteVolume(request *DeleteVolumeRequest) (response *DeleteVolumeResponse, err error) {
+	response = CreateDeleteVolumeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteVolumeWithChan invokes the ecs.DeleteVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/deletevolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVolumeWithChan(request *DeleteVolumeRequest) (<-chan *DeleteVolumeResponse, <-chan error) {
+	responseChan := make(chan *DeleteVolumeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteVolume(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteVolumeWithCallback invokes the ecs.DeleteVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/deletevolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVolumeWithCallback(request *DeleteVolumeRequest, callback func(response *DeleteVolumeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteVolumeResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteVolume(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteVolumeRequest is the request struct for api DeleteVolume
+type DeleteVolumeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteVolumeResponse is the response struct for api DeleteVolume
+type DeleteVolumeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteVolumeRequest creates a request to invoke DeleteVolume API
+func CreateDeleteVolumeRequest() (request *DeleteVolumeRequest) {
+	request = &DeleteVolumeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DeleteVolume", "ecs", "openAPI")
+	return
+}
+
+// CreateDeleteVolumeResponse creates a response to parse from DeleteVolume response
+func CreateDeleteVolumeResponse() (response *DeleteVolumeResponse) {
+	response = &DeleteVolumeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ecs/describe_auto_snapshot_policy.go

@@ -0,0 +1,109 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeAutoSnapshotPolicy invokes the ecs.DescribeAutoSnapshotPolicy API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeautosnapshotpolicy.html
+func (client *Client) DescribeAutoSnapshotPolicy(request *DescribeAutoSnapshotPolicyRequest) (response *DescribeAutoSnapshotPolicyResponse, err error) {
+	response = CreateDescribeAutoSnapshotPolicyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAutoSnapshotPolicyWithChan invokes the ecs.DescribeAutoSnapshotPolicy API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautosnapshotpolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoSnapshotPolicyWithChan(request *DescribeAutoSnapshotPolicyRequest) (<-chan *DescribeAutoSnapshotPolicyResponse, <-chan error) {
+	responseChan := make(chan *DescribeAutoSnapshotPolicyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAutoSnapshotPolicy(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAutoSnapshotPolicyWithCallback invokes the ecs.DescribeAutoSnapshotPolicy API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautosnapshotpolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoSnapshotPolicyWithCallback(request *DescribeAutoSnapshotPolicyRequest, callback func(response *DescribeAutoSnapshotPolicyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAutoSnapshotPolicyResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAutoSnapshotPolicy(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAutoSnapshotPolicyRequest is the request struct for api DescribeAutoSnapshotPolicy
+type DescribeAutoSnapshotPolicyRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeAutoSnapshotPolicyResponse is the response struct for api DescribeAutoSnapshotPolicy
+type DescribeAutoSnapshotPolicyResponse struct {
+	*responses.BaseResponse
+	RequestId                  string                     `json:"RequestId" xml:"RequestId"`
+	AutoSnapshotOccupation     int                        `json:"AutoSnapshotOccupation" xml:"AutoSnapshotOccupation"`
+	AutoSnapshotPolicy         AutoSnapshotPolicy         `json:"AutoSnapshotPolicy" xml:"AutoSnapshotPolicy"`
+	AutoSnapshotExcutionStatus AutoSnapshotExcutionStatus `json:"AutoSnapshotExcutionStatus" xml:"AutoSnapshotExcutionStatus"`
+}
+
+// CreateDescribeAutoSnapshotPolicyRequest creates a request to invoke DescribeAutoSnapshotPolicy API
+func CreateDescribeAutoSnapshotPolicyRequest() (request *DescribeAutoSnapshotPolicyRequest) {
+	request = &DescribeAutoSnapshotPolicyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeAutoSnapshotPolicy", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeAutoSnapshotPolicyResponse creates a response to parse from DescribeAutoSnapshotPolicy response
+func CreateDescribeAutoSnapshotPolicyResponse() (response *DescribeAutoSnapshotPolicyResponse) {
+	response = &DescribeAutoSnapshotPolicyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 119 - 0
services/ecs/describe_event_detail.go

@@ -0,0 +1,119 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeEventDetail invokes the ecs.DescribeEventDetail API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeeventdetail.html
+func (client *Client) DescribeEventDetail(request *DescribeEventDetailRequest) (response *DescribeEventDetailResponse, err error) {
+	response = CreateDescribeEventDetailResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEventDetailWithChan invokes the ecs.DescribeEventDetail API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeeventdetail.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEventDetailWithChan(request *DescribeEventDetailRequest) (<-chan *DescribeEventDetailResponse, <-chan error) {
+	responseChan := make(chan *DescribeEventDetailResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEventDetail(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEventDetailWithCallback invokes the ecs.DescribeEventDetail API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeeventdetail.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEventDetailWithCallback(request *DescribeEventDetailRequest, callback func(response *DescribeEventDetailResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEventDetailResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEventDetail(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEventDetailRequest is the request struct for api DescribeEventDetail
+type DescribeEventDetailRequest struct {
+	*requests.RpcRequest
+	EventId              string           `position:"Query" name:"EventId"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeEventDetailResponse is the response struct for api DescribeEventDetail
+type DescribeEventDetailResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	ResourceId    string `json:"ResourceId" xml:"ResourceId"`
+	EventType     string `json:"EventType" xml:"EventType"`
+	EventCategory string `json:"EventCategory" xml:"EventCategory"`
+	Status        string `json:"Status" xml:"Status"`
+	SupportModify string `json:"SupportModify" xml:"SupportModify"`
+	PlanTime      string `json:"PlanTime" xml:"PlanTime"`
+	ExpireTime    string `json:"ExpireTime" xml:"ExpireTime"`
+	EventId       string `json:"EventId" xml:"EventId"`
+	StartTime     string `json:"StartTime" xml:"StartTime"`
+	EndTime       string `json:"EndTime" xml:"EndTime"`
+	EffectTime    string `json:"EffectTime" xml:"EffectTime"`
+	LimitTime     string `json:"LimitTime" xml:"LimitTime"`
+	Mark          string `json:"Mark" xml:"Mark"`
+}
+
+// CreateDescribeEventDetailRequest creates a request to invoke DescribeEventDetail API
+func CreateDescribeEventDetailRequest() (request *DescribeEventDetailRequest) {
+	request = &DescribeEventDetailRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeEventDetail", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeEventDetailResponse creates a response to parse from DescribeEventDetail response
+func CreateDescribeEventDetailResponse() (response *DescribeEventDetailResponse) {
+	response = &DescribeEventDetailResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/ecs/describe_events.go

@@ -0,0 +1,117 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeEvents invokes the ecs.DescribeEvents API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeevents.html
+func (client *Client) DescribeEvents(request *DescribeEventsRequest) (response *DescribeEventsResponse, err error) {
+	response = CreateDescribeEventsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEventsWithChan invokes the ecs.DescribeEvents API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeevents.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEventsWithChan(request *DescribeEventsRequest) (<-chan *DescribeEventsResponse, <-chan error) {
+	responseChan := make(chan *DescribeEventsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEvents(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEventsWithCallback invokes the ecs.DescribeEvents API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeevents.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEventsWithCallback(request *DescribeEventsRequest, callback func(response *DescribeEventsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEventsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEvents(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEventsRequest is the request struct for api DescribeEvents
+type DescribeEventsRequest struct {
+	*requests.RpcRequest
+	EventId              string           `position:"Query" name:"EventId"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	PlanTime             string           `position:"Query" name:"PlanTime"`
+	ExpireTime           string           `position:"Query" name:"ExpireTime"`
+	ResourceId           string           `position:"Query" name:"ResourceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	EventType            string           `position:"Query" name:"EventType"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// DescribeEventsResponse is the response struct for api DescribeEvents
+type DescribeEventsResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	PageNumber int    `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int    `json:"PageSize" xml:"PageSize"`
+	TotalCount int    `json:"TotalCount" xml:"TotalCount"`
+	Events     Events `json:"Events" xml:"Events"`
+}
+
+// CreateDescribeEventsRequest creates a request to invoke DescribeEvents API
+func CreateDescribeEventsRequest() (request *DescribeEventsRequest) {
+	request = &DescribeEventsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeEvents", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeEventsResponse creates a response to parse from DescribeEvents response
+func CreateDescribeEventsResponse() (response *DescribeEventsResponse) {
+	response = &DescribeEventsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/ecs/describe_intranet_attribute_kb.go

@@ -0,0 +1,112 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeIntranetAttributeKb invokes the ecs.DescribeIntranetAttributeKb API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeintranetattributekb.html
+func (client *Client) DescribeIntranetAttributeKb(request *DescribeIntranetAttributeKbRequest) (response *DescribeIntranetAttributeKbResponse, err error) {
+	response = CreateDescribeIntranetAttributeKbResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeIntranetAttributeKbWithChan invokes the ecs.DescribeIntranetAttributeKb API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeintranetattributekb.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeIntranetAttributeKbWithChan(request *DescribeIntranetAttributeKbRequest) (<-chan *DescribeIntranetAttributeKbResponse, <-chan error) {
+	responseChan := make(chan *DescribeIntranetAttributeKbResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeIntranetAttributeKb(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeIntranetAttributeKbWithCallback invokes the ecs.DescribeIntranetAttributeKb API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeintranetattributekb.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeIntranetAttributeKbWithCallback(request *DescribeIntranetAttributeKbRequest, callback func(response *DescribeIntranetAttributeKbResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeIntranetAttributeKbResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeIntranetAttributeKb(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeIntranetAttributeKbRequest is the request struct for api DescribeIntranetAttributeKb
+type DescribeIntranetAttributeKbRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeIntranetAttributeKbResponse is the response struct for api DescribeIntranetAttributeKb
+type DescribeIntranetAttributeKbResponse struct {
+	*responses.BaseResponse
+	RequestId               string `json:"RequestId" xml:"RequestId"`
+	InstanceId              string `json:"InstanceId" xml:"InstanceId"`
+	VlanId                  string `json:"VlanId" xml:"VlanId"`
+	IntranetIpAddress       string `json:"IntranetIpAddress" xml:"IntranetIpAddress"`
+	IntranetMaxBandwidthIn  int    `json:"IntranetMaxBandwidthIn" xml:"IntranetMaxBandwidthIn"`
+	IntranetMaxBandwidthOut int    `json:"IntranetMaxBandwidthOut" xml:"IntranetMaxBandwidthOut"`
+}
+
+// CreateDescribeIntranetAttributeKbRequest creates a request to invoke DescribeIntranetAttributeKb API
+func CreateDescribeIntranetAttributeKbRequest() (request *DescribeIntranetAttributeKbRequest) {
+	request = &DescribeIntranetAttributeKbRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeIntranetAttributeKb", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeIntranetAttributeKbResponse creates a response to parse from DescribeIntranetAttributeKb response
+func CreateDescribeIntranetAttributeKbResponse() (response *DescribeIntranetAttributeKbResponse) {
+	response = &DescribeIntranetAttributeKbResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/ecs/describe_ip_ranges.go

@@ -0,0 +1,116 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeIpRanges invokes the ecs.DescribeIpRanges API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeipranges.html
+func (client *Client) DescribeIpRanges(request *DescribeIpRangesRequest) (response *DescribeIpRangesResponse, err error) {
+	response = CreateDescribeIpRangesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeIpRangesWithChan invokes the ecs.DescribeIpRanges API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeipranges.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeIpRangesWithChan(request *DescribeIpRangesRequest) (<-chan *DescribeIpRangesResponse, <-chan error) {
+	responseChan := make(chan *DescribeIpRangesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeIpRanges(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeIpRangesWithCallback invokes the ecs.DescribeIpRanges API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeipranges.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeIpRangesWithCallback(request *DescribeIpRangesRequest, callback func(response *DescribeIpRangesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeIpRangesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeIpRanges(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeIpRangesRequest is the request struct for api DescribeIpRanges
+type DescribeIpRangesRequest struct {
+	*requests.RpcRequest
+	NicType              string           `position:"Query" name:"NicType"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ClusterId            string           `position:"Query" name:"ClusterId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribeIpRangesResponse is the response struct for api DescribeIpRanges
+type DescribeIpRangesResponse struct {
+	*responses.BaseResponse
+	RequestId  string   `json:"RequestId" xml:"RequestId"`
+	RegionId   string   `json:"RegionId" xml:"RegionId"`
+	ClusterId  string   `json:"ClusterId" xml:"ClusterId"`
+	TotalCount int      `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int      `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int      `json:"PageSize" xml:"PageSize"`
+	IpRanges   IpRanges `json:"IpRanges" xml:"IpRanges"`
+}
+
+// CreateDescribeIpRangesRequest creates a request to invoke DescribeIpRanges API
+func CreateDescribeIpRangesRequest() (request *DescribeIpRangesRequest) {
+	request = &DescribeIpRangesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeIpRanges", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeIpRangesResponse creates a response to parse from DescribeIpRanges response
+func CreateDescribeIpRangesResponse() (response *DescribeIpRangesResponse) {
+	response = &DescribeIpRangesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 128 - 0
services/ecs/describe_volumes.go

@@ -0,0 +1,128 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeVolumes invokes the ecs.DescribeVolumes API synchronously
+// api document: https://help.aliyun.com/api/ecs/describevolumes.html
+func (client *Client) DescribeVolumes(request *DescribeVolumesRequest) (response *DescribeVolumesResponse, err error) {
+	response = CreateDescribeVolumesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeVolumesWithChan invokes the ecs.DescribeVolumes API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describevolumes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeVolumesWithChan(request *DescribeVolumesRequest) (<-chan *DescribeVolumesResponse, <-chan error) {
+	responseChan := make(chan *DescribeVolumesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeVolumes(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeVolumesWithCallback invokes the ecs.DescribeVolumes API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describevolumes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeVolumesWithCallback(request *DescribeVolumesRequest, callback func(response *DescribeVolumesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeVolumesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeVolumes(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeVolumesRequest is the request struct for api DescribeVolumes
+type DescribeVolumesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId               requests.Integer      `position:"Query" name:"ResourceOwnerId"`
+	SnapshotId                    string                `position:"Query" name:"SnapshotId"`
+	ResourceOwnerAccount          string                `position:"Query" name:"ResourceOwnerAccount"`
+	AutoSnapshotPolicyId          string                `position:"Query" name:"AutoSnapshotPolicyId"`
+	OwnerAccount                  string                `position:"Query" name:"OwnerAccount"`
+	EnableAutomatedSnapshotPolicy requests.Boolean      `position:"Query" name:"EnableAutomatedSnapshotPolicy"`
+	OwnerId                       requests.Integer      `position:"Query" name:"OwnerId"`
+	PageNumber                    requests.Integer      `position:"Query" name:"PageNumber"`
+	InstanceId                    string                `position:"Query" name:"InstanceId"`
+	LockReason                    string                `position:"Query" name:"LockReason"`
+	PageSize                      requests.Integer      `position:"Query" name:"PageSize"`
+	ZoneId                        string                `position:"Query" name:"ZoneId"`
+	VolumeIds                     string                `position:"Query" name:"VolumeIds"`
+	Tag                           *[]DescribeVolumesTag `position:"Query" name:"Tag"  type:"Repeated"`
+	Category                      string                `position:"Query" name:"Category"`
+	Status                        string                `position:"Query" name:"Status"`
+}
+
+// DescribeVolumesTag is a repeated param struct in DescribeVolumesRequest
+type DescribeVolumesTag struct {
+	Value string `name:"Value"`
+	Key   string `name:"Key"`
+}
+
+// DescribeVolumesResponse is the response struct for api DescribeVolumes
+type DescribeVolumesResponse struct {
+	*responses.BaseResponse
+	RequestId  string  `json:"RequestId" xml:"RequestId"`
+	TotalCount int     `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int     `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int     `json:"PageSize" xml:"PageSize"`
+	Volumes    Volumes `json:"Volumes" xml:"Volumes"`
+}
+
+// CreateDescribeVolumesRequest creates a request to invoke DescribeVolumes API
+func CreateDescribeVolumesRequest() (request *DescribeVolumesRequest) {
+	request = &DescribeVolumesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeVolumes", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeVolumesResponse creates a response to parse from DescribeVolumes response
+func CreateDescribeVolumesResponse() (response *DescribeVolumesResponse) {
+	response = &DescribeVolumesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/ecs/detach_volume.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DetachVolume invokes the ecs.DetachVolume API synchronously
+// api document: https://help.aliyun.com/api/ecs/detachvolume.html
+func (client *Client) DetachVolume(request *DetachVolumeRequest) (response *DetachVolumeResponse, err error) {
+	response = CreateDetachVolumeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetachVolumeWithChan invokes the ecs.DetachVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/detachvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetachVolumeWithChan(request *DetachVolumeRequest) (<-chan *DetachVolumeResponse, <-chan error) {
+	responseChan := make(chan *DetachVolumeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetachVolume(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetachVolumeWithCallback invokes the ecs.DetachVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/detachvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetachVolumeWithCallback(request *DetachVolumeRequest, callback func(response *DetachVolumeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetachVolumeResponse
+		var err error
+		defer close(result)
+		response, err = client.DetachVolume(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetachVolumeRequest is the request struct for api DetachVolume
+type DetachVolumeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DetachVolumeResponse is the response struct for api DetachVolume
+type DetachVolumeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDetachVolumeRequest creates a request to invoke DetachVolume API
+func CreateDetachVolumeRequest() (request *DetachVolumeRequest) {
+	request = &DetachVolumeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DetachVolume", "ecs", "openAPI")
+	return
+}
+
+// CreateDetachVolumeResponse creates a response to parse from DetachVolume response
+func CreateDetachVolumeResponse() (response *DetachVolumeResponse) {
+	response = &DetachVolumeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ecs/modify_intranet_bandwidth_kb.go

@@ -0,0 +1,109 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyIntranetBandwidthKb invokes the ecs.ModifyIntranetBandwidthKb API synchronously
+// api document: https://help.aliyun.com/api/ecs/modifyintranetbandwidthkb.html
+func (client *Client) ModifyIntranetBandwidthKb(request *ModifyIntranetBandwidthKbRequest) (response *ModifyIntranetBandwidthKbResponse, err error) {
+	response = CreateModifyIntranetBandwidthKbResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyIntranetBandwidthKbWithChan invokes the ecs.ModifyIntranetBandwidthKb API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyintranetbandwidthkb.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyIntranetBandwidthKbWithChan(request *ModifyIntranetBandwidthKbRequest) (<-chan *ModifyIntranetBandwidthKbResponse, <-chan error) {
+	responseChan := make(chan *ModifyIntranetBandwidthKbResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyIntranetBandwidthKb(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyIntranetBandwidthKbWithCallback invokes the ecs.ModifyIntranetBandwidthKb API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyintranetbandwidthkb.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyIntranetBandwidthKbWithCallback(request *ModifyIntranetBandwidthKbRequest, callback func(response *ModifyIntranetBandwidthKbResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyIntranetBandwidthKbResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyIntranetBandwidthKb(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyIntranetBandwidthKbRequest is the request struct for api ModifyIntranetBandwidthKb
+type ModifyIntranetBandwidthKbRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId         requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	IntranetMaxBandwidthOut requests.Integer `position:"Query" name:"IntranetMaxBandwidthOut"`
+	InstanceId              string           `position:"Query" name:"InstanceId"`
+	IntranetMaxBandwidthIn  requests.Integer `position:"Query" name:"IntranetMaxBandwidthIn"`
+	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount            string           `position:"Query" name:"OwnerAccount"`
+	OwnerId                 requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ModifyIntranetBandwidthKbResponse is the response struct for api ModifyIntranetBandwidthKb
+type ModifyIntranetBandwidthKbResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyIntranetBandwidthKbRequest creates a request to invoke ModifyIntranetBandwidthKb API
+func CreateModifyIntranetBandwidthKbRequest() (request *ModifyIntranetBandwidthKbRequest) {
+	request = &ModifyIntranetBandwidthKbRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ModifyIntranetBandwidthKb", "ecs", "openAPI")
+	return
+}
+
+// CreateModifyIntranetBandwidthKbResponse creates a response to parse from ModifyIntranetBandwidthKb response
+func CreateModifyIntranetBandwidthKbResponse() (response *ModifyIntranetBandwidthKbResponse) {
+	response = &ModifyIntranetBandwidthKbResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 0
services/ecs/modify_security_group_egress_rule.go

@@ -82,6 +82,8 @@ type ModifySecurityGroupEgressRuleRequest struct {
 	ClientToken           string           `position:"Query" name:"ClientToken"`
 	SecurityGroupId       string           `position:"Query" name:"SecurityGroupId"`
 	Description           string           `position:"Query" name:"Description"`
+	Ipv6DestCidrIp        string           `position:"Query" name:"Ipv6DestCidrIp"`
+	Ipv6SourceCidrIp      string           `position:"Query" name:"Ipv6SourceCidrIp"`
 	Policy                string           `position:"Query" name:"Policy"`
 	PortRange             string           `position:"Query" name:"PortRange"`
 	ResourceOwnerAccount  string           `position:"Query" name:"ResourceOwnerAccount"`

+ 2 - 0
services/ecs/modify_security_group_rule.go

@@ -84,6 +84,8 @@ type ModifySecurityGroupRuleRequest struct {
 	Description             string           `position:"Query" name:"Description"`
 	SourceGroupOwnerId      requests.Integer `position:"Query" name:"SourceGroupOwnerId"`
 	SourceGroupOwnerAccount string           `position:"Query" name:"SourceGroupOwnerAccount"`
+	Ipv6SourceCidrIp        string           `position:"Query" name:"Ipv6SourceCidrIp"`
+	Ipv6DestCidrIp          string           `position:"Query" name:"Ipv6DestCidrIp"`
 	Policy                  string           `position:"Query" name:"Policy"`
 	PortRange               string           `position:"Query" name:"PortRange"`
 	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`

+ 110 - 0
services/ecs/modify_user_event_attribute.go

@@ -0,0 +1,110 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyUserEventAttribute invokes the ecs.ModifyUserEventAttribute API synchronously
+// api document: https://help.aliyun.com/api/ecs/modifyusereventattribute.html
+func (client *Client) ModifyUserEventAttribute(request *ModifyUserEventAttributeRequest) (response *ModifyUserEventAttributeResponse, err error) {
+	response = CreateModifyUserEventAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyUserEventAttributeWithChan invokes the ecs.ModifyUserEventAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyusereventattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyUserEventAttributeWithChan(request *ModifyUserEventAttributeRequest) (<-chan *ModifyUserEventAttributeResponse, <-chan error) {
+	responseChan := make(chan *ModifyUserEventAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyUserEventAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyUserEventAttributeWithCallback invokes the ecs.ModifyUserEventAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyusereventattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyUserEventAttributeWithCallback(request *ModifyUserEventAttributeRequest, callback func(response *ModifyUserEventAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyUserEventAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyUserEventAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyUserEventAttributeRequest is the request struct for api ModifyUserEventAttribute
+type ModifyUserEventAttributeRequest struct {
+	*requests.RpcRequest
+	EventId              string           `position:"Query" name:"EventId"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceId           string           `position:"Query" name:"ResourceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	NewPlanTime          string           `position:"Query" name:"NewPlanTime"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	NewExpireTime        string           `position:"Query" name:"NewExpireTime"`
+}
+
+// ModifyUserEventAttributeResponse is the response struct for api ModifyUserEventAttribute
+type ModifyUserEventAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	EventId   string `json:"EventId" xml:"EventId"`
+}
+
+// CreateModifyUserEventAttributeRequest creates a request to invoke ModifyUserEventAttribute API
+func CreateModifyUserEventAttributeRequest() (request *ModifyUserEventAttributeRequest) {
+	request = &ModifyUserEventAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ModifyUserEventAttribute", "ecs", "openAPI")
+	return
+}
+
+// CreateModifyUserEventAttributeResponse creates a response to parse from ModifyUserEventAttribute response
+func CreateModifyUserEventAttributeResponse() (response *ModifyUserEventAttributeResponse) {
+	response = &ModifyUserEventAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ecs/modify_volume_attribute.go

@@ -0,0 +1,109 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyVolumeAttribute invokes the ecs.ModifyVolumeAttribute API synchronously
+// api document: https://help.aliyun.com/api/ecs/modifyvolumeattribute.html
+func (client *Client) ModifyVolumeAttribute(request *ModifyVolumeAttributeRequest) (response *ModifyVolumeAttributeResponse, err error) {
+	response = CreateModifyVolumeAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyVolumeAttributeWithChan invokes the ecs.ModifyVolumeAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyvolumeattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyVolumeAttributeWithChan(request *ModifyVolumeAttributeRequest) (<-chan *ModifyVolumeAttributeResponse, <-chan error) {
+	responseChan := make(chan *ModifyVolumeAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyVolumeAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyVolumeAttributeWithCallback invokes the ecs.ModifyVolumeAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyvolumeattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyVolumeAttributeWithCallback(request *ModifyVolumeAttributeRequest, callback func(response *ModifyVolumeAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyVolumeAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyVolumeAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyVolumeAttributeRequest is the request struct for api ModifyVolumeAttribute
+type ModifyVolumeAttributeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	VolumeName           string           `position:"Query" name:"VolumeName"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	Description          string           `position:"Query" name:"Description"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ModifyVolumeAttributeResponse is the response struct for api ModifyVolumeAttribute
+type ModifyVolumeAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyVolumeAttributeRequest creates a request to invoke ModifyVolumeAttribute API
+func CreateModifyVolumeAttributeRequest() (request *ModifyVolumeAttributeRequest) {
+	request = &ModifyVolumeAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ModifyVolumeAttribute", "ecs", "openAPI")
+	return
+}
+
+// CreateModifyVolumeAttributeResponse creates a response to parse from ModifyVolumeAttribute response
+func CreateModifyVolumeAttributeResponse() (response *ModifyVolumeAttributeResponse) {
+	response = &ModifyVolumeAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/ecs/re_init_volume.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ReInitVolume invokes the ecs.ReInitVolume API synchronously
+// api document: https://help.aliyun.com/api/ecs/reinitvolume.html
+func (client *Client) ReInitVolume(request *ReInitVolumeRequest) (response *ReInitVolumeResponse, err error) {
+	response = CreateReInitVolumeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ReInitVolumeWithChan invokes the ecs.ReInitVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/reinitvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ReInitVolumeWithChan(request *ReInitVolumeRequest) (<-chan *ReInitVolumeResponse, <-chan error) {
+	responseChan := make(chan *ReInitVolumeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ReInitVolume(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ReInitVolumeWithCallback invokes the ecs.ReInitVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/reinitvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ReInitVolumeWithCallback(request *ReInitVolumeRequest, callback func(response *ReInitVolumeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ReInitVolumeResponse
+		var err error
+		defer close(result)
+		response, err = client.ReInitVolume(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ReInitVolumeRequest is the request struct for api ReInitVolume
+type ReInitVolumeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Password             string           `position:"Query" name:"Password"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ReInitVolumeResponse is the response struct for api ReInitVolume
+type ReInitVolumeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateReInitVolumeRequest creates a request to invoke ReInitVolume API
+func CreateReInitVolumeRequest() (request *ReInitVolumeRequest) {
+	request = &ReInitVolumeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ReInitVolume", "ecs", "openAPI")
+	return
+}
+
+// CreateReInitVolumeResponse creates a response to parse from ReInitVolume response
+func CreateReInitVolumeResponse() (response *ReInitVolumeResponse) {
+	response = &ReInitVolumeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ecs/resize_volume.go

@@ -0,0 +1,109 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ResizeVolume invokes the ecs.ResizeVolume API synchronously
+// api document: https://help.aliyun.com/api/ecs/resizevolume.html
+func (client *Client) ResizeVolume(request *ResizeVolumeRequest) (response *ResizeVolumeResponse, err error) {
+	response = CreateResizeVolumeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ResizeVolumeWithChan invokes the ecs.ResizeVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/resizevolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ResizeVolumeWithChan(request *ResizeVolumeRequest) (<-chan *ResizeVolumeResponse, <-chan error) {
+	responseChan := make(chan *ResizeVolumeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ResizeVolume(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ResizeVolumeWithCallback invokes the ecs.ResizeVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/resizevolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ResizeVolumeWithCallback(request *ResizeVolumeRequest, callback func(response *ResizeVolumeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ResizeVolumeResponse
+		var err error
+		defer close(result)
+		response, err = client.ResizeVolume(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ResizeVolumeRequest is the request struct for api ResizeVolume
+type ResizeVolumeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	NewSize              requests.Integer `position:"Query" name:"NewSize"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ResizeVolumeResponse is the response struct for api ResizeVolume
+type ResizeVolumeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateResizeVolumeRequest creates a request to invoke ResizeVolume API
+func CreateResizeVolumeRequest() (request *ResizeVolumeRequest) {
+	request = &ResizeVolumeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ResizeVolume", "ecs", "openAPI")
+	return
+}
+
+// CreateResizeVolumeResponse creates a response to parse from ResizeVolume response
+func CreateResizeVolumeResponse() (response *ResizeVolumeResponse) {
+	response = &ResizeVolumeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 0
services/ecs/revoke_security_group.go

@@ -84,6 +84,8 @@ type RevokeSecurityGroupRequest struct {
 	Description             string           `position:"Query" name:"Description"`
 	SourceGroupOwnerId      requests.Integer `position:"Query" name:"SourceGroupOwnerId"`
 	SourceGroupOwnerAccount string           `position:"Query" name:"SourceGroupOwnerAccount"`
+	Ipv6DestCidrIp          string           `position:"Query" name:"Ipv6DestCidrIp"`
+	Ipv6SourceCidrIp        string           `position:"Query" name:"Ipv6SourceCidrIp"`
 	Policy                  string           `position:"Query" name:"Policy"`
 	PortRange               string           `position:"Query" name:"PortRange"`
 	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`

+ 2 - 0
services/ecs/revoke_security_group_egress.go

@@ -82,6 +82,8 @@ type RevokeSecurityGroupEgressRequest struct {
 	ClientToken           string           `position:"Query" name:"ClientToken"`
 	SecurityGroupId       string           `position:"Query" name:"SecurityGroupId"`
 	Description           string           `position:"Query" name:"Description"`
+	Ipv6DestCidrIp        string           `position:"Query" name:"Ipv6DestCidrIp"`
+	Ipv6SourceCidrIp      string           `position:"Query" name:"Ipv6SourceCidrIp"`
 	Policy                string           `position:"Query" name:"Policy"`
 	PortRange             string           `position:"Query" name:"PortRange"`
 	ResourceOwnerAccount  string           `position:"Query" name:"ResourceOwnerAccount"`

+ 108 - 0
services/ecs/rollback_volume.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// RollbackVolume invokes the ecs.RollbackVolume API synchronously
+// api document: https://help.aliyun.com/api/ecs/rollbackvolume.html
+func (client *Client) RollbackVolume(request *RollbackVolumeRequest) (response *RollbackVolumeResponse, err error) {
+	response = CreateRollbackVolumeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RollbackVolumeWithChan invokes the ecs.RollbackVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/rollbackvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RollbackVolumeWithChan(request *RollbackVolumeRequest) (<-chan *RollbackVolumeResponse, <-chan error) {
+	responseChan := make(chan *RollbackVolumeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RollbackVolume(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RollbackVolumeWithCallback invokes the ecs.RollbackVolume API asynchronously
+// api document: https://help.aliyun.com/api/ecs/rollbackvolume.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RollbackVolumeWithCallback(request *RollbackVolumeRequest, callback func(response *RollbackVolumeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RollbackVolumeResponse
+		var err error
+		defer close(result)
+		response, err = client.RollbackVolume(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RollbackVolumeRequest is the request struct for api RollbackVolume
+type RollbackVolumeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SnapshotId           string           `position:"Query" name:"SnapshotId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// RollbackVolumeResponse is the response struct for api RollbackVolume
+type RollbackVolumeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateRollbackVolumeRequest creates a request to invoke RollbackVolume API
+func CreateRollbackVolumeRequest() (request *RollbackVolumeRequest) {
+	request = &RollbackVolumeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "RollbackVolume", "ecs", "openAPI")
+	return
+}
+
+// CreateRollbackVolumeResponse creates a response to parse from RollbackVolume response
+func CreateRollbackVolumeResponse() (response *RollbackVolumeResponse) {
+	response = &RollbackVolumeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 0
services/ecs/run_instances.go

@@ -91,6 +91,7 @@ type RunInstancesRequest struct {
 	Period                      requests.Integer                `position:"Query" name:"Period"`
 	DryRun                      requests.Boolean                `position:"Query" name:"DryRun"`
 	LaunchTemplateId            string                          `position:"Query" name:"LaunchTemplateId"`
+	Ipv6AddressCount            requests.Integer                `position:"Query" name:"Ipv6AddressCount"`
 	OwnerId                     requests.Integer                `position:"Query" name:"OwnerId"`
 	VSwitchId                   string                          `position:"Query" name:"VSwitchId"`
 	SpotStrategy                string                          `position:"Query" name:"SpotStrategy"`
@@ -100,6 +101,7 @@ type RunInstancesRequest struct {
 	AutoRenew                   requests.Boolean                `position:"Query" name:"AutoRenew"`
 	InternetChargeType          string                          `position:"Query" name:"InternetChargeType"`
 	ZoneId                      string                          `position:"Query" name:"ZoneId"`
+	Ipv6Address                 *[]string                       `position:"Query" name:"Ipv6Address"  type:"Repeated"`
 	InternetMaxBandwidthIn      requests.Integer                `position:"Query" name:"InternetMaxBandwidthIn"`
 	ImageId                     string                          `position:"Query" name:"ImageId"`
 	SpotInterruptionBehavior    string                          `position:"Query" name:"SpotInterruptionBehavior"`

+ 22 - 0
services/ecs/struct_auto_snapshot_excution_status.go

@@ -0,0 +1,22 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// AutoSnapshotExcutionStatus is a nested struct in ecs response
+type AutoSnapshotExcutionStatus struct {
+	SystemDiskExcutionStatus string `json:"SystemDiskExcutionStatus" xml:"SystemDiskExcutionStatus"`
+	DataDiskExcutionStatus   string `json:"DataDiskExcutionStatus" xml:"DataDiskExcutionStatus"`
+}

+ 18 - 10
services/ecs/struct_auto_snapshot_policy.go

@@ -17,14 +17,22 @@ package ecs
 
 // AutoSnapshotPolicy is a nested struct in ecs response
 type AutoSnapshotPolicy struct {
-	AutoSnapshotPolicyId   string `json:"AutoSnapshotPolicyId" xml:"AutoSnapshotPolicyId"`
-	RegionId               string `json:"RegionId" xml:"RegionId"`
-	AutoSnapshotPolicyName string `json:"AutoSnapshotPolicyName" xml:"AutoSnapshotPolicyName"`
-	TimePoints             string `json:"TimePoints" xml:"TimePoints"`
-	RepeatWeekdays         string `json:"RepeatWeekdays" xml:"RepeatWeekdays"`
-	RetentionDays          int    `json:"RetentionDays" xml:"RetentionDays"`
-	DiskNums               int    `json:"DiskNums" xml:"DiskNums"`
-	VolumeNums             int    `json:"VolumeNums" xml:"VolumeNums"`
-	CreationTime           string `json:"CreationTime" xml:"CreationTime"`
-	Status                 string `json:"Status" xml:"Status"`
+	DataDiskPolicyEnabled             string `json:"DataDiskPolicyEnabled" xml:"DataDiskPolicyEnabled"`
+	RepeatWeekdays                    string `json:"RepeatWeekdays" xml:"RepeatWeekdays"`
+	SystemDiskPolicyRetentionLastWeek string `json:"SystemDiskPolicyRetentionLastWeek" xml:"SystemDiskPolicyRetentionLastWeek"`
+	AutoSnapshotPolicyId              string `json:"AutoSnapshotPolicyId" xml:"AutoSnapshotPolicyId"`
+	VolumeNums                        int    `json:"VolumeNums" xml:"VolumeNums"`
+	DataDiskPolicyRetentionDays       string `json:"DataDiskPolicyRetentionDays" xml:"DataDiskPolicyRetentionDays"`
+	CreationTime                      string `json:"CreationTime" xml:"CreationTime"`
+	DataDiskPolicyTimePeriod          string `json:"DataDiskPolicyTimePeriod" xml:"DataDiskPolicyTimePeriod"`
+	SystemDiskPolicyTimePeriod        string `json:"SystemDiskPolicyTimePeriod" xml:"SystemDiskPolicyTimePeriod"`
+	DiskNums                          int    `json:"DiskNums" xml:"DiskNums"`
+	SystemDiskPolicyEnabled           string `json:"SystemDiskPolicyEnabled" xml:"SystemDiskPolicyEnabled"`
+	RegionId                          string `json:"RegionId" xml:"RegionId"`
+	AutoSnapshotPolicyName            string `json:"AutoSnapshotPolicyName" xml:"AutoSnapshotPolicyName"`
+	RetentionDays                     int    `json:"RetentionDays" xml:"RetentionDays"`
+	TimePoints                        string `json:"TimePoints" xml:"TimePoints"`
+	SystemDiskPolicyRetentionDays     string `json:"SystemDiskPolicyRetentionDays" xml:"SystemDiskPolicyRetentionDays"`
+	Status                            string `json:"Status" xml:"Status"`
+	DataDiskPolicyRetentionLastWeek   string `json:"DataDiskPolicyRetentionLastWeek" xml:"DataDiskPolicyRetentionLastWeek"`
 }

+ 1 - 1
services/ecs/struct_disk.go

@@ -49,6 +49,6 @@ type Disk struct {
 	IOPSRead                      int                           `json:"IOPSRead" xml:"IOPSRead"`
 	IOPSWrite                     int                           `json:"IOPSWrite" xml:"IOPSWrite"`
 	OperationLocks                OperationLocksInDescribeDisks `json:"OperationLocks" xml:"OperationLocks"`
-	MountInstances                MountInstances                `json:"MountInstances" xml:"MountInstances"`
+	MountInstances                MountInstancesInDescribeDisks `json:"MountInstances" xml:"MountInstances"`
 	Tags                          TagsInDescribeDisks           `json:"Tags" xml:"Tags"`
 }

+ 2 - 0
services/ecs/struct_disk_device_mapping.go

@@ -24,4 +24,6 @@ type DiskDeviceMapping struct {
 	Format          string `json:"Format" xml:"Format"`
 	ImportOSSBucket string `json:"ImportOSSBucket" xml:"ImportOSSBucket"`
 	ImportOSSObject string `json:"ImportOSSObject" xml:"ImportOSSObject"`
+	Progress        string `json:"Progress" xml:"Progress"`
+	RemainTime      int    `json:"RemainTime" xml:"RemainTime"`
 }

+ 28 - 0
services/ecs/struct_event.go

@@ -0,0 +1,28 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Event is a nested struct in ecs response
+type Event struct {
+	ResourceId    string `json:"ResourceId" xml:"ResourceId"`
+	EventType     string `json:"EventType" xml:"EventType"`
+	EventCategory string `json:"EventCategory" xml:"EventCategory"`
+	Status        string `json:"Status" xml:"Status"`
+	SupportModify string `json:"SupportModify" xml:"SupportModify"`
+	PlanTime      string `json:"PlanTime" xml:"PlanTime"`
+	ExpireTime    string `json:"ExpireTime" xml:"ExpireTime"`
+	EventId       string `json:"EventId" xml:"EventId"`
+}

+ 21 - 0
services/ecs/struct_events.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Events is a nested struct in ecs response
+type Events struct {
+	Event []Event `json:"Event" xml:"Event"`
+}

+ 22 - 0
services/ecs/struct_ip_range.go

@@ -0,0 +1,22 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// IpRange is a nested struct in ecs response
+type IpRange struct {
+	IpAddress string `json:"IpAddress" xml:"IpAddress"`
+	NicType   string `json:"NicType" xml:"NicType"`
+}

+ 21 - 0
services/ecs/struct_ip_ranges.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// IpRanges is a nested struct in ecs response
+type IpRanges struct {
+	IpRange []IpRange `json:"IpRange" xml:"IpRange"`
+}

+ 21 - 0
services/ecs/struct_ipv6_set.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Ipv6Set is a nested struct in ecs response
+type Ipv6Set struct {
+	Ipv6Address string `json:"Ipv6Address" xml:"Ipv6Address"`
+}

+ 21 - 0
services/ecs/struct_ipv6_sets.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Ipv6Sets is a nested struct in ecs response
+type Ipv6Sets struct {
+	Ipv6Set []Ipv6Set `json:"Ipv6Set" xml:"Ipv6Set"`
+}

+ 1 - 1
services/ecs/struct_mount_instance.go

@@ -17,7 +17,7 @@ package ecs
 
 // MountInstance is a nested struct in ecs response
 type MountInstance struct {
-	InstanceId   string `json:"InstanceId" xml:"InstanceId"`
 	Device       string `json:"Device" xml:"Device"`
+	InstanceId   string `json:"InstanceId" xml:"InstanceId"`
 	AttachedTime string `json:"AttachedTime" xml:"AttachedTime"`
 }

+ 2 - 2
services/ecs/struct_mount_instances.go → services/ecs/struct_mount_instances_in_describe_disks.go

@@ -15,7 +15,7 @@ package ecs
 // Code generated by Alibaba Cloud SDK Code Generator.
 // Changes may cause incorrect behavior and will be lost if the code is regenerated.
 
-// MountInstances is a nested struct in ecs response
-type MountInstances struct {
+// MountInstancesInDescribeDisks is a nested struct in ecs response
+type MountInstancesInDescribeDisks struct {
 	MountInstance []MountInstance `json:"MountInstance" xml:"MountInstance"`
 }

+ 21 - 0
services/ecs/struct_mount_instances_in_describe_volumes.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// MountInstancesInDescribeVolumes is a nested struct in ecs response
+type MountInstancesInDescribeVolumes struct {
+	MountInstance []MountInstance `json:"MountInstance" xml:"MountInstance"`
+}

+ 1 - 0
services/ecs/struct_network_interface_set.go

@@ -33,5 +33,6 @@ type NetworkInterfaceSet struct {
 	SecurityGroupIds     SecurityGroupIdsInDescribeNetworkInterfaces `json:"SecurityGroupIds" xml:"SecurityGroupIds"`
 	AssociatedPublicIp   AssociatedPublicIp                          `json:"AssociatedPublicIp" xml:"AssociatedPublicIp"`
 	PrivateIpSets        PrivateIpSets                               `json:"PrivateIpSets" xml:"PrivateIpSets"`
+	Ipv6Sets             Ipv6Sets                                    `json:"Ipv6Sets" xml:"Ipv6Sets"`
 	Tags                 TagsInDescribeNetworkInterfaces             `json:"Tags" xml:"Tags"`
 }

+ 21 - 0
services/ecs/struct_operation_locks_in_describe_volumes.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OperationLocksInDescribeVolumes is a nested struct in ecs response
+type OperationLocksInDescribeVolumes struct {
+	OperationLock []OperationLock `json:"OperationLock" xml:"OperationLock"`
+}

+ 2 - 0
services/ecs/struct_permission.go

@@ -23,12 +23,14 @@ type Permission struct {
 	SourceGroupId           string `json:"SourceGroupId" xml:"SourceGroupId"`
 	SourceGroupName         string `json:"SourceGroupName" xml:"SourceGroupName"`
 	SourceCidrIp            string `json:"SourceCidrIp" xml:"SourceCidrIp"`
+	Ipv6SourceCidrIp        string `json:"Ipv6SourceCidrIp" xml:"Ipv6SourceCidrIp"`
 	Policy                  string `json:"Policy" xml:"Policy"`
 	NicType                 string `json:"NicType" xml:"NicType"`
 	SourceGroupOwnerAccount string `json:"SourceGroupOwnerAccount" xml:"SourceGroupOwnerAccount"`
 	DestGroupId             string `json:"DestGroupId" xml:"DestGroupId"`
 	DestGroupName           string `json:"DestGroupName" xml:"DestGroupName"`
 	DestCidrIp              string `json:"DestCidrIp" xml:"DestCidrIp"`
+	Ipv6DestCidrIp          string `json:"Ipv6DestCidrIp" xml:"Ipv6DestCidrIp"`
 	DestGroupOwnerAccount   string `json:"DestGroupOwnerAccount" xml:"DestGroupOwnerAccount"`
 	Priority                string `json:"Priority" xml:"Priority"`
 	Direction               string `json:"Direction" xml:"Direction"`

+ 21 - 0
services/ecs/struct_tags_in_describe_volumes.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInDescribeVolumes is a nested struct in ecs response
+type TagsInDescribeVolumes struct {
+	Tag []Tag `json:"Tag" xml:"Tag"`
+}

+ 36 - 0
services/ecs/struct_triggered_group_rule.go

@@ -0,0 +1,36 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TriggeredGroupRule is a nested struct in ecs response
+type TriggeredGroupRule struct {
+	IpProtocol              string `json:"IpProtocol" xml:"IpProtocol"`
+	PortRange               string `json:"PortRange" xml:"PortRange"`
+	SourceGroupId           string `json:"SourceGroupId" xml:"SourceGroupId"`
+	SourceGroupName         string `json:"SourceGroupName" xml:"SourceGroupName"`
+	SourceCidrIp            string `json:"SourceCidrIp" xml:"SourceCidrIp"`
+	Policy                  string `json:"Policy" xml:"Policy"`
+	NicType                 string `json:"NicType" xml:"NicType"`
+	SourceGroupOwnerAccount string `json:"SourceGroupOwnerAccount" xml:"SourceGroupOwnerAccount"`
+	DestGroupId             string `json:"DestGroupId" xml:"DestGroupId"`
+	DestGroupName           string `json:"DestGroupName" xml:"DestGroupName"`
+	DestCidrIp              string `json:"DestCidrIp" xml:"DestCidrIp"`
+	DestGroupOwnerAccount   string `json:"DestGroupOwnerAccount" xml:"DestGroupOwnerAccount"`
+	Priority                string `json:"Priority" xml:"Priority"`
+	Direction               string `json:"Direction" xml:"Direction"`
+	Description             string `json:"Description" xml:"Description"`
+	CreateTime              string `json:"CreateTime" xml:"CreateTime"`
+}

+ 1 - 0
services/ecs/struct_v_switch.go

@@ -27,4 +27,5 @@ type VSwitch struct {
 	VSwitchName             string `json:"VSwitchName" xml:"VSwitchName"`
 	CreationTime            string `json:"CreationTime" xml:"CreationTime"`
 	IsDefault               bool   `json:"IsDefault" xml:"IsDefault"`
+	ResourceGroupId         string `json:"ResourceGroupId" xml:"ResourceGroupId"`
 }

+ 39 - 0
services/ecs/struct_volume.go

@@ -0,0 +1,39 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Volume is a nested struct in ecs response
+type Volume struct {
+	VolumeId                      string                          `json:"VolumeId" xml:"VolumeId"`
+	RegionId                      string                          `json:"RegionId" xml:"RegionId"`
+	ZoneId                        string                          `json:"ZoneId" xml:"ZoneId"`
+	VolumeName                    string                          `json:"VolumeName" xml:"VolumeName"`
+	Description                   string                          `json:"Description" xml:"Description"`
+	Category                      string                          `json:"Category" xml:"Category"`
+	Size                          int                             `json:"Size" xml:"Size"`
+	SourceSnapshotId              string                          `json:"SourceSnapshotId" xml:"SourceSnapshotId"`
+	AutoSnapshotPolicyId          string                          `json:"AutoSnapshotPolicyId" xml:"AutoSnapshotPolicyId"`
+	SnapshotLinkId                string                          `json:"SnapshotLinkId" xml:"SnapshotLinkId"`
+	Status                        string                          `json:"Status" xml:"Status"`
+	EnableAutomatedSnapshotPolicy bool                            `json:"EnableAutomatedSnapshotPolicy" xml:"EnableAutomatedSnapshotPolicy"`
+	CreationTime                  string                          `json:"CreationTime" xml:"CreationTime"`
+	VolumeChargeType              string                          `json:"VolumeChargeType" xml:"VolumeChargeType"`
+	MountInstanceNum              int                             `json:"MountInstanceNum" xml:"MountInstanceNum"`
+	Encrypted                     bool                            `json:"Encrypted" xml:"Encrypted"`
+	OperationLocks                OperationLocksInDescribeVolumes `json:"OperationLocks" xml:"OperationLocks"`
+	MountInstances                MountInstancesInDescribeVolumes `json:"MountInstances" xml:"MountInstances"`
+	Tags                          TagsInDescribeVolumes           `json:"Tags" xml:"Tags"`
+}

+ 21 - 0
services/ecs/struct_volumes.go

@@ -0,0 +1,21 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Volumes is a nested struct in ecs response
+type Volumes struct {
+	Volume []Volume `json:"Volume" xml:"Volume"`
+}

+ 108 - 0
services/ecs/unassign_ipv6_addresses.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UnassignIpv6Addresses invokes the ecs.UnassignIpv6Addresses API synchronously
+// api document: https://help.aliyun.com/api/ecs/unassignipv6addresses.html
+func (client *Client) UnassignIpv6Addresses(request *UnassignIpv6AddressesRequest) (response *UnassignIpv6AddressesResponse, err error) {
+	response = CreateUnassignIpv6AddressesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UnassignIpv6AddressesWithChan invokes the ecs.UnassignIpv6Addresses API asynchronously
+// api document: https://help.aliyun.com/api/ecs/unassignipv6addresses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnassignIpv6AddressesWithChan(request *UnassignIpv6AddressesRequest) (<-chan *UnassignIpv6AddressesResponse, <-chan error) {
+	responseChan := make(chan *UnassignIpv6AddressesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UnassignIpv6Addresses(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UnassignIpv6AddressesWithCallback invokes the ecs.UnassignIpv6Addresses API asynchronously
+// api document: https://help.aliyun.com/api/ecs/unassignipv6addresses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnassignIpv6AddressesWithCallback(request *UnassignIpv6AddressesRequest, callback func(response *UnassignIpv6AddressesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UnassignIpv6AddressesResponse
+		var err error
+		defer close(result)
+		response, err = client.UnassignIpv6Addresses(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UnassignIpv6AddressesRequest is the request struct for api UnassignIpv6Addresses
+type UnassignIpv6AddressesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	NetworkInterfaceId   string           `position:"Query" name:"NetworkInterfaceId"`
+	Ipv6Address          *[]string        `position:"Query" name:"Ipv6Address"  type:"Repeated"`
+}
+
+// UnassignIpv6AddressesResponse is the response struct for api UnassignIpv6Addresses
+type UnassignIpv6AddressesResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateUnassignIpv6AddressesRequest creates a request to invoke UnassignIpv6Addresses API
+func CreateUnassignIpv6AddressesRequest() (request *UnassignIpv6AddressesRequest) {
+	request = &UnassignIpv6AddressesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "UnassignIpv6Addresses", "ecs", "openAPI")
+	return
+}
+
+// CreateUnassignIpv6AddressesResponse creates a response to parse from UnassignIpv6Addresses response
+func CreateUnassignIpv6AddressesResponse() (response *UnassignIpv6AddressesResponse) {
+	response = &UnassignIpv6AddressesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/ecs/unbind_ip_range.go

@@ -0,0 +1,108 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UnbindIpRange invokes the ecs.UnbindIpRange API synchronously
+// api document: https://help.aliyun.com/api/ecs/unbindiprange.html
+func (client *Client) UnbindIpRange(request *UnbindIpRangeRequest) (response *UnbindIpRangeResponse, err error) {
+	response = CreateUnbindIpRangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UnbindIpRangeWithChan invokes the ecs.UnbindIpRange API asynchronously
+// api document: https://help.aliyun.com/api/ecs/unbindiprange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnbindIpRangeWithChan(request *UnbindIpRangeRequest) (<-chan *UnbindIpRangeResponse, <-chan error) {
+	responseChan := make(chan *UnbindIpRangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UnbindIpRange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UnbindIpRangeWithCallback invokes the ecs.UnbindIpRange API asynchronously
+// api document: https://help.aliyun.com/api/ecs/unbindiprange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnbindIpRangeWithCallback(request *UnbindIpRangeRequest, callback func(response *UnbindIpRangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UnbindIpRangeResponse
+		var err error
+		defer close(result)
+		response, err = client.UnbindIpRange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UnbindIpRangeRequest is the request struct for api UnbindIpRange
+type UnbindIpRangeRequest struct {
+	*requests.RpcRequest
+	IpAddress            string           `position:"Query" name:"IpAddress"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// UnbindIpRangeResponse is the response struct for api UnbindIpRange
+type UnbindIpRangeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateUnbindIpRangeRequest creates a request to invoke UnbindIpRange API
+func CreateUnbindIpRangeRequest() (request *UnbindIpRangeRequest) {
+	request = &UnbindIpRangeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "UnbindIpRange", "ecs", "openAPI")
+	return
+}
+
+// CreateUnbindIpRangeResponse creates a response to parse from UnbindIpRange response
+func CreateUnbindIpRangeResponse() (response *UnbindIpRangeResponse) {
+	response = &UnbindIpRangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/ecs/validate_security_group.go

@@ -0,0 +1,116 @@
+package ecs
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ValidateSecurityGroup invokes the ecs.ValidateSecurityGroup API synchronously
+// api document: https://help.aliyun.com/api/ecs/validatesecuritygroup.html
+func (client *Client) ValidateSecurityGroup(request *ValidateSecurityGroupRequest) (response *ValidateSecurityGroupResponse, err error) {
+	response = CreateValidateSecurityGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ValidateSecurityGroupWithChan invokes the ecs.ValidateSecurityGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/validatesecuritygroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ValidateSecurityGroupWithChan(request *ValidateSecurityGroupRequest) (<-chan *ValidateSecurityGroupResponse, <-chan error) {
+	responseChan := make(chan *ValidateSecurityGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ValidateSecurityGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ValidateSecurityGroupWithCallback invokes the ecs.ValidateSecurityGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/validatesecuritygroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ValidateSecurityGroupWithCallback(request *ValidateSecurityGroupRequest, callback func(response *ValidateSecurityGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ValidateSecurityGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.ValidateSecurityGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ValidateSecurityGroupRequest is the request struct for api ValidateSecurityGroup
+type ValidateSecurityGroupRequest struct {
+	*requests.RpcRequest
+	NicType              string           `position:"Query" name:"NicType"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SourcePort           requests.Integer `position:"Query" name:"SourcePort"`
+	SourceIp             string           `position:"Query" name:"SourceIp"`
+	Direction            string           `position:"Query" name:"Direction"`
+	DestIp               string           `position:"Query" name:"DestIp"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	IpProtocol           string           `position:"Query" name:"IpProtocol"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	DestPort             requests.Integer `position:"Query" name:"DestPort"`
+}
+
+// ValidateSecurityGroupResponse is the response struct for api ValidateSecurityGroup
+type ValidateSecurityGroupResponse struct {
+	*responses.BaseResponse
+	RequestId          string             `json:"RequestId" xml:"RequestId"`
+	Policy             string             `json:"Policy" xml:"Policy"`
+	TriggeredGroupRule TriggeredGroupRule `json:"TriggeredGroupRule" xml:"TriggeredGroupRule"`
+}
+
+// CreateValidateSecurityGroupRequest creates a request to invoke ValidateSecurityGroup API
+func CreateValidateSecurityGroupRequest() (request *ValidateSecurityGroupRequest) {
+	request = &ValidateSecurityGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ValidateSecurityGroup", "ecs", "openAPI")
+	return
+}
+
+// CreateValidateSecurityGroupResponse creates a response to parse from ValidateSecurityGroup response
+func CreateValidateSecurityGroupResponse() (response *ValidateSecurityGroupResponse) {
+	response = &ValidateSecurityGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}