Skip to content

Commit 0c4e92b

Browse files
Terraform Team Automationrashik-bhasin
authored andcommitted
Added - Support for FAaaS Self-service refresh scheduling
1 parent 9f1136b commit 0c4e92b

8 files changed

+104
-62
lines changed

examples/fusionapps/FusionEnvironmentRefreshActivity/fusion_environment_refresh_activity.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ variable "private_key_path" {}
88
variable "region" {}
99

1010
variable "fusion_environment_refresh_activity_display_name" {
11-
default = "displayName"
11+
default = "Manual_Execute_Refresh_2022-12-02T03:48:18.932Z"
1212
}
1313

1414
variable "fusion_environment_refresh_activity_state" {

internal/integrationtest/fusion_apps_fusion_environment_refresh_activity_test.go

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ import (
1313

1414
"github.com/oracle/terraform-provider-oci/httpreplay"
1515
"github.com/oracle/terraform-provider-oci/internal/acctest"
16-
1716
"github.com/oracle/terraform-provider-oci/internal/resourcediscovery"
18-
1917
"github.com/oracle/terraform-provider-oci/internal/utils"
2018
)
2119

@@ -25,20 +23,11 @@ var (
2523

2624
FusionAppsFusionAppsFusionEnvironmentRefreshActivitySingularDataSourceRepresentation = map[string]interface{}{
2725
"fusion_environment_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_fusion_apps_fusion_environment.test_fusion_environment.id}`},
28-
"refresh_activity_id": acctest.Representation{RepType: acctest.Required, Create: `{}`},
26+
"refresh_activity_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_fusion_apps_fusion_environment_refresh_activity.test_fusion_environment_refresh_activity.id}`},
2927
}
3028

3129
FusionAppsFusionAppsFusionEnvironmentRefreshActivityDataSourceRepresentation = map[string]interface{}{
32-
"fusion_environment_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_fusion_apps_fusion_environment.test_fusion_environment.id}`},
33-
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`},
34-
"state": acctest.Representation{RepType: acctest.Optional, Create: `ACTIVE`},
35-
"time_expected_finish_less_than_or_equal_to": acctest.Representation{RepType: acctest.Optional, Create: `timeExpectedFinishLessThanOrEqualTo`},
36-
"time_scheduled_start_greater_than_or_equal_to": acctest.Representation{RepType: acctest.Optional, Create: `timeScheduledStartGreaterThanOrEqualTo`},
37-
"filter": acctest.RepresentationGroup{RepType: acctest.Required, Group: FusionAppsFusionEnvironmentRefreshActivityDataSourceFilterRepresentation}}
38-
FusionAppsFusionEnvironmentRefreshActivityDataSourceFilterRepresentation = map[string]interface{}{
39-
"name": acctest.Representation{RepType: acctest.Required, Create: `id`},
40-
"values": acctest.Representation{RepType: acctest.Required, Create: []string{`${oci_fusion_apps_fusion_environment_refresh_activity.test_fusion_environment_refresh_activity.id}`}},
41-
}
30+
"fusion_environment_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_fusion_apps_fusion_environment.test_fusion_environment.id}`}}
4231

4332
FusionAppsFusionEnvironmentRefreshActivityRepresentation = map[string]interface{}{
4433
"fusion_environment_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_fusion_apps_fusion_environment.test_fusion_environment.id}`},
@@ -79,7 +68,7 @@ func TestFusionAppsFusionEnvironmentRefreshActivityResource_basic(t *testing.T)
7968

8069
func(s *terraform.State) (err error) {
8170
resId, err = acctest.FromInstanceState(s, resourceName, "id")
82-
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
71+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "false")); isEnableExportCompartment {
8372
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
8473
return errExport
8574
}
@@ -96,11 +85,7 @@ func TestFusionAppsFusionEnvironmentRefreshActivityResource_basic(t *testing.T)
9685
compartmentIdVariableStr + FusionAppsFusionEnvironmentRefreshActivityResourceDependencies +
9786
acctest.GenerateResourceFromRepresentationMap("oci_fusion_apps_fusion_environment_refresh_activity", "test_fusion_environment_refresh_activity", acctest.Optional, acctest.Update, FusionAppsFusionEnvironmentRefreshActivityRepresentation),
9887
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
99-
resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName"),
10088
resource.TestCheckResourceAttrSet(datasourceName, "fusion_environment_id"),
101-
resource.TestCheckResourceAttr(datasourceName, "state", "ACTIVE"),
102-
resource.TestCheckResourceAttrSet(datasourceName, "time_expected_finish_less_than_or_equal_to"),
103-
resource.TestCheckResourceAttrSet(datasourceName, "time_scheduled_start_greater_than_or_equal_to"),
10489

10590
resource.TestCheckResourceAttr(datasourceName, "refresh_activity_collection.#", "1"),
10691
resource.TestCheckResourceAttr(datasourceName, "refresh_activity_collection.0.items.#", "1"),
@@ -117,14 +102,21 @@ func TestFusionAppsFusionEnvironmentRefreshActivityResource_basic(t *testing.T)
117102

118103
resource.TestCheckResourceAttrSet(singularDatasourceName, "display_name"),
119104
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
105+
// if there's no refresh issue, this field will be null, so commented out this line
106+
// resource.TestCheckResourceAttr(singularDatasourceName, "refresh_issue_details_list.#", "1"),
120107
resource.TestCheckResourceAttrSet(singularDatasourceName, "service_availability"),
121108
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
122109
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_accepted"),
123110
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_expected_finish"),
124-
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_finished"),
125-
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_of_restoration_point"),
126-
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_scheduled_start"),
127-
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),
111+
// Refresh resource is a scheduled activity, the create API is to create the activity.
112+
// This field will only be set when the actual refresh finished, commented out
113+
// resource.TestCheckResourceAttrSet(singularDatasourceName, "time_finished"),
114+
115+
// This field will only be set when the actual refresh finished, commented out
116+
// resource.TestCheckResourceAttrSet(singularDatasourceName, "time_of_restoration_point"),
117+
118+
// This field will only be set when the actual refresh finished, commented out
119+
// resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),
128120
),
129121
},
130122
})

internal/service/fusion_apps/fusion_apps_export.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ var exportFusionAppsFusionEnvironmentRefreshActivityHints = &tf_export.Terraform
5656
ResourceAbbreviation: "fusion_environment_refresh_activity",
5757
RequireResourceRefresh: true,
5858
DiscoverableLifecycleStates: []string{
59-
string(oci_fusion_apps.DataMaskingActivityLifecycleStateSucceeded),
59+
string(oci_fusion_apps.RefreshActivityLifecycleStateAccepted),
60+
string(oci_fusion_apps.RefreshActivityLifecycleStateInProgress),
61+
string(oci_fusion_apps.RefreshActivityLifecycleStateNeedsAttention),
62+
string(oci_fusion_apps.RefreshActivityLifecycleStateSucceeded),
6063
},
6164
}
6265

@@ -100,7 +103,7 @@ var exportFusionAppsFusionEnvironmentDataMaskingActivityHints = &tf_export.Terra
100103
ResourceAbbreviation: "fusion_environment_data_masking_activity",
101104
RequireResourceRefresh: true,
102105
DiscoverableLifecycleStates: []string{
103-
string(oci_fusion_apps.RefreshActivityLifecycleStateSucceeded),
106+
string(oci_fusion_apps.DataMaskingActivityLifecycleStateSucceeded),
104107
},
105108
}
106109

internal/service/fusion_apps/fusion_apps_fusion_environment_refresh_activity_data_source.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,12 @@ func (s *FusionAppsFusionEnvironmentRefreshActivityDataSourceCrud) Get() error {
5252
request.FusionEnvironmentId = &tmp
5353
}
5454

55+
// the refresh_activity_id is a composite id
5556
if refreshActivityId, ok := s.D.GetOkExists("refresh_activity_id"); ok {
56-
tmp := refreshActivityId.(string)
57-
request.RefreshActivityId = &tmp
57+
_, refreshActivityIdString, err := parseFusionEnvironmentRefreshActivityCompositeId(refreshActivityId.(string))
58+
if err == nil {
59+
request.RefreshActivityId = &refreshActivityIdString
60+
}
5861
}
5962

6063
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "fusion_apps")
@@ -81,6 +84,12 @@ func (s *FusionAppsFusionEnvironmentRefreshActivityDataSourceCrud) SetData() err
8184

8285
s.D.Set("lifecycle_details", s.Res.LifecycleDetails)
8386

87+
refreshIssueDetailsList := []interface{}{}
88+
for _, item := range s.Res.RefreshIssueDetailsList {
89+
refreshIssueDetailsList = append(refreshIssueDetailsList, RefreshIssueDetailsToMap(item))
90+
}
91+
s.D.Set("refresh_issue_details_list", refreshIssueDetailsList)
92+
8493
s.D.Set("service_availability", s.Res.ServiceAvailability)
8594

8695
if s.Res.SourceFusionEnvironmentId != nil {
@@ -105,10 +114,6 @@ func (s *FusionAppsFusionEnvironmentRefreshActivityDataSourceCrud) SetData() err
105114
s.D.Set("time_of_restoration_point", s.Res.TimeOfRestorationPoint.String())
106115
}
107116

108-
if s.Res.TimeScheduledStart != nil {
109-
s.D.Set("time_scheduled_start", s.Res.TimeScheduledStart.String())
110-
}
111-
112117
if s.Res.TimeUpdated != nil {
113118
s.D.Set("time_updated", s.Res.TimeUpdated.String())
114119
}

internal/service/fusion_apps/fusion_apps_fusion_environment_refresh_activity_resource.go

Lines changed: 66 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ func FusionAppsFusionEnvironmentRefreshActivityResource() *schema.Resource {
2727
Importer: &schema.ResourceImporter{
2828
State: schema.ImportStatePassthrough,
2929
},
30-
Timeouts: tfresource.DefaultTimeout,
31-
Create: createFusionAppsFusionEnvironmentRefreshActivity,
32-
Read: readFusionAppsFusionEnvironmentRefreshActivity,
33-
Delete: deleteFusionAppsFusionEnvironmentRefreshActivity,
30+
Timeouts: &schema.ResourceTimeout{
31+
Create: tfresource.GetTimeoutDuration("12h"),
32+
},
33+
Create: createFusionAppsFusionEnvironmentRefreshActivity,
34+
Read: readFusionAppsFusionEnvironmentRefreshActivity,
35+
Delete: deleteFusionAppsFusionEnvironmentRefreshActivity,
3436
Schema: map[string]*schema.Schema{
3537
// Required
3638
"fusion_environment_id": {
@@ -44,9 +46,11 @@ func FusionAppsFusionEnvironmentRefreshActivityResource() *schema.Resource {
4446
ForceNew: true,
4547
},
4648

47-
// Optional
48-
4949
// Computed
50+
"refresh_activity_id": {
51+
Type: schema.TypeString,
52+
Computed: true,
53+
},
5054
"display_name": {
5155
Type: schema.TypeString,
5256
Computed: true,
@@ -55,6 +59,23 @@ func FusionAppsFusionEnvironmentRefreshActivityResource() *schema.Resource {
5559
Type: schema.TypeString,
5660
Computed: true,
5761
},
62+
"refresh_issue_details_list": {
63+
Type: schema.TypeList,
64+
Computed: true,
65+
Elem: &schema.Resource{
66+
Schema: map[string]*schema.Schema{
67+
// Required
68+
69+
// Optional
70+
71+
// Computed
72+
"refresh_issues": {
73+
Type: schema.TypeString,
74+
Computed: true,
75+
},
76+
},
77+
},
78+
},
5879
"service_availability": {
5980
Type: schema.TypeString,
6081
Computed: true,
@@ -79,10 +100,6 @@ func FusionAppsFusionEnvironmentRefreshActivityResource() *schema.Resource {
79100
Type: schema.TypeString,
80101
Computed: true,
81102
},
82-
"time_scheduled_start": {
83-
Type: schema.TypeString,
84-
Computed: true,
85-
},
86103
"time_updated": {
87104
Type: schema.TypeString,
88105
Computed: true,
@@ -119,7 +136,7 @@ type FusionAppsFusionEnvironmentRefreshActivityResourceCrud struct {
119136
}
120137

121138
func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) ID() string {
122-
return GetFusionEnvironmentRefreshActivityCompositeId(s.D.Get("fusion_environment_id").(string), s.D.Get("refresh_activity_id").(string))
139+
return GetFusionEnvironmentRefreshActivityCompositeId(s.D.Get("fusion_environment_id").(string), *(s.Res).Id)
123140
}
124141

125142
func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) CreatedPending() []string {
@@ -130,6 +147,7 @@ func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) CreatedPending(
130147

131148
func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) CreatedTarget() []string {
132149
return []string{
150+
string(oci_fusion_apps.RefreshActivityLifecycleStateNeedsAttention),
133151
string(oci_fusion_apps.RefreshActivityLifecycleStateSucceeded),
134152
}
135153
}
@@ -169,14 +187,16 @@ func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) Create() error
169187
func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) getFusionEnvironmentRefreshActivityFromWorkRequest(workId *string, retryPolicy *oci_common.RetryPolicy,
170188
actionTypeEnum oci_fusion_apps.WorkRequestResourceActionTypeEnum, timeout time.Duration) error {
171189

172-
// Wait until it finishes
173-
fusionEnvironmentRefreshActivityId, err := fusionEnvironmentRefreshActivityWaitForWorkRequest(workId, "fusion_apps",
190+
// We don't wait for the actual refresh complete,
191+
// the work request will track the actual refresh instead of the refresh resource creation
192+
// As long as the work request is returned, that means the refresh resource is created
193+
fusionEnvironmentRefreshActivityId, err := fusionEnvironmentRefreshActivityWaitForWorkRequest(workId, "refreshactivity",
174194
actionTypeEnum, timeout, s.DisableNotFoundRetries, s.Client)
175195

176196
if err != nil {
177197
return err
178198
}
179-
s.D.SetId(*fusionEnvironmentRefreshActivityId)
199+
s.D.Set("refresh_activity_id", fusionEnvironmentRefreshActivityId)
180200

181201
return s.Get()
182202
}
@@ -196,9 +216,10 @@ func fusionEnvironmentRefreshActivityWorkRequestShouldRetryFunc(timeout time.Dur
196216
return true
197217
}
198218

199-
// Only stop if the time Finished is set
219+
// This work request will track the actual refresh, for creation,
220+
//when the work request is accepted then the refresh creation is succeeded
200221
if workRequestResponse, ok := response.Response.(oci_fusion_apps.GetWorkRequestResponse); ok {
201-
return workRequestResponse.TimeFinished == nil
222+
return workRequestResponse.TimeAccepted == nil
202223
}
203224
return false
204225
}
@@ -212,11 +233,14 @@ func fusionEnvironmentRefreshActivityWaitForWorkRequest(wId *string, entityType
212233
response := oci_fusion_apps.GetWorkRequestResponse{}
213234
stateConf := &resource.StateChangeConf{
214235
Pending: []string{
215-
string(oci_fusion_apps.WorkRequestStatusInProgress),
216-
string(oci_fusion_apps.WorkRequestStatusAccepted),
217236
string(oci_fusion_apps.WorkRequestStatusCanceling),
218237
},
238+
// We don't wait for the actual refresh complete,
239+
// the work request will track the actual refresh instead of the refresh resource creation
240+
// As long as the work request is returned, that means the refresh resource is created
219241
Target: []string{
242+
string(oci_fusion_apps.WorkRequestStatusInProgress),
243+
string(oci_fusion_apps.WorkRequestStatusAccepted),
220244
string(oci_fusion_apps.WorkRequestStatusSucceeded),
221245
string(oci_fusion_apps.WorkRequestStatusFailed),
222246
string(oci_fusion_apps.WorkRequestStatusCanceled),
@@ -243,10 +267,8 @@ func fusionEnvironmentRefreshActivityWaitForWorkRequest(wId *string, entityType
243267
// The work request response contains an array of objects that finished the operation
244268
for _, res := range response.Resources {
245269
if strings.Contains(strings.ToLower(*res.EntityType), entityType) {
246-
if res.ActionType == action {
247-
identifier = res.Identifier
248-
break
249-
}
270+
identifier = res.Identifier
271+
break
250272
}
251273
}
252274

@@ -329,6 +351,12 @@ func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) SetData() error
329351

330352
s.D.Set("lifecycle_details", s.Res.LifecycleDetails)
331353

354+
refreshIssueDetailsList := []interface{}{}
355+
for _, item := range s.Res.RefreshIssueDetailsList {
356+
refreshIssueDetailsList = append(refreshIssueDetailsList, RefreshIssueDetailsToMap(item))
357+
}
358+
s.D.Set("refresh_issue_details_list", refreshIssueDetailsList)
359+
332360
s.D.Set("service_availability", s.Res.ServiceAvailability)
333361

334362
if s.Res.SourceFusionEnvironmentId != nil {
@@ -353,10 +381,6 @@ func (s *FusionAppsFusionEnvironmentRefreshActivityResourceCrud) SetData() error
353381
s.D.Set("time_of_restoration_point", s.Res.TimeOfRestorationPoint.String())
354382
}
355383

356-
if s.Res.TimeScheduledStart != nil {
357-
s.D.Set("time_scheduled_start", s.Res.TimeScheduledStart.String())
358-
}
359-
360384
if s.Res.TimeUpdated != nil {
361385
s.D.Set("time_updated", s.Res.TimeUpdated.String())
362386
}
@@ -397,6 +421,12 @@ func RefreshActivitySummaryToMap(obj oci_fusion_apps.RefreshActivitySummary) map
397421

398422
result["lifecycle_details"] = string(obj.LifecycleDetails)
399423

424+
refreshIssueDetailsList := []interface{}{}
425+
for _, item := range obj.RefreshIssueDetailsList {
426+
refreshIssueDetailsList = append(refreshIssueDetailsList, RefreshIssueDetailsToMap(item))
427+
}
428+
result["refresh_issue_details_list"] = refreshIssueDetailsList
429+
400430
result["service_availability"] = string(obj.ServiceAvailability)
401431

402432
if obj.SourceFusionEnvironmentId != nil {
@@ -421,13 +451,19 @@ func RefreshActivitySummaryToMap(obj oci_fusion_apps.RefreshActivitySummary) map
421451
result["time_of_restoration_point"] = obj.TimeOfRestorationPoint.String()
422452
}
423453

424-
if obj.TimeScheduledStart != nil {
425-
result["time_scheduled_start"] = obj.TimeScheduledStart.String()
426-
}
427-
428454
if obj.TimeUpdated != nil {
429455
result["time_updated"] = obj.TimeUpdated.String()
430456
}
431457

432458
return result
433459
}
460+
461+
func RefreshIssueDetailsToMap(obj oci_fusion_apps.RefreshIssueDetails) map[string]interface{} {
462+
result := map[string]interface{}{}
463+
464+
if obj.RefreshIssues != nil {
465+
result["refresh_issues"] = string(*obj.RefreshIssues)
466+
}
467+
468+
return result
469+
}

website/docs/d/fusion_apps_fusion_environment_refresh_activities.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ The following attributes are exported:
5252
* `display_name` - A friendly name for the refresh activity. Can be changed later.
5353
* `id` - The unique identifier (OCID) of the refresh activity. Can't be changed after creation.
5454
* `lifecycle_details` - A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in Failed state.
55+
* `refresh_issue_details_list` - Details of refresh investigation information, each item represents a different issue.
56+
* `refresh_issues` - Detail reasons of refresh failure or validation failure that needs to be shown to customer.
5557
* `service_availability` - Service availability / impact during refresh activity execution up down
5658
* `source_fusion_environment_id` - The OCID of the Fusion environment that is the source environment for the refresh.
5759
* `state` - The current state of the refreshActivity.

website/docs/d/fusion_apps_fusion_environment_refresh_activity.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ The following attributes are exported:
3737
* `display_name` - A friendly name for the refresh activity. Can be changed later.
3838
* `id` - The unique identifier (OCID) of the refresh activity. Can't be changed after creation.
3939
* `lifecycle_details` - A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in Failed state.
40+
* `refresh_issue_details_list` - Details of refresh investigation information, each item represents a different issue.
41+
* `refresh_issues` - Detail reasons of refresh failure or validation failure that needs to be shown to customer.
4042
* `service_availability` - Service availability / impact during refresh activity execution up down
4143
* `source_fusion_environment_id` - The OCID of the Fusion environment that is the source environment for the refresh.
4244
* `state` - The current state of the refreshActivity.

website/docs/r/fusion_apps_fusion_environment_refresh_activity.html.markdown

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ resource "oci_fusion_apps_fusion_environment_refresh_activity" "test_fusion_envi
2828
The following arguments are supported:
2929

3030
* `fusion_environment_id` - (Required) unique FusionEnvironment identifier
31-
* `source_fusion_environment_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source environment
31+
* `source_fusion_environment_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source environment
3232

3333

3434
** IMPORTANT **
@@ -41,6 +41,8 @@ The following attributes are exported:
4141
* `display_name` - A friendly name for the refresh activity. Can be changed later.
4242
* `id` - The unique identifier (OCID) of the refresh activity. Can't be changed after creation.
4343
* `lifecycle_details` - A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in Failed state.
44+
* `refresh_issue_details_list` - Details of refresh investigation information, each item represents a different issue.
45+
* `refresh_issues` - Detail reasons of refresh failure or validation failure that needs to be shown to customer.
4446
* `service_availability` - Service availability / impact during refresh activity execution up down
4547
* `source_fusion_environment_id` - The OCID of the Fusion environment that is the source environment for the refresh.
4648
* `state` - The current state of the refreshActivity.

0 commit comments

Comments
 (0)