Skip to content

Commit 3bbd5c2

Browse files
committed
start/stop action support added
1 parent f3b2973 commit 3bbd5c2

8 files changed

+80
-90
lines changed

oci/analytics_analytics_instance_resource.go

Lines changed: 48 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,6 @@ func AnalyticsAnalyticsInstanceResource() *schema.Resource {
111111
Computed: true,
112112
Elem: schema.TypeString,
113113
},
114-
"state": {
115-
Type: schema.TypeString,
116-
Computed: true,
117-
Optional: true,
118-
DiffSuppressFunc: EqualIgnoreCaseSuppressDiff,
119-
ValidateFunc: validation.StringInSlice([]string{
120-
string(oci_analytics.AnalyticsInstanceLifecycleStateInactive),
121-
string(oci_analytics.AnalyticsInstanceLifecycleStateActive),
122-
}, true),
123-
},
124114
"network_endpoint_details": {
125115
Type: schema.TypeList,
126116
Optional: true,
@@ -199,6 +189,16 @@ func AnalyticsAnalyticsInstanceResource() *schema.Resource {
199189
},
200190
},
201191
},
192+
"state": {
193+
Type: schema.TypeString,
194+
Optional: true,
195+
Computed: true,
196+
DiffSuppressFunc: EqualIgnoreCaseSuppressDiff,
197+
ValidateFunc: validation.StringInSlice([]string{
198+
string(oci_analytics.AnalyticsInstanceLifecycleStateInactive),
199+
string(oci_analytics.AnalyticsInstanceLifecycleStateActive),
200+
}, true),
201+
},
202202

203203
// Computed
204204
"private_access_channels": {
@@ -231,7 +231,6 @@ func createAnalyticsAnalyticsInstance(d *schema.ResourceData, m interface{}) err
231231
sync := &AnalyticsAnalyticsInstanceResourceCrud{}
232232
sync.D = d
233233
sync.Client = m.(*OracleClients).analyticsClient()
234-
235234
var powerOff = false
236235
if powerState, ok := sync.D.GetOkExists("state"); ok {
237236
wantedPowerState := oci_analytics.AnalyticsInstanceLifecycleStateEnum(strings.ToUpper(powerState.(string)))
@@ -245,46 +244,13 @@ func createAnalyticsAnalyticsInstance(d *schema.ResourceData, m interface{}) err
245244
}
246245

247246
if powerOff {
248-
if err := sync.StopOacInstance(); err != nil {
247+
if err := sync.StopAnalyticsInstance(); err != nil {
249248
return err
250249
}
251250
sync.D.Set("state", oci_analytics.AnalyticsInstanceLifecycleStateInactive)
252251
}
253252
return nil
254-
}
255-
256-
func (s *AnalyticsAnalyticsInstanceResourceCrud) StartOacInstance() error {
257-
request := oci_analytics.StartAnalyticsInstanceRequest{}
258-
259-
tmp := s.D.Id()
260-
request.AnalyticsInstanceId = &tmp
261-
262-
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "analytics")
263-
264-
response, err := s.Client.StartAnalyticsInstance(context.Background(), request)
265-
if err != nil {
266-
return err
267-
}
268253

269-
workId := response.OpcWorkRequestId
270-
return s.getAnalyticsInstanceFromWorkRequest(workId, getRetryPolicy(s.DisableNotFoundRetries, "analytics"), oci_analytics.WorkRequestActionResultStarted, s.D.Timeout(schema.TimeoutUpdate))
271-
}
272-
273-
func (s *AnalyticsAnalyticsInstanceResourceCrud) StopOacInstance() error {
274-
request := oci_analytics.StopAnalyticsInstanceRequest{}
275-
276-
tmp := s.D.Id()
277-
request.AnalyticsInstanceId = &tmp
278-
279-
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "analytics")
280-
281-
response, err := s.Client.StopAnalyticsInstance(context.Background(), request)
282-
if err != nil {
283-
return err
284-
}
285-
286-
workId := response.OpcWorkRequestId
287-
return s.getAnalyticsInstanceFromWorkRequest(workId, getRetryPolicy(s.DisableNotFoundRetries, "analytics"), oci_analytics.WorkRequestActionResultStopped, s.D.Timeout(schema.TimeoutUpdate))
288254
}
289255

290256
func readAnalyticsAnalyticsInstance(d *schema.ResourceData, m interface{}) error {
@@ -300,7 +266,6 @@ func updateAnalyticsAnalyticsInstance(d *schema.ResourceData, m interface{}) err
300266
sync.D = d
301267
sync.Client = m.(*OracleClients).analyticsClient()
302268

303-
// switch to power on
304269
powerOn, powerOff := false, false
305270

306271
if sync.D.HasChange("state") {
@@ -313,7 +278,7 @@ func updateAnalyticsAnalyticsInstance(d *schema.ResourceData, m interface{}) err
313278
}
314279

315280
if powerOn {
316-
if err := sync.StartOacInstance(); err != nil {
281+
if err := sync.StartAnalyticsInstance(); err != nil {
317282
return err
318283
}
319284
sync.D.Set("state", oci_analytics.AnalyticsInstanceLifecycleStateActive)
@@ -323,13 +288,13 @@ func updateAnalyticsAnalyticsInstance(d *schema.ResourceData, m interface{}) err
323288
return err
324289
}
325290

326-
// switch to power off
327291
if powerOff {
328-
if err := sync.StopOacInstance(); err != nil {
292+
if err := sync.StopAnalyticsInstance(); err != nil {
329293
return err
330294
}
331295
sync.D.Set("state", oci_analytics.AnalyticsInstanceLifecycleStateInactive)
332296
}
297+
333298
return nil
334299
}
335300

@@ -771,6 +736,40 @@ func (s *AnalyticsAnalyticsInstanceResourceCrud) SetData() error {
771736
return nil
772737
}
773738

739+
func (s *AnalyticsAnalyticsInstanceResourceCrud) StartAnalyticsInstance() error {
740+
request := oci_analytics.StartAnalyticsInstanceRequest{}
741+
742+
idTmp := s.D.Id()
743+
request.AnalyticsInstanceId = &idTmp
744+
745+
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "analytics")
746+
747+
_, err := s.Client.StartAnalyticsInstance(context.Background(), request)
748+
if err != nil {
749+
return err
750+
}
751+
752+
retentionPolicyFunc := func() bool { return s.Res.LifecycleState == oci_analytics.AnalyticsInstanceLifecycleStateActive }
753+
return WaitForResourceCondition(s, retentionPolicyFunc, s.D.Timeout(schema.TimeoutUpdate))
754+
}
755+
756+
func (s *AnalyticsAnalyticsInstanceResourceCrud) StopAnalyticsInstance() error {
757+
request := oci_analytics.StopAnalyticsInstanceRequest{}
758+
759+
idTmp := s.D.Id()
760+
request.AnalyticsInstanceId = &idTmp
761+
762+
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "analytics")
763+
764+
_, err := s.Client.StopAnalyticsInstance(context.Background(), request)
765+
if err != nil {
766+
return err
767+
}
768+
769+
retentionPolicyFunc := func() bool { return s.Res.LifecycleState == oci_analytics.AnalyticsInstanceLifecycleStateInactive }
770+
return WaitForResourceCondition(s, retentionPolicyFunc, s.D.Timeout(schema.TimeoutUpdate))
771+
}
772+
774773
func (s *AnalyticsAnalyticsInstanceResourceCrud) mapToCapacity(fieldKeyFormat string) (oci_analytics.Capacity, error) {
775774
result := oci_analytics.Capacity{}
776775

oci/analytics_analytics_instance_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ var (
5757
"freeform_tags": Representation{repType: Optional, create: map[string]string{"Department": "Finance"}, update: map[string]string{"Department": "Accounting"}},
5858
"idcs_access_token": Representation{repType: Required, create: `${var.idcs_access_token}`},
5959
"network_endpoint_details": RepresentationGroup{Optional, analyticsInstanceNetworkEndpointDetailsRepresentation},
60+
"state": Representation{repType: Optional, create: `INACTIVE`, update: `ACTIVE`},
6061
}
6162
analyticsInstanceCapacityRepresentation = map[string]interface{}{
6263
"capacity_type": Representation{repType: Required, create: `OLPU_COUNT`},
@@ -159,7 +160,6 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
159160
resource.TestCheckResourceAttr(resourceName, "network_endpoint_details.0.network_endpoint_type", "PRIVATE"),
160161
resource.TestCheckResourceAttrSet(resourceName, "network_endpoint_details.0.subnet_id"),
161162
resource.TestCheckResourceAttrSet(resourceName, "network_endpoint_details.0.vcn_id"),
162-
resource.TestCheckResourceAttrSet(resourceName, "state"),
163163
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
164164

165165
func(s *terraform.State) (err error) {
@@ -199,7 +199,6 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
199199
resource.TestCheckResourceAttr(resourceName, "network_endpoint_details.0.network_endpoint_type", "PRIVATE"),
200200
resource.TestCheckResourceAttrSet(resourceName, "network_endpoint_details.0.subnet_id"),
201201
resource.TestCheckResourceAttrSet(resourceName, "network_endpoint_details.0.vcn_id"),
202-
resource.TestCheckResourceAttrSet(resourceName, "state"),
203202
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
204203

205204
func(s *terraform.State) (err error) {
@@ -297,7 +296,6 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
297296
resource.TestCheckResourceAttr(resourceName, "network_endpoint_details.0.network_endpoint_type", "PRIVATE"),
298297
resource.TestCheckResourceAttrSet(resourceName, "network_endpoint_details.0.subnet_id"),
299298
resource.TestCheckResourceAttrSet(resourceName, "network_endpoint_details.0.vcn_id"),
300-
resource.TestCheckResourceAttrSet(resourceName, "state"),
301299
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
302300

303301
func(s *terraform.State) (err error) {

oci/core_boot_volume_backup_resource.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ func createCoreBootVolumeBackup(d *schema.ResourceData, m interface{}) error {
153153
sync := &CoreBootVolumeBackupResourceCrud{}
154154
sync.D = d
155155
sync.Client = m.(*OracleClients).blockstorageClient()
156-
157156
compartment, ok := sync.D.GetOkExists("compartment_id")
158157

159158
err := CreateResource(d, sync)

oci/core_volume_backup_resource.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ func createCoreVolumeBackup(d *schema.ResourceData, m interface{}) error {
158158
sync := &CoreVolumeBackupResourceCrud{}
159159
sync.D = d
160160
sync.Client = m.(*OracleClients).blockstorageClient()
161-
162161
compartment, ok := sync.D.GetOkExists("compartment_id")
163162

164163
err := CreateResource(d, sync)

oci/dns_resolver_resource.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ func createDnsResolver(d *schema.ResourceData, m interface{}) error {
233233
sync := &DnsResolverResourceCrud{}
234234
sync.D = d
235235
sync.Client = m.(*OracleClients).dnsClient()
236-
237236
compartment, ok := sync.D.GetOkExists("compartment_id")
238237

239238
err := CreateResource(d, sync)

oci/mysql_analytics_cluster_resource.go

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ func MysqlAnalyticsClusterResource() *schema.Resource {
5454
// Optional
5555
"state": {
5656
Type: schema.TypeString,
57-
Computed: true,
5857
Optional: true,
58+
Computed: true,
5959
DiffSuppressFunc: EqualIgnoreCaseSuppressDiff,
6060
ValidateFunc: validation.StringInSlice([]string{
6161
string(oci_mysql.AnalyticsClusterLifecycleStateInactive),
@@ -113,7 +113,6 @@ func createMysqlAnalyticsCluster(d *schema.ResourceData, m interface{}) error {
113113
sync := &MysqlAnalyticsClusterResourceCrud{}
114114
sync.D = d
115115
sync.Client = m.(*OracleClients).dbSystemClient()
116-
117116
var powerOff = false
118117
if powerState, ok := sync.D.GetOkExists("state"); ok {
119118
wantedPowerState := oci_mysql.AnalyticsClusterLifecycleStateEnum(strings.ToUpper(powerState.(string)))
@@ -126,15 +125,14 @@ func createMysqlAnalyticsCluster(d *schema.ResourceData, m interface{}) error {
126125
return e
127126
}
128127

129-
// switch to power off
130128
if powerOff {
131-
if err := sync.Stop(); err != nil {
129+
if err := sync.StopAnalyticsCluster(); err != nil {
132130
return err
133131
}
134132
sync.D.Set("state", oci_mysql.AnalyticsClusterLifecycleStateInactive)
135133
}
136-
137134
return nil
135+
138136
}
139137

140138
func readMysqlAnalyticsCluster(d *schema.ResourceData, m interface{}) error {
@@ -161,9 +159,8 @@ func updateMysqlAnalyticsCluster(d *schema.ResourceData, m interface{}) error {
161159
}
162160
}
163161

164-
// switch to power on
165162
if powerOn {
166-
if err := sync.Start(); err != nil {
163+
if err := sync.StartAnalyticsCluster(); err != nil {
167164
return err
168165
}
169166
sync.D.Set("state", oci_mysql.AnalyticsClusterLifecycleStateActive)
@@ -173,9 +170,8 @@ func updateMysqlAnalyticsCluster(d *schema.ResourceData, m interface{}) error {
173170
return err
174171
}
175172

176-
// switch to power off
177173
if powerOff {
178-
if err := sync.Stop(); err != nil {
174+
if err := sync.StopAnalyticsCluster(); err != nil {
179175
return err
180176
}
181177
sync.D.Set("state", oci_mysql.AnalyticsClusterLifecycleStateInactive)
@@ -399,27 +395,26 @@ func parseAnalyticsClusterCompositeId(compositeId string) (dbSystemId string, er
399395
return
400396
}
401397

402-
func AnalyticsClusterNodeToMap(obj oci_mysql.AnalyticsClusterNode) map[string]interface{} {
403-
result := map[string]interface{}{}
398+
func (s *MysqlAnalyticsClusterResourceCrud) StartAnalyticsCluster() error {
399+
request := oci_mysql.StartAnalyticsClusterRequest{}
404400

405-
if obj.NodeId != nil {
406-
result["node_id"] = string(*obj.NodeId)
401+
if dbSystemId, ok := s.D.GetOkExists("db_system_id"); ok {
402+
tmp := dbSystemId.(string)
403+
request.DbSystemId = &tmp
407404
}
408405

409-
result["state"] = string(obj.LifecycleState)
410-
411-
if obj.TimeCreated != nil {
412-
result["time_created"] = obj.TimeCreated.String()
413-
}
406+
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "mysql")
414407

415-
if obj.TimeUpdated != nil {
416-
result["time_updated"] = obj.TimeUpdated.String()
408+
_, err := s.Client.StartAnalyticsCluster(context.Background(), request)
409+
if err != nil {
410+
return err
417411
}
418412

419-
return result
413+
retentionPolicyFunc := func() bool { return s.Res.LifecycleState == oci_mysql.AnalyticsClusterLifecycleStateActive }
414+
return WaitForResourceCondition(s, retentionPolicyFunc, s.D.Timeout(schema.TimeoutUpdate))
420415
}
421416

422-
func (s *MysqlAnalyticsClusterResourceCrud) Stop() error {
417+
func (s *MysqlAnalyticsClusterResourceCrud) StopAnalyticsCluster() error {
423418
request := oci_mysql.StopAnalyticsClusterRequest{}
424419

425420
if dbSystemId, ok := s.D.GetOkExists("db_system_id"); ok {
@@ -438,21 +433,22 @@ func (s *MysqlAnalyticsClusterResourceCrud) Stop() error {
438433
return WaitForResourceCondition(s, retentionPolicyFunc, s.D.Timeout(schema.TimeoutUpdate))
439434
}
440435

441-
func (s *MysqlAnalyticsClusterResourceCrud) Start() error {
442-
request := oci_mysql.StartAnalyticsClusterRequest{}
436+
func AnalyticsClusterNodeToMap(obj oci_mysql.AnalyticsClusterNode) map[string]interface{} {
437+
result := map[string]interface{}{}
443438

444-
if dbSystemId, ok := s.D.GetOkExists("db_system_id"); ok {
445-
tmp := dbSystemId.(string)
446-
request.DbSystemId = &tmp
439+
if obj.NodeId != nil {
440+
result["node_id"] = string(*obj.NodeId)
447441
}
448442

449-
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "mysql")
443+
result["state"] = string(obj.LifecycleState)
450444

451-
_, err := s.Client.StartAnalyticsCluster(context.Background(), request)
452-
if err != nil {
453-
return err
445+
if obj.TimeCreated != nil {
446+
result["time_created"] = obj.TimeCreated.String()
454447
}
455448

456-
retentionPolicyFunc := func() bool { return s.Res.LifecycleState == oci_mysql.AnalyticsClusterLifecycleStateActive }
457-
return WaitForResourceCondition(s, retentionPolicyFunc, s.D.Timeout(schema.TimeoutUpdate))
449+
if obj.TimeUpdated != nil {
450+
result["time_updated"] = obj.TimeUpdated.String()
451+
}
452+
453+
return result
458454
}

oci/mysql_analytics_cluster_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var (
3434
"db_system_id": Representation{repType: Required, create: `${oci_mysql_mysql_db_system.test_mysql_db_system.id}`},
3535
"cluster_size": Representation{repType: Required, create: `2`, update: `3`},
3636
"shape_name": Representation{repType: Required, create: `VM.Standard.E2.2`, update: `VM.Standard.E2.4`},
37-
"state": Representation{repType: Optional, create: `INACTIVE`, update: `ACTIVE`}, // testing stop & start actions
37+
"state": Representation{repType: Optional, create: `INACTIVE`, update: `ACTIVE`},
3838
}
3939

4040
AnalyticsClusterResourceDependencies = MysqlConfigurationResourceConfig +

website/docs/r/analytics_analytics_instance.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ The following arguments are supported:
6969
* `idcs_access_token` - (Required) IDCS access token identifying a stripe and service administrator user.
7070
* `license_type` - (Required) (Updatable) The license used for the service.
7171
* `name` - (Required) The name of the Analytics instance. This name must be unique in the tenancy and cannot be changed.
72-
* `state` - (Optional) (Updatable) The target state for the instance. Could be set to `ACTIVE` or `INACTIVE`.
7372
* `network_endpoint_details` - (Optional) Base representation of a network endpoint.
7473
* `network_endpoint_type` - (Required) The type of network endpoint.
7574
* `subnet_id` - (Required when network_endpoint_type=PRIVATE) The subnet OCID for the private endpoint.
@@ -78,6 +77,7 @@ The following arguments are supported:
7877
* `whitelisted_vcns` - (Applicable when network_endpoint_type=PUBLIC) Virtual Cloud Networks allowed to access this network endpoint.
7978
* `id` - (Required when network_endpoint_type=PUBLIC) The Virtual Cloud Network OCID.
8079
* `whitelisted_ips` - (Applicable when network_endpoint_type=PUBLIC) Source IP addresses or IP address ranges igress rules.
80+
* `state` - (Optional) (Updatable) The target state for the Analytics Instance. Could be set to `ACTIVE` or `INACTIVE`.
8181

8282

8383
** IMPORTANT **

0 commit comments

Comments
 (0)