Skip to content

Commit b40d332

Browse files
authored
Merge pull request #169 from volcengine/Feat/ecs-state
Feat/ecs state
2 parents db3014d + 5e37ce4 commit b40d332

27 files changed

+124
-23
lines changed

common/common_volcengine_version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ package common
22

33
const (
44
TerraformProviderName = "terraform-provider-volcengine"
5-
TerraformProviderVersion = "0.0.147"
5+
TerraformProviderVersion = "0.0.148"
66
)

example/dataSnatEntries/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@ resource "volcengine_snat_entry" "foo1" {
4646
nat_gateway_id = volcengine_nat_gateway.foo.id
4747
eip_id = volcengine_eip_address.foo.id
4848
source_cidr = "172.16.0.0/24"
49-
depends_on = ["volcengine_eip_associate.foo"]
49+
depends_on = [volcengine_eip_associate.foo]
5050
}
5151

5252
resource "volcengine_snat_entry" "foo2" {
5353
snat_entry_name = "acc-test-snat-entry"
5454
nat_gateway_id = volcengine_nat_gateway.foo.id
5555
eip_id = volcengine_eip_address.foo.id
5656
source_cidr = "172.16.0.0/16"
57-
depends_on = ["volcengine_eip_associate.foo"]
57+
depends_on = [volcengine_eip_associate.foo]
5858
}
5959

6060
data "volcengine_snat_entries" "foo"{

example/snatEntry/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ resource "volcengine_snat_entry" "foo" {
4646
nat_gateway_id = volcengine_nat_gateway.foo.id
4747
eip_id = volcengine_eip_address.foo.id
4848
source_cidr = "172.16.0.0/24"
49-
depends_on = ["volcengine_eip_associate.foo"]
49+
depends_on = [volcengine_eip_associate.foo]
5050
}

example/transitRouter/main.tf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
resource "volcengine_transit_router" "foo" {
22
transit_router_name = "acc-test-tr"
33
description = "acc-test"
4-
project_name = "default"
4+
asn = 4294967294
5+
project_name = "default"
56
tags {
6-
key = "k1"
7+
key = "k1"
78
value = "v1"
89
}
910
}

example/transitRouterVpcAttachment/main.tf

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
resource "volcengine_transit_router" "foo" {
22
transit_router_name = "test-tf-acc"
33
description = "test-tf-acc"
4+
asn = 4294967293
45
}
56

67
data "volcengine_zones" "foo" {
78
}
89

910
resource "volcengine_vpc" "foo" {
10-
vpc_name = "acc-test-vpc-acc"
11-
cidr_block = "172.16.0.0/16"
11+
vpc_name = "acc-test-vpc-acc"
12+
cidr_block = "172.16.0.0/16"
1213
}
1314

1415
resource "volcengine_subnet" "foo" {
@@ -25,7 +26,6 @@ resource "volcengine_subnet" "foo2" {
2526
subnet_name = "acc-test-subnet2"
2627
}
2728

28-
2929
resource "volcengine_transit_router_vpc_attachment" "foo" {
3030
transit_router_id = volcengine_transit_router.foo.id
3131
vpc_id = volcengine_vpc.foo.id
@@ -37,10 +37,11 @@ resource "volcengine_transit_router_vpc_attachment" "foo" {
3737
subnet_id = volcengine_subnet.foo2.id
3838
zone_id = "cn-beijing-b"
3939
}
40-
transit_router_attachment_name = "tf-test-acc-name1"
41-
description = "tf-test-acc-description"
40+
transit_router_attachment_name = "tf-test-acc-vpc-attach"
41+
description = "tf-test-acc-description"
42+
auto_publish_route_enabled = true
4243
tags {
43-
key = "k1"
44+
key = "k1"
4445
value = "v1"
4546
}
4647
}

volcengine/autoscaling/scaling_configuration/resource_volcengine_scaling_configuration.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ func ResourceVolcengineScalingConfiguration() *schema.Resource {
180180
"project_name": {
181181
Type: schema.TypeString,
182182
Optional: true,
183+
Computed: true,
183184
Description: "The project to which the instance created by the scaling configuration belongs.",
184185
},
185186
"hpc_cluster_id": {

volcengine/cen/cen/resource_volcengine_cen.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func ResourceVolcengineCen() *schema.Resource {
4949
"project_name": {
5050
Type: schema.TypeString,
5151
Optional: true,
52+
Computed: true,
5253
Description: "The ProjectName of the cen instance.",
5354
},
5455
},

volcengine/cen/cen_bandwidth_package/resource_volcengine_cen_bandwidth_package.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ func ResourceVolcengineCenBandwidthPackage() *schema.Resource {
9696
"project_name": {
9797
Type: schema.TypeString,
9898
Optional: true,
99+
Computed: true,
99100
Description: "The ProjectName of the cen bandwidth package.",
100101
},
101102
},

volcengine/ecs/ecs_instance_state/resource_volcengine_ecs_instance_state.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ func ResourceVolcengineEcsInstanceState() *schema.Resource {
3838
Type: schema.TypeString,
3939
Required: true,
4040
ValidateFunc: validation.StringInSlice([]string{"Start", "Stop", "ForceStop"}, false),
41-
Description: "Start or Stop of Instance Action, the value can be `Start`, `Stop` or `ForceStop`.",
41+
Description: "Start or Stop of Instance Action, the value can be `Start`, `Stop` or `ForceStop`. \n" +
42+
"If the target status of the action is consistent with the current status of the instance, the action will not actually be executed.",
4243
},
4344
"instance_id": {
4445
Type: schema.TypeString,

volcengine/ecs/ecs_instance_state/service_volcengine_ecs_instance_state.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@ func (s *VolcengineInstanceStateService) CreateResource(resourceData *schema.Res
4545
targetStatus = []string{"STOPPED"}
4646
}
4747

48+
// 根据实例当前状态判断是否执行操作
49+
update, err := s.describeCurrentStatus(resourceData, targetStatus)
50+
if err != nil {
51+
return []ve.Callback{{
52+
Err: err,
53+
}}
54+
}
55+
if !update {
56+
resourceData.SetId(fmt.Sprintf("state:%v", resourceData.Get("instance_id")))
57+
return []ve.Callback{}
58+
}
59+
4860
callback := ve.Callback{
4961
Call: ve.SdkCall{
5062
Action: action,
@@ -215,6 +227,17 @@ func (s *VolcengineInstanceStateService) ModifyResource(resourceData *schema.Res
215227
targetStatus = []string{"STOPPED"}
216228
}
217229

230+
// 根据实例当前状态判断是否执行操作
231+
update, err := s.describeCurrentStatus(resourceData, targetStatus)
232+
if err != nil {
233+
return []ve.Callback{{
234+
Err: err,
235+
}}
236+
}
237+
if !update {
238+
return []ve.Callback{}
239+
}
240+
218241
strs := strings.Split(resourceData.Id(), ":")
219242

220243
callback := ve.Callback{
@@ -264,3 +287,22 @@ func (s *VolcengineInstanceStateService) DatasourceResources(*schema.ResourceDat
264287
func (s *VolcengineInstanceStateService) ReadResourceId(id string) string {
265288
return id
266289
}
290+
291+
func (s *VolcengineInstanceStateService) describeCurrentStatus(resourceData *schema.ResourceData, targetStatus []string) (bool, error) {
292+
instanceId := resourceData.Get("instance_id").(string)
293+
data, err := s.ReadResource(resourceData, "state:"+instanceId)
294+
if err != nil {
295+
return false, err
296+
}
297+
status, err := ve.ObtainSdkValue("Status", data)
298+
if err != nil {
299+
return false, err
300+
}
301+
for _, v := range targetStatus {
302+
// 目标状态和当前状态相同时,不执行操作
303+
if v == status.(string) {
304+
return false, nil
305+
}
306+
}
307+
return true, nil
308+
}

0 commit comments

Comments
 (0)