Skip to content

Commit 1a7554c

Browse files
committed
Modify update for bootVolume resource to include sizeInGBs only if the value is modified by user.
1 parent 2c9962e commit 1a7554c

File tree

2 files changed

+201
-1
lines changed

2 files changed

+201
-1
lines changed

oci/core_boot_volume_resource.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ func (s *BootVolumeResourceCrud) Update() error {
346346
}
347347
}
348348

349-
if sizeInGBs, ok := s.D.GetOkExists("size_in_gbs"); ok {
349+
if sizeInGBs, ok := s.D.GetOkExists("size_in_gbs"); ok && s.D.HasChange("size_in_gbs") {
350350
tmp := sizeInGBs.(string)
351351
tmpInt64, err := strconv.ParseInt(tmp, 10, 64)
352352
if err != nil {
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
// Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
2+
3+
package provider
4+
5+
import (
6+
"testing"
7+
8+
"github.com/hashicorp/terraform/helper/resource"
9+
"github.com/hashicorp/terraform/terraform"
10+
"github.com/stretchr/testify/suite"
11+
)
12+
13+
type ResourceCoreBootVolumeTestSuite struct {
14+
suite.Suite
15+
Providers map[string]terraform.ResourceProvider
16+
Config string
17+
ResourceName string
18+
}
19+
20+
func (s *ResourceCoreBootVolumeTestSuite) SetupTest() {
21+
s.Providers = testAccProviders
22+
testAccPreCheck(s.T())
23+
s.Config = legacyTestProviderConfig() + `
24+
data "oci_identity_availability_domains" "test_availability_domains" {
25+
compartment_id = "${var.tenancy_ocid}"
26+
}
27+
28+
resource "oci_core_dhcp_options" "test_dhcp_options" {
29+
compartment_id = "${var.compartment_id}"
30+
options {
31+
server_type = "VcnLocalPlusInternet"
32+
type = "DomainNameServer"
33+
}
34+
options {
35+
search_domain_names = ["test.com"]
36+
type = "SearchDomain"
37+
}
38+
vcn_id = "${oci_core_vcn.test_vcn.id}"
39+
}
40+
41+
resource "oci_core_vcn" "test_vcn" {
42+
cidr_block = "10.0.0.0/16"
43+
compartment_id = "${var.compartment_id}"
44+
display_name = "-tf-vcn"
45+
dns_label = "dnslabel"
46+
freeform_tags = {
47+
"Department" = "Finance"
48+
}
49+
}
50+
51+
resource "oci_core_drg" "test_drg" {
52+
#Required
53+
compartment_id = "${var.compartment_id}"
54+
display_name = "-tf-drg"
55+
}
56+
57+
data "oci_core_services" "test_services" {}
58+
59+
resource "oci_core_internet_gateway" "test_network_entity" {
60+
compartment_id = "${var.compartment_id}"
61+
vcn_id = "${oci_core_vcn.test_vcn.id}"
62+
display_name = "-tf-internet-gateway"
63+
}
64+
65+
resource "oci_core_route_table" "test_route_table" {
66+
compartment_id = "${var.compartment_id}"
67+
route_rules {
68+
cidr_block = "0.0.0.0/0"
69+
network_entity_id = "${oci_core_internet_gateway.test_network_entity.id}"
70+
}
71+
vcn_id = "${oci_core_vcn.test_vcn.id}"
72+
}
73+
74+
resource "oci_core_subnet" "test_subnet" {
75+
availability_domain = "${lookup(data.oci_identity_availability_domains.test_availability_domains.availability_domains[0],"name")}"
76+
cidr_block = "10.0.0.0/16"
77+
compartment_id = "${var.compartment_id}"
78+
dhcp_options_id = "${oci_core_dhcp_options.test_dhcp_options.id}"
79+
display_name = "-tf-subnet"
80+
dns_label = "dnslabel"
81+
freeform_tags = {
82+
"Department" = "Accounting"
83+
}
84+
prohibit_public_ip_on_vnic = "false"
85+
route_table_id = "${oci_core_route_table.test_route_table.id}"
86+
security_list_ids = ["${oci_core_vcn.test_vcn.default_security_list_id}"]
87+
vcn_id = "${oci_core_vcn.test_vcn.id}"
88+
}
89+
90+
variable "InstanceImageOCID" {
91+
type = "map"
92+
default = {
93+
// See https://docs.us-phoenix-1.oraclecloud.com/images/
94+
// Oracle-provided image "Oracle-Linux-7.4-2018.02.21-1"
95+
us-phoenix-1 = "ocid1.image.oc1.phx.aaaaaaaaupbfz5f5hdvejulmalhyb6goieolullgkpumorbvxlwkaowglslq"
96+
us-ashburn-1 = "ocid1.image.oc1.iad.aaaaaaaajlw3xfie2t5t52uegyhiq2npx7bqyu4uvi2zyu3w3mqayc2bxmaa"
97+
eu-frankfurt-1 = "ocid1.image.oc1.eu-frankfurt-1.aaaaaaaa7d3fsb6272srnftyi4dphdgfjf6gurxqhmv6ileds7ba3m2gltxq"
98+
uk-london-1 = "ocid1.image.oc1.uk-london-1.aaaaaaaaa6h6gj6v4n56mqrbgnosskq63blyv2752g36zerymy63cfkojiiq"
99+
}
100+
}
101+
102+
resource "oci_core_instance" "test_instance" {
103+
availability_domain = "${lookup(data.oci_identity_availability_domains.test_availability_domains.availability_domains[0],"name")}"
104+
compartment_id = "${var.compartment_id}"
105+
image = "${var.InstanceImageOCID[var.region]}"
106+
shape = "VM.Standard1.8"
107+
subnet_id = "${oci_core_subnet.test_subnet.id}"
108+
display_name = "-tf-instance"
109+
}
110+
`
111+
112+
s.ResourceName = "oci_core_boot_volume.test_boot_volume"
113+
}
114+
115+
func (s *ResourceCoreBootVolumeTestSuite) TestResourceCoreBootVolume_basic() {
116+
var resId string
117+
resource.Test(s.T(), resource.TestCase{
118+
Providers: s.Providers,
119+
Steps: []resource.TestStep{
120+
// verify create
121+
{
122+
Config: s.Config +
123+
`
124+
resource "oci_core_boot_volume" "test_boot_volume" {
125+
availability_domain = "${lookup(data.oci_identity_availability_domains.test_availability_domains.availability_domains[0],"name")}"
126+
compartment_id = "${var.compartment_id}"
127+
source_details {
128+
id = "${oci_core_instance.test_instance.boot_volume_id}"
129+
type = "bootVolume"
130+
}
131+
display_name = "-tf-bootVolume-clone"
132+
size_in_gbs = "51"
133+
}
134+
135+
resource "oci_core_instance" "test_instance_new" {
136+
availability_domain = "${lookup(data.oci_identity_availability_domains.test_availability_domains.availability_domains[0],"name")}"
137+
compartment_id = "${var.compartment_id}"
138+
shape = "VM.Standard1.8"
139+
subnet_id = "${oci_core_subnet.test_subnet.id}"
140+
source_details {
141+
source_id = "${oci_core_boot_volume.test_boot_volume.id}"
142+
source_type = "bootVolume"
143+
}
144+
display_name = "-tf-instance-2"
145+
}
146+
`,
147+
Check: resource.ComposeAggregateTestCheckFunc(
148+
resource.TestCheckResourceAttrSet(s.ResourceName, "availability_domain"),
149+
resource.TestCheckResourceAttrSet(s.ResourceName, "time_created"),
150+
resource.TestCheckResourceAttr(s.ResourceName, "display_name", "-tf-bootVolume-clone"),
151+
resource.TestCheckResourceAttrSet(s.ResourceName, "time_created"),
152+
func(ts *terraform.State) (err error) {
153+
resId, err = fromInstanceState(ts, s.ResourceName, "id")
154+
return err
155+
},
156+
),
157+
},
158+
{
159+
Config: s.Config +
160+
`
161+
resource "oci_core_boot_volume" "test_boot_volume" {
162+
availability_domain = "${lookup(data.oci_identity_availability_domains.test_availability_domains.availability_domains[0],"name")}"
163+
compartment_id = "${var.compartment_id}"
164+
source_details {
165+
id = "${oci_core_instance.test_instance.boot_volume_id}"
166+
type = "bootVolume"
167+
}
168+
display_name = "-tf-bootVolume-2"
169+
size_in_gbs = "51"
170+
}
171+
172+
resource "oci_core_instance" "test_instance_new" {
173+
availability_domain = "${lookup(data.oci_identity_availability_domains.test_availability_domains.availability_domains[0],"name")}"
174+
compartment_id = "${var.compartment_id}"
175+
shape = "VM.Standard1.8"
176+
subnet_id = "${oci_core_subnet.test_subnet.id}"
177+
source_details {
178+
source_id = "${oci_core_boot_volume.test_boot_volume.id}"
179+
source_type = "bootVolume"
180+
}
181+
display_name = "-tf-instance-2"
182+
}
183+
`,
184+
Check: resource.ComposeAggregateTestCheckFunc(
185+
resource.TestCheckResourceAttrSet(s.ResourceName, "availability_domain"),
186+
resource.TestCheckResourceAttrSet(s.ResourceName, "time_created"),
187+
resource.TestCheckResourceAttr(s.ResourceName, "display_name", "-tf-bootVolume-2"),
188+
func(ts *terraform.State) (err error) {
189+
resId, err = fromInstanceState(ts, s.ResourceName, "id")
190+
return err
191+
},
192+
),
193+
},
194+
},
195+
})
196+
}
197+
198+
func TestResourceCoreBootVolumeTestSuite(t *testing.T) {
199+
suite.Run(t, new(ResourceCoreBootVolumeTestSuite))
200+
}

0 commit comments

Comments
 (0)