@@ -1593,6 +1593,8 @@ func resourceVdbRead(ctx context.Context, d *schema.ResourceData, meta interface
15931593 d .Set ("pre_rollback" , flattenHooks (result .GetHooks ().PreRollback ))
15941594 d .Set ("post_rollback" , flattenHooks (result .GetHooks ().PostRollback ))
15951595 d .Set ("database_name" , result .GetDatabaseName ())
1596+ d .Set ("tags" , flattenTags (result .GetTags ()))
1597+
15961598 _ , is_provision := d .GetOk ("provision_type" )
15971599 if ! is_provision {
15981600 // its an import, set to default value
@@ -1665,13 +1667,10 @@ func resourceVdbUpdate(ctx context.Context, d *schema.ResourceData, meta interfa
16651667 k = "listener_ids"
16661668 }
16671669 if d .HasChange (k ) {
1668- tflog .Info (ctx , ">>>>>@@@VDB<<<<<< " + k )
1670+ tflog .Debug (ctx , "changed keys " + k )
16691671 changedKeys = append (changedKeys , k )
16701672 }
16711673 }
1672- for _ , ck := range changedKeys {
1673- tflog .Info (ctx , "!!!!!!!VDB!!!!!!!!" + ck )
1674- }
16751674
16761675 var updateFailure , destructiveUpdate bool = false , false
16771676 var nonUpdatableField []string
@@ -1681,75 +1680,32 @@ func resourceVdbUpdate(ctx context.Context, d *schema.ResourceData, meta interfa
16811680
16821681 // if changedKeys contains non updatable field set a flag
16831682 for _ , key := range changedKeys {
1684- tflog .Info (ctx , "!!!!!!!!VDB!!!!!!!" + key )
16851683 if ! updatableVdbKeys [key ] {
16861684 updateFailure = true
1687- tflog .Info (ctx , ">>>>>!!!VDB<<<<<< " + key )
1685+ tflog .Debug (ctx , "non updatable field: " + key )
16881686 nonUpdatableField = append (nonUpdatableField , key )
16891687 }
16901688 }
16911689
16921690 if updateFailure {
1693- tflog .Info (ctx , "######updateVDBfailure" )
16941691 revertChanges (d , changedKeys )
16951692 return diag .Errorf ("cannot update options %v. Please refer to provider documentation for updatable params." , nonUpdatableField )
16961693 }
16971694
16981695 // find if destructive update
16991696 for _ , key := range changedKeys {
17001697 if isDestructiveVdbUpdate [key ] {
1701- tflog .Info (ctx , "######isDestructiveVDBUpdate " + key )
1698+ tflog .Debug (ctx , "destructive updates for: " + key )
17021699 destructiveUpdate = true
17031700 }
17041701 }
17051702 if destructiveUpdate {
17061703 if diags := disableVDB (ctx , client , vdbId ); diags != nil {
17071704 tflog .Error (ctx , "failure in disabling vdbs" )
1708- //disableVdbFailure = true
17091705 revertChanges (d , changedKeys )
17101706 return diags
17111707 }
17121708 }
1713- // if d.HasChanges(
1714- // "auto_select_repository",
1715- // "source_data_id",
1716- // "id",
1717- // "database_type",
1718- // "database_version",
1719- // "status",
1720- // "ip_address",
1721- // "fqdn",
1722- // "parent_id",
1723- // "group_name",
1724- // "creation_date",
1725- // "target_group_id",
1726- // "database_name",
1727- // "truncate_log_on_checkpoint",
1728- // "repository_id",
1729- // "file_mapping_rules",
1730- // "instance_name",
1731- // "unique_name",
1732- // "open_reset_logs",
1733- // "snapshot_policy_id",
1734- // "retention_policy_id",
1735- // "recovery_model",
1736- // "online_log_groups",
1737- // "online_log_size",
1738- // "os_username",
1739- // "os_password",
1740- // "archive_log",
1741- // "timestamp",
1742- // "timestamp_in_database_timezone",
1743- // "snapshot_id") {
1744-
1745- // // revert and set the old value to the changed keys
1746- // for _, key := range changedKeys {
1747- // old, _ := d.GetChange(key)
1748- // d.Set(key, old)
1749- // }
1750-
1751- // return diag.Errorf("cannot update one (or more) of the options changed. Please refer to provider documentation for updatable params.")
1752- // }
17531709
17541710 nvdh := dctapi .NewVirtualDatasetHooks ()
17551711
@@ -1953,8 +1909,39 @@ func resourceVdbUpdate(ctx context.Context, d *schema.ResourceData, meta interfa
19531909 return diag .Errorf ("[NOT OK] VDB-Update %s. JobId: %s / Error: %s" , job_status , * res .Job .Id , job_err )
19541910 }
19551911
1956- if diags := enableVDB (ctx , client , d .Get ("id" ).(string )); diags != nil {
1957- return diags //if failure should we enable
1912+ if d .HasChanges (
1913+ "tags" ,
1914+ ) { // tags update
1915+ tflog .Debug (ctx , "updating tags" )
1916+ if d .HasChange ("tags" ) {
1917+ // delete old tag
1918+ tflog .Debug (ctx , "deleting old tags" )
1919+ oldTag , newTag := d .GetChange ("tags" )
1920+ if len (toTagArray (oldTag )) != 0 {
1921+ tflog .Debug (ctx , "tag to be deleted: " + toTagArray (oldTag )[0 ].GetKey ()+ " " + toTagArray (oldTag )[0 ].GetValue ())
1922+ deleteTag := * dctapi .NewDeleteTag ()
1923+ tagDelResp , tagDelErr := client .VDBsAPI .DeleteVdbTags (ctx , vdbId ).DeleteTag (deleteTag ).Execute ()
1924+ tflog .Debug (ctx , "tag delete response: " + tagDelResp .Status )
1925+ if diags := apiErrorResponseHelper (ctx , nil , tagDelResp , tagDelErr ); diags != nil {
1926+ revertChanges (d , changedKeys )
1927+ updateFailure = true
1928+ }
1929+ }
1930+ // create tag
1931+ if len (toTagArray (newTag )) != 0 {
1932+ tflog .Info (ctx , "creating new tags" )
1933+ _ , httpResp , tagCrtErr := client .VDBsAPI .CreateVdbTags (ctx , vdbId ).TagsRequest (* dctapi .NewTagsRequest (toTagArray (newTag ))).Execute ()
1934+ if diags := apiErrorResponseHelper (ctx , nil , httpResp , tagCrtErr ); diags != nil {
1935+ revertChanges (d , changedKeys )
1936+ return diags
1937+ }
1938+ }
1939+ }
1940+ }
1941+ if destructiveUpdate {
1942+ if diags := enableVDB (ctx , client , vdbId ); diags != nil {
1943+ return diags //if failure should we enable
1944+ }
19581945 }
19591946
19601947 return diags
0 commit comments