diff --git a/alicloud/data_source_alicloud_auto_renew_instances.go b/alicloud/data_source_alicloud_auto_renew_instances.go new file mode 100644 index 000000000000..2144d925e250 --- /dev/null +++ b/alicloud/data_source_alicloud_auto_renew_instances.go @@ -0,0 +1,100 @@ +package alicloud + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/services/vpc" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/terraform-providers/terraform-provider-alicloud/alicloud/connectivity" +) + +func dataSourceAlicloudRenewInterfaces() *schema.Resource { + return &schema.Resource{ + Read: dataSourceAlicloudRenewInstanceRead, + + Schema: map[string]*schema.Schema{ + "instance_type": { + Type: schema.TypeString, + Required: true, + }, + "instance_id": { + Type: schema.TypeString, + Optional: true, + }, + "renewal_status": { + Type: schema.TypeString, + Optional: true, + Default: "Normal", + ValidateFunc: validation.StringInSlice([]string{"Normal", "AutoRenewal", "NotRenewal"}, false), + }, + // Computed values + "instances": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "duration": { + Type: schema.TypeInt, + Computed: true, + }, + "pricing_cycle": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "instance_id": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + }, + } +} + +func dataSourceAlicloudRenewInstanceRead(d *schema.ResourceData, meta interface{}) error { + client := meta.(*connectivity.AliyunClient) + request := vpc.CreateDescribeInstanceAutoRenewAttributeRequest() + request.RegionId = string(client.Region) + request.InstanceType = d.Get("instance_type").(string) + request.RenewalStatus = d.Get("renewal_status").(string) + if v, ok := d.GetOk("instance_id"); ok { + request.InstanceId = v.(string) + } + invoker := NewInvoker() + var err error + var ids []string + var raw interface{} + if err := invoker.Run(func() error { + raw, err = client.WithVpcClient(func(vpcClient *vpc.Client) (interface{}, error) { + return vpcClient.DescribeInstanceAutoRenewAttribute(request) + }) + addDebug(request.GetActionName(), raw, request.RpcRequest, request) + return err + }); err != nil { + return WrapErrorf(err, DataDefaultErrorMsg, "DescribeInstanceAutoRenewAttribute", request.GetActionName(), AlibabaCloudSdkGoERROR) + } + response := raw.(*vpc.DescribeInstanceAutoRenewAttributeResponse) + var s []map[string]interface{} + if len(response.InstanceRenewAttributes.InstanceRenewAttribute) > 0 { + for _, val := range response.InstanceRenewAttributes.InstanceRenewAttribute { + mapping := map[string]interface{}{ + "duration": val.Duration, + "status": val.RenewalStatus, + "pricing_cycle": val.PricingCycle, + "instance_id": val.InstanceId, + } + s = append(s, mapping) + ids = append(ids, val.InstanceId) + } + } + + d.SetId(dataResourceIdHash(ids)) + if err := d.Set("instances", s); err != nil { + return WrapError(err) + } + return nil +} diff --git a/alicloud/errors.go b/alicloud/errors.go index 81c4dd66bdad..00468916b4c6 100644 --- a/alicloud/errors.go +++ b/alicloud/errors.go @@ -32,6 +32,11 @@ const ( AliyunGoClientFailure = "AliyunGoClientFailure" LogClientTimeout = "Client.Timeout exceeded while awaiting headers" + + // renew + RenewIncorrectStatus = "IncorrectStatus" + InvalidRouterInterfaceIdNotFound = "InvalidRouterInterfaceId.NotFound" + ForbiddenFinancialLocked = "Forbidden.FinancialLocked" ) var SlbIsBusy = []string{"SystemBusy", "OperationBusy", "ServiceIsStopping", "BackendServer.configuring", "ServiceIsConfiguring"} diff --git a/alicloud/provider.go b/alicloud/provider.go index 8a8e158d2676..1628d0775762 100644 --- a/alicloud/provider.go +++ b/alicloud/provider.go @@ -273,6 +273,7 @@ func Provider() terraform.ResourceProvider { "alicloud_edas_applications": dataSourceAlicloudEdasApplications(), "alicloud_edas_deploy_groups": dataSourceAlicloudEdasDeployGroups(), "alicloud_edas_clusters": dataSourceAlicloudEdasClusters(), + "alicloud_auto_renew_instances": dataSourceAlicloudRenewInterfaces(), }, ResourcesMap: map[string]*schema.Resource{ "alicloud_instance": resourceAliyunInstance(), @@ -480,13 +481,6 @@ func Provider() terraform.ResourceProvider { "alicloud_kms_alias": resourceAlicloudKmsAlias(), "alicloud_dns_instance": resourceAlicloudDnsInstance(), "alicloud_dns_domain_attachment": resourceAlicloudDnsDomainAttachment(), - "alicloud_edas_application": resourceAlicloudEdasApplication(), - "alicloud_edas_deploy_group": resourceAlicloudEdasDeployGroup(), - "alicloud_edas_application_scale": resourceAlicloudEdasInstanceApplicationAttachment(), - "alicloud_edas_slb_attachment": resourceAlicloudEdasSlbAttachment(), - "alicloud_edas_cluster": resourceAlicloudEdasCluster(), - "alicloud_edas_instance_cluster_attachment": resourceAlicloudEdasInstanceClusterAttachment(), - "alicloud_edas_application_deployment": resourceAlicloudEdasApplicationPackageAttachment(), "alicloud_dns_domain": resourceAlicloudDnsDomain(), "alicloud_dms_enterprise_instance": resourceAlicloudDmsEnterpriseInstance(), "alicloud_waf_domain": resourceAlicloudWafDomain(), @@ -496,6 +490,7 @@ func Provider() terraform.ResourceProvider { "alicloud_resource_manager_folder": resourceAlicloudResourceManagerFolder(), "alicloud_resource_manager_handshake": resourceAlicloudResourceManagerHandshake(), "alicloud_cen_private_zone": resourceAlicloudCenPrivateZone(), + "alicloud_renew_interface": resourceAlicloudRenewInterfaceNetwork(), }, ConfigureFunc: providerConfigure, diff --git a/alicloud/resource_alicloud_renew_interface_network.go b/alicloud/resource_alicloud_renew_interface_network.go new file mode 100644 index 000000000000..88fb93f9b943 --- /dev/null +++ b/alicloud/resource_alicloud_renew_interface_network.go @@ -0,0 +1,150 @@ +package alicloud + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/services/vpc" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/terraform-providers/terraform-provider-alicloud/alicloud/connectivity" + "time" +) + +func resourceAlicloudRenewInterfaceNetwork() *schema.Resource { + return &schema.Resource{ + Create: resourceAlicloudRenewInterfaceNetworkCreate, + Read: resourceAlicloudRenewInterfaceNetworkRead, + Update: resourceAlicloudRenewInterfaceNetworkUpdate, + Delete: resourceAlicloudRenewInterfaceNetworkDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + + Schema: map[string]*schema.Schema{ + "instance_id": { + Type: schema.TypeString, + ForceNew: true, + Required: true, + }, + "pricing_cycle": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "duration": { + Type: schema.TypeInt, + Required: true, + ForceNew: true, + }, + "instance_type": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "owner_id": { + Type: schema.TypeString, + Optional: true, + }, + "resource_owner_account": { + Type: schema.TypeString, + Optional: true, + }, + "resource_owner_id": { + Type: schema.TypeInt, + Optional: true, + }, + "status": { + Type: schema.TypeString, + Optional: true, + }, + }, + } +} + +func resourceAlicloudRenewInterfaceNetworkCreate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*connectivity.AliyunClient) + request := vpc.CreateRenewInstanceRequest() + request.RegionId = client.RegionId + request.Scheme = "https" + request.InstanceId = d.Get("instance_id").(string) + request.PricingCycle = d.Get("pricing_cycle").(string) + request.Duration = requests.NewInteger(d.Get("duration").(int)) + request.InstanceType = d.Get("instance_type").(string) + + if v, ok := d.GetOk("owner_id"); ok { + request.OwnerId = requests.NewInteger(v.(int)) + } + if v := d.Get("resource_owner_account").(string); v != "" { + request.ResourceOwnerAccount = v + } + if v := d.Get("resource_owner_id"); v != "" { + request.ResourceOwnerId = requests.NewInteger(v.(int)) + } + + raw, err := client.WithVpcClient(func(vpcClient *vpc.Client) (interface{}, error) { + return vpcClient.RenewInstance(request) + }) + if err != nil { + return WrapErrorf(err, DefaultErrorMsg, "RenewNetworkInstance", request.GetActionName(), AlibabaCloudSdkGoERROR) + } + + response, _ := raw.(*vpc.RenewInstanceResponse) + if response != nil { + d.SetId(d.Get("instance_id").(string)) + } else { + return WrapError(Error("The response is nil")) + } + time.Sleep(10 * time.Second) + return resourceAlicloudRenewInterfaceNetworkRead(d, meta) +} + +func resourceAlicloudRenewInterfaceNetworkRead(d *schema.ResourceData, meta interface{}) error { + return nil +} + +func resourceAlicloudRenewInterfaceNetworkUpdate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*connectivity.AliyunClient) + d.Partial(true) + wait := incrementalWait(5*time.Second, 5*time.Second) + + if d.HasChange("instance_id") || d.HasChange("pricing_cycle") || d.HasChange("duration") || d.HasChange("instance_type") || + d.HasChange("owner_id") || d.HasChange("resource_owner_account") || d.HasChange("resource_owner_id") { + request := vpc.CreateModifyInstanceAutoRenewalAttributeRequest() + request.RegionId = client.RegionId + request.Scheme = "https" + request.InstanceId = d.Get("instance_id").(string) + request.PricingCycle = d.Get("pricing_cycle").(string) + request.Duration = requests.NewInteger(d.Get("duration").(int)) + request.InstanceType = d.Get("instance_type").(string) + + err := resource.Retry(5*time.Minute, func() *resource.RetryError { + raw, err := client.WithVpcClient(func(vpcClient *vpc.Client) (interface{}, error) { + return vpcClient.ModifyInstanceAutoRenewalAttribute(request) + }) + if err != nil { + if IsExpectedErrors(err, []string{RenewIncorrectStatus}) { + wait() + return resource.RetryableError(err) + } + return resource.NonRetryableError(err) + } + addDebug(request.GetActionName(), raw, request.RpcRequest, request) + return nil + }) + if err != nil { + return WrapErrorf(err, DefaultErrorMsg, d.Id(), request.GetActionName(), AlibabaCloudSdkGoERROR) + } + d.SetPartial("instance_id") + d.SetPartial("pricing_cycle") + d.SetPartial("duration") + d.SetPartial("instance_type") + d.SetPartial("owner_id") + d.SetPartial("resource_owner_account") + d.SetPartial("resource_owner_id") + } + d.Partial(false) + return resourceAlicloudRenewInterfaceNetworkRead(d, meta) +} + +func resourceAlicloudRenewInterfaceNetworkDelete(d *schema.ResourceData, meta interface{}) error { + return nil +} diff --git a/examples/renew-interface/main.tf b/examples/renew-interface/main.tf new file mode 100644 index 000000000000..a56e9876ec0d --- /dev/null +++ b/examples/renew-interface/main.tf @@ -0,0 +1,11 @@ +resource "alicloud_renew_interface" "foo" { + instance_id = var.instance_id + instance_type = var.instance_type + pricing_cycle = var.pricing_cycle + duration = var.duration + renewal_status = var.renewal_status +} + +data "alicloud_auto_renew_instances" "foo" { + instance_type = var.instance_type +} \ No newline at end of file diff --git a/examples/renew-interface/outputs.tf b/examples/renew-interface/outputs.tf new file mode 100644 index 000000000000..3cfd39512ccf --- /dev/null +++ b/examples/renew-interface/outputs.tf @@ -0,0 +1,3 @@ +output "auto_renew_instances" { + value = data.alicloud_auto_renew_instances.foo.instances +} diff --git a/examples/renew-interface/variables.tf b/examples/renew-interface/variables.tf new file mode 100644 index 000000000000..be6573564eb4 --- /dev/null +++ b/examples/renew-interface/variables.tf @@ -0,0 +1,19 @@ +variable "instance_id" { + default = "eip-xxxxxxxxxxxx" +} + +variable "instance_type" { + default = "eip" +} + +variable "pricing_cycle" { + default = "Month" +} + +variable "duration" { + default = 1 +} + +variable "renewal_status" { + default = "Normal" +} \ No newline at end of file diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/describe_instance_auto_renew_attribute.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/describe_instance_auto_renew_attribute.go new file mode 100644 index 000000000000..1393ecee20b1 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/describe_instance_auto_renew_attribute.go @@ -0,0 +1,114 @@ +package vpc + +//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" +) + +// DescribeInstanceAutoRenewAttribute invokes the vpc.DescribeInstanceAutoRenewAttribute API synchronously +// api document: https://help.aliyun.com/api/vpc/describeinstanceautorenewattribute.html +func (client *Client) DescribeInstanceAutoRenewAttribute(request *DescribeInstanceAutoRenewAttributeRequest) (response *DescribeInstanceAutoRenewAttributeResponse, err error) { + response = CreateDescribeInstanceAutoRenewAttributeResponse() + err = client.DoAction(request, response) + return +} + +// DescribeInstanceAutoRenewAttributeWithChan invokes the vpc.DescribeInstanceAutoRenewAttribute API asynchronously +// api document: https://help.aliyun.com/api/vpc/describeinstanceautorenewattribute.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeInstanceAutoRenewAttributeWithChan(request *DescribeInstanceAutoRenewAttributeRequest) (<-chan *DescribeInstanceAutoRenewAttributeResponse, <-chan error) { + responseChan := make(chan *DescribeInstanceAutoRenewAttributeResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.DescribeInstanceAutoRenewAttribute(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// DescribeInstanceAutoRenewAttributeWithCallback invokes the vpc.DescribeInstanceAutoRenewAttribute API asynchronously +// api document: https://help.aliyun.com/api/vpc/describeinstanceautorenewattribute.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeInstanceAutoRenewAttributeWithCallback(request *DescribeInstanceAutoRenewAttributeRequest, callback func(response *DescribeInstanceAutoRenewAttributeResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *DescribeInstanceAutoRenewAttributeResponse + var err error + defer close(result) + response, err = client.DescribeInstanceAutoRenewAttribute(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// DescribeInstanceAutoRenewAttributeRequest is the request struct for api DescribeInstanceAutoRenewAttribute +type DescribeInstanceAutoRenewAttributeRequest struct { + *requests.RpcRequest + ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"` + PageNumber requests.Integer `position:"Query" name:"PageNumber"` + RenewalStatus string `position:"Query" name:"RenewalStatus"` + PageSize requests.Integer `position:"Query" name:"PageSize"` + InstanceType string `position:"Query" name:"InstanceType"` + ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"` + OwnerId requests.Integer `position:"Query" name:"OwnerId"` + InstanceId string `position:"Query" name:"InstanceId"` +} + +// DescribeInstanceAutoRenewAttributeResponse is the response struct for api DescribeInstanceAutoRenewAttribute +type DescribeInstanceAutoRenewAttributeResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + TotalCount string `json:"TotalCount" xml:"TotalCount"` + PageSize string `json:"PageSize" xml:"PageSize"` + PageNumber string `json:"PageNumber" xml:"PageNumber"` + InstanceRenewAttributes InstanceRenewAttributes `json:"InstanceRenewAttributes" xml:"InstanceRenewAttributes"` +} + +// CreateDescribeInstanceAutoRenewAttributeRequest creates a request to invoke DescribeInstanceAutoRenewAttribute API +func CreateDescribeInstanceAutoRenewAttributeRequest() (request *DescribeInstanceAutoRenewAttributeRequest) { + request = &DescribeInstanceAutoRenewAttributeRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Vpc", "2016-04-28", "DescribeInstanceAutoRenewAttribute", "vpc", "openAPI") + return +} + +// CreateDescribeInstanceAutoRenewAttributeResponse creates a response to parse from DescribeInstanceAutoRenewAttribute response +func CreateDescribeInstanceAutoRenewAttributeResponse() (response *DescribeInstanceAutoRenewAttributeResponse) { + response = &DescribeInstanceAutoRenewAttributeResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/modify_instance_auto_renewal_attribute.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/modify_instance_auto_renewal_attribute.go new file mode 100644 index 000000000000..46ed4731d086 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/modify_instance_auto_renewal_attribute.go @@ -0,0 +1,111 @@ +package vpc + +//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" +) + +// ModifyInstanceAutoRenewalAttribute invokes the vpc.ModifyInstanceAutoRenewalAttribute API synchronously +// api document: https://help.aliyun.com/api/vpc/modifyinstanceautorenewalattribute.html +func (client *Client) ModifyInstanceAutoRenewalAttribute(request *ModifyInstanceAutoRenewalAttributeRequest) (response *ModifyInstanceAutoRenewalAttributeResponse, err error) { + response = CreateModifyInstanceAutoRenewalAttributeResponse() + err = client.DoAction(request, response) + return +} + +// ModifyInstanceAutoRenewalAttributeWithChan invokes the vpc.ModifyInstanceAutoRenewalAttribute API asynchronously +// api document: https://help.aliyun.com/api/vpc/modifyinstanceautorenewalattribute.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) ModifyInstanceAutoRenewalAttributeWithChan(request *ModifyInstanceAutoRenewalAttributeRequest) (<-chan *ModifyInstanceAutoRenewalAttributeResponse, <-chan error) { + responseChan := make(chan *ModifyInstanceAutoRenewalAttributeResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.ModifyInstanceAutoRenewalAttribute(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// ModifyInstanceAutoRenewalAttributeWithCallback invokes the vpc.ModifyInstanceAutoRenewalAttribute API asynchronously +// api document: https://help.aliyun.com/api/vpc/modifyinstanceautorenewalattribute.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) ModifyInstanceAutoRenewalAttributeWithCallback(request *ModifyInstanceAutoRenewalAttributeRequest, callback func(response *ModifyInstanceAutoRenewalAttributeResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *ModifyInstanceAutoRenewalAttributeResponse + var err error + defer close(result) + response, err = client.ModifyInstanceAutoRenewalAttribute(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// ModifyInstanceAutoRenewalAttributeRequest is the request struct for api ModifyInstanceAutoRenewalAttribute +type ModifyInstanceAutoRenewalAttributeRequest struct { + *requests.RpcRequest + ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"` + ClientToken string `position:"Query" name:"ClientToken"` + Duration requests.Integer `position:"Query" name:"Duration"` + RenewalStatus string `position:"Query" name:"RenewalStatus"` + InstanceType string `position:"Query" name:"InstanceType"` + ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"` + OwnerId requests.Integer `position:"Query" name:"OwnerId"` + InstanceId string `position:"Query" name:"InstanceId"` + PricingCycle string `position:"Query" name:"PricingCycle"` +} + +// ModifyInstanceAutoRenewalAttributeResponse is the response struct for api ModifyInstanceAutoRenewalAttribute +type ModifyInstanceAutoRenewalAttributeResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` +} + +// CreateModifyInstanceAutoRenewalAttributeRequest creates a request to invoke ModifyInstanceAutoRenewalAttribute API +func CreateModifyInstanceAutoRenewalAttributeRequest() (request *ModifyInstanceAutoRenewalAttributeRequest) { + request = &ModifyInstanceAutoRenewalAttributeRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Vpc", "2016-04-28", "ModifyInstanceAutoRenewalAttribute", "vpc", "openAPI") + return +} + +// CreateModifyInstanceAutoRenewalAttributeResponse creates a response to parse from ModifyInstanceAutoRenewalAttribute response +func CreateModifyInstanceAutoRenewalAttributeResponse() (response *ModifyInstanceAutoRenewalAttributeResponse) { + response = &ModifyInstanceAutoRenewalAttributeResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/renew_instance.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/renew_instance.go new file mode 100644 index 000000000000..1af36bd84d80 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/renew_instance.go @@ -0,0 +1,110 @@ +package vpc + +//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" +) + +// RenewInstance invokes the vpc.RenewInstance API synchronously +// api document: https://help.aliyun.com/api/vpc/renewinstance.html +func (client *Client) RenewInstance(request *RenewInstanceRequest) (response *RenewInstanceResponse, err error) { + response = CreateRenewInstanceResponse() + err = client.DoAction(request, response) + return +} + +// RenewInstanceWithChan invokes the vpc.RenewInstance API asynchronously +// api document: https://help.aliyun.com/api/vpc/renewinstance.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) RenewInstanceWithChan(request *RenewInstanceRequest) (<-chan *RenewInstanceResponse, <-chan error) { + responseChan := make(chan *RenewInstanceResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.RenewInstance(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// RenewInstanceWithCallback invokes the vpc.RenewInstance API asynchronously +// api document: https://help.aliyun.com/api/vpc/renewinstance.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) RenewInstanceWithCallback(request *RenewInstanceRequest, callback func(response *RenewInstanceResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *RenewInstanceResponse + var err error + defer close(result) + response, err = client.RenewInstance(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// RenewInstanceRequest is the request struct for api RenewInstance +type RenewInstanceRequest struct { + *requests.RpcRequest + ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"` + Duration requests.Integer `position:"Query" name:"Duration"` + InstanceType string `position:"Query" name:"InstanceType"` + ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"` + OwnerId requests.Integer `position:"Query" name:"OwnerId"` + InstanceId string `position:"Query" name:"InstanceId"` + PricingCycle string `position:"Query" name:"PricingCycle"` +} + +// RenewInstanceResponse is the response struct for api RenewInstance +type RenewInstanceResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + OrderId string `json:"OrderId" xml:"OrderId"` +} + +// CreateRenewInstanceRequest creates a request to invoke RenewInstance API +func CreateRenewInstanceRequest() (request *RenewInstanceRequest) { + request = &RenewInstanceRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Vpc", "2016-04-28", "RenewInstance", "vpc", "openAPI") + return +} + +// CreateRenewInstanceResponse creates a response to parse from RenewInstance response +func CreateRenewInstanceResponse() (response *RenewInstanceResponse) { + response = &RenewInstanceResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/struct_instance_renew_attribute.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/struct_instance_renew_attribute.go new file mode 100644 index 000000000000..b2c10fe8b6f3 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/struct_instance_renew_attribute.go @@ -0,0 +1,24 @@ +package vpc + +//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. + +// InstanceRenewAttribute is a nested struct in vpc response +type InstanceRenewAttribute struct { + InstanceId string `json:"InstanceId" xml:"InstanceId"` + RenewalStatus string `json:"RenewalStatus" xml:"RenewalStatus"` + Duration int `json:"Duration" xml:"Duration"` + PricingCycle string `json:"PricingCycle" xml:"PricingCycle"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/struct_instance_renew_attributes.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/struct_instance_renew_attributes.go new file mode 100644 index 000000000000..001fce3c4624 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/vpc/struct_instance_renew_attributes.go @@ -0,0 +1,21 @@ +package vpc + +//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. + +// InstanceRenewAttributes is a nested struct in vpc response +type InstanceRenewAttributes struct { + InstanceRenewAttribute []InstanceRenewAttribute `json:"InstanceRenewAttribute" xml:"InstanceRenewAttribute"` +}