Skip to content

Commit 60076e1

Browse files
Terraform Team Automationravinitp
authored andcommitted
Added - Support for ADB-S: Long-Term Automatic Backup Retention
1 parent 16d2fa3 commit 60076e1

16 files changed

+543
-57
lines changed

internal/integrationtest/database_autonomous_database_backup_test.go

Lines changed: 165 additions & 37 deletions
Large diffs are not rendered by default.

internal/integrationtest/database_autonomous_database_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -779,10 +779,9 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
779779
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.is_refreshable_clone"),
780780
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.kms_key_id"),
781781
resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.license_model", "LICENSE_INCLUDED"),
782-
// memory_per_oracle_compute_unit_in_gbs is used by only Exacc at the moment
783-
//resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.memory_per_oracle_compute_unit_in_gbs"),
784-
//resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.ocpu_count", 1.1),
785782
resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.max_cpu_core_count", "3"),
783+
resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.local_standby_db.#", "1"),
784+
resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.ncharacter_set", "AL16UTF16"),
786785
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.open_mode"),
787786
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.operations_insights_status"),
788787
resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.database_management_status"),
@@ -845,9 +844,9 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
845844
resource.TestCheckResourceAttr(singularDatasourceName, "local_standby_db.#", "1"),
846845
resource.TestCheckResourceAttrSet(singularDatasourceName, "is_preview"),
847846
resource.TestCheckResourceAttr(singularDatasourceName, "license_model", "LICENSE_INCLUDED"),
848-
// @Codegen: memory_per_oracle_compute_unit_in_gbs is used only by exacc at the moment
849-
//resource.TestCheckResourceAttrSet(singularDatasourceName, "memory_per_oracle_compute_unit_in_gbs"),
850847
resource.TestCheckResourceAttr(singularDatasourceName, "max_cpu_core_count", "3"),
848+
resource.TestCheckResourceAttr(singularDatasourceName, "local_standby_db.#", "1"),
849+
resource.TestCheckResourceAttr(singularDatasourceName, "ncharacter_set", "AL16UTF16"),
851850
resource.TestCheckResourceAttrSet(singularDatasourceName, "open_mode"),
852851
resource.TestCheckResourceAttrSet(singularDatasourceName, "operations_insights_status"),
853852
resource.TestCheckResourceAttrSet(singularDatasourceName, "database_management_status"),

internal/service/database/database_autonomous_database_backup_data_source.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ func (s *DatabaseAutonomousDatabaseBackupDataSourceCrud) SetData() error {
7878
s.D.Set("database_size_in_tbs", *s.Res.DatabaseSizeInTBs)
7979
}
8080

81+
if s.Res.DbVersion != nil {
82+
s.D.Set("db_version", *s.Res.DbVersion)
83+
}
84+
8185
if s.Res.DisplayName != nil {
8286
s.D.Set("display_name", *s.Res.DisplayName)
8387
}
@@ -110,8 +114,20 @@ func (s *DatabaseAutonomousDatabaseBackupDataSourceCrud) SetData() error {
110114
s.D.Set("lifecycle_details", *s.Res.LifecycleDetails)
111115
}
112116

117+
if s.Res.RetentionPeriodInDays != nil {
118+
s.D.Set("retention_period_in_days", *s.Res.RetentionPeriodInDays)
119+
}
120+
121+
if s.Res.SizeInTBs != nil {
122+
s.D.Set("size_in_tbs", *s.Res.SizeInTBs)
123+
}
124+
113125
s.D.Set("state", s.Res.LifecycleState)
114126

127+
if s.Res.TimeAvailableTill != nil {
128+
s.D.Set("time_available_till", s.Res.TimeAvailableTill.String())
129+
}
130+
115131
if s.Res.TimeEnded != nil {
116132
s.D.Set("time_ended", s.Res.TimeEnded.String())
117133
}

internal/service/database/database_autonomous_database_backup_resource.go

Lines changed: 108 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func DatabaseAutonomousDatabaseBackupResource() *schema.Resource {
2525
Timeouts: tfresource.DefaultTimeout,
2626
Create: createDatabaseAutonomousDatabaseBackup,
2727
Read: readDatabaseAutonomousDatabaseBackup,
28+
Update: updateDatabaseAutonomousDatabaseBackup,
2829
Delete: deleteDatabaseAutonomousDatabaseBackup,
2930
Schema: map[string]*schema.Schema{
3031
// Required
@@ -35,9 +36,20 @@ func DatabaseAutonomousDatabaseBackupResource() *schema.Resource {
3536
},
3637
"display_name": {
3738
Type: schema.TypeString,
38-
Required: true,
39+
Optional: true,
40+
Computed: true,
41+
},
42+
"is_long_term_backup": {
43+
Type: schema.TypeBool,
44+
Optional: true,
45+
Computed: true,
3946
ForceNew: true,
4047
},
48+
"retention_period_in_days": {
49+
Type: schema.TypeInt,
50+
Optional: true,
51+
Computed: true,
52+
},
4153

4254
// Optional
4355

@@ -50,6 +62,10 @@ func DatabaseAutonomousDatabaseBackupResource() *schema.Resource {
5062
Type: schema.TypeFloat,
5163
Computed: true,
5264
},
65+
"db_version": {
66+
Type: schema.TypeString,
67+
Computed: true,
68+
},
5369
"is_automatic": {
5470
Type: schema.TypeBool,
5571
Computed: true,
@@ -78,10 +94,18 @@ func DatabaseAutonomousDatabaseBackupResource() *schema.Resource {
7894
Type: schema.TypeString,
7995
Computed: true,
8096
},
97+
"size_in_tbs": {
98+
Type: schema.TypeFloat,
99+
Computed: true,
100+
},
81101
"state": {
82102
Type: schema.TypeString,
83103
Computed: true,
84104
},
105+
"time_available_till": {
106+
Type: schema.TypeString,
107+
Computed: true,
108+
},
85109
"time_ended": {
86110
Type: schema.TypeString,
87111
Computed: true,
@@ -120,8 +144,23 @@ func readDatabaseAutonomousDatabaseBackup(d *schema.ResourceData, m interface{})
120144
return tfresource.ReadResource(sync)
121145
}
122146

147+
func updateDatabaseAutonomousDatabaseBackup(d *schema.ResourceData, m interface{}) error {
148+
sync := &DatabaseAutonomousDatabaseBackupResourceCrud{}
149+
sync.D = d
150+
sync.Client = m.(*client.OracleClients).DatabaseClient()
151+
sync.WorkRequestClient = m.(*client.OracleClients).WorkRequestClient
152+
153+
return tfresource.UpdateResource(d, sync)
154+
}
155+
123156
func deleteDatabaseAutonomousDatabaseBackup(d *schema.ResourceData, m interface{}) error {
124-
return nil
157+
sync := &DatabaseAutonomousDatabaseBackupResourceCrud{}
158+
sync.D = d
159+
sync.Client = m.(*client.OracleClients).DatabaseClient()
160+
sync.DisableNotFoundRetries = true
161+
sync.WorkRequestClient = m.(*client.OracleClients).WorkRequestClient
162+
163+
return tfresource.DeleteResource(d, sync)
125164
}
126165

127166
type DatabaseAutonomousDatabaseBackupResourceCrud struct {
@@ -173,6 +212,16 @@ func (s *DatabaseAutonomousDatabaseBackupResourceCrud) Create() error {
173212
request.DisplayName = &tmp
174213
}
175214

215+
if isLongTermBackup, ok := s.D.GetOkExists("is_long_term_backup"); ok {
216+
tmp := isLongTermBackup.(bool)
217+
request.IsLongTermBackup = &tmp
218+
}
219+
220+
if retentionPeriodInDays, ok := s.D.GetOkExists("retention_period_in_days"); ok {
221+
tmp := retentionPeriodInDays.(int)
222+
request.RetentionPeriodInDays = &tmp
223+
}
224+
176225
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database")
177226

178227
response, err := s.Client.CreateAutonomousDatabaseBackup(context.Background(), request)
@@ -209,6 +258,47 @@ func (s *DatabaseAutonomousDatabaseBackupResourceCrud) Get() error {
209258
return nil
210259
}
211260

261+
func (s *DatabaseAutonomousDatabaseBackupResourceCrud) Update() error {
262+
request := oci_database.UpdateAutonomousDatabaseBackupRequest{}
263+
264+
tmp := s.D.Id()
265+
request.AutonomousDatabaseBackupId = &tmp
266+
267+
if retentionPeriodInDays, ok := s.D.GetOkExists("retention_period_in_days"); ok {
268+
tmp := retentionPeriodInDays.(int)
269+
request.RetentionPeriodInDays = &tmp
270+
}
271+
272+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database")
273+
274+
response, err := s.Client.UpdateAutonomousDatabaseBackup(context.Background(), request)
275+
if err != nil {
276+
return err
277+
}
278+
279+
workId := response.OpcWorkRequestId
280+
if workId != nil {
281+
_, err = tfresource.WaitForWorkRequestWithErrorHandling(s.WorkRequestClient, workId, "autonomousDatabaseBackup", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutUpdate), s.DisableNotFoundRetries)
282+
if err != nil {
283+
return err
284+
}
285+
}
286+
287+
return s.Get()
288+
}
289+
290+
func (s *DatabaseAutonomousDatabaseBackupResourceCrud) Delete() error {
291+
request := oci_database.DeleteAutonomousDatabaseBackupRequest{}
292+
293+
tmp := s.D.Id()
294+
request.AutonomousDatabaseBackupId = &tmp
295+
296+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database")
297+
298+
_, err := s.Client.DeleteAutonomousDatabaseBackup(context.Background(), request)
299+
return err
300+
}
301+
212302
func (s *DatabaseAutonomousDatabaseBackupResourceCrud) SetData() error {
213303
if s.Res.AutonomousDatabaseId != nil {
214304
s.D.Set("autonomous_database_id", *s.Res.AutonomousDatabaseId)
@@ -222,6 +312,10 @@ func (s *DatabaseAutonomousDatabaseBackupResourceCrud) SetData() error {
222312
s.D.Set("database_size_in_tbs", *s.Res.DatabaseSizeInTBs)
223313
}
224314

315+
if s.Res.DbVersion != nil {
316+
s.D.Set("db_version", *s.Res.DbVersion)
317+
}
318+
225319
if s.Res.DisplayName != nil {
226320
s.D.Set("display_name", *s.Res.DisplayName)
227321
}
@@ -254,8 +348,20 @@ func (s *DatabaseAutonomousDatabaseBackupResourceCrud) SetData() error {
254348
s.D.Set("lifecycle_details", *s.Res.LifecycleDetails)
255349
}
256350

351+
if s.Res.RetentionPeriodInDays != nil {
352+
s.D.Set("retention_period_in_days", *s.Res.RetentionPeriodInDays)
353+
}
354+
355+
if s.Res.SizeInTBs != nil {
356+
s.D.Set("size_in_tbs", *s.Res.SizeInTBs)
357+
}
358+
257359
s.D.Set("state", s.Res.LifecycleState)
258360

361+
if s.Res.TimeAvailableTill != nil {
362+
s.D.Set("time_available_till", s.Res.TimeAvailableTill.String())
363+
}
364+
259365
if s.Res.TimeEnded != nil {
260366
s.D.Set("time_ended", s.Res.TimeEnded.Format(time.RFC3339Nano))
261367
}

internal/service/database/database_autonomous_database_backups_data_source.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ func (s *DatabaseAutonomousDatabaseBackupsDataSourceCrud) SetData() error {
129129
autonomousDatabaseBackup["database_size_in_tbs"] = *r.DatabaseSizeInTBs
130130
}
131131

132+
if r.DbVersion != nil {
133+
autonomousDatabaseBackup["db_version"] = *r.DbVersion
134+
}
135+
132136
if r.DisplayName != nil {
133137
autonomousDatabaseBackup["display_name"] = *r.DisplayName
134138
}
@@ -165,8 +169,20 @@ func (s *DatabaseAutonomousDatabaseBackupsDataSourceCrud) SetData() error {
165169
autonomousDatabaseBackup["lifecycle_details"] = *r.LifecycleDetails
166170
}
167171

172+
if r.RetentionPeriodInDays != nil {
173+
autonomousDatabaseBackup["retention_period_in_days"] = *r.RetentionPeriodInDays
174+
}
175+
176+
if r.SizeInTBs != nil {
177+
autonomousDatabaseBackup["size_in_tbs"] = *r.SizeInTBs
178+
}
179+
168180
autonomousDatabaseBackup["state"] = r.LifecycleState
169181

182+
if r.TimeAvailableTill != nil {
183+
autonomousDatabaseBackup["time_available_till"] = r.TimeAvailableTill.String()
184+
}
185+
170186
if r.TimeEnded != nil {
171187
autonomousDatabaseBackup["time_ended"] = r.TimeEnded.String()
172188
}

internal/service/database/database_autonomous_database_data_source.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,16 @@ func (s *DatabaseAutonomousDatabaseDataSourceCrud) SetData() error {
266266
s.D.Set("local_standby_db", nil)
267267
}
268268

269+
if s.Res.LongTermBackupSchedule != nil {
270+
s.D.Set("long_term_backup_schedule", []interface{}{LongTermBackUpScheduleDetailsToMap(s.Res.LongTermBackupSchedule)})
271+
} else {
272+
s.D.Set("long_term_backup_schedule", nil)
273+
}
274+
275+
if s.Res.MaxCpuCoreCount != nil {
276+
s.D.Set("max_cpu_core_count", *s.Res.MaxCpuCoreCount)
277+
}
278+
269279
if s.Res.MemoryPerOracleComputeUnitInGBs != nil {
270280
s.D.Set("memory_per_oracle_compute_unit_in_gbs", *s.Res.MemoryPerOracleComputeUnitInGBs)
271281
}
@@ -278,6 +288,10 @@ func (s *DatabaseAutonomousDatabaseDataSourceCrud) SetData() error {
278288
s.D.Set("ncharacter_set", *s.Res.NcharacterSet)
279289
}
280290

291+
if s.Res.NextLongTermBackupTimeStamp != nil {
292+
s.D.Set("next_long_term_backup_time_stamp", s.Res.NextLongTermBackupTimeStamp.String())
293+
}
294+
281295
s.D.Set("nsg_ids", s.Res.NsgIds)
282296

283297
if s.Res.OcpuCount != nil {

0 commit comments

Comments
 (0)