Skip to content

Commit f40f4f7

Browse files
PraveenKumar ShanmugamMaxrovr
authored andcommitted
Added Support for OCI Data Science Model Store Backup and Retention
1 parent 661af49 commit f40f4f7

File tree

7 files changed

+515
-13
lines changed

7 files changed

+515
-13
lines changed

internal/integrationtest/datascience_model_test.go

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,26 @@ var (
5151
}
5252

5353
DatascienceModelRepresentation = map[string]interface{}{
54-
"artifact_content_length": acctest.Representation{RepType: acctest.Required, Create: `6954`},
55-
"model_artifact": acctest.Representation{RepType: acctest.Required, Create: `../../examples/datascience/artifact.zip`},
5654
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
5755
"project_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_datascience_project.test_project.id}`},
58-
"artifact_content_disposition": acctest.Representation{RepType: acctest.Optional, Create: `attachment; filename=tfTestArtifact`},
56+
"backup_setting": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatascienceModelBackupSettingRepresentation},
5957
"custom_metadata_list": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatascienceModelCustomMetadataListRepresentation},
6058
"defined_metadata_list": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatascienceModelDefinedMetadataListRepresentation},
6159
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
6260
"description": acctest.Representation{RepType: acctest.Optional, Create: `description`, Update: `description2`},
6361
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`, Update: `displayName2`},
6462
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
65-
"input_schema": acctest.Representation{RepType: acctest.Optional, Create: "{}"},
66-
"output_schema": acctest.Representation{RepType: acctest.Optional, Create: "{}"},
63+
"input_schema": acctest.Representation{RepType: acctest.Optional, Create: `inputSchema`},
64+
"output_schema": acctest.Representation{RepType: acctest.Optional, Create: `outputSchema`},
65+
"retention_setting": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatascienceModelRetentionSettingRepresentation},
66+
"artifact_content_length": acctest.Representation{RepType: acctest.Required, Create: `6954`},
67+
"model_artifact": acctest.Representation{RepType: acctest.Required, Create: `../../examples/datascience/artifact.zip`},
68+
"artifact_content_disposition": acctest.Representation{RepType: acctest.Optional, Create: `attachment; filename=tfTestArtifact`},
69+
}
70+
DatascienceModelBackupSettingRepresentation = map[string]interface{}{
71+
"backup_region": acctest.Representation{RepType: acctest.Required, Create: `us-phoenix-1`, Update: `us-phoenix-1`},
72+
"is_backup_enabled": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `true`},
73+
"customer_notification_type": acctest.Representation{RepType: acctest.Optional, Create: `NONE`, Update: `ALL`},
6774
}
6875
DatascienceModelCustomMetadataListRepresentation = map[string]interface{}{
6976
"category": acctest.Representation{RepType: acctest.Optional, Create: `Performance`, Update: `Performance`},
@@ -75,6 +82,11 @@ var (
7582
"key": acctest.Representation{RepType: acctest.Optional, Create: `UseCaseType`, Update: `UseCaseType`},
7683
"value": acctest.Representation{RepType: acctest.Optional, Create: `ner`, Update: `ner`},
7784
}
85+
DatascienceModelRetentionSettingRepresentation = map[string]interface{}{
86+
"archive_after_days": acctest.Representation{RepType: acctest.Required, Create: `40`, Update: `41`},
87+
"customer_notification_type": acctest.Representation{RepType: acctest.Optional, Create: `NONE`, Update: `ALL`},
88+
"delete_after_days": acctest.Representation{RepType: acctest.Optional, Create: `45`, Update: `46`},
89+
}
7890

7991
DatascienceModelResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_datascience_project", "test_project", acctest.Required, acctest.Create, DatascienceProjectRepresentation) +
8092
DefinedTagsDependencies
@@ -133,6 +145,11 @@ func TestDatascienceModelResource_basic(t *testing.T) {
133145
Config: config + compartmentIdVariableStr + DatascienceModelResourceDependencies +
134146
acctest.GenerateResourceFromRepresentationMap("oci_datascience_model", "test_model", acctest.Optional, acctest.Create, DatascienceModelRepresentation),
135147
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
148+
resource.TestCheckResourceAttr(resourceName, "backup_operation_details.#", "1"),
149+
resource.TestCheckResourceAttr(resourceName, "backup_setting.#", "1"),
150+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.backup_region", "us-phoenix-1"),
151+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.customer_notification_type", "NONE"),
152+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.is_backup_enabled", "true"),
136153
resource.TestCheckResourceAttr(resourceName, "artifact_content_length", "6954"),
137154
resource.TestCheckResourceAttrSet(resourceName, "artifact_content_md5"),
138155
resource.TestCheckResourceAttrSet(resourceName, "artifact_last_modified"),
@@ -153,6 +170,12 @@ func TestDatascienceModelResource_basic(t *testing.T) {
153170
resource.TestCheckResourceAttr(resourceName, "input_schema", "{}"),
154171
resource.TestCheckResourceAttr(resourceName, "output_schema", "{}"),
155172
resource.TestCheckResourceAttrSet(resourceName, "project_id"),
173+
resource.TestCheckResourceAttr(resourceName, "retention_operation_details.#", "1"),
174+
resource.TestCheckResourceAttr(resourceName, "retention_setting.#", "1"),
175+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.archive_after_days", "40"),
176+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.customer_notification_type", "NONE"),
177+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.delete_after_days", "45"),
178+
//resource.TestCheckResourceAttr(resourceName, "state", ACTIVE),
156179
resource.TestCheckResourceAttrSet(resourceName, "state"),
157180
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
158181

@@ -176,6 +199,11 @@ func TestDatascienceModelResource_basic(t *testing.T) {
176199
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_update}`},
177200
})),
178201
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
202+
resource.TestCheckResourceAttr(resourceName, "backup_operation_details.#", "1"),
203+
resource.TestCheckResourceAttr(resourceName, "backup_setting.#", "1"),
204+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.backup_region", "us-phoenix-1"),
205+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.customer_notification_type", "NONE"),
206+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.is_backup_enabled", "true"),
179207
resource.TestCheckResourceAttr(resourceName, "artifact_content_length", "6954"),
180208
resource.TestCheckResourceAttrSet(resourceName, "artifact_content_md5"),
181209
resource.TestCheckResourceAttrSet(resourceName, "artifact_last_modified"),
@@ -196,6 +224,12 @@ func TestDatascienceModelResource_basic(t *testing.T) {
196224
resource.TestCheckResourceAttr(resourceName, "input_schema", "{}"),
197225
resource.TestCheckResourceAttr(resourceName, "output_schema", "{}"),
198226
resource.TestCheckResourceAttrSet(resourceName, "project_id"),
227+
resource.TestCheckResourceAttr(resourceName, "retention_operation_details.#", "1"),
228+
resource.TestCheckResourceAttr(resourceName, "retention_setting.#", "1"),
229+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.archive_after_days", "10"),
230+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.customer_notification_type", "NONE"),
231+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.delete_after_days", "10"),
232+
//resource.TestCheckResourceAttr(resourceName, "state", ACTIVE),
199233
resource.TestCheckResourceAttrSet(resourceName, "state"),
200234
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
201235

@@ -214,6 +248,11 @@ func TestDatascienceModelResource_basic(t *testing.T) {
214248
Config: config + compartmentIdVariableStr + DatascienceModelResourceDependencies +
215249
acctest.GenerateResourceFromRepresentationMap("oci_datascience_model", "test_model", acctest.Optional, acctest.Update, DatascienceModelRepresentation),
216250
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
251+
resource.TestCheckResourceAttr(resourceName, "backup_operation_details.#", "1"),
252+
resource.TestCheckResourceAttr(resourceName, "backup_setting.#", "1"),
253+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.backup_region", "us-phoenix-1"),
254+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.customer_notification_type", "ALL"),
255+
resource.TestCheckResourceAttr(resourceName, "backup_setting.0.is_backup_enabled", "true"),
217256
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
218257
resource.TestCheckResourceAttr(resourceName, "custom_metadata_list.#", "1"),
219258
resource.TestCheckResourceAttr(resourceName, "custom_metadata_list.0.category", "Performance"),
@@ -231,6 +270,12 @@ func TestDatascienceModelResource_basic(t *testing.T) {
231270
resource.TestCheckResourceAttr(resourceName, "input_schema", "{}"),
232271
resource.TestCheckResourceAttr(resourceName, "output_schema", "{}"),
233272
resource.TestCheckResourceAttrSet(resourceName, "project_id"),
273+
resource.TestCheckResourceAttr(resourceName, "retention_operation_details.#", "1"),
274+
resource.TestCheckResourceAttr(resourceName, "retention_setting.#", "1"),
275+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.archive_after_days", "11"),
276+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.customer_notification_type", "ALL"),
277+
resource.TestCheckResourceAttr(resourceName, "retention_setting.0.delete_after_days", "11"),
278+
//resource.TestCheckResourceAttr(resourceName, "state", ACTIVE),
234279
resource.TestCheckResourceAttrSet(resourceName, "state"),
235280
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
236281

@@ -255,7 +300,6 @@ func TestDatascienceModelResource_basic(t *testing.T) {
255300
resource.TestCheckResourceAttrSet(datasourceName, "id"),
256301
resource.TestCheckResourceAttrSet(datasourceName, "project_id"),
257302
resource.TestCheckResourceAttr(datasourceName, "state", "ACTIVE"),
258-
259303
resource.TestCheckResourceAttr(datasourceName, "models.#", "1"),
260304
resource.TestCheckResourceAttr(datasourceName, "models.0.compartment_id", compartmentId),
261305
resource.TestCheckResourceAttrSet(datasourceName, "models.0.created_by"),
@@ -265,8 +309,11 @@ func TestDatascienceModelResource_basic(t *testing.T) {
265309
resource.TestCheckResourceAttrSet(datasourceName, "models.0.project_id"),
266310
resource.TestCheckResourceAttrSet(datasourceName, "models.0.state"),
267311
resource.TestCheckResourceAttrSet(datasourceName, "models.0.time_created"),
312+
resource.TestCheckResourceAttrSet(datasourceName, "models.0.version_id"),
313+
resource.TestCheckResourceAttr(datasourceName, "models.0.version_label", "versionLabel2"),
268314
),
269315
},
316+
270317
// verify resource import
271318
{
272319
Config: config + DatascienceModelRequiredOnlyResource,

internal/service/datascience/datascience_model_data_source.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,18 @@ func (s *DatascienceModelDataSourceCrud) SetData() error {
8787

8888
s.D.SetId(*s.Res.Id)
8989

90+
if s.Res.BackupOperationDetails != nil {
91+
s.D.Set("backup_operation_details", []interface{}{BackupOperationDetailsToMap(s.Res.BackupOperationDetails)})
92+
} else {
93+
s.D.Set("backup_operation_details", nil)
94+
}
95+
96+
if s.Res.BackupSetting != nil {
97+
s.D.Set("backup_setting", []interface{}{BackupSettingToMap(s.Res.BackupSetting)})
98+
} else {
99+
s.D.Set("backup_setting", nil)
100+
}
101+
90102
if s.Res.CompartmentId != nil {
91103
s.D.Set("compartment_id", *s.Res.CompartmentId)
92104
}
@@ -141,6 +153,18 @@ func (s *DatascienceModelDataSourceCrud) SetData() error {
141153
s.D.Set("input_schema", *s.Res.InputSchema)
142154
}
143155

156+
if s.Res.LifecycleDetails != nil {
157+
s.D.Set("lifecycle_details", *s.Res.LifecycleDetails)
158+
}
159+
160+
if s.Res.ModelVersionSetId != nil {
161+
s.D.Set("model_version_set_id", *s.Res.ModelVersionSetId)
162+
}
163+
164+
if s.Res.ModelVersionSetName != nil {
165+
s.D.Set("model_version_set_name", *s.Res.ModelVersionSetName)
166+
}
167+
144168
if s.Res.OutputSchema != nil {
145169
s.D.Set("output_schema", *s.Res.OutputSchema)
146170
}
@@ -149,6 +173,18 @@ func (s *DatascienceModelDataSourceCrud) SetData() error {
149173
s.D.Set("project_id", *s.Res.ProjectId)
150174
}
151175

176+
if s.Res.RetentionOperationDetails != nil {
177+
s.D.Set("retention_operation_details", []interface{}{RetentionOperationDetailsToMap(s.Res.RetentionOperationDetails)})
178+
} else {
179+
s.D.Set("retention_operation_details", nil)
180+
}
181+
182+
if s.Res.RetentionSetting != nil {
183+
s.D.Set("retention_setting", []interface{}{RetentionSettingToMap(s.Res.RetentionSetting)})
184+
} else {
185+
s.D.Set("retention_setting", nil)
186+
}
187+
152188
s.D.Set("state", s.Res.LifecycleState)
153189

154190
if s.Res.TimeCreated != nil {

0 commit comments

Comments
 (0)