Skip to content

Commit 00b1e88

Browse files
authored
Merge pull request #157 from Sherlock-Holo/as-group-tags
Add as scaling group tags support
2 parents 59ba9c4 + 4569908 commit 00b1e88

9 files changed

+256
-70
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
## 1.20.1 (Unreleased)
2+
3+
ENHANCEMENTS:
4+
5+
* Data Source: `tencentcloud_as_scaling_groups` add optional argument `tags` and attribute `tags` for `scaling_group_list`.
6+
* Resource: `tencentcloud_as_scaling_group` add optional argument `tags`.
7+
28
## 1.20.0 (September 24, 2019)
39

410
FEATURES:

examples/tencentcloud-as/main.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ resource "tencentcloud_as_scaling_group" "scaling_group" {
4848
desired_capacity = "${var.desired_capacity}"
4949
termination_policies = ["NEWEST_INSTANCE"]
5050
retry_policy = "INCREMENTAL_INTERVALS"
51+
52+
tags = {
53+
"test" = "test"
54+
}
5155
}
5256

5357
resource "tencentcloud_as_scaling_policy" "scaling_policy" {
@@ -91,3 +95,7 @@ resource "tencentcloud_as_notification" "notification" {
9195
notification_types = ["SCALE_OUT_FAILED"]
9296
notification_user_group_ids = ["76955"]
9397
}
98+
99+
data "tencentcloud_as_scaling_groups" "scaling_groups_tags" {
100+
tags = "${tencentcloud_as_scaling_group.scaling_group.tags}"
101+
}

tencentcloud/data_source_tc_as_scaling_groups.go

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,18 @@ func dataSourceTencentCloudAsScalingGroups() *schema.Resource {
4040
Optional: true,
4141
Description: "A scaling group name used to query.",
4242
},
43+
"tags": {
44+
Type: schema.TypeMap,
45+
Optional: true,
46+
Description: "Tags used to query.",
47+
},
4348
"result_output_file": {
4449
Type: schema.TypeString,
4550
Optional: true,
4651
Description: "Used to save results.",
4752
},
53+
54+
// computed
4855
"scaling_group_list": {
4956
Type: schema.TypeList,
5057
Computed: true,
@@ -183,6 +190,11 @@ func dataSourceTencentCloudAsScalingGroups() *schema.Resource {
183190
Computed: true,
184191
Description: "The time when the AS group was created.",
185192
},
193+
"tags": {
194+
Type: schema.TypeMap,
195+
Computed: true,
196+
Description: "Tags of the scaling group.",
197+
},
186198
},
187199
},
188200
},
@@ -213,47 +225,55 @@ func dataSourceTencentCloudAsScalingGroupRead(d *schema.ResourceData, meta inter
213225
scalingGroupName = v.(string)
214226
}
215227

216-
scalingGroups, err := asService.DescribeAutoScalingGroupByFilter(ctx, scalingGroupId, configurationId, scalingGroupName)
228+
tags := getTags(d, "tags")
229+
230+
scalingGroups, err := asService.DescribeAutoScalingGroupByFilter(ctx, scalingGroupId, configurationId, scalingGroupName, tags)
217231
if err != nil {
218232
return err
219233
}
220234

221235
scalingGroupList := make([]map[string]interface{}, 0, len(scalingGroups))
222236
for _, scalingGroup := range scalingGroups {
237+
tags := make(map[string]string, len(scalingGroup.Tags))
238+
for _, tag := range scalingGroup.Tags {
239+
tags[*tag.Key] = *tag.Value
240+
}
241+
223242
mapping := map[string]interface{}{
224-
"scaling_group_id": *scalingGroup.AutoScalingGroupId,
225-
"scaling_group_name": *scalingGroup.AutoScalingGroupName,
226-
"configuration_id": *scalingGroup.LaunchConfigurationId,
227-
"status": *scalingGroup.AutoScalingGroupStatus,
228-
"instance_count": *scalingGroup.InstanceCount,
229-
"max_size": *scalingGroup.MaxSize,
230-
"min_size": *scalingGroup.MinSize,
231-
"vpc_id": *scalingGroup.VpcId,
243+
"scaling_group_id": scalingGroup.AutoScalingGroupId,
244+
"scaling_group_name": scalingGroup.AutoScalingGroupName,
245+
"configuration_id": scalingGroup.LaunchConfigurationId,
246+
"status": scalingGroup.AutoScalingGroupStatus,
247+
"instance_count": scalingGroup.InstanceCount,
248+
"max_size": scalingGroup.MaxSize,
249+
"min_size": scalingGroup.MinSize,
250+
"vpc_id": scalingGroup.VpcId,
232251
"subnet_ids": flattenStringList(scalingGroup.SubnetIdSet),
233252
"zones": flattenStringList(scalingGroup.ZoneSet),
234-
"default_cooldown": *scalingGroup.DefaultCooldown,
235-
"desired_capacity": *scalingGroup.DesiredCapacity,
253+
"default_cooldown": scalingGroup.DefaultCooldown,
254+
"desired_capacity": scalingGroup.DesiredCapacity,
236255
"load_balancer_ids": flattenStringList(scalingGroup.LoadBalancerIdSet),
237256
"termination_policies": flattenStringList(scalingGroup.TerminationPolicySet),
238-
"retry_policy": *scalingGroup.RetryPolicy,
239-
"create_time": *scalingGroup.CreatedTime,
257+
"retry_policy": scalingGroup.RetryPolicy,
258+
"create_time": scalingGroup.CreatedTime,
259+
"tags": tags,
240260
}
241261
if scalingGroup.ForwardLoadBalancerSet != nil && len(scalingGroup.ForwardLoadBalancerSet) > 0 {
242262
forwardLoadBalancers := make([]map[string]interface{}, 0, len(scalingGroup.ForwardLoadBalancerSet))
243263
for _, v := range scalingGroup.ForwardLoadBalancerSet {
244264
targetAttributes := make([]map[string]interface{}, 0, len(v.TargetAttributes))
245265
for _, vv := range v.TargetAttributes {
246266
targetAttribute := map[string]interface{}{
247-
"port": *vv.Port,
248-
"weight": *vv.Weight,
267+
"port": vv.Port,
268+
"weight": vv.Weight,
249269
}
250270
targetAttributes = append(targetAttributes, targetAttribute)
251271
}
252272
forwardLoadBalancer := map[string]interface{}{
253-
"load_balancer_id": *v.LoadBalancerId,
254-
"listener_id": *v.ListenerId,
273+
"load_balancer_id": v.LoadBalancerId,
274+
"listener_id": v.ListenerId,
255275
"target_attributes": targetAttributes,
256-
"location_id": *v.LocationId,
276+
"location_id": v.LocationId,
257277
}
258278
forwardLoadBalancers = append(forwardLoadBalancers, forwardLoadBalancer)
259279
}

tencentcloud/data_source_tc_as_scaling_groups_test.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tencentcloud
22

33
import (
4+
"regexp"
45
"testing"
56

67
"github.com/hashicorp/terraform/helper/resource"
@@ -35,6 +36,17 @@ func TestAccTencentCloudAsScalingGroupsDataSource_basic(t *testing.T) {
3536
resource.TestCheckResourceAttr("data.tencentcloud_as_scaling_groups.scaling_groups_name", "scaling_group_list.0.subnet_ids.#", "1"),
3637
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_name", "scaling_group_list.0.status"),
3738
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_name", "scaling_group_list.0.create_time"),
39+
40+
resource.TestMatchResourceAttr("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.#", regexp.MustCompile(`^[1-9]\d*$`)),
41+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.scaling_group_name"),
42+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.configuration_id"),
43+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.max_size"),
44+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.min_size"),
45+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.vpc_id"),
46+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.subnet_ids.#"),
47+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.status"),
48+
resource.TestCheckResourceAttrSet("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.create_time"),
49+
resource.TestCheckResourceAttr("data.tencentcloud_as_scaling_groups.scaling_groups_tags", "scaling_group_list.0.tags.test", "test"),
3850
),
3951
},
4052
},
@@ -72,7 +84,7 @@ func TestAccTencentCloudAsScalingGroupsDataSource_full(t *testing.T) {
7284
})
7385
}
7486

75-
//todo
87+
// todo
7688
func testAccAsScalingGroupsDataSource_basic() string {
7789
return `
7890
resource "tencentcloud_vpc" "vpc" {
@@ -100,6 +112,10 @@ resource "tencentcloud_as_scaling_group" "scaling_group" {
100112
min_size = 0
101113
vpc_id = "${tencentcloud_vpc.vpc.id}"
102114
subnet_ids = ["${tencentcloud_subnet.subnet.id}"]
115+
116+
tags = {
117+
"test" = "test"
118+
}
103119
}
104120
105121
data "tencentcloud_as_scaling_groups" "scaling_groups" {
@@ -109,6 +125,10 @@ data "tencentcloud_as_scaling_groups" "scaling_groups" {
109125
data "tencentcloud_as_scaling_groups" "scaling_groups_name" {
110126
scaling_group_name = "${tencentcloud_as_scaling_group.scaling_group.scaling_group_name}"
111127
}
128+
129+
data "tencentcloud_as_scaling_groups" "scaling_groups_tags" {
130+
tags = "${tencentcloud_as_scaling_group.scaling_group.tags}"
131+
}
112132
`
113133
}
114134

0 commit comments

Comments
 (0)