Skip to content

Commit fecdaf5

Browse files
Terraform Team Automationrashik-bhasin
authored andcommitted
Added - Support for FAaaS - Fusion Analytics Warehouse Integration
1 parent 105f750 commit fecdaf5

11 files changed

+844
-209
lines changed

examples/fusionapps/FusionEnvironmentServiceAttachment/fusion_environment_service_attachment.tf

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,21 @@ variable "fusion_environment_service_attachment_display_name" {
1313
}
1414

1515
variable "fusion_environment_service_attachment_service_instance_type" {
16-
default = "DIGITAL_ASSISTANT"
16+
default = "ANALYTICS_WAREHOUSE"
1717
}
1818

1919
variable "fusion_environment_service_attachment_state" {
2020
default = "ACTIVE"
2121
}
2222

23+
variable "service_instance_id" {
24+
default = "test-service-id"
25+
}
26+
27+
variable "fusion_environment_id" {
28+
default = "test-fa-pod-id"
29+
}
30+
2331
provider "oci" {
2432
tenancy_ocid = var.tenancy_ocid
2533
user_ocid = var.user_ocid
@@ -30,10 +38,23 @@ provider "oci" {
3038

3139
data "oci_fusion_apps_fusion_environment_service_attachments" "test_fusion_environment_service_attachments" {
3240
#Required
33-
fusion_environment_id = oci_fusion_apps_fusion_environment.test_fusion_environment.id
41+
fusion_environment_id = var.fusion_environment_id
3442

3543
#Optional
3644
display_name = var.fusion_environment_service_attachment_display_name
3745
service_instance_type = var.fusion_environment_service_attachment_service_instance_type
3846
state = var.fusion_environment_service_attachment_state
3947
}
48+
49+
resource "oci_fusion_apps_fusion_environment_service_attachment" "test_fusion_environment_service_attachment" {
50+
#Required
51+
fusion_environment_id = var.fusion_environment_id
52+
service_instance_id = var.service_instance_id
53+
service_instance_type = var.fusion_environment_service_attachment_service_instance_type
54+
}
55+
56+
data "oci_fusion_apps_fusion_environment_service_attachment" "test_fusion_environment_service_attachment" {
57+
#Required
58+
fusion_environment_id = var.fusion_environment_id
59+
service_attachment_id = oci_fusion_apps_fusion_environment_service_attachment.test_fusion_environment_service_attachment.id
60+
}

internal/integrationtest/fusion_apps_fusion_environment_service_attachment_test.go

Lines changed: 211 additions & 21 deletions
Large diffs are not rendered by default.

internal/service/fusion_apps/fusion_apps_export.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
func init() {
1212
exportFusionAppsFusionEnvironmentRefreshActivityHints.GetIdFn = getFusionAppsFusionEnvironmentRefreshActivityId
1313
exportFusionAppsFusionEnvironmentAdminUserHints.GetIdFn = getFusionAppsFusionEnvironmentAdminUserId
14+
exportFusionAppsFusionEnvironmentServiceAttachmentHints.GetIdFn = getFusionAppsFusionEnvironmentServiceAttachmentId
1415
exportFusionAppsFusionEnvironmentDataMaskingActivityHints.GetIdFn = getFusionAppsFusionEnvironmentDataMaskingActivityId
1516
tf_export.RegisterCompartmentGraphs("fusion_apps", fusionAppsResourceGraph)
1617
}
@@ -37,6 +38,16 @@ func getFusionAppsFusionEnvironmentAdminUserId(resource *tf_export.OCIResource)
3738
return GetFusionEnvironmentAdminUserCompositeId(adminUsername, fusionEnvironmentId), nil
3839
}
3940

41+
func getFusionAppsFusionEnvironmentServiceAttachmentId(resource *tf_export.OCIResource) (string, error) {
42+
43+
fusionEnvironmentId := resource.Parent.Id
44+
serviceAttachmentId, ok := resource.SourceAttributes["id"].(string)
45+
if !ok {
46+
return "", fmt.Errorf("[ERROR] unable to find serviceAttachmentId for FusionApps FusionEnvironmentServiceAttachment")
47+
}
48+
return GetFusionEnvironmentServiceAttachmentCompositeId(fusionEnvironmentId, serviceAttachmentId), nil
49+
}
50+
4051
func getFusionAppsFusionEnvironmentDataMaskingActivityId(resource *tf_export.OCIResource) (string, error) {
4152

4253
dataMaskingActivityId, ok := resource.SourceAttributes["data_masking_activity_id"].(string)
@@ -71,6 +82,18 @@ var exportFusionAppsFusionEnvironmentAdminUserHints = &tf_export.TerraformResour
7182
ResourceAbbreviation: "fusion_environment_admin_user",
7283
}
7384

85+
var exportFusionAppsFusionEnvironmentServiceAttachmentHints = &tf_export.TerraformResourceHints{
86+
ResourceClass: "oci_fusion_apps_fusion_environment_service_attachment",
87+
DatasourceClass: "oci_fusion_apps_fusion_environment_service_attachments",
88+
DatasourceItemsAttr: "service_attachment_collection",
89+
IsDatasourceCollection: true,
90+
ResourceAbbreviation: "fusion_environment_service_attachment",
91+
RequireResourceRefresh: true,
92+
DiscoverableLifecycleStates: []string{
93+
string(oci_fusion_apps.ServiceAttachmentLifecycleStateActive),
94+
},
95+
}
96+
7497
var exportFusionAppsFusionEnvironmentFamilyHints = &tf_export.TerraformResourceHints{
7598
ResourceClass: "oci_fusion_apps_fusion_environment_family",
7699
DatasourceClass: "oci_fusion_apps_fusion_environment_families",
@@ -131,5 +154,11 @@ var fusionAppsResourceGraph = tf_export.TerraformResourceGraph{
131154
"fusion_environment_id": "id",
132155
},
133156
},
157+
{
158+
TerraformResourceHints: exportFusionAppsFusionEnvironmentServiceAttachmentHints,
159+
DatasourceQueryParams: map[string]string{
160+
"fusion_environment_id": "id",
161+
},
162+
},
134163
},
135164
}

internal/service/fusion_apps/fusion_apps_fusion_environment_service_attachment_data_source.go

Lines changed: 16 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -14,70 +14,16 @@ import (
1414
)
1515

1616
func FusionAppsFusionEnvironmentServiceAttachmentDataSource() *schema.Resource {
17-
return &schema.Resource{
18-
Read: readSingularFusionAppsFusionEnvironmentServiceAttachment,
19-
Schema: map[string]*schema.Schema{
20-
"fusion_environment_id": {
21-
Type: schema.TypeString,
22-
Required: true,
23-
},
24-
"service_attachment_id": {
25-
Type: schema.TypeString,
26-
Required: true,
27-
},
28-
// Computed
29-
"action": {
30-
Type: schema.TypeString,
31-
Computed: true,
32-
},
33-
"compartment_id": {
34-
Type: schema.TypeString,
35-
Computed: true,
36-
},
37-
"defined_tags": {
38-
Type: schema.TypeMap,
39-
Computed: true,
40-
Elem: schema.TypeString,
41-
},
42-
"display_name": {
43-
Type: schema.TypeString,
44-
Computed: true,
45-
},
46-
"freeform_tags": {
47-
Type: schema.TypeMap,
48-
Computed: true,
49-
Elem: schema.TypeString,
50-
},
51-
"is_sku_based": {
52-
Type: schema.TypeBool,
53-
Computed: true,
54-
},
55-
"service_instance_id": {
56-
Type: schema.TypeString,
57-
Computed: true,
58-
},
59-
"service_instance_type": {
60-
Type: schema.TypeString,
61-
Computed: true,
62-
},
63-
"service_url": {
64-
Type: schema.TypeString,
65-
Computed: true,
66-
},
67-
"state": {
68-
Type: schema.TypeString,
69-
Computed: true,
70-
},
71-
"time_created": {
72-
Type: schema.TypeString,
73-
Computed: true,
74-
},
75-
"time_updated": {
76-
Type: schema.TypeString,
77-
Computed: true,
78-
},
79-
},
17+
fieldMap := make(map[string]*schema.Schema)
18+
fieldMap["fusion_environment_id"] = &schema.Schema{
19+
Type: schema.TypeString,
20+
Required: true,
8021
}
22+
fieldMap["service_attachment_id"] = &schema.Schema{
23+
Type: schema.TypeString,
24+
Required: true,
25+
}
26+
return tfresource.GetSingularDataSourceItemSchema(FusionAppsFusionEnvironmentServiceAttachmentResource(), fieldMap, readSingularFusionAppsFusionEnvironmentServiceAttachment)
8127
}
8228

8329
func readSingularFusionAppsFusionEnvironmentServiceAttachment(d *schema.ResourceData, m interface{}) error {
@@ -106,9 +52,12 @@ func (s *FusionAppsFusionEnvironmentServiceAttachmentDataSourceCrud) Get() error
10652
request.FusionEnvironmentId = &tmp
10753
}
10854

55+
// the service_attachment_id is a composite id
10956
if serviceAttachmentId, ok := s.D.GetOkExists("service_attachment_id"); ok {
110-
tmp := serviceAttachmentId.(string)
111-
request.ServiceAttachmentId = &tmp
57+
_, serviceAttachmentIdStr, err := parseFusionEnvironmentServiceAttachmentCompositeId(serviceAttachmentId.(string))
58+
if err == nil {
59+
request.ServiceAttachmentId = &serviceAttachmentIdStr
60+
}
11261
}
11362

11463
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "fusion_apps")
@@ -128,22 +77,17 @@ func (s *FusionAppsFusionEnvironmentServiceAttachmentDataSourceCrud) SetData() e
12877
}
12978

13079
s.D.SetId(*s.Res.Id)
131-
132-
s.D.Set("action", s.Res.Action)
133-
80+
13481
if s.Res.CompartmentId != nil {
13582
s.D.Set("compartment_id", *s.Res.CompartmentId)
13683
}
13784

138-
if s.Res.DefinedTags != nil {
139-
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
140-
}
85+
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
14186

14287
if s.Res.DisplayName != nil {
14388
s.D.Set("display_name", *s.Res.DisplayName)
14489
}
14590

146-
s.D.Set("freeform_tags", s.Res.FreeformTags)
14791
s.D.Set("freeform_tags", s.Res.FreeformTags)
14892

14993
if s.Res.IsSkuBased != nil {

0 commit comments

Comments
 (0)