Browse Source

Support cloud_essd disk category for API CreateDisk, CreateInstance and RunInstances, and support configurating PerformanceLevel when choose cloud_essd.

sdk-team 6 years ago
parent
commit
f21e509866
39 changed files with 1185 additions and 63 deletions
  1. 6 0
      ChangeLog.txt
  2. 1 0
      services/ecs/allocate_eip_address.go
  3. 137 0
      services/ecs/create_auto_provisioning_group.go
  4. 1 0
      services/ecs/create_disk.go
  5. 2 0
      services/ecs/create_instance.go
  6. 1 0
      services/ecs/create_snapshot.go
  7. 108 0
      services/ecs/delete_auto_provisioning_group.go
  8. 115 0
      services/ecs/describe_auto_provisioning_group_history.go
  9. 113 0
      services/ecs/describe_auto_provisioning_group_instances.go
  10. 115 0
      services/ecs/describe_auto_provisioning_groups.go
  11. 29 24
      services/ecs/describe_price.go
  12. 115 0
      services/ecs/modify_auto_provisioning_group.go
  13. 108 0
      services/ecs/modify_disk_spec.go
  14. 2 0
      services/ecs/run_instances.go
  15. 2 2
      services/ecs/struct_activity_detail.go
  16. 22 0
      services/ecs/struct_activity_detail_in_describe_fleet_history.go
  17. 21 0
      services/ecs/struct_activity_details_in_describe_auto_provisioning_group_history.go
  18. 21 0
      services/ecs/struct_activity_details_in_describe_fleet_history.go
  19. 39 0
      services/ecs/struct_auto_provisioning_group.go
  20. 21 0
      services/ecs/struct_auto_provisioning_group_histories.go
  21. 25 0
      services/ecs/struct_auto_provisioning_group_history.go
  22. 21 0
      services/ecs/struct_auto_provisioning_groups.go
  23. 1 0
      services/ecs/struct_disk.go
  24. 19 19
      services/ecs/struct_fleet.go
  25. 5 5
      services/ecs/struct_fleet_history.go
  26. 3 5
      services/ecs/struct_instance.go
  27. 33 0
      services/ecs/struct_instance_in_describe_fleet_instances.go
  28. 21 0
      services/ecs/struct_instances_in_describe_auto_provisioning_group_instances.go
  29. 1 1
      services/ecs/struct_instances_in_describe_fleet_instances.go
  30. 1 1
      services/ecs/struct_invocation.go
  31. 1 0
      services/ecs/struct_invocation_result.go
  32. 3 0
      services/ecs/struct_invoke_instance.go
  33. 3 2
      services/ecs/struct_launch_template_config.go
  34. 21 0
      services/ecs/struct_launch_template_configs_in_describe_auto_provisioning_groups.go
  35. 21 0
      services/ecs/struct_launch_template_configs_in_describe_fleets.go
  36. 21 0
      services/ecs/struct_pay_as_you_go_options.go
  37. 1 0
      services/ecs/struct_snapshot.go
  38. 1 1
      services/ecs/struct_spot_options.go
  39. 4 3
      services/ecs/struct_target_capacity_specification.go

+ 6 - 0
ChangeLog.txt

@@ -1,3 +1,9 @@
+2019-07-01 Version: 1.60.56
+- Support cloud_essd disk category for API CreateDisk, CreateInstance and RunInstances, and support configurating PerformanceLevel when choose cloud_essd.
+- Add ModifyDiskSpec API to support cloud_essd PerformanceLevel modification.
+- Add AutoProvisioningGroup interfaces, provide AutoProvisioningGroup function.
+- Add RetentionDays to snapshot creating.
+
 2019-06-27 Version: 1.60.55
 - Added setting of crop_mode parameter.
 

+ 1 - 0
services/ecs/allocate_eip_address.go

@@ -76,6 +76,7 @@ func (client *Client) AllocateEipAddressWithCallback(request *AllocateEipAddress
 // AllocateEipAddressRequest is the request struct for api AllocateEipAddress
 type AllocateEipAddressRequest struct {
 	*requests.RpcRequest
+	ActivityId           requests.Integer `position:"Query" name:"ActivityId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	Bandwidth            string           `position:"Query" name:"Bandwidth"`

+ 137 - 0
services/ecs/create_auto_provisioning_group.go

@@ -0,0 +1,137 @@
+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"
+)
+
+// CreateAutoProvisioningGroup invokes the ecs.CreateAutoProvisioningGroup API synchronously
+// api document: https://help.aliyun.com/api/ecs/createautoprovisioninggroup.html
+func (client *Client) CreateAutoProvisioningGroup(request *CreateAutoProvisioningGroupRequest) (response *CreateAutoProvisioningGroupResponse, err error) {
+	response = CreateCreateAutoProvisioningGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAutoProvisioningGroupWithChan invokes the ecs.CreateAutoProvisioningGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/createautoprovisioninggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAutoProvisioningGroupWithChan(request *CreateAutoProvisioningGroupRequest) (<-chan *CreateAutoProvisioningGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateAutoProvisioningGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAutoProvisioningGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAutoProvisioningGroupWithCallback invokes the ecs.CreateAutoProvisioningGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/createautoprovisioninggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAutoProvisioningGroupWithCallback(request *CreateAutoProvisioningGroupRequest, callback func(response *CreateAutoProvisioningGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAutoProvisioningGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAutoProvisioningGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAutoProvisioningGroupRequest is the request struct for api CreateAutoProvisioningGroup
+type CreateAutoProvisioningGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId                  requests.Integer                                   `position:"Query" name:"ResourceOwnerId"`
+	AutoProvisioningGroupType        string                                             `position:"Query" name:"AutoProvisioningGroupType"`
+	Description                      string                                             `position:"Query" name:"Description"`
+	TerminateInstancesWithExpiration requests.Boolean                                   `position:"Query" name:"TerminateInstancesWithExpiration"`
+	ResourceGroupId                  string                                             `position:"Query" name:"ResourceGroupId"`
+	SpotAllocationStrategy           string                                             `position:"Query" name:"SpotAllocationStrategy"`
+	TerminateInstances               requests.Boolean                                   `position:"Query" name:"TerminateInstances"`
+	PayAsYouGoAllocationStrategy     string                                             `position:"Query" name:"PayAsYouGoAllocationStrategy"`
+	DefaultTargetCapacityType        string                                             `position:"Query" name:"DefaultTargetCapacityType"`
+	ExcessCapacityTerminationPolicy  string                                             `position:"Query" name:"ExcessCapacityTerminationPolicy"`
+	LaunchTemplateConfig             *[]CreateAutoProvisioningGroupLaunchTemplateConfig `position:"Query" name:"LaunchTemplateConfig"  type:"Repeated"`
+	ValidUntil                       string                                             `position:"Query" name:"ValidUntil"`
+	SpotInstanceInterruptionBehavior string                                             `position:"Query" name:"SpotInstanceInterruptionBehavior"`
+	LaunchTemplateId                 string                                             `position:"Query" name:"LaunchTemplateId"`
+	ResourceOwnerAccount             string                                             `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount                     string                                             `position:"Query" name:"OwnerAccount"`
+	SpotInstancePoolsToUseCount      requests.Integer                                   `position:"Query" name:"SpotInstancePoolsToUseCount"`
+	OwnerId                          requests.Integer                                   `position:"Query" name:"OwnerId"`
+	LaunchTemplateVersion            string                                             `position:"Query" name:"LaunchTemplateVersion"`
+	PayAsYouGoTargetCapacity         string                                             `position:"Query" name:"PayAsYouGoTargetCapacity"`
+	TotalTargetCapacity              string                                             `position:"Query" name:"TotalTargetCapacity"`
+	SpotTargetCapacity               string                                             `position:"Query" name:"SpotTargetCapacity"`
+	ValidFrom                        string                                             `position:"Query" name:"ValidFrom"`
+	AutoProvisioningGroupName        string                                             `position:"Query" name:"AutoProvisioningGroupName"`
+	MaxSpotPrice                     requests.Float                                     `position:"Query" name:"MaxSpotPrice"`
+}
+
+// CreateAutoProvisioningGroupLaunchTemplateConfig is a repeated param struct in CreateAutoProvisioningGroupRequest
+type CreateAutoProvisioningGroupLaunchTemplateConfig struct {
+	InstanceType     string `name:"InstanceType"`
+	MaxPrice         string `name:"MaxPrice"`
+	VSwitchId        string `name:"VSwitchId"`
+	WeightedCapacity string `name:"WeightedCapacity"`
+	Priority         string `name:"Priority"`
+}
+
+// CreateAutoProvisioningGroupResponse is the response struct for api CreateAutoProvisioningGroup
+type CreateAutoProvisioningGroupResponse struct {
+	*responses.BaseResponse
+	RequestId               string `json:"RequestId" xml:"RequestId"`
+	AutoProvisioningGroupId string `json:"AutoProvisioningGroupId" xml:"AutoProvisioningGroupId"`
+}
+
+// CreateCreateAutoProvisioningGroupRequest creates a request to invoke CreateAutoProvisioningGroup API
+func CreateCreateAutoProvisioningGroupRequest() (request *CreateAutoProvisioningGroupRequest) {
+	request = &CreateAutoProvisioningGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "CreateAutoProvisioningGroup", "ecs", "openAPI")
+	return
+}
+
+// CreateCreateAutoProvisioningGroupResponse creates a response to parse from CreateAutoProvisioningGroup response
+func CreateCreateAutoProvisioningGroupResponse() (response *CreateAutoProvisioningGroupResponse) {
+	response = &CreateAutoProvisioningGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 0
services/ecs/create_disk.go

@@ -80,6 +80,7 @@ type CreateDiskRequest struct {
 	SnapshotId           string           `position:"Query" name:"SnapshotId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	ClientToken          string           `position:"Query" name:"ClientToken"`
+	PerformanceLevel     string           `position:"Query" name:"PerformanceLevel"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	Description          string           `position:"Query" name:"Description"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`

+ 2 - 0
services/ecs/create_instance.go

@@ -113,6 +113,7 @@ type CreateInstanceRequest struct {
 	Description                   string                    `position:"Query" name:"Description"`
 	SystemDiskCategory            string                    `position:"Query" name:"SystemDisk.Category"`
 	CapacityReservationId         string                    `position:"Query" name:"CapacityReservationId"`
+	SystemDiskPerformanceLevel    string                    `position:"Query" name:"SystemDisk.PerformanceLevel"`
 	UserData                      string                    `position:"Query" name:"UserData"`
 	PasswordInherit               requests.Boolean          `position:"Query" name:"PasswordInherit"`
 	InstanceType                  string                    `position:"Query" name:"InstanceType"`
@@ -152,6 +153,7 @@ type CreateInstanceDataDisk struct {
 	SnapshotId         string `name:"SnapshotId"`
 	Size               string `name:"Size"`
 	Encrypted          string `name:"Encrypted"`
+	PerformanceLevel   string `name:"PerformanceLevel"`
 	Description        string `name:"Description"`
 	Category           string `name:"Category"`
 	KMSKeyId           string `name:"KMSKeyId"`

+ 1 - 0
services/ecs/create_snapshot.go

@@ -83,6 +83,7 @@ type CreateSnapshotRequest struct {
 	Description          string               `position:"Query" name:"Description"`
 	DiskId               string               `position:"Query" name:"DiskId"`
 	SnapshotName         string               `position:"Query" name:"SnapshotName"`
+	RetentionDays        requests.Integer     `position:"Query" name:"RetentionDays"`
 	Tag                  *[]CreateSnapshotTag `position:"Query" name:"Tag"  type:"Repeated"`
 	OwnerId              requests.Integer     `position:"Query" name:"OwnerId"`
 }

+ 108 - 0
services/ecs/delete_auto_provisioning_group.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"
+)
+
+// DeleteAutoProvisioningGroup invokes the ecs.DeleteAutoProvisioningGroup API synchronously
+// api document: https://help.aliyun.com/api/ecs/deleteautoprovisioninggroup.html
+func (client *Client) DeleteAutoProvisioningGroup(request *DeleteAutoProvisioningGroupRequest) (response *DeleteAutoProvisioningGroupResponse, err error) {
+	response = CreateDeleteAutoProvisioningGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAutoProvisioningGroupWithChan invokes the ecs.DeleteAutoProvisioningGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/deleteautoprovisioninggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAutoProvisioningGroupWithChan(request *DeleteAutoProvisioningGroupRequest) (<-chan *DeleteAutoProvisioningGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteAutoProvisioningGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAutoProvisioningGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAutoProvisioningGroupWithCallback invokes the ecs.DeleteAutoProvisioningGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/deleteautoprovisioninggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAutoProvisioningGroupWithCallback(request *DeleteAutoProvisioningGroupRequest, callback func(response *DeleteAutoProvisioningGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAutoProvisioningGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAutoProvisioningGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAutoProvisioningGroupRequest is the request struct for api DeleteAutoProvisioningGroup
+type DeleteAutoProvisioningGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId         requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	TerminateInstances      requests.Boolean `position:"Query" name:"TerminateInstances"`
+	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount            string           `position:"Query" name:"OwnerAccount"`
+	OwnerId                 requests.Integer `position:"Query" name:"OwnerId"`
+	AutoProvisioningGroupId string           `position:"Query" name:"AutoProvisioningGroupId"`
+}
+
+// DeleteAutoProvisioningGroupResponse is the response struct for api DeleteAutoProvisioningGroup
+type DeleteAutoProvisioningGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteAutoProvisioningGroupRequest creates a request to invoke DeleteAutoProvisioningGroup API
+func CreateDeleteAutoProvisioningGroupRequest() (request *DeleteAutoProvisioningGroupRequest) {
+	request = &DeleteAutoProvisioningGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DeleteAutoProvisioningGroup", "ecs", "openAPI")
+	return
+}
+
+// CreateDeleteAutoProvisioningGroupResponse creates a response to parse from DeleteAutoProvisioningGroup response
+func CreateDeleteAutoProvisioningGroupResponse() (response *DeleteAutoProvisioningGroupResponse) {
+	response = &DeleteAutoProvisioningGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/ecs/describe_auto_provisioning_group_history.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// DescribeAutoProvisioningGroupHistory invokes the ecs.DescribeAutoProvisioningGroupHistory API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggrouphistory.html
+func (client *Client) DescribeAutoProvisioningGroupHistory(request *DescribeAutoProvisioningGroupHistoryRequest) (response *DescribeAutoProvisioningGroupHistoryResponse, err error) {
+	response = CreateDescribeAutoProvisioningGroupHistoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAutoProvisioningGroupHistoryWithChan invokes the ecs.DescribeAutoProvisioningGroupHistory API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggrouphistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoProvisioningGroupHistoryWithChan(request *DescribeAutoProvisioningGroupHistoryRequest) (<-chan *DescribeAutoProvisioningGroupHistoryResponse, <-chan error) {
+	responseChan := make(chan *DescribeAutoProvisioningGroupHistoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAutoProvisioningGroupHistory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAutoProvisioningGroupHistoryWithCallback invokes the ecs.DescribeAutoProvisioningGroupHistory API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggrouphistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoProvisioningGroupHistoryWithCallback(request *DescribeAutoProvisioningGroupHistoryRequest, callback func(response *DescribeAutoProvisioningGroupHistoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAutoProvisioningGroupHistoryResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAutoProvisioningGroupHistory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAutoProvisioningGroupHistoryRequest is the request struct for api DescribeAutoProvisioningGroupHistory
+type DescribeAutoProvisioningGroupHistoryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId         requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	StartTime               string           `position:"Query" name:"StartTime"`
+	PageNumber              requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize                requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount            string           `position:"Query" name:"OwnerAccount"`
+	EndTime                 string           `position:"Query" name:"EndTime"`
+	OwnerId                 requests.Integer `position:"Query" name:"OwnerId"`
+	AutoProvisioningGroupId string           `position:"Query" name:"AutoProvisioningGroupId"`
+}
+
+// DescribeAutoProvisioningGroupHistoryResponse is the response struct for api DescribeAutoProvisioningGroupHistory
+type DescribeAutoProvisioningGroupHistoryResponse 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"`
+	AutoProvisioningGroupHistories AutoProvisioningGroupHistories `json:"AutoProvisioningGroupHistories" xml:"AutoProvisioningGroupHistories"`
+}
+
+// CreateDescribeAutoProvisioningGroupHistoryRequest creates a request to invoke DescribeAutoProvisioningGroupHistory API
+func CreateDescribeAutoProvisioningGroupHistoryRequest() (request *DescribeAutoProvisioningGroupHistoryRequest) {
+	request = &DescribeAutoProvisioningGroupHistoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeAutoProvisioningGroupHistory", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeAutoProvisioningGroupHistoryResponse creates a response to parse from DescribeAutoProvisioningGroupHistory response
+func CreateDescribeAutoProvisioningGroupHistoryResponse() (response *DescribeAutoProvisioningGroupHistoryResponse) {
+	response = &DescribeAutoProvisioningGroupHistoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/ecs/describe_auto_provisioning_group_instances.go

@@ -0,0 +1,113 @@
+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"
+)
+
+// DescribeAutoProvisioningGroupInstances invokes the ecs.DescribeAutoProvisioningGroupInstances API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggroupinstances.html
+func (client *Client) DescribeAutoProvisioningGroupInstances(request *DescribeAutoProvisioningGroupInstancesRequest) (response *DescribeAutoProvisioningGroupInstancesResponse, err error) {
+	response = CreateDescribeAutoProvisioningGroupInstancesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAutoProvisioningGroupInstancesWithChan invokes the ecs.DescribeAutoProvisioningGroupInstances API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggroupinstances.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoProvisioningGroupInstancesWithChan(request *DescribeAutoProvisioningGroupInstancesRequest) (<-chan *DescribeAutoProvisioningGroupInstancesResponse, <-chan error) {
+	responseChan := make(chan *DescribeAutoProvisioningGroupInstancesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAutoProvisioningGroupInstances(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAutoProvisioningGroupInstancesWithCallback invokes the ecs.DescribeAutoProvisioningGroupInstances API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggroupinstances.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoProvisioningGroupInstancesWithCallback(request *DescribeAutoProvisioningGroupInstancesRequest, callback func(response *DescribeAutoProvisioningGroupInstancesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAutoProvisioningGroupInstancesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAutoProvisioningGroupInstances(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAutoProvisioningGroupInstancesRequest is the request struct for api DescribeAutoProvisioningGroupInstances
+type DescribeAutoProvisioningGroupInstancesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId         requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber              requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize                requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount            string           `position:"Query" name:"OwnerAccount"`
+	OwnerId                 requests.Integer `position:"Query" name:"OwnerId"`
+	AutoProvisioningGroupId string           `position:"Query" name:"AutoProvisioningGroupId"`
+}
+
+// DescribeAutoProvisioningGroupInstancesResponse is the response struct for api DescribeAutoProvisioningGroupInstances
+type DescribeAutoProvisioningGroupInstancesResponse 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"`
+	Instances  InstancesInDescribeAutoProvisioningGroupInstances `json:"Instances" xml:"Instances"`
+}
+
+// CreateDescribeAutoProvisioningGroupInstancesRequest creates a request to invoke DescribeAutoProvisioningGroupInstances API
+func CreateDescribeAutoProvisioningGroupInstancesRequest() (request *DescribeAutoProvisioningGroupInstancesRequest) {
+	request = &DescribeAutoProvisioningGroupInstancesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeAutoProvisioningGroupInstances", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeAutoProvisioningGroupInstancesResponse creates a response to parse from DescribeAutoProvisioningGroupInstances response
+func CreateDescribeAutoProvisioningGroupInstancesResponse() (response *DescribeAutoProvisioningGroupInstancesResponse) {
+	response = &DescribeAutoProvisioningGroupInstancesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/ecs/describe_auto_provisioning_groups.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// DescribeAutoProvisioningGroups invokes the ecs.DescribeAutoProvisioningGroups API synchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggroups.html
+func (client *Client) DescribeAutoProvisioningGroups(request *DescribeAutoProvisioningGroupsRequest) (response *DescribeAutoProvisioningGroupsResponse, err error) {
+	response = CreateDescribeAutoProvisioningGroupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAutoProvisioningGroupsWithChan invokes the ecs.DescribeAutoProvisioningGroups API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoProvisioningGroupsWithChan(request *DescribeAutoProvisioningGroupsRequest) (<-chan *DescribeAutoProvisioningGroupsResponse, <-chan error) {
+	responseChan := make(chan *DescribeAutoProvisioningGroupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAutoProvisioningGroups(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAutoProvisioningGroupsWithCallback invokes the ecs.DescribeAutoProvisioningGroups API asynchronously
+// api document: https://help.aliyun.com/api/ecs/describeautoprovisioninggroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAutoProvisioningGroupsWithCallback(request *DescribeAutoProvisioningGroupsRequest, callback func(response *DescribeAutoProvisioningGroupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAutoProvisioningGroupsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAutoProvisioningGroups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAutoProvisioningGroupsRequest is the request struct for api DescribeAutoProvisioningGroups
+type DescribeAutoProvisioningGroupsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId             requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber                  requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize                    requests.Integer `position:"Query" name:"PageSize"`
+	AutoProvisioningGroupStatus *[]string        `position:"Query" name:"AutoProvisioningGroupStatus"  type:"Repeated"`
+	ResourceOwnerAccount        string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount                string           `position:"Query" name:"OwnerAccount"`
+	OwnerId                     requests.Integer `position:"Query" name:"OwnerId"`
+	AutoProvisioningGroupId     *[]string        `position:"Query" name:"AutoProvisioningGroupId"  type:"Repeated"`
+	AutoProvisioningGroupName   string           `position:"Query" name:"AutoProvisioningGroupName"`
+}
+
+// DescribeAutoProvisioningGroupsResponse is the response struct for api DescribeAutoProvisioningGroups
+type DescribeAutoProvisioningGroupsResponse 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"`
+	AutoProvisioningGroups AutoProvisioningGroups `json:"AutoProvisioningGroups" xml:"AutoProvisioningGroups"`
+}
+
+// CreateDescribeAutoProvisioningGroupsRequest creates a request to invoke DescribeAutoProvisioningGroups API
+func CreateDescribeAutoProvisioningGroupsRequest() (request *DescribeAutoProvisioningGroupsRequest) {
+	request = &DescribeAutoProvisioningGroupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "DescribeAutoProvisioningGroups", "ecs", "openAPI")
+	return
+}
+
+// CreateDescribeAutoProvisioningGroupsResponse creates a response to parse from DescribeAutoProvisioningGroups response
+func CreateDescribeAutoProvisioningGroupsResponse() (response *DescribeAutoProvisioningGroupsResponse) {
+	response = &DescribeAutoProvisioningGroupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 29 - 24
services/ecs/describe_price.go

@@ -76,30 +76,35 @@ func (client *Client) DescribePriceWithCallback(request *DescribePriceRequest, c
 // DescribePriceRequest is the request struct for api DescribePrice
 type DescribePriceRequest struct {
 	*requests.RpcRequest
-	DataDisk3Size           requests.Integer `position:"Query" name:"DataDisk.3.Size"`
-	ResourceOwnerId         requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ImageId                 string           `position:"Query" name:"ImageId"`
-	DataDisk3Category       string           `position:"Query" name:"DataDisk.3.Category"`
-	IoOptimized             string           `position:"Query" name:"IoOptimized"`
-	InternetMaxBandwidthOut requests.Integer `position:"Query" name:"InternetMaxBandwidthOut"`
-	SystemDiskCategory      string           `position:"Query" name:"SystemDisk.Category"`
-	DataDisk4Category       string           `position:"Query" name:"DataDisk.4.Category"`
-	DataDisk4Size           requests.Integer `position:"Query" name:"DataDisk.4.Size"`
-	PriceUnit               string           `position:"Query" name:"PriceUnit"`
-	InstanceType            string           `position:"Query" name:"InstanceType"`
-	DataDisk2Category       string           `position:"Query" name:"DataDisk.2.Category"`
-	DataDisk1Size           requests.Integer `position:"Query" name:"DataDisk.1.Size"`
-	Period                  requests.Integer `position:"Query" name:"Period"`
-	Amount                  requests.Integer `position:"Query" name:"Amount"`
-	ResourceOwnerAccount    string           `position:"Query" name:"ResourceOwnerAccount"`
-	OwnerAccount            string           `position:"Query" name:"OwnerAccount"`
-	DataDisk2Size           requests.Integer `position:"Query" name:"DataDisk.2.Size"`
-	OwnerId                 requests.Integer `position:"Query" name:"OwnerId"`
-	ResourceType            string           `position:"Query" name:"ResourceType"`
-	DataDisk1Category       string           `position:"Query" name:"DataDisk.1.Category"`
-	SystemDiskSize          requests.Integer `position:"Query" name:"SystemDisk.Size"`
-	InternetChargeType      string           `position:"Query" name:"InternetChargeType"`
-	InstanceNetworkType     string           `position:"Query" name:"InstanceNetworkType"`
+	DataDisk3PerformanceLevel  string           `position:"Query" name:"DataDisk.3.PerformanceLevel"`
+	DataDisk3Size              requests.Integer `position:"Query" name:"DataDisk.3.Size"`
+	ResourceOwnerId            requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ImageId                    string           `position:"Query" name:"ImageId"`
+	DataDisk3Category          string           `position:"Query" name:"DataDisk.3.Category"`
+	IoOptimized                string           `position:"Query" name:"IoOptimized"`
+	InternetMaxBandwidthOut    requests.Integer `position:"Query" name:"InternetMaxBandwidthOut"`
+	SystemDiskCategory         string           `position:"Query" name:"SystemDisk.Category"`
+	SystemDiskPerformanceLevel string           `position:"Query" name:"SystemDisk.PerformanceLevel"`
+	DataDisk4Category          string           `position:"Query" name:"DataDisk.4.Category"`
+	DataDisk4PerformanceLevel  string           `position:"Query" name:"DataDisk.4.PerformanceLevel"`
+	DataDisk4Size              requests.Integer `position:"Query" name:"DataDisk.4.Size"`
+	PriceUnit                  string           `position:"Query" name:"PriceUnit"`
+	InstanceType               string           `position:"Query" name:"InstanceType"`
+	DataDisk2Category          string           `position:"Query" name:"DataDisk.2.Category"`
+	DataDisk1Size              requests.Integer `position:"Query" name:"DataDisk.1.Size"`
+	Period                     requests.Integer `position:"Query" name:"Period"`
+	Amount                     requests.Integer `position:"Query" name:"Amount"`
+	ResourceOwnerAccount       string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount               string           `position:"Query" name:"OwnerAccount"`
+	DataDisk2Size              requests.Integer `position:"Query" name:"DataDisk.2.Size"`
+	DataDisk1PerformanceLevel  string           `position:"Query" name:"DataDisk.1.PerformanceLevel"`
+	OwnerId                    requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceType               string           `position:"Query" name:"ResourceType"`
+	DataDisk1Category          string           `position:"Query" name:"DataDisk.1.Category"`
+	DataDisk2PerformanceLevel  string           `position:"Query" name:"DataDisk.2.PerformanceLevel"`
+	SystemDiskSize             requests.Integer `position:"Query" name:"SystemDisk.Size"`
+	InternetChargeType         string           `position:"Query" name:"InternetChargeType"`
+	InstanceNetworkType        string           `position:"Query" name:"InstanceNetworkType"`
 }
 
 // DescribePriceResponse is the response struct for api DescribePrice

+ 115 - 0
services/ecs/modify_auto_provisioning_group.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// ModifyAutoProvisioningGroup invokes the ecs.ModifyAutoProvisioningGroup API synchronously
+// api document: https://help.aliyun.com/api/ecs/modifyautoprovisioninggroup.html
+func (client *Client) ModifyAutoProvisioningGroup(request *ModifyAutoProvisioningGroupRequest) (response *ModifyAutoProvisioningGroupResponse, err error) {
+	response = CreateModifyAutoProvisioningGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyAutoProvisioningGroupWithChan invokes the ecs.ModifyAutoProvisioningGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyautoprovisioninggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyAutoProvisioningGroupWithChan(request *ModifyAutoProvisioningGroupRequest) (<-chan *ModifyAutoProvisioningGroupResponse, <-chan error) {
+	responseChan := make(chan *ModifyAutoProvisioningGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyAutoProvisioningGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyAutoProvisioningGroupWithCallback invokes the ecs.ModifyAutoProvisioningGroup API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifyautoprovisioninggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyAutoProvisioningGroupWithCallback(request *ModifyAutoProvisioningGroupRequest, callback func(response *ModifyAutoProvisioningGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyAutoProvisioningGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyAutoProvisioningGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyAutoProvisioningGroupRequest is the request struct for api ModifyAutoProvisioningGroup
+type ModifyAutoProvisioningGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId                  requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	TerminateInstancesWithExpiration requests.Boolean `position:"Query" name:"TerminateInstancesWithExpiration"`
+	DefaultTargetCapacityType        string           `position:"Query" name:"DefaultTargetCapacityType"`
+	ExcessCapacityTerminationPolicy  string           `position:"Query" name:"ExcessCapacityTerminationPolicy"`
+	ResourceOwnerAccount             string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount                     string           `position:"Query" name:"OwnerAccount"`
+	OwnerId                          requests.Integer `position:"Query" name:"OwnerId"`
+	AutoProvisioningGroupId          string           `position:"Query" name:"AutoProvisioningGroupId"`
+	PayAsYouGoTargetCapacity         string           `position:"Query" name:"PayAsYouGoTargetCapacity"`
+	TotalTargetCapacity              string           `position:"Query" name:"TotalTargetCapacity"`
+	SpotTargetCapacity               string           `position:"Query" name:"SpotTargetCapacity"`
+	MaxSpotPrice                     requests.Float   `position:"Query" name:"MaxSpotPrice"`
+	AutoProvisioningGroupName        string           `position:"Query" name:"AutoProvisioningGroupName"`
+}
+
+// ModifyAutoProvisioningGroupResponse is the response struct for api ModifyAutoProvisioningGroup
+type ModifyAutoProvisioningGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyAutoProvisioningGroupRequest creates a request to invoke ModifyAutoProvisioningGroup API
+func CreateModifyAutoProvisioningGroupRequest() (request *ModifyAutoProvisioningGroupRequest) {
+	request = &ModifyAutoProvisioningGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ModifyAutoProvisioningGroup", "ecs", "openAPI")
+	return
+}
+
+// CreateModifyAutoProvisioningGroupResponse creates a response to parse from ModifyAutoProvisioningGroup response
+func CreateModifyAutoProvisioningGroupResponse() (response *ModifyAutoProvisioningGroupResponse) {
+	response = &ModifyAutoProvisioningGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/ecs/modify_disk_spec.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"
+)
+
+// ModifyDiskSpec invokes the ecs.ModifyDiskSpec API synchronously
+// api document: https://help.aliyun.com/api/ecs/modifydiskspec.html
+func (client *Client) ModifyDiskSpec(request *ModifyDiskSpecRequest) (response *ModifyDiskSpecResponse, err error) {
+	response = CreateModifyDiskSpecResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyDiskSpecWithChan invokes the ecs.ModifyDiskSpec API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifydiskspec.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyDiskSpecWithChan(request *ModifyDiskSpecRequest) (<-chan *ModifyDiskSpecResponse, <-chan error) {
+	responseChan := make(chan *ModifyDiskSpecResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyDiskSpec(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyDiskSpecWithCallback invokes the ecs.ModifyDiskSpec API asynchronously
+// api document: https://help.aliyun.com/api/ecs/modifydiskspec.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyDiskSpecWithCallback(request *ModifyDiskSpecRequest, callback func(response *ModifyDiskSpecResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyDiskSpecResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyDiskSpec(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyDiskSpecRequest is the request struct for api ModifyDiskSpec
+type ModifyDiskSpecRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DiskId               string           `position:"Query" name:"DiskId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	PerformanceLevel     string           `position:"Query" name:"PerformanceLevel"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ModifyDiskSpecResponse is the response struct for api ModifyDiskSpec
+type ModifyDiskSpecResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyDiskSpecRequest creates a request to invoke ModifyDiskSpec API
+func CreateModifyDiskSpecRequest() (request *ModifyDiskSpecRequest) {
+	request = &ModifyDiskSpecRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ecs", "2014-05-26", "ModifyDiskSpec", "ecs", "openAPI")
+	return
+}
+
+// CreateModifyDiskSpecResponse creates a response to parse from ModifyDiskSpec response
+func CreateModifyDiskSpecResponse() (response *ModifyDiskSpecResponse) {
+	response = &ModifyDiskSpecResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 0
services/ecs/run_instances.go

@@ -116,6 +116,7 @@ type RunInstancesRequest struct {
 	Description                   string                          `position:"Query" name:"Description"`
 	SystemDiskCategory            string                          `position:"Query" name:"SystemDisk.Category"`
 	CapacityReservationId         string                          `position:"Query" name:"CapacityReservationId"`
+	SystemDiskPerformanceLevel    string                          `position:"Query" name:"SystemDisk.PerformanceLevel"`
 	UserData                      string                          `position:"Query" name:"UserData"`
 	PasswordInherit               requests.Boolean                `position:"Query" name:"PasswordInherit"`
 	InstanceType                  string                          `position:"Query" name:"InstanceType"`
@@ -165,6 +166,7 @@ type RunInstancesDataDisk struct {
 	Description        string `name:"Description"`
 	Device             string `name:"Device"`
 	DeleteWithInstance string `name:"DeleteWithInstance"`
+	PerformanceLevel   string `name:"PerformanceLevel"`
 }
 
 // RunInstancesResponse is the response struct for api RunInstances

+ 2 - 2
services/ecs/struct_activity_detail.go

@@ -17,6 +17,6 @@ package ecs
 
 // ActivityDetail is a nested struct in ecs response
 type ActivityDetail struct {
-	Detail string  `json:"Detail" xml:"Detail"`
-	Status float64 `json:"Status" xml:"Status"`
+	Detail string `json:"Detail" xml:"Detail"`
+	Status string `json:"Status" xml:"Status"`
 }

+ 22 - 0
services/ecs/struct_activity_detail_in_describe_fleet_history.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.
+
+// ActivityDetailInDescribeFleetHistory is a nested struct in ecs response
+type ActivityDetailInDescribeFleetHistory struct {
+	Detail string  `json:"Detail" xml:"Detail"`
+	Status float64 `json:"Status" xml:"Status"`
+}

+ 21 - 0
services/ecs/struct_activity_details_in_describe_auto_provisioning_group_history.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.
+
+// ActivityDetailsInDescribeAutoProvisioningGroupHistory is a nested struct in ecs response
+type ActivityDetailsInDescribeAutoProvisioningGroupHistory struct {
+	ActivityDetail []ActivityDetail `json:"ActivityDetail" xml:"ActivityDetail"`
+}

+ 21 - 0
services/ecs/struct_activity_details_in_describe_fleet_history.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.
+
+// ActivityDetailsInDescribeFleetHistory is a nested struct in ecs response
+type ActivityDetailsInDescribeFleetHistory struct {
+	ActivityDetail []ActivityDetailInDescribeFleetHistory `json:"ActivityDetail" xml:"ActivityDetail"`
+}

+ 39 - 0
services/ecs/struct_auto_provisioning_group.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.
+
+// AutoProvisioningGroup is a nested struct in ecs response
+type AutoProvisioningGroup struct {
+	AutoProvisioningGroupId          string                                                `json:"AutoProvisioningGroupId" xml:"AutoProvisioningGroupId"`
+	AutoProvisioningGroupName        string                                                `json:"AutoProvisioningGroupName" xml:"AutoProvisioningGroupName"`
+	AutoProvisioningGroupType        string                                                `json:"AutoProvisioningGroupType" xml:"AutoProvisioningGroupType"`
+	Status                           string                                                `json:"Status" xml:"Status"`
+	State                            string                                                `json:"State" xml:"State"`
+	RegionId                         string                                                `json:"RegionId" xml:"RegionId"`
+	ValidFrom                        string                                                `json:"ValidFrom" xml:"ValidFrom"`
+	ValidUntil                       string                                                `json:"ValidUntil" xml:"ValidUntil"`
+	ExcessCapacityTerminationPolicy  string                                                `json:"ExcessCapacityTerminationPolicy" xml:"ExcessCapacityTerminationPolicy"`
+	MaxSpotPrice                     float64                                               `json:"MaxSpotPrice" xml:"MaxSpotPrice"`
+	LaunchTemplateId                 string                                                `json:"LaunchTemplateId" xml:"LaunchTemplateId"`
+	LaunchTemplateVersion            string                                                `json:"LaunchTemplateVersion" xml:"LaunchTemplateVersion"`
+	TerminateInstances               bool                                                  `json:"TerminateInstances" xml:"TerminateInstances"`
+	TerminateInstancesWithExpiration bool                                                  `json:"TerminateInstancesWithExpiration" xml:"TerminateInstancesWithExpiration"`
+	CreationTime                     string                                                `json:"CreationTime" xml:"CreationTime"`
+	SpotOptions                      SpotOptions                                           `json:"SpotOptions" xml:"SpotOptions"`
+	PayAsYouGoOptions                PayAsYouGoOptions                                     `json:"PayAsYouGoOptions" xml:"PayAsYouGoOptions"`
+	TargetCapacitySpecification      TargetCapacitySpecification                           `json:"TargetCapacitySpecification" xml:"TargetCapacitySpecification"`
+	LaunchTemplateConfigs            LaunchTemplateConfigsInDescribeAutoProvisioningGroups `json:"LaunchTemplateConfigs" xml:"LaunchTemplateConfigs"`
+}

+ 21 - 0
services/ecs/struct_auto_provisioning_group_histories.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.
+
+// AutoProvisioningGroupHistories is a nested struct in ecs response
+type AutoProvisioningGroupHistories struct {
+	AutoProvisioningGroupHistory []AutoProvisioningGroupHistory `json:"AutoProvisioningGroupHistory" xml:"AutoProvisioningGroupHistory"`
+}

+ 25 - 0
services/ecs/struct_auto_provisioning_group_history.go

@@ -0,0 +1,25 @@
+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.
+
+// AutoProvisioningGroupHistory is a nested struct in ecs response
+type AutoProvisioningGroupHistory struct {
+	TaskId          string                                                `json:"TaskId" xml:"TaskId"`
+	Status          string                                                `json:"Status" xml:"Status"`
+	LastEventTime   string                                                `json:"LastEventTime" xml:"LastEventTime"`
+	StartTime       string                                                `json:"StartTime" xml:"StartTime"`
+	ActivityDetails ActivityDetailsInDescribeAutoProvisioningGroupHistory `json:"ActivityDetails" xml:"ActivityDetails"`
+}

+ 21 - 0
services/ecs/struct_auto_provisioning_groups.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.
+
+// AutoProvisioningGroups is a nested struct in ecs response
+type AutoProvisioningGroups struct {
+	AutoProvisioningGroup []AutoProvisioningGroup `json:"AutoProvisioningGroup" xml:"AutoProvisioningGroup"`
+}

+ 1 - 0
services/ecs/struct_disk.go

@@ -49,6 +49,7 @@ type Disk struct {
 	IOPSRead                      int                           `json:"IOPSRead" xml:"IOPSRead"`
 	IOPSWrite                     int                           `json:"IOPSWrite" xml:"IOPSWrite"`
 	KMSKeyId                      string                        `json:"KMSKeyId" xml:"KMSKeyId"`
+	PerformanceLevel              string                        `json:"PerformanceLevel" xml:"PerformanceLevel"`
 	BdfId                         string                        `json:"BdfId" xml:"BdfId"`
 	OperationLocks                OperationLocksInDescribeDisks `json:"OperationLocks" xml:"OperationLocks"`
 	MountInstances                MountInstances                `json:"MountInstances" xml:"MountInstances"`

+ 19 - 19
services/ecs/struct_fleet.go

@@ -17,23 +17,23 @@ package ecs
 
 // Fleet is a nested struct in ecs response
 type Fleet struct {
-	FleetId                          string                      `json:"FleetId" xml:"FleetId"`
-	FleetName                        string                      `json:"FleetName" xml:"FleetName"`
-	FleetType                        string                      `json:"FleetType" xml:"FleetType"`
-	Status                           string                      `json:"Status" xml:"Status"`
-	State                            string                      `json:"State" xml:"State"`
-	RegionId                         string                      `json:"RegionId" xml:"RegionId"`
-	ValidFrom                        string                      `json:"ValidFrom" xml:"ValidFrom"`
-	ValidUntil                       string                      `json:"ValidUntil" xml:"ValidUntil"`
-	ExcessCapacityTerminationPolicy  string                      `json:"ExcessCapacityTerminationPolicy" xml:"ExcessCapacityTerminationPolicy"`
-	MaxSpotPrice                     float64                     `json:"MaxSpotPrice" xml:"MaxSpotPrice"`
-	LaunchTemplateId                 string                      `json:"LaunchTemplateId" xml:"LaunchTemplateId"`
-	LaunchTemplateVersion            string                      `json:"LaunchTemplateVersion" xml:"LaunchTemplateVersion"`
-	TerminateInstances               bool                        `json:"TerminateInstances" xml:"TerminateInstances"`
-	TerminateInstancesWithExpiration bool                        `json:"TerminateInstancesWithExpiration" xml:"TerminateInstancesWithExpiration"`
-	CreationTime                     string                      `json:"CreationTime" xml:"CreationTime"`
-	SpotOptions                      SpotOptions                 `json:"SpotOptions" xml:"SpotOptions"`
-	OnDemandOptions                  OnDemandOptions             `json:"OnDemandOptions" xml:"OnDemandOptions"`
-	TargetCapacitySpecification      TargetCapacitySpecification `json:"TargetCapacitySpecification" xml:"TargetCapacitySpecification"`
-	LaunchTemplateConfigs            LaunchTemplateConfigs       `json:"launchTemplateConfigs" xml:"launchTemplateConfigs"`
+	FleetId                          string                                `json:"FleetId" xml:"FleetId"`
+	FleetName                        string                                `json:"FleetName" xml:"FleetName"`
+	FleetType                        string                                `json:"FleetType" xml:"FleetType"`
+	Status                           string                                `json:"Status" xml:"Status"`
+	State                            string                                `json:"State" xml:"State"`
+	RegionId                         string                                `json:"RegionId" xml:"RegionId"`
+	ValidFrom                        string                                `json:"ValidFrom" xml:"ValidFrom"`
+	ValidUntil                       string                                `json:"ValidUntil" xml:"ValidUntil"`
+	ExcessCapacityTerminationPolicy  string                                `json:"ExcessCapacityTerminationPolicy" xml:"ExcessCapacityTerminationPolicy"`
+	MaxSpotPrice                     float64                               `json:"MaxSpotPrice" xml:"MaxSpotPrice"`
+	LaunchTemplateId                 string                                `json:"LaunchTemplateId" xml:"LaunchTemplateId"`
+	LaunchTemplateVersion            string                                `json:"LaunchTemplateVersion" xml:"LaunchTemplateVersion"`
+	TerminateInstances               bool                                  `json:"TerminateInstances" xml:"TerminateInstances"`
+	TerminateInstancesWithExpiration bool                                  `json:"TerminateInstancesWithExpiration" xml:"TerminateInstancesWithExpiration"`
+	CreationTime                     string                                `json:"CreationTime" xml:"CreationTime"`
+	SpotOptions                      SpotOptions                           `json:"SpotOptions" xml:"SpotOptions"`
+	OnDemandOptions                  OnDemandOptions                       `json:"OnDemandOptions" xml:"OnDemandOptions"`
+	TargetCapacitySpecification      TargetCapacitySpecification           `json:"TargetCapacitySpecification" xml:"TargetCapacitySpecification"`
+	LaunchTemplateConfigs            LaunchTemplateConfigsInDescribeFleets `json:"launchTemplateConfigs" xml:"launchTemplateConfigs"`
 }

+ 5 - 5
services/ecs/struct_fleet_history.go

@@ -17,9 +17,9 @@ package ecs
 
 // FleetHistory is a nested struct in ecs response
 type FleetHistory struct {
-	TaskId          string          `json:"TaskId" xml:"TaskId"`
-	Status          string          `json:"Status" xml:"Status"`
-	LastEventTime   string          `json:"LastEventTime" xml:"LastEventTime"`
-	StartTime       string          `json:"StartTime" xml:"StartTime"`
-	ActivityDetails ActivityDetails `json:"ActivityDetails" xml:"ActivityDetails"`
+	TaskId          string                                `json:"TaskId" xml:"TaskId"`
+	Status          string                                `json:"Status" xml:"Status"`
+	LastEventTime   string                                `json:"LastEventTime" xml:"LastEventTime"`
+	StartTime       string                                `json:"StartTime" xml:"StartTime"`
+	ActivityDetails ActivityDetailsInDescribeFleetHistory `json:"ActivityDetails" xml:"ActivityDetails"`
 }

+ 3 - 5
services/ecs/struct_instance.go

@@ -17,26 +17,27 @@ package ecs
 
 // Instance is a nested struct in ecs response
 type Instance struct {
-	Cores                      int                                  `json:"Cores" xml:"Cores"`
 	ImageId                    string                               `json:"ImageId" xml:"ImageId"`
 	InstanceType               string                               `json:"InstanceType" xml:"InstanceType"`
 	AutoReleaseTime            string                               `json:"AutoReleaseTime" xml:"AutoReleaseTime"`
+	OsType                     string                               `json:"OsType" xml:"OsType"`
 	DeviceAvailable            bool                                 `json:"DeviceAvailable" xml:"DeviceAvailable"`
 	InstanceNetworkType        string                               `json:"InstanceNetworkType" xml:"InstanceNetworkType"`
 	LocalStorageAmount         int                                  `json:"LocalStorageAmount" xml:"LocalStorageAmount"`
+	NetworkType                string                               `json:"NetworkType" xml:"NetworkType"`
 	IsSpot                     bool                                 `json:"IsSpot" xml:"IsSpot"`
 	InstanceChargeType         string                               `json:"InstanceChargeType" xml:"InstanceChargeType"`
 	ClusterId                  string                               `json:"ClusterId" xml:"ClusterId"`
 	InstanceName               string                               `json:"InstanceName" xml:"InstanceName"`
 	CreditSpecification        string                               `json:"CreditSpecification" xml:"CreditSpecification"`
 	GPUAmount                  int                                  `json:"GPUAmount" xml:"GPUAmount"`
-	ZoneNo                     string                               `json:"ZoneNo" xml:"ZoneNo"`
 	StartTime                  string                               `json:"StartTime" xml:"StartTime"`
 	ZoneId                     string                               `json:"ZoneId" xml:"ZoneId"`
 	InternetChargeType         string                               `json:"InternetChargeType" xml:"InternetChargeType"`
 	InternetMaxBandwidthIn     int                                  `json:"InternetMaxBandwidthIn" xml:"InternetMaxBandwidthIn"`
 	HostName                   string                               `json:"HostName" xml:"HostName"`
 	Status                     string                               `json:"Status" xml:"Status"`
+	CPU                        int                                  `json:"CPU" xml:"CPU"`
 	Cpu                        int                                  `json:"Cpu" xml:"Cpu"`
 	SpotPriceLimit             float64                              `json:"SpotPriceLimit" xml:"SpotPriceLimit"`
 	OSName                     string                               `json:"OSName" xml:"OSName"`
@@ -51,21 +52,18 @@ type Instance struct {
 	DeploymentSetId            string                               `json:"DeploymentSetId" xml:"DeploymentSetId"`
 	GPUSpec                    string                               `json:"GPUSpec" xml:"GPUSpec"`
 	Description                string                               `json:"Description" xml:"Description"`
-	IzNo                       string                               `json:"IzNo" xml:"IzNo"`
 	Recyclable                 bool                                 `json:"Recyclable" xml:"Recyclable"`
 	SaleCycle                  string                               `json:"SaleCycle" xml:"SaleCycle"`
 	ExpiredTime                string                               `json:"ExpiredTime" xml:"ExpiredTime"`
 	OSType                     string                               `json:"OSType" xml:"OSType"`
 	Memory                     int                                  `json:"Memory" xml:"Memory"`
 	CreationTime               string                               `json:"CreationTime" xml:"CreationTime"`
-	NetworkType                bool                                 `json:"NetworkType" xml:"NetworkType"`
 	KeyPairName                string                               `json:"KeyPairName" xml:"KeyPairName"`
 	HpcClusterId               string                               `json:"HpcClusterId" xml:"HpcClusterId"`
 	LocalStorageCapacity       int64                                `json:"LocalStorageCapacity" xml:"LocalStorageCapacity"`
 	VlanId                     string                               `json:"VlanId" xml:"VlanId"`
 	StoppedMode                string                               `json:"StoppedMode" xml:"StoppedMode"`
 	SpotStrategy               string                               `json:"SpotStrategy" xml:"SpotStrategy"`
-	OsType                     bool                                 `json:"OsType" xml:"OsType"`
 	DeletionProtection         bool                                 `json:"DeletionProtection" xml:"DeletionProtection"`
 	SecurityGroupIds           SecurityGroupIdsInDescribeInstances  `json:"SecurityGroupIds" xml:"SecurityGroupIds"`
 	InnerIpAddress             InnerIpAddressInDescribeInstances    `json:"InnerIpAddress" xml:"InnerIpAddress"`

+ 33 - 0
services/ecs/struct_instance_in_describe_fleet_instances.go

@@ -0,0 +1,33 @@
+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.
+
+// InstanceInDescribeFleetInstances is a nested struct in ecs response
+type InstanceInDescribeFleetInstances struct {
+	InstanceId   string `json:"InstanceId" xml:"InstanceId"`
+	Status       string `json:"Status" xml:"Status"`
+	RegionId     string `json:"RegionId" xml:"RegionId"`
+	IzNo         string `json:"IzNo" xml:"IzNo"`
+	ZoneNo       string `json:"ZoneNo" xml:"ZoneNo"`
+	Cores        int    `json:"Cores" xml:"Cores"`
+	Memory       int    `json:"Memory" xml:"Memory"`
+	InstanceType string `json:"InstanceType" xml:"InstanceType"`
+	IsSpot       bool   `json:"IsSpot" xml:"IsSpot"`
+	IoOptimized  bool   `json:"IoOptimized" xml:"IoOptimized"`
+	NetworkType  bool   `json:"NetworkType" xml:"NetworkType"`
+	OsType       bool   `json:"OsType" xml:"OsType"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+}

+ 21 - 0
services/ecs/struct_instances_in_describe_auto_provisioning_group_instances.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.
+
+// InstancesInDescribeAutoProvisioningGroupInstances is a nested struct in ecs response
+type InstancesInDescribeAutoProvisioningGroupInstances struct {
+	Instance []Instance `json:"Instance" xml:"Instance"`
+}

+ 1 - 1
services/ecs/struct_instances_in_describe_fleet_instances.go

@@ -17,5 +17,5 @@ package ecs
 
 // InstancesInDescribeFleetInstances is a nested struct in ecs response
 type InstancesInDescribeFleetInstances struct {
-	Instance []Instance `json:"Instance" xml:"Instance"`
+	Instance []InstanceInDescribeFleetInstances `json:"Instance" xml:"Instance"`
 }

+ 1 - 1
services/ecs/struct_invocation.go

@@ -29,6 +29,6 @@ type Invocation struct {
 	InvokeStatus      string            `json:"InvokeStatus" xml:"InvokeStatus"`
 	CommandContent    string            `json:"CommandContent" xml:"CommandContent"`
 	CommandType       string            `json:"CommandType" xml:"CommandType"`
-	InvocationResults InvocationResults `json:"InvocationResults" xml:"InvocationResults"`
 	InvokeInstances   InvokeInstances   `json:"InvokeInstances" xml:"InvokeInstances"`
+	InvocationResults InvocationResults `json:"InvocationResults" xml:"InvocationResults"`
 }

+ 1 - 0
services/ecs/struct_invocation_result.go

@@ -20,6 +20,7 @@ type InvocationResult struct {
 	CommandId          string `json:"CommandId" xml:"CommandId"`
 	InvokeId           string `json:"InvokeId" xml:"InvokeId"`
 	InstanceId         string `json:"InstanceId" xml:"InstanceId"`
+	StartTime          string `json:"StartTime" xml:"StartTime"`
 	FinishedTime       string `json:"FinishedTime" xml:"FinishedTime"`
 	Output             string `json:"Output" xml:"Output"`
 	InvokeRecordStatus string `json:"InvokeRecordStatus" xml:"InvokeRecordStatus"`

+ 3 - 0
services/ecs/struct_invoke_instance.go

@@ -19,4 +19,7 @@ package ecs
 type InvokeInstance struct {
 	InstanceId           string `json:"InstanceId" xml:"InstanceId"`
 	InstanceInvokeStatus string `json:"InstanceInvokeStatus" xml:"InstanceInvokeStatus"`
+	CreationTime         string `json:"CreationTime" xml:"CreationTime"`
+	StartTime            string `json:"StartTime" xml:"StartTime"`
+	FinishTime           string `json:"FinishTime" xml:"FinishTime"`
 }

+ 3 - 2
services/ecs/struct_launch_template_config.go

@@ -17,9 +17,10 @@ package ecs
 
 // LaunchTemplateConfig is a nested struct in ecs response
 type LaunchTemplateConfig struct {
-	InstanceType     string  `json:"InstanceType" xml:"InstanceType"`
-	MaxPrice         float64 `json:"MaxPrice" xml:"MaxPrice"`
 	VSWitchId        string  `json:"VSWitchId" xml:"VSWitchId"`
+	VSwitchId        string  `json:"VSwitchId" xml:"VSwitchId"`
+	InstanceType     string  `json:"InstanceType" xml:"InstanceType"`
 	WeightedCapacity float64 `json:"WeightedCapacity" xml:"WeightedCapacity"`
+	MaxPrice         float64 `json:"MaxPrice" xml:"MaxPrice"`
 	Priority         float64 `json:"Priority" xml:"Priority"`
 }

+ 21 - 0
services/ecs/struct_launch_template_configs_in_describe_auto_provisioning_groups.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.
+
+// LaunchTemplateConfigsInDescribeAutoProvisioningGroups is a nested struct in ecs response
+type LaunchTemplateConfigsInDescribeAutoProvisioningGroups struct {
+	LaunchTemplateConfig []LaunchTemplateConfig `json:"LaunchTemplateConfig" xml:"LaunchTemplateConfig"`
+}

+ 21 - 0
services/ecs/struct_launch_template_configs_in_describe_fleets.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.
+
+// LaunchTemplateConfigsInDescribeFleets is a nested struct in ecs response
+type LaunchTemplateConfigsInDescribeFleets struct {
+	LaunchTemplateConfig []LaunchTemplateConfig `json:"LaunchTemplateConfig" xml:"LaunchTemplateConfig"`
+}

+ 21 - 0
services/ecs/struct_pay_as_you_go_options.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.
+
+// PayAsYouGoOptions is a nested struct in ecs response
+type PayAsYouGoOptions struct {
+	AllocationStrategy string `json:"AllocationStrategy" xml:"AllocationStrategy"`
+}

+ 1 - 0
services/ecs/struct_snapshot.go

@@ -28,6 +28,7 @@ type Snapshot struct {
 	SourceDiskSize    string                  `json:"SourceDiskSize" xml:"SourceDiskSize"`
 	Description       string                  `json:"Description" xml:"Description"`
 	CreationTime      string                  `json:"CreationTime" xml:"CreationTime"`
+	LastModifiedTime  string                  `json:"LastModifiedTime" xml:"LastModifiedTime"`
 	Status            string                  `json:"Status" xml:"Status"`
 	Usage             string                  `json:"Usage" xml:"Usage"`
 	SourceStorageType string                  `json:"SourceStorageType" xml:"SourceStorageType"`

+ 1 - 1
services/ecs/struct_spot_options.go

@@ -17,7 +17,7 @@ package ecs
 
 // SpotOptions is a nested struct in ecs response
 type SpotOptions struct {
-	AllocationStrategy           string `json:"AllocationStrategy" xml:"AllocationStrategy"`
 	InstanceInterruptionBehavior string `json:"InstanceInterruptionBehavior" xml:"InstanceInterruptionBehavior"`
 	InstancePoolsToUseCount      int    `json:"InstancePoolsToUseCount" xml:"InstancePoolsToUseCount"`
+	AllocationStrategy           string `json:"AllocationStrategy" xml:"AllocationStrategy"`
 }

+ 4 - 3
services/ecs/struct_target_capacity_specification.go

@@ -17,9 +17,10 @@ package ecs
 
 // TargetCapacitySpecification is a nested struct in ecs response
 type TargetCapacitySpecification struct {
-	TotalTargetCapacity       float64 `json:"TotalTargetCapacity" xml:"TotalTargetCapacity"`
-	OnDemandTargetCapacity    float64 `json:"OnDemandTargetCapacity" xml:"OnDemandTargetCapacity"`
 	SpotTargetCapacity        float64 `json:"SpotTargetCapacity" xml:"SpotTargetCapacity"`
-	DefaultTargetCapacityType string  `json:"DefaultTargetCapacityType" xml:"DefaultTargetCapacityType"`
+	OnDemandTargetCapacity    float64 `json:"OnDemandTargetCapacity" xml:"OnDemandTargetCapacity"`
 	FillGapWithOnDemand       bool    `json:"FillGapWithOnDemand" xml:"FillGapWithOnDemand"`
+	PayAsYouGoTargetCapacity  float64 `json:"PayAsYouGoTargetCapacity" xml:"PayAsYouGoTargetCapacity"`
+	TotalTargetCapacity       float64 `json:"TotalTargetCapacity" xml:"TotalTargetCapacity"`
+	DefaultTargetCapacityType string  `json:"DefaultTargetCapacityType" xml:"DefaultTargetCapacityType"`
 }