Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug/alicloud_snat_entry: Corrected field source_vswitch_id, source_cidr to Computed #4528

Merged
merged 1 commit into from
Jan 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion alicloud/resource_alicloud_bastionhost_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ package alicloud

import (
"fmt"
log "github.com/sirupsen/logrus"
"strconv"
"time"

log "github.com/sirupsen/logrus"

util "github.com/alibabacloud-go/tea-utils/service"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"

Expand Down
4 changes: 3 additions & 1 deletion alicloud/resource_alicloud_snat_entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,14 @@ func resourceAlicloudSnatEntry() *schema.Resource {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Computed: true,
ConflictsWith: strings.Fields("source_vswitch_id"),
},
"source_vswitch_id": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Computed: true,
ConflictsWith: strings.Fields("source_cidr"),
},
"status": {
Expand Down Expand Up @@ -94,7 +96,7 @@ func resourceAlicloudSnatEntryCreate(d *schema.ResourceData, meta interface{}) e
request["ClientToken"] = buildClientToken("CreateSnatEntry")
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2016-04-28"), StringPointer("AK"), nil, request, &runtime)
if err != nil {
if IsExpectedErrors(err, []string{"EIP_NOT_IN_GATEWAY", "InternalError", "OperationFailed.Throttling", "OperationUnsupported.EipInBinding", "OperationUnsupported.EipNatBWPCheck"}) || NeedRetry(err) {
if IsExpectedErrors(err, []string{"EIP_NOT_IN_GATEWAY", "InternalError", "OperationFailed.Throttling", "OperationUnsupported.EipInBinding", "OperationUnsupported.EipNatBWPCheck", "OperationConflict"}) || NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
Expand Down
99 changes: 33 additions & 66 deletions alicloud/resource_alicloud_snat_entry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ func TestAccAlicloudVpcSnatEntry_basic(t *testing.T) {
Config: testAccConfig(map[string]interface{}{
"snat_ip": "${alicloud_eip_address.default.ip_address}",
"snat_table_id": "${alicloud_nat_gateway.default.snat_table_ids}",
"source_vswitch_id": "${local.vswitch_id}",
"source_vswitch_id": "${data.alicloud_vswitches.default.ids[0]}",
"depends_on": []string{"alicloud_eip_association.default"},
}),
Check: resource.ComposeTestCheckFunc(
testAccCheck(map[string]string{
Expand Down Expand Up @@ -163,50 +164,33 @@ variable "name" {
default = "%s"
}

data "alicloud_zones" "default" {
available_resource_creation = "VSwitch"
}
data "alicloud_enhanced_nat_available_zones" "default" {}

data "alicloud_vpcs" "default" {
name_regex = "default-NODELETING"
name_regex = "default-NODELETING"
}

data "alicloud_vswitches" "default" {
vpc_id = data.alicloud_vpcs.default.ids.0
zone_id = data.alicloud_zones.default.zones.0.id
}
resource "alicloud_vswitch" "vswitch" {
count = length(data.alicloud_vswitches.default.ids) > 0 ? 0 : 1
vpc_id = data.alicloud_vpcs.default.ids.0
cidr_block = cidrsubnet(data.alicloud_vpcs.default.vpcs[0].cidr_block, 8, 8)
zone_id = data.alicloud_zones.default.zones.0.id
vswitch_name = var.name
}
locals {
vswitch_id = length(data.alicloud_vswitches.default.ids) > 0 ? data.alicloud_vswitches.default.ids[0] : concat(alicloud_vswitch.vswitch.*.id, [""])[0]
vpc_id = data.alicloud_vpcs.default.ids.0
zone_id = data.alicloud_enhanced_nat_available_zones.default.zones.0.zone_id
}

resource "alicloud_nat_gateway" "default" {
vpc_id = data.alicloud_vpcs.default.ids.0
specification = "Middle"
network_type = "internet"
nat_gateway_name = "${var.name}"
vswitch_id = local.vswitch_id
nat_type = "Enhanced"
period = "5"
instance_charge_type = "PrePaid"
internet_charge_type = "PayBySpec"
vpc_id = data.alicloud_vpcs.default.ids.0
nat_gateway_name = var.name
payment_type = "PayAsYouGo"
vswitch_id = data.alicloud_vswitches.default.ids[0]
nat_type = "Enhanced"
}

resource "alicloud_eip_address" "default" {
address_name = "${var.name}"
address_name = var.name
}

resource "alicloud_eip_association" "default" {
depends_on = [alicloud_eip_address.default, alicloud_nat_gateway.default]
allocation_id = "${alicloud_eip_address.default.id}"
instance_id = "${alicloud_nat_gateway.default.id}"
allocation_id = alicloud_eip_address.default.id
instance_id = alicloud_nat_gateway.default.id
}

`, name)
}

Expand All @@ -216,57 +200,40 @@ variable "name" {
default = "%s"
}

data "alicloud_zones" "default" {
available_resource_creation = "VSwitch"
}
data "alicloud_enhanced_nat_available_zones" "default" {}

data "alicloud_vpcs" "default" {
name_regex = "default-NODELETING"
name_regex = "default-NODELETING"
}

data "alicloud_vswitches" "default" {
vpc_id = data.alicloud_vpcs.default.ids.0
zone_id = data.alicloud_zones.default.zones.0.id
}
resource "alicloud_vswitch" "vswitch" {
count = length(data.alicloud_vswitches.default.ids) > 0 ? 0 : 1
vpc_id = data.alicloud_vpcs.default.ids.0
cidr_block = cidrsubnet(data.alicloud_vpcs.default.vpcs[0].cidr_block, 8, 8)
zone_id = data.alicloud_zones.default.zones.0.id
vswitch_name = var.name
}
locals {
vswitch_id = length(data.alicloud_vswitches.default.ids) > 0 ? data.alicloud_vswitches.default.ids[0] : concat(alicloud_vswitch.vswitch.*.id, [""])[0]
vpc_id = data.alicloud_vpcs.default.ids.0
zone_id = data.alicloud_enhanced_nat_available_zones.default.zones.0.zone_id
}

resource "alicloud_nat_gateway" "default" {
vpc_id = data.alicloud_vpcs.default.ids.0
specification = "Middle"
network_type = "internet"
nat_gateway_name = "${var.name}"
vswitch_id = local.vswitch_id
nat_type = "Enhanced"
period = "5"
instance_charge_type = "PrePaid"
internet_charge_type = "PayBySpec"
vpc_id = data.alicloud_vpcs.default.ids.0
nat_gateway_name = var.name
payment_type = "PayAsYouGo"
vswitch_id = data.alicloud_vswitches.default.ids[0]
nat_type = "Enhanced"
}

resource "alicloud_eip_address" "default" {
address_name = "${var.name}"
address_name = var.name
}

resource "alicloud_eip_association" "default" {
depends_on = [alicloud_eip_address.default, alicloud_nat_gateway.default]
allocation_id = "${alicloud_eip_address.default.id}"
instance_id = "${alicloud_nat_gateway.default.id}"
allocation_id = alicloud_eip_address.default.id
instance_id = alicloud_nat_gateway.default.id
}

resource "alicloud_snat_entry" "default" {
count = 3
snat_ip = "${alicloud_eip_address.default.ip_address}"
snat_table_id = "${alicloud_nat_gateway.default.snat_table_ids}"
source_vswitch_id = local.vswitch_id
depends_on = [alicloud_eip_association.default]
count = 3
snat_ip = alicloud_eip_address.default.ip_address
snat_table_id = alicloud_nat_gateway.default.snat_table_ids
source_vswitch_id = data.alicloud_vswitches.default.ids[count.index]
depends_on = [alicloud_eip_association.default]
}

`, name)
}
3 changes: 2 additions & 1 deletion alicloud/resource_alicloud_yundun_dbaudit_instance.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package alicloud

import (
log "github.com/sirupsen/logrus"
"time"

log "github.com/sirupsen/logrus"

"github.com/hashicorp/terraform-plugin-sdk/helper/resource"

"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
Expand Down
4 changes: 2 additions & 2 deletions website/docs/r/snat_entry.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ resource "alicloud_snat_entry" "default" {
The following arguments are supported:

* `snat_table_id` - (Required, ForceNew) The value can get from `alicloud_nat_gateway` Attributes "snat_table_ids".
* `source_vswitch_id` - (Optional, ForceNew) The vswitch ID.
* `source_cidr` - (Optional, ForceNew, Available in 1.71.1+) The private network segment of Ecs. This parameter and the `source_vswitch_id` parameter are mutually exclusive and cannot appear at the same time.
* `source_vswitch_id` - (Optional, ForceNew, Computed) The vswitch ID.
* `source_cidr` - (Optional, ForceNew, Available in 1.71.1+, Computed) The private network segment of Ecs. This parameter and the `source_vswitch_id` parameter are mutually exclusive and cannot appear at the same time.
* `snat_entry_name` - (Optional, Available in 1.71.2+) The name of snat entry.
* `snat_ip` - (Required, ForceNew) The SNAT ip address, the ip must along bandwidth package public ip which `alicloud_nat_gateway` argument `bandwidth_packages`.

Expand Down