@@ -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+
123156func 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
127166type 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+
212302func (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 }
0 commit comments