Skip to content

Commit 770baee

Browse files
TF now waits for instances to be AVAILABLE
1 parent 6fcf666 commit 770baee

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+827
-80
lines changed

core/drg_resource_crud.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ func (s *DrgResourceCrud) DeletedTarget() []string {
3232
return []string{baremetal.ResourceTerminated}
3333
}
3434

35-
func (s *DrgResourceCrud) State() string {
36-
return s.Res.State
37-
}
38-
3935
func (s *DrgResourceCrud) Create() (e error) {
4036
opts := &baremetal.CreateOptions{}
4137
compartmentID := s.D.Get("compartment_id").(string)

core/instance_resource_crud.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
package core
44

55
import (
6-
"github.com/MustWin/baremetal-sdk-go"
6+
"time"
77

8+
"github.com/MustWin/baremetal-sdk-go"
89
"github.com/MustWin/terraform-Oracle-BareMetal-Provider/crud"
910
)
1011

@@ -17,6 +18,10 @@ func (s *InstanceResourceCrud) ID() string {
1718
return s.Resource.ID
1819
}
1920

21+
func (s *InstanceResourceCrud) CustomTimeout() time.Duration {
22+
return 15 * time.Minute
23+
}
24+
2025
func (s *InstanceResourceCrud) CreatedPending() []string {
2126
return []string{
2227
baremetal.ResourceProvisioning,

core/security_list_datasource_crud.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func (s *SecurityListDatasourceCrud) SetData() {
6767
egressRule.ICMPOptions,
6868
egressRule.TCPOptions,
6969
egressRule.UDPOptions,
70+
&egressRule.IsStateless,
7071
)
7172
confEgressRules = append(confEgressRules, confEgressRule)
7273
}
@@ -82,6 +83,7 @@ func (s *SecurityListDatasourceCrud) SetData() {
8283
ingressRule.ICMPOptions,
8384
ingressRule.TCPOptions,
8485
ingressRule.UDPOptions,
86+
nil,
8587
)
8688
confIngressRules = append(confIngressRules, confIngressRule)
8789
}

core/security_list_resource.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ func SecurityListResource() *schema.Resource {
7777
},
7878
"tcp_options": transportSchema,
7979
"udp_options": transportSchema,
80+
"stateless": {
81+
Type: schema.TypeBool,
82+
Optional: true,
83+
Default: false,
84+
},
8085
},
8186
},
8287
},

core/security_list_resource_crud.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
package core
44

55
import (
6-
"time"
7-
"fmt"
8-
96
"github.com/MustWin/baremetal-sdk-go"
107
"github.com/MustWin/terraform-Oracle-BareMetal-Provider/crud"
118
)
@@ -35,11 +32,6 @@ func (s *SecurityListResourceCrud) DeletedTarget() []string {
3532
return []string{baremetal.ResourceTerminated}
3633
}
3734

38-
func (s *SecurityListResourceCrud) ExtraWaitPostDelete() time.Duration {
39-
fmt.Println("=====================================")
40-
return time.Duration(0 * time.Second)
41-
}
42-
4335
func (s *SecurityListResourceCrud) State() string {
4436
return s.Res.State
4537
}
@@ -91,6 +83,7 @@ func (s *SecurityListResourceCrud) SetData() {
9183
egressRule.ICMPOptions,
9284
egressRule.TCPOptions,
9385
egressRule.UDPOptions,
86+
&egressRule.IsStateless,
9487
)
9588
confEgressRules = append(confEgressRules, confEgressRule)
9689
}
@@ -106,6 +99,7 @@ func (s *SecurityListResourceCrud) SetData() {
10699
ingressRule.ICMPOptions,
107100
ingressRule.TCPOptions,
108101
ingressRule.UDPOptions,
102+
nil,
109103
)
110104
confIngressRules = append(confIngressRules, confIngressRule)
111105
}
@@ -131,6 +125,7 @@ func (s *SecurityListResourceCrud) buildEgressRules() (sdkRules []baremetal.Egre
131125
Protocol: confRule["protocol"].(string),
132126
TCPOptions: s.buildTCPOptions(confRule),
133127
UDPOptions: s.buildUDPOptions(confRule),
128+
IsStateless: confRule["stateless"].(bool),
134129
}
135130

136131
sdkRules = append(sdkRules, sdkRule)
@@ -218,6 +213,7 @@ func buildConfRule(
218213
icmpOpts *baremetal.ICMPOptions,
219214
tcpOpts *baremetal.TCPOptions,
220215
udpOpts *baremetal.UDPOptions,
216+
stateless *bool,
221217
) map[string]interface{} {
222218
confRule["protocol"] = protocol
223219
if icmpOpts != nil {
@@ -229,5 +225,8 @@ func buildConfRule(
229225
if udpOpts != nil {
230226
confRule["udp_options"] = buildConfTransportOptions(udpOpts.DestinationPortRange)
231227
}
228+
if stateless != nil {
229+
confRule["stateless"] = *stateless
230+
}
232231
return confRule
233232
}

core/subnet_resource_crud.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ package core
44

55
import (
66
"time"
7-
"fmt"
87

98
"github.com/MustWin/baremetal-sdk-go"
109
"github.com/MustWin/terraform-Oracle-BareMetal-Provider/crud"
@@ -36,8 +35,7 @@ func (s *SubnetResourceCrud) DeletedTarget() []string {
3635
}
3736

3837
func (s *SubnetResourceCrud) ExtraWaitPostDelete() time.Duration {
39-
fmt.Println("=====================================")
40-
return time.Duration(10 * time.Second)
38+
return time.Duration(15 * time.Second)
4139
}
4240

4341
func (s *SubnetResourceCrud) Create() (e error) {

core/virtual_network_resource_crud.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ func (s *VirtualNetworkResourceCrud) DeletedTarget() []string {
3232
return []string{baremetal.ResourceTerminated}
3333
}
3434

35-
func (s *VirtualNetworkResourceCrud) State() string {
36-
return s.Res.State
37-
}
38-
3935
func (s *VirtualNetworkResourceCrud) Create() (e error) {
4036
cidrBlock := s.D.Get("cidr_block").(string)
4137
compartmentID := s.D.Get("compartment_id").(string)

core_instance_test.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
"github.com/hashicorp/terraform/helper/schema"
1313
"github.com/hashicorp/terraform/terraform"
1414

15+
"github.com/MustWin/terraform-Oracle-BareMetal-Provider/core"
16+
"github.com/MustWin/terraform-Oracle-BareMetal-Provider/crud"
1517
"github.com/stretchr/testify/suite"
1618
)
1719

@@ -64,7 +66,7 @@ func (s *ResourceCoreInstanceTestSuite) SetupTest() {
6466
CompartmentID: "compartment_id",
6567
DisplayName: "display_name",
6668
ID: "id",
67-
ImageID: "imageid",
69+
ImageID: "imageid",
6870
Metadata: map[string]string{
6971
"ssh_authorized_keys": "mypublickey",
7072
},
@@ -76,7 +78,8 @@ func (s *ResourceCoreInstanceTestSuite) SetupTest() {
7678
s.Res.ETag = "etag"
7779
s.Res.RequestID = "opcrequestid"
7880

79-
s.DeletedRes = s.Res
81+
s.DeletedRes = &baremetal.Instance{}
82+
*s.DeletedRes = *s.Res
8083
s.DeletedRes.State = baremetal.ResourceTerminated
8184

8285
opts := &baremetal.LaunchInstanceOptions{}
@@ -94,7 +97,8 @@ func (s *ResourceCoreInstanceTestSuite) SetupTest() {
9497
}
9598

9699
func (s *ResourceCoreInstanceTestSuite) TestCreateResourceCoreInstance() {
97-
s.Client.On("GetInstance", "id").Return(s.Res, nil)
100+
s.Client.On("GetInstance", "id").Return(s.Res, nil).Twice()
101+
s.Client.On("GetInstance", "id").Return(s.DeletedRes, nil)
98102

99103
resource.UnitTest(s.T(), resource.TestCase{
100104
Providers: s.Providers,
@@ -116,7 +120,8 @@ func (s *ResourceCoreInstanceTestSuite) TestCreateResourceCoreInstance() {
116120
}
117121

118122
func (s *ResourceCoreInstanceTestSuite) TestCreateResourceCoreInstanceWithoutDisplayName() {
119-
s.Client.On("GetInstance", "id").Return(s.Res, nil)
123+
s.Client.On("GetInstance", "id").Return(s.Res, nil).Twice()
124+
s.Client.On("GetInstance", "id").Return(s.DeletedRes, nil)
120125

121126
s.Config = `
122127
resource "baremetal_core_instance" "t" {
@@ -180,7 +185,7 @@ func (s ResourceCoreInstanceTestSuite) TestUpdateInstanceDisplayName() {
180185
CompartmentID: "compartment_id",
181186
DisplayName: "new_display_name",
182187
ID: "id",
183-
ImageID: "imageid",
188+
ImageID: "imageid",
184189
Metadata: map[string]string{
185190
"ssh_authorized_keys": "mypublickey",
186191
},
@@ -195,7 +200,8 @@ func (s ResourceCoreInstanceTestSuite) TestUpdateInstanceDisplayName() {
195200
opts := &baremetal.UpdateOptions{}
196201
opts.DisplayName = "new_display_name"
197202
s.Client.On("UpdateInstance", "id", opts).Return(res, nil)
198-
s.Client.On("GetInstance", "id").Return(res, nil)
203+
s.Client.On("GetInstance", "id").Return(res, nil).Times(2)
204+
s.Client.On("GetInstance", "id").Return(s.DeletedRes, nil).Times(2)
199205

200206
resource.UnitTest(s.T(), resource.TestCase{
201207
Providers: s.Providers,
@@ -214,7 +220,7 @@ func (s ResourceCoreInstanceTestSuite) TestUpdateInstanceDisplayName() {
214220
}
215221

216222
func (s ResourceCoreInstanceTestSuite) TestUpdateAvailabilityDomainForcesNewInstance() {
217-
s.Client.On("GetInstance", "id").Return(s.Res, nil)
223+
s.Client.On("GetInstance", "id").Return(s.Res, nil).Times(2)
218224

219225
config := `
220226
resource "baremetal_core_instance" "t" {
@@ -237,7 +243,7 @@ func (s ResourceCoreInstanceTestSuite) TestUpdateAvailabilityDomainForcesNewInst
237243
CompartmentID: "compartment_id",
238244
DisplayName: "display_name",
239245
ID: "new_id",
240-
ImageID: "imageid",
246+
ImageID: "imageid",
241247
Metadata: map[string]string{
242248
"ssh_authorized_keys": "mypublickey",
243249
},
@@ -261,8 +267,10 @@ func (s ResourceCoreInstanceTestSuite) TestUpdateAvailabilityDomainForcesNewInst
261267
"subnetid",
262268
opts).Return(res, nil)
263269

264-
s.Client.On("GetInstance", res.ID).Return(res, nil)
270+
s.Client.On("GetInstance", s.Res.ID).Return(s.DeletedRes, nil)
271+
s.Client.On("GetInstance", res.ID).Return(res, nil).Times(2)
265272
s.Client.On("TerminateInstance", res.ID, (*baremetal.IfMatchOptions)(nil)).Return(nil)
273+
s.Client.On("GetInstance", "new_id").Return(s.DeletedRes, nil).Twice()
266274

267275
resource.UnitTest(s.T(), resource.TestCase{
268276
Providers: s.Providers,
@@ -300,6 +308,14 @@ func (s *ResourceCoreInstanceTestSuite) TestTerminateInstance() {
300308
s.Client.AssertCalled(s.T(), "TerminateInstance", "id", (*baremetal.IfMatchOptions)(nil))
301309
}
302310

311+
func TestIsStatefulResource(t *testing.T) {
312+
var sr crud.StatefulResource
313+
sr = &core.InstanceResourceCrud{}
314+
if sr == nil {
315+
t.Fail()
316+
}
317+
}
318+
303319
func TestResourceCoreInstanceTestSuite(t *testing.T) {
304320
suite.Run(t, new(ResourceCoreInstanceTestSuite))
305321
}

core_internet_gateway_test.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"github.com/hashicorp/terraform/terraform"
1414

1515
"github.com/stretchr/testify/suite"
16+
// "errors"
17+
"errors"
1618
)
1719

1820
type ResourceCoreInternetGatewayTestSuite struct {
@@ -65,7 +67,8 @@ func (s *ResourceCoreInternetGatewayTestSuite) SetupTest() {
6567
s.Res.ETag = "etag"
6668
s.Res.RequestID = "requestid"
6769

68-
s.DeletedRes = s.Res
70+
s.DeletedRes = &baremetal.InternetGateway{}
71+
*s.DeletedRes = *s.Res
6972
s.DeletedRes.State = baremetal.ResourceTerminated
7073

7174
opts := &baremetal.CreateOptions{}
@@ -80,7 +83,8 @@ func (s *ResourceCoreInternetGatewayTestSuite) SetupTest() {
8083
}
8184

8285
func (s *ResourceCoreInternetGatewayTestSuite) TestCreateResourceCoreInternetGateway() {
83-
s.Client.On("GetInternetGateway", "id").Return(s.Res, nil)
86+
s.Client.On("GetInternetGateway", "id").Return(s.Res, nil).Times(2)
87+
s.Client.On("GetInternetGateway", "id").Return(s.DeletedRes, nil).Times(2)
8488

8589
resource.UnitTest(s.T(), resource.TestCase{
8690
Providers: s.Providers,
@@ -100,7 +104,8 @@ func (s *ResourceCoreInternetGatewayTestSuite) TestCreateResourceCoreInternetGat
100104
}
101105

102106
func (s ResourceCoreInternetGatewayTestSuite) TestUpdateCompartmentIDForcesNewInternetGateway() {
103-
s.Client.On("GetInternetGateway", "id").Return(s.Res, nil)
107+
s.Client.On("GetInternetGateway", s.Res.ID).Return(s.Res, nil).Times(2)
108+
s.Client.On("GetInternetGateway", s.Res.ID).Return(s.DeletedRes, nil).Times(2)
104109

105110
config := `
106111
resource "baremetal_core_internet_gateway" "t" {
@@ -115,7 +120,7 @@ func (s ResourceCoreInternetGatewayTestSuite) TestUpdateCompartmentIDForcesNewIn
115120
res := &baremetal.InternetGateway{
116121
CompartmentID: "new_compartment_id",
117122
DisplayName: "display_name",
118-
ID: "id2",
123+
ID: "id",
119124
IsEnabled: true,
120125
State: baremetal.ResourceAvailable,
121126
ModifiedTime: s.TimeCreated,
@@ -124,6 +129,10 @@ func (s ResourceCoreInternetGatewayTestSuite) TestUpdateCompartmentIDForcesNewIn
124129
s.Res.ETag = "etag"
125130
s.Res.RequestID = "requestid"
126131

132+
delRes := &baremetal.InternetGateway{}
133+
*delRes = *res
134+
delRes.State = baremetal.ResourceTerminated
135+
127136
opts := &baremetal.CreateOptions{}
128137
opts.DisplayName = "display_name"
129138
s.Client.On(
@@ -133,9 +142,12 @@ func (s ResourceCoreInternetGatewayTestSuite) TestUpdateCompartmentIDForcesNewIn
133142
res.IsEnabled,
134143
opts).Return(res, nil)
135144

136-
s.Client.On("GetInternetGateway", res.ID).Return(res, nil)
137145
s.Client.On("DeleteInternetGateway", res.ID, (*baremetal.IfMatchOptions)(nil)).Return(nil)
138146

147+
s.Client.On("GetInternetGateway", res.ID).Return(res, nil).Times(2)
148+
s.Client.On("GetInternetGateway", res.ID).Return(delRes, nil).Once()
149+
s.Client.On("GetInternetGateway", res.ID).Return(nil, errors.New("blah does not exist"))
150+
139151
resource.UnitTest(s.T(), resource.TestCase{
140152
Providers: s.Providers,
141153
Steps: []resource.TestStep{

core_security_list_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
"github.com/hashicorp/terraform/helper/schema"
1313
"github.com/hashicorp/terraform/terraform"
1414

15-
"github.com/stretchr/testify/suite"
1615
"github.com/MustWin/terraform-Oracle-BareMetal-Provider/crud"
16+
"github.com/stretchr/testify/suite"
1717
)
1818

1919
type ResourceCoreSecurityListTestSuite struct {
@@ -59,6 +59,7 @@ func (s *ResourceCoreSecurityListTestSuite) SetupTest() {
5959
"type" = 2
6060
}
6161
protocol = "protocol"
62+
stateless = true
6263
}
6364
ingress_security_rules {
6465
tcp_options {
@@ -79,6 +80,7 @@ func (s *ResourceCoreSecurityListTestSuite) SetupTest() {
7980
Destination: "destination",
8081
ICMPOptions: &baremetal.ICMPOptions{Code: 1, Type: 2},
8182
Protocol: "protocol",
83+
IsStateless: true,
8284
},
8385
}
8486
ingressRules := []baremetal.IngressSecurityRule{
@@ -104,7 +106,6 @@ func (s *ResourceCoreSecurityListTestSuite) SetupTest() {
104106
s.Res.ETag = "etag"
105107
s.Res.RequestID = "opcrequestid"
106108

107-
108109
deletingRes := *s.Res
109110
s.DeletingRes = &deletingRes
110111
s.DeletingRes.State = baremetal.ResourceTerminating
@@ -140,6 +141,7 @@ func (s *ResourceCoreSecurityListTestSuite) TestCreateResourceCoreSecurityList()
140141
resource.TestCheckResourceAttr(s.ResourceName, "compartment_id", s.Res.CompartmentID),
141142
resource.TestCheckResourceAttr(s.ResourceName, "display_name", s.Res.DisplayName),
142143
resource.TestCheckResourceAttr(s.ResourceName, "egress_security_rules.0.icmp_options.0.code", "1"),
144+
resource.TestCheckResourceAttr(s.ResourceName, "egress_security_rules.0.stateless", "true"),
143145
resource.TestCheckResourceAttr(s.ResourceName, "ingress_security_rules.0.tcp_options.0.max", "2"),
144146
),
145147
},
@@ -161,6 +163,7 @@ func (s ResourceCoreSecurityListTestSuite) TestUpdateSecurityList() {
161163
"type" = 2
162164
}
163165
protocol = "protocol"
166+
stateless = true
164167
}
165168
ingress_security_rules {
166169
tcp_options {

0 commit comments

Comments
 (0)