Skip to content

Commit 66e35ea

Browse files
committed
Support update Nosql
1 parent 17cade2 commit 66e35ea

File tree

1 file changed

+36
-13
lines changed

1 file changed

+36
-13
lines changed

oci/nosql_table_resource.go

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,11 @@ func (s *NosqlTableResourceCrud) getTableFromWorkRequest(workId *string, retryPo
315315
}
316316
return err
317317
}
318+
319+
// For update, we send multiple requests and we don't want to override the state file for each request
320+
if actionTypeEnum == oci_nosql.WorkRequestResourceActionTypeUpdated {
321+
return nil
322+
}
318323
s.D.SetId(*tableId)
319324
s.D.Set("table_name_or_id", *tableId)
320325

@@ -448,15 +453,30 @@ func (s *NosqlTableResourceCrud) Get() error {
448453
}
449454

450455
func (s *NosqlTableResourceCrud) Update() error {
451-
if compartment, ok := s.D.GetOkExists("compartment_id"); ok && s.D.HasChange("compartment_id") {
456+
if _, ok := s.D.GetOkExists("compartment_id"); ok && s.D.HasChange("compartment_id") {
452457
oldRaw, newRaw := s.D.GetChange("compartment_id")
453458
if newRaw != "" && oldRaw != "" {
454-
err := s.updateCompartment(compartment)
459+
fromCompartmentId := oldRaw.(string)
460+
toCompartmentId := newRaw.(string)
461+
err := s.updateCompartment(fromCompartmentId, toCompartmentId)
455462
if err != nil {
456463
return err
457464
}
458465
}
459466
}
467+
468+
defer func() {
469+
// get latest state of the instance
470+
err := s.Get()
471+
if err != nil {
472+
log.Printf("[ERROR] unable to invoke GET() after UPDATE '%v'", err)
473+
}
474+
// write latest state
475+
if err := s.SetData(); err != nil {
476+
log.Printf("[ERROR] unable to invoke setData() '%v'", err)
477+
}
478+
}()
479+
460480
request := oci_nosql.UpdateTableRequest{}
461481

462482
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "nosql")
@@ -530,7 +550,7 @@ func sendUpdateRequest(s *NosqlTableResourceCrud, request oci_nosql.UpdateTableR
530550
if err != nil {
531551
return err
532552
}
533-
return s.SetData()
553+
return nil
534554
}
535555

536556
func (s *NosqlTableResourceCrud) Delete() error {
@@ -737,27 +757,30 @@ func TableSummaryToMap(obj oci_nosql.TableSummary) map[string]interface{} {
737757
return result
738758
}
739759

740-
func (s *NosqlTableResourceCrud) updateCompartment(compartment interface{}) error {
760+
func (s *NosqlTableResourceCrud) updateCompartment(fromCompartmentId, toCompartmentId string) error {
741761
changeCompartmentRequest := oci_nosql.ChangeTableCompartmentRequest{}
742762

743-
if fromCompartmentId, ok := s.D.GetOkExists("from_compartment_id"); ok {
744-
tmp := fromCompartmentId.(string)
745-
changeCompartmentRequest.FromCompartmentId = &tmp
746-
}
763+
changeCompartmentRequest.FromCompartmentId = &fromCompartmentId
747764

748765
if tableNameOrId, ok := s.D.GetOkExists("table_name_or_id"); ok {
749766
tmp := tableNameOrId.(string)
750767
changeCompartmentRequest.TableNameOrId = &tmp
768+
} else if s.D.Id() != "" {
769+
tmp := s.D.Id()
770+
changeCompartmentRequest.TableNameOrId = &tmp
751771
}
752772

753-
if toCompartmentId, ok := s.D.GetOkExists("to_compartment_id"); ok {
754-
tmp := toCompartmentId.(string)
755-
changeCompartmentRequest.ToCompartmentId = &tmp
756-
}
773+
changeCompartmentRequest.ToCompartmentId = &toCompartmentId
757774

758775
changeCompartmentRequest.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "nosql")
759776

760-
_, err := s.Client.ChangeTableCompartment(context.Background(), changeCompartmentRequest)
777+
response, err := s.Client.ChangeTableCompartment(context.Background(), changeCompartmentRequest)
778+
if err != nil {
779+
return err
780+
}
781+
782+
workId := response.OpcWorkRequestId
783+
err = s.getTableFromWorkRequest(workId, getRetryPolicy(s.DisableNotFoundRetries, "nosql"), oci_nosql.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutUpdate))
761784
if err != nil {
762785
return err
763786
}

0 commit comments

Comments
 (0)