Forráskód Böngészése

由楚俊发起的ECS SDK自动发布, BUILD_ID=498, 版本号:1.4.2

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao 7 éve
szülő
commit
5ba4ea9174

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2018-03-23 Version: 1.4.2
+1, interface DescribeInstanceTypes output InstancePpsRx InstancePpsTx
+
 2018-03-23 Version: 1.4.1
 1, ModifyPrepayInstanceSpec support migrateAcrossZone.
 

+ 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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+}
+
+// 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
+}

+ 5 - 0
services/ecs/create_router_interface.go

@@ -91,6 +91,10 @@ type CreateRouterInterfaceRequest struct {
 	OppositeAccessPointId    string           `position:"Query" name:"OppositeAccessPointId"`
 	Description              string           `position:"Query" name:"Description"`
 	Name                     string           `position:"Query" name:"Name"`
+	Period                   requests.Integer `position:"Query" name:"Period"`
+	InstanceChargeType       string           `position:"Query" name:"InstanceChargeType"`
+	AutoPay                  requests.Boolean `position:"Query" name:"AutoPay"`
+	PricingCycle             string           `position:"Query" name:"PricingCycle"`
 	ClientToken              string           `position:"Query" name:"ClientToken"`
 	OwnerId                  requests.Integer `position:"Query" name:"OwnerId"`
 	ResourceOwnerAccount     string           `position:"Query" name:"ResourceOwnerAccount"`
@@ -104,6 +108,7 @@ type CreateRouterInterfaceResponse struct {
 	*responses.BaseResponse
 	RequestId         string `json:"RequestId" xml:"RequestId"`
 	RouterInterfaceId string `json:"RouterInterfaceId" xml:"RouterInterfaceId"`
+	OrderId           int    `json:"OrderId" xml:"OrderId"`
 }
 
 // CreateCreateRouterInterfaceRequest creates a request to invoke CreateRouterInterface API

+ 125 - 0
services/ecs/create_volume.go

@@ -0,0 +1,125 @@
+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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ZoneId               string           `position:"Query" name:"ZoneId"`
+	SnapshotId           string           `position:"Query" name:"SnapshotId"`
+	VolumeName           string           `position:"Query" name:"VolumeName"`
+	Size                 requests.Integer `position:"Query" name:"Size"`
+	VolumeCategory       string           `position:"Query" name:"VolumeCategory"`
+	Description          string           `position:"Query" name:"Description"`
+	VolumeEncrypted      requests.Boolean `position:"Query" name:"VolumeEncrypted"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Tag1Key              string           `position:"Query" name:"Tag.1.Key"`
+	Tag2Key              string           `position:"Query" name:"Tag.2.Key"`
+	Tag3Key              string           `position:"Query" name:"Tag.3.Key"`
+	Tag4Key              string           `position:"Query" name:"Tag.4.Key"`
+	Tag5Key              string           `position:"Query" name:"Tag.5.Key"`
+	Tag1Value            string           `position:"Query" name:"Tag.1.Value"`
+	Tag2Value            string           `position:"Query" name:"Tag.2.Value"`
+	Tag3Value            string           `position:"Query" name:"Tag.3.Value"`
+	Tag4Value            string           `position:"Query" name:"Tag.4.Value"`
+	Tag5Value            string           `position:"Query" name:"Tag.5.Value"`
+}
+
+// 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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+}
+
+// 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
+}

+ 131 - 0
services/ecs/describe_volumes.go

@@ -0,0 +1,131 @@
+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
+	OwnerId                       requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount          string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId               requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ZoneId                        string           `position:"Query" name:"ZoneId"`
+	VolumeIds                     string           `position:"Query" name:"VolumeIds"`
+	InstanceId                    string           `position:"Query" name:"InstanceId"`
+	Category                      string           `position:"Query" name:"Category"`
+	Status                        string           `position:"Query" name:"Status"`
+	SnapshotId                    string           `position:"Query" name:"SnapshotId"`
+	AutoSnapshotPolicyId          string           `position:"Query" name:"AutoSnapshotPolicyId"`
+	EnableAutomatedSnapshotPolicy requests.Boolean `position:"Query" name:"EnableAutomatedSnapshotPolicy"`
+	LockReason                    string           `position:"Query" name:"LockReason"`
+	PageNumber                    requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize                      requests.Integer `position:"Query" name:"PageSize"`
+	OwnerAccount                  string           `position:"Query" name:"OwnerAccount"`
+	Tag1Key                       string           `position:"Query" name:"Tag.1.Key"`
+	Tag2Key                       string           `position:"Query" name:"Tag.2.Key"`
+	Tag3Key                       string           `position:"Query" name:"Tag.3.Key"`
+	Tag4Key                       string           `position:"Query" name:"Tag.4.Key"`
+	Tag5Key                       string           `position:"Query" name:"Tag.5.Key"`
+	Tag1Value                     string           `position:"Query" name:"Tag.1.Value"`
+	Tag2Value                     string           `position:"Query" name:"Tag.2.Value"`
+	Tag3Value                     string           `position:"Query" name:"Tag.3.Value"`
+	Tag4Value                     string           `position:"Query" name:"Tag.4.Value"`
+	Tag5Value                     string           `position:"Query" name:"Tag.5.Value"`
+}
+
+// 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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+}
+
+// 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_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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	VolumeName           string           `position:"Query" name:"VolumeName"`
+	Description          string           `position:"Query" name:"Description"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+}
+
+// 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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Password             string           `position:"Query" name:"Password"`
+}
+
+// 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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	NewSize              requests.Integer `position:"Query" name:"NewSize"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+}
+
+// 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
+}

+ 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
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	VolumeId             string           `position:"Query" name:"VolumeId"`
+	SnapshotId           string           `position:"Query" name:"SnapshotId"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+}
+
+// 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
+}

+ 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_instance_type.go

@@ -18,6 +18,7 @@ package ecs
 // InstanceType is a nested struct in ecs response
 type InstanceType struct {
 	MemorySize           float64 `json:"MemorySize" xml:"MemorySize"`
+	InstancePpsRx        int     `json:"InstancePpsRx" xml:"InstancePpsRx"`
 	CpuCoreCount         int     `json:"CpuCoreCount" xml:"CpuCoreCount"`
 	Cores                int     `json:"Cores" xml:"Cores"`
 	Memory               int     `json:"Memory" xml:"Memory"`
@@ -31,6 +32,7 @@ type InstanceType struct {
 	SupportIoOptimized   string  `json:"SupportIoOptimized" xml:"SupportIoOptimized"`
 	InstanceTypeFamily   string  `json:"InstanceTypeFamily" xml:"InstanceTypeFamily"`
 	InitialCredit        int     `json:"InitialCredit" xml:"InitialCredit"`
+	InstancePpsTx        int     `json:"InstancePpsTx" xml:"InstancePpsTx"`
 	LocalStorageAmount   int     `json:"LocalStorageAmount" xml:"LocalStorageAmount"`
 	LocalStorageCapacity int     `json:"LocalStorageCapacity" xml:"LocalStorageCapacity"`
 	GPUSpec              string  `json:"GPUSpec" xml:"GPUSpec"`

+ 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"`
+}

+ 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"`
+}

+ 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"`
+}

+ 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"`
+}