Skip to content

Commit 66bc9cd

Browse files
dacbd0x2b3bfa0DavidGOrtega
authored
Expanded logic on Subnet selection (#323)
Co-authored-by: Helio Machado <0x2b3bfa0+git@googlemail.com> Co-authored-by: DavidGOrtega <g.ortega.david@gmail.com>
1 parent 550c698 commit 66bc9cd

9 files changed

+75
-17
lines changed

iterative/aws/provider.go

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"strings"
1111
"time"
1212

13+
"terraform-provider-iterative/iterative/utils"
14+
1315
"github.com/aws/aws-sdk-go-v2/aws"
1416
"github.com/aws/aws-sdk-go-v2/config"
1517
"github.com/aws/aws-sdk-go-v2/service/ec2"
@@ -32,6 +34,8 @@ func ResourceMachineCreate(ctx context.Context, d *schema.ResourceData, m interf
3234
spot := d.Get("spot").(bool)
3335
spotPrice := d.Get("spot_price").(float64)
3436
instanceProfile := d.Get("instance_permission_set").(string)
37+
subnetId := d.Get("aws_subnet_id").(string)
38+
availabilityZone := GetAvailabilityZone(d.Get("region").(string))
3539

3640
metadata := map[string]string{
3741
"Name": d.Get("name").(string),
@@ -44,7 +48,6 @@ func ResourceMachineCreate(ctx context.Context, d *schema.ResourceData, m interf
4448
if ami == "" {
4549
ami = "iterative-cml"
4650
}
47-
4851
config, err := awsClient(region)
4952
if err != nil {
5053
return decodeAWSError(region, err)
@@ -188,26 +191,47 @@ func ResourceMachineCreate(ctx context.Context, d *schema.ResourceData, m interf
188191
sgID = *sgDesc.SecurityGroups[0].GroupId
189192
vpcID = *sgDesc.SecurityGroups[0].VpcId
190193

191-
subDesc, err := svc.DescribeSubnets(ctx, &ec2.DescribeSubnetsInput{
194+
// default Subnet selection
195+
subnetOptions := &ec2.DescribeSubnetsInput{
192196
Filters: []types.Filter{
193197
{
194198
Name: aws.String("vpc-id"),
195199
Values: []string{vpcID},
196200
},
197201
},
198-
})
202+
}
203+
// use availability zone from user
204+
if availabilityZone != "" && subnetId == "" {
205+
subnetOptions.Filters = append(subnetOptions.Filters, types.Filter{
206+
Name: aws.String("availability-zone"),
207+
Values: []string{availabilityZone},
208+
})
209+
}
210+
// use exact subnet-id from user
211+
if subnetId != "" {
212+
subnetOptions.Filters = append(subnetOptions.Filters, types.Filter{
213+
Name: aws.String("subnet-id"),
214+
Values: []string{subnetId},
215+
})
216+
}
217+
subDesc, err := svc.DescribeSubnets(ctx, subnetOptions)
199218
if err != nil {
200219
return decodeAWSError(region, err)
201220
}
202221
if len(subDesc.Subnets) == 0 {
203-
return errors.New("no subnets found")
222+
return errors.New("no Subnet found")
204223
}
205224
var subnetID string
206-
for _, subnet := range subDesc.Subnets {
207-
if *subnet.AvailableIpAddressCount > 0 && *subnet.MapPublicIpOnLaunch {
208-
subnetID = *subnet.SubnetId
209-
break
225+
// bypass with user provided ID
226+
if subnetId == "" {
227+
for _, subnet := range subDesc.Subnets {
228+
if *subnet.AvailableIpAddressCount > 0 && *subnet.MapPublicIpOnLaunch {
229+
subnetID = *subnet.SubnetId
230+
break
231+
}
210232
}
233+
} else {
234+
subnetID = subnetId
211235
}
212236
if subnetID == "" {
213237
return errors.New("No subnet found with public IPs available or able to create new public IPs on creation")
@@ -299,7 +323,7 @@ func ResourceMachineCreate(ctx context.Context, d *schema.ResourceData, m interf
299323
MinCount: aws.Int32(1),
300324
MaxCount: aws.Int32(1),
301325
SecurityGroupIds: []string{sgID},
302-
SubnetId: aws.String(*subDesc.Subnets[0].SubnetId),
326+
SubnetId: aws.String(subnetID),
303327
BlockDeviceMappings: blockDeviceMappings,
304328
TagSpecifications: resourceTagSpecifications(types.ResourceTypeInstance, metadata),
305329
})
@@ -332,7 +356,13 @@ func ResourceMachineCreate(ctx context.Context, d *schema.ResourceData, m interf
332356
}
333357

334358
instanceDesc := descResult.Reservations[0].Instances[0]
335-
d.Set("instance_ip", instanceDesc.PublicIpAddress)
359+
var instanceIP string
360+
if instanceDesc.PublicIpAddress != nil {
361+
instanceIP = *instanceDesc.PublicIpAddress
362+
} else {
363+
instanceIP = *instanceDesc.PrivateIpAddress
364+
}
365+
d.Set("instance_ip", instanceIP)
336366
d.Set("instance_launch_time", instanceDesc.LaunchTime.Format(time.RFC3339))
337367
d.Set("image", *imagesRes.Images[0].Name)
338368

@@ -387,6 +417,14 @@ func awsClient(region string) (aws.Config, error) {
387417
)
388418
}
389419

420+
func GetAvailabilityZone(region string) string {
421+
lastChar := region[len(region)-1]
422+
if lastChar >= 'a' && lastChar <= 'z' {
423+
return region
424+
}
425+
return ""
426+
}
427+
390428
//GetRegion maps region to real cloud regions
391429
func GetRegion(region string) string {
392430
instanceRegions := make(map[string]string)
@@ -398,7 +436,7 @@ func GetRegion(region string) string {
398436
return val
399437
}
400438

401-
return region
439+
return utils.StripAvailabilityZone(region)
402440
}
403441

404442
func getInstanceType(instanceType string, instanceGPU string) string {

iterative/resource_machine.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ func machineSchema() *map[string]*schema.Schema {
128128
Optional: true,
129129
Default: "",
130130
},
131+
"aws_subnet_id": &schema.Schema{
132+
Type: schema.TypeString,
133+
ForceNew: true,
134+
Optional: true,
135+
Default: "",
136+
},
131137
"metadata": &schema.Schema{
132138
Type: schema.TypeMap,
133139
ForceNew: true,

iterative/resource_runner.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,12 @@ func resourceRunner() *schema.Resource {
159159
Optional: true,
160160
Default: "",
161161
},
162+
"aws_subnet_id": &schema.Schema{
163+
Type: schema.TypeString,
164+
ForceNew: true,
165+
Optional: true,
166+
Default: "",
167+
},
162168
"metadata": &schema.Schema{
163169
Type: schema.TypeMap,
164170
ForceNew: true,
@@ -374,7 +380,7 @@ func provisionerCode(d *schema.ResourceData) (string, error) {
374380
Attributes: AttributesType{
375381
ID: d.Id(),
376382
Cloud: d.Get("cloud").(string),
377-
Region: d.Get("region").(string),
383+
Region: utils.StripAvailabilityZone(d.Get("region").(string)),
378384
Name: d.Get("name").(string),
379385
Labels: "",
380386
IdleTimeout: d.Get("idle_timeout").(int),

iterative/testdata/script_template_cloud_aws.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ HOME="$(mktemp -d)" exec cml-runner \
4848
--repo '14 value with "quotes" and spaces' \
4949
--token '13 value with "quotes" and spaces' \
5050
--single \
51-
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImF3cyIsImN1c3RvbV9kYXRhIjoiIiwiaWQiOiIiLCJpbWFnZSI6IiIsImluc3RhbmNlX2dwdSI6IiIsImluc3RhbmNlX2hkZF9zaXplIjoxMiwiaW5zdGFuY2VfaXAiOiIiLCJpbnN0YW5jZV9sYXVuY2hfdGltZSI6IiIsImluc3RhbmNlX3R5cGUiOiIiLCJyZWdpb24iOiI5IHZhbHVlIHdpdGggXCJxdW90ZXNcIiBhbmQgc3BhY2VzIiwic3NoX25hbWUiOiIiLCJzc2hfcHJpdmF0ZSI6IiIsInNzaF9wdWJsaWMiOiIiLCJhd3Nfc2VjdXJpdHlfZ3JvdXAiOiIifX1dfQ==
51+
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImF3cyIsImN1c3RvbV9kYXRhIjoiIiwiaWQiOiIiLCJpbWFnZSI6IiIsImluc3RhbmNlX2dwdSI6IiIsImluc3RhbmNlX2hkZF9zaXplIjoxMiwiaW5zdGFuY2VfaXAiOiIiLCJpbnN0YW5jZV9sYXVuY2hfdGltZSI6IiIsImluc3RhbmNlX3R5cGUiOiIiLCJyZWdpb24iOiI5IHZhbHVlIHdpdGggXCJxdW90ZXNcIiBhbmQgc3BhY2UiLCJzc2hfbmFtZSI6IiIsInNzaF9wcml2YXRlIjoiIiwic3NoX3B1YmxpYyI6IiIsImF3c19zZWN1cml0eV9ncm91cCI6IiJ9fV19
5252
EOF
5353
sudo chmod +x /usr/bin/cml.sh
5454

iterative/testdata/script_template_cloud_azure.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ HOME="$(mktemp -d)" exec cml-runner \
4949
--repo '14 value with "quotes" and spaces' \
5050
--token '13 value with "quotes" and spaces' \
5151
--single \
52-
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImF6dXJlIiwiY3VzdG9tX2RhdGEiOiIiLCJpZCI6IiIsImltYWdlIjoiIiwiaW5zdGFuY2VfZ3B1IjoiIiwiaW5zdGFuY2VfaGRkX3NpemUiOjEyLCJpbnN0YW5jZV9pcCI6IiIsImluc3RhbmNlX2xhdW5jaF90aW1lIjoiIiwiaW5zdGFuY2VfdHlwZSI6IiIsInJlZ2lvbiI6IjkgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJzc2hfbmFtZSI6IiIsInNzaF9wcml2YXRlIjoiIiwic3NoX3B1YmxpYyI6IiIsImF3c19zZWN1cml0eV9ncm91cCI6IiJ9fV19
52+
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImF6dXJlIiwiY3VzdG9tX2RhdGEiOiIiLCJpZCI6IiIsImltYWdlIjoiIiwiaW5zdGFuY2VfZ3B1IjoiIiwiaW5zdGFuY2VfaGRkX3NpemUiOjEyLCJpbnN0YW5jZV9pcCI6IiIsImluc3RhbmNlX2xhdW5jaF90aW1lIjoiIiwiaW5zdGFuY2VfdHlwZSI6IiIsInJlZ2lvbiI6IjkgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZSIsInNzaF9uYW1lIjoiIiwic3NoX3ByaXZhdGUiOiIiLCJzc2hfcHVibGljIjoiIiwiYXdzX3NlY3VyaXR5X2dyb3VwIjoiIn19XX0=
5353
EOF
5454
sudo chmod +x /usr/bin/cml.sh
5555

iterative/testdata/script_template_cloud_gcp.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ HOME="$(mktemp -d)" exec cml-runner \
4646
--repo '14 value with "quotes" and spaces' \
4747
--token '13 value with "quotes" and spaces' \
4848
--single \
49-
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImdjcCIsImN1c3RvbV9kYXRhIjoiIiwiaWQiOiIiLCJpbWFnZSI6IiIsImluc3RhbmNlX2dwdSI6IiIsImluc3RhbmNlX2hkZF9zaXplIjoxMiwiaW5zdGFuY2VfaXAiOiIiLCJpbnN0YW5jZV9sYXVuY2hfdGltZSI6IiIsImluc3RhbmNlX3R5cGUiOiIiLCJyZWdpb24iOiI5IHZhbHVlIHdpdGggXCJxdW90ZXNcIiBhbmQgc3BhY2VzIiwic3NoX25hbWUiOiIiLCJzc2hfcHJpdmF0ZSI6IiIsInNzaF9wdWJsaWMiOiIiLCJhd3Nfc2VjdXJpdHlfZ3JvdXAiOiIifX1dfQ==
49+
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImdjcCIsImN1c3RvbV9kYXRhIjoiIiwiaWQiOiIiLCJpbWFnZSI6IiIsImluc3RhbmNlX2dwdSI6IiIsImluc3RhbmNlX2hkZF9zaXplIjoxMiwiaW5zdGFuY2VfaXAiOiIiLCJpbnN0YW5jZV9sYXVuY2hfdGltZSI6IiIsImluc3RhbmNlX3R5cGUiOiIiLCJyZWdpb24iOiI5IHZhbHVlIHdpdGggXCJxdW90ZXNcIiBhbmQgc3BhY2UiLCJzc2hfbmFtZSI6IiIsInNzaF9wcml2YXRlIjoiIiwic3NoX3B1YmxpYyI6IiIsImF3c19zZWN1cml0eV9ncm91cCI6IiJ9fV19
5050
EOF
5151
sudo chmod +x /usr/bin/cml.sh
5252

iterative/testdata/script_template_cloud_invalid.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ HOME="$(mktemp -d)" exec cml-runner \
4545
--repo '14 value with "quotes" and spaces' \
4646
--token '13 value with "quotes" and spaces' \
4747
--single \
48-
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImludmFsaWQiLCJjdXN0b21fZGF0YSI6IiIsImlkIjoiIiwiaW1hZ2UiOiIiLCJpbnN0YW5jZV9ncHUiOiIiLCJpbnN0YW5jZV9oZGRfc2l6ZSI6MTIsImluc3RhbmNlX2lwIjoiIiwiaW5zdGFuY2VfbGF1bmNoX3RpbWUiOiIiLCJpbnN0YW5jZV90eXBlIjoiIiwicmVnaW9uIjoiOSB2YWx1ZSB3aXRoIFwicXVvdGVzXCIgYW5kIHNwYWNlcyIsInNzaF9uYW1lIjoiIiwic3NoX3ByaXZhdGUiOiIiLCJzc2hfcHVibGljIjoiIiwiYXdzX3NlY3VyaXR5X2dyb3VwIjoiIn19XX0=
48+
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6ImludmFsaWQiLCJjdXN0b21fZGF0YSI6IiIsImlkIjoiIiwiaW1hZ2UiOiIiLCJpbnN0YW5jZV9ncHUiOiIiLCJpbnN0YW5jZV9oZGRfc2l6ZSI6MTIsImluc3RhbmNlX2lwIjoiIiwiaW5zdGFuY2VfbGF1bmNoX3RpbWUiOiIiLCJpbnN0YW5jZV90eXBlIjoiIiwicmVnaW9uIjoiOSB2YWx1ZSB3aXRoIFwicXVvdGVzXCIgYW5kIHNwYWNlIiwic3NoX25hbWUiOiIiLCJzc2hfcHJpdmF0ZSI6IiIsInNzaF9wdWJsaWMiOiIiLCJhd3Nfc2VjdXJpdHlfZ3JvdXAiOiIifX1dfQ==
4949
EOF
5050
sudo chmod +x /usr/bin/cml.sh
5151

iterative/testdata/script_template_cloud_kubernetes.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ HOME="$(mktemp -d)" exec cml-runner \
99
--repo '14 value with "quotes" and spaces' \
1010
--token '13 value with "quotes" and spaces' \
1111
--single \
12-
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6Imt1YmVybmV0ZXMiLCJjdXN0b21fZGF0YSI6IiIsImlkIjoiIiwiaW1hZ2UiOiIiLCJpbnN0YW5jZV9ncHUiOiIiLCJpbnN0YW5jZV9oZGRfc2l6ZSI6MTIsImluc3RhbmNlX2lwIjoiIiwiaW5zdGFuY2VfbGF1bmNoX3RpbWUiOiIiLCJpbnN0YW5jZV90eXBlIjoiIiwicmVnaW9uIjoiOSB2YWx1ZSB3aXRoIFwicXVvdGVzXCIgYW5kIHNwYWNlcyIsInNzaF9uYW1lIjoiIiwic3NoX3ByaXZhdGUiOiIiLCJzc2hfcHVibGljIjoiIiwiYXdzX3NlY3VyaXR5X2dyb3VwIjoiIn19XX0=
12+
--tf-resource eyJtb2RlIjoibWFuYWdlZCIsInR5cGUiOiJpdGVyYXRpdmVfY21sX3J1bm5lciIsIm5hbWUiOiJydW5uZXIiLCJwcm92aWRlciI6InByb3ZpZGVyW1wicmVnaXN0cnkudGVycmFmb3JtLmlvL2l0ZXJhdGl2ZS9pdGVyYXRpdmVcIl0iLCJpbnN0YW5jZXMiOlt7InByaXZhdGUiOiIiLCJzY2hlbWFfdmVyc2lvbiI6MCwiYXR0cmlidXRlcyI6eyJuYW1lIjoiMTAgdmFsdWUgd2l0aCBcInF1b3Rlc1wiIGFuZCBzcGFjZXMiLCJsYWJlbHMiOiIiLCJpZGxlX3RpbWVvdXQiOjExLCJyZXBvIjoiIiwidG9rZW4iOiIiLCJkcml2ZXIiOiIiLCJjbG91ZCI6Imt1YmVybmV0ZXMiLCJjdXN0b21fZGF0YSI6IiIsImlkIjoiIiwiaW1hZ2UiOiIiLCJpbnN0YW5jZV9ncHUiOiIiLCJpbnN0YW5jZV9oZGRfc2l6ZSI6MTIsImluc3RhbmNlX2lwIjoiIiwiaW5zdGFuY2VfbGF1bmNoX3RpbWUiOiIiLCJpbnN0YW5jZV90eXBlIjoiIiwicmVnaW9uIjoiOSB2YWx1ZSB3aXRoIFwicXVvdGVzXCIgYW5kIHNwYWNlIiwic3NoX25hbWUiOiIiLCJzc2hfcHJpdmF0ZSI6IiIsInNzaF9wdWJsaWMiOiIiLCJhd3Nfc2VjdXJpdHlfZ3JvdXAiOiIifX1dfQ==

iterative/utils/helpers.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,11 @@ func SetId(d *schema.ResourceData) {
2323
}
2424
}
2525
}
26+
27+
func StripAvailabilityZone(region string) string {
28+
lastChar := region[len(region)-1]
29+
if lastChar >= 'a' && lastChar <= 'z' {
30+
return region[:len(region)-1]
31+
}
32+
return region
33+
}

0 commit comments

Comments
 (0)