Skip to content

Commit c0b9cad

Browse files
Terraform Team Automationravinitp
authored andcommitted
Added - Support for OAC Embedding options for internal services and Identity Domains first-class support in Analytics APIs
1 parent 59d0fd7 commit c0b9cad

7 files changed

+113
-16
lines changed

internal/integrationtest/analytics_analytics_instance_test.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,16 @@ var (
5959
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
6060
"feature_set": acctest.Representation{RepType: acctest.Required, Create: `ENTERPRISE_ANALYTICS`},
6161
"license_type": acctest.Representation{RepType: acctest.Required, Create: `LICENSE_INCLUDED`, Update: `BRING_YOUR_OWN_LICENSE`},
62+
"admin_user": acctest.Representation{RepType: acctest.Optional, Create: `adminUser`},
6263
"name": acctest.Representation{RepType: acctest.Required, Create: analyticsinstanceOptionalName},
6364
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]map[string]string{"Oracle-Tags": {"CreatedBy": "rbm"}}, Update: map[string]map[string]string{"Oracle-Tags": {"CreatedBy": "dave"}}},
6465
"description": acctest.Representation{RepType: acctest.Optional, Create: `description`, Update: `description2`},
66+
"domain_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_identity_domain.test_domain.id}`},
6567
"email_notification": acctest.Representation{RepType: acctest.Optional, Create: `emailNotification`, Update: `emailNotification2`},
68+
"feature_bundle": acctest.Representation{RepType: acctest.Required, Create: `EE_EMBEDDED`},
6669
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
6770
"kms_key_id": acctest.Representation{RepType: acctest.Optional, Create: `${lookup(data.oci_kms_keys.test_keys_dependency.keys[0], "id")}`, Update: `${lookup(data.oci_kms_keys.test_keys_dependency.keys[0], "id")}`},
68-
"idcs_access_token": acctest.Representation{RepType: acctest.Required, Create: `${var.idcs_access_token}`},
71+
"idcs_access_token": acctest.Representation{RepType: acctest.Optional, Create: `${var.idcs_access_token}`},
6972
"network_endpoint_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: analyticsInstanceNetworkEndpointDetailsRepresentation},
7073
"state": acctest.Representation{RepType: acctest.Optional, Create: `ACTIVE`, Update: `ACTIVE`},
7174
}
@@ -81,7 +84,7 @@ var (
8184
"email_notification": acctest.Representation{RepType: acctest.Optional, Create: `emailNotification`, Update: `emailNotification2`},
8285
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance", "profileId": "oac76"}, Update: map[string]string{"Department": "Accounting"}},
8386
"kms_key_id": acctest.Representation{RepType: acctest.Optional, Create: `${lookup(data.oci_kms_keys.test_keys_dependency.keys[0], "id")}`, Update: `${lookup(data.oci_kms_keys.test_keys_dependency.keys[0], "id")}`},
84-
"idcs_access_token": acctest.Representation{RepType: acctest.Required, Create: `${var.idcs_access_token}`},
87+
"idcs_access_token": acctest.Representation{RepType: acctest.Optional, Create: `${var.idcs_access_token}`},
8588
"state": acctest.Representation{RepType: acctest.Optional, Create: `ACTIVE`, Update: `ACTIVE`},
8689
}
8790

@@ -128,6 +131,7 @@ var (
128131
AnalyticsAnalyticsInstanceResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_network_security_group", "test_network_security_group", acctest.Required, acctest.Create, CoreNetworkSecurityGroupRepresentation) +
129132
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) +
130133
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) +
134+
acctest.GenerateResourceFromRepresentationMap("oci_identity_domain", "test_domain", acctest.Required, acctest.Create, IdentityDomainRepresentation) +
131135
KeyResourceDependencyConfig
132136
)
133137

@@ -170,7 +174,6 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
170174
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_value", "2"),
171175
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
172176
resource.TestCheckResourceAttr(resourceName, "feature_set", "ENTERPRISE_ANALYTICS"),
173-
resource.TestCheckResourceAttrSet(resourceName, "idcs_access_token"),
174177
resource.TestCheckResourceAttr(resourceName, "license_type", "LICENSE_INCLUDED"),
175178
resource.TestCheckResourceAttr(resourceName, "name", analyticsinstanceName),
176179
resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"),
@@ -191,12 +194,15 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
191194
Config: config + compartmentIdVariableStr + idcsAccessTokenVariableStr + AnalyticsAnalyticsInstanceResourceDependencies +
192195
acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance", "test_analytics_instance", acctest.Optional, acctest.Create, analyticsPublicInstanceRepresentation),
193196
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
197+
resource.TestCheckResourceAttr(resourceName, "admin_user", "adminUser"),
194198
resource.TestCheckResourceAttr(resourceName, "capacity.#", "1"),
195199
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_type", "OLPU_COUNT"),
196200
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_value", "2"),
197201
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
198202
resource.TestCheckResourceAttr(resourceName, "description", "description"),
203+
resource.TestCheckResourceAttrSet(resourceName, "domain_id"),
199204
resource.TestCheckResourceAttr(resourceName, "email_notification", "emailNotification"),
205+
resource.TestCheckResourceAttr(resourceName, "feature_bundle", "EE_EMBEDDED"),
200206
resource.TestCheckResourceAttr(resourceName, "feature_set", "ENTERPRISE_ANALYTICS"),
201207
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "2"),
202208
resource.TestCheckResourceAttrSet(resourceName, "id"),
@@ -296,6 +302,7 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
296302
"network_endpoint_details": acctest.RepresentationGroup{RepType: acctest.Required, Group: analyticsInstanceNetworkEndpointDetailsUpdateRepresentation},
297303
})),
298304
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
305+
resource.TestCheckResourceAttr(resourceName, "admin_user", "adminUser"),
299306
resource.TestCheckResourceAttr(resourceName, "capacity.#", "1"),
300307
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_type", "OLPU_COUNT"),
301308
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_value", "2"),
@@ -330,9 +337,11 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
330337
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU),
331338
resource.TestCheckResourceAttr(resourceName, "defined_tags.%", "2"),
332339
resource.TestCheckResourceAttr(resourceName, "description", "description"),
340+
resource.TestCheckResourceAttrSet(resourceName, "domain_id"),
333341
resource.TestCheckResourceAttr(resourceName, "email_notification", "emailNotification"),
334342
resource.TestCheckResourceAttr(resourceName, "feature_set", "ENTERPRISE_ANALYTICS"),
335343
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
344+
resource.TestCheckResourceAttr(resourceName, "feature_bundle", "EE_EMBEDDED"),
336345
resource.TestCheckResourceAttrSet(resourceName, "id"),
337346
resource.TestCheckResourceAttrSet(resourceName, "idcs_access_token"),
338347
resource.TestCheckResourceAttrSet(resourceName, "kms_key_id"),
@@ -435,13 +444,16 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
435444
Config: config + compartmentIdVariableStr + idcsAccessTokenVariableStr + AnalyticsAnalyticsInstanceResourceDependencies +
436445
acctest.GenerateResourceFromRepresentationMap("oci_analytics_analytics_instance", "test_analytics_instance", acctest.Optional, acctest.Update, analyticsInstanceRepresentation),
437446
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
447+
resource.TestCheckResourceAttr(resourceName, "admin_user", "adminUser"),
438448
resource.TestCheckResourceAttr(resourceName, "capacity.#", "1"),
439449
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_type", "OLPU_COUNT"),
440450
resource.TestCheckResourceAttr(resourceName, "capacity.0.capacity_value", "2"),
441451
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
442452
resource.TestCheckResourceAttr(resourceName, "defined_tags.%", "2"),
443453
resource.TestCheckResourceAttr(resourceName, "description", "description2"),
454+
resource.TestCheckResourceAttrSet(resourceName, "domain_id"),
444455
resource.TestCheckResourceAttr(resourceName, "email_notification", "emailNotification2"),
456+
resource.TestCheckResourceAttr(resourceName, "feature_bundle", "EE_EMBEDDED"),
445457
resource.TestCheckResourceAttr(resourceName, "feature_set", "ENTERPRISE_ANALYTICS"),
446458
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
447459
resource.TestCheckResourceAttrSet(resourceName, "id"),
@@ -549,6 +561,7 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
549561
resource.TestCheckResourceAttr(datasourceName, "analytics_instances.0.description", "description2"),
550562
resource.TestCheckResourceAttr(datasourceName, "analytics_instances.0.email_notification", "emailNotification2"),
551563
resource.TestCheckResourceAttr(datasourceName, "analytics_instances.0.feature_set", "ENTERPRISE_ANALYTICS"),
564+
resource.TestCheckResourceAttr(datasourceName, "analytics_instances.0.freeform_tags.%", "1"),
552565
resource.TestCheckResourceAttrSet(datasourceName, "analytics_instances.0.id"),
553566
resource.TestCheckResourceAttr(datasourceName, "analytics_instances.0.license_type", "BRING_YOUR_OWN_LICENSE"),
554567
resource.TestCheckResourceAttr(datasourceName, "analytics_instances.0.name", analyticsinstanceOptionalName),
@@ -577,6 +590,7 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
577590
resource.TestCheckResourceAttr(resourceName, "defined_tags.%", "2"),
578591
resource.TestCheckResourceAttr(singularDatasourceName, "description", "description2"),
579592
resource.TestCheckResourceAttr(singularDatasourceName, "email_notification", "emailNotification2"),
593+
resource.TestCheckResourceAttr(singularDatasourceName, "feature_bundle", "EE_EMBEDDED"),
580594
resource.TestCheckResourceAttr(singularDatasourceName, "feature_set", "ENTERPRISE_ANALYTICS"),
581595
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
582596
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
@@ -596,6 +610,7 @@ func TestAnalyticsAnalyticsInstanceResource_basic(t *testing.T) {
596610
ImportState: true,
597611
ImportStateVerify: true,
598612
ImportStateVerifyIgnore: []string{
613+
"admin_user",
599614
"idcs_access_token",
600615
},
601616
ResourceName: resourceName,

internal/service/analytics/analytics_analytics_instance_data_source.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,16 @@ func (s *AnalyticsAnalyticsInstanceDataSourceCrud) SetData() error {
8484
s.D.Set("description", *s.Res.Description)
8585
}
8686

87+
if s.Res.DomainId != nil {
88+
s.D.Set("domain_id", *s.Res.DomainId)
89+
}
90+
8791
if s.Res.EmailNotification != nil {
8892
s.D.Set("email_notification", *s.Res.EmailNotification)
8993
}
9094

95+
s.D.Set("feature_bundle", s.Res.FeatureBundle)
96+
9197
s.D.Set("feature_set", s.Res.FeatureSet)
9298

9399
s.D.Set("freeform_tags", s.Res.FreeformTags)
@@ -118,6 +124,10 @@ func (s *AnalyticsAnalyticsInstanceDataSourceCrud) SetData() error {
118124

119125
s.D.Set("state", s.Res.LifecycleState)
120126

127+
if s.Res.SystemTags != nil {
128+
s.D.Set("system_tags", tfresource.SystemTagsToMap(s.Res.SystemTags))
129+
}
130+
121131
if s.Res.TimeCreated != nil {
122132
s.D.Set("time_created", s.Res.TimeCreated.String())
123133
}

internal/service/analytics/analytics_analytics_instance_resource.go

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func AnalyticsAnalyticsInstanceResource() *schema.Resource {
7272
},
7373
"idcs_access_token": {
7474
Type: schema.TypeString,
75-
Required: true,
75+
Optional: true,
7676
Sensitive: true,
7777
StateFunc: tfresource.GetMd5Hash,
7878
},
@@ -87,6 +87,12 @@ func AnalyticsAnalyticsInstanceResource() *schema.Resource {
8787
},
8888

8989
// Optional
90+
"admin_user": {
91+
Type: schema.TypeString,
92+
Optional: true,
93+
Computed: true,
94+
ForceNew: true,
95+
},
9096
"defined_tags": {
9197
Type: schema.TypeMap,
9298
Optional: true,
@@ -99,11 +105,23 @@ func AnalyticsAnalyticsInstanceResource() *schema.Resource {
99105
Optional: true,
100106
Computed: true,
101107
},
108+
"domain_id": {
109+
Type: schema.TypeString,
110+
Optional: true,
111+
Computed: true,
112+
ForceNew: true,
113+
},
102114
"email_notification": {
103115
Type: schema.TypeString,
104116
Optional: true,
105117
Computed: true,
106118
},
119+
"feature_bundle": {
120+
Type: schema.TypeString,
121+
Optional: true,
122+
Computed: true,
123+
ForceNew: true,
124+
},
107125
"freeform_tags": {
108126
Type: schema.TypeMap,
109127
Optional: true,
@@ -219,6 +237,11 @@ func AnalyticsAnalyticsInstanceResource() *schema.Resource {
219237
Type: schema.TypeString,
220238
Computed: true,
221239
},
240+
"system_tags": {
241+
Type: schema.TypeMap,
242+
Computed: true,
243+
Elem: schema.TypeString,
244+
},
222245
"time_created": {
223246
Type: schema.TypeString,
224247
Computed: true,
@@ -378,6 +401,11 @@ func (s *AnalyticsAnalyticsInstanceResourceCrud) DeletedTarget() []string {
378401
func (s *AnalyticsAnalyticsInstanceResourceCrud) Create() error {
379402
request := oci_analytics.CreateAnalyticsInstanceRequest{}
380403

404+
if adminUser, ok := s.D.GetOkExists("admin_user"); ok {
405+
tmp := adminUser.(string)
406+
request.AdminUser = &tmp
407+
}
408+
381409
if capacity, ok := s.D.GetOkExists("capacity"); ok {
382410
if tmpList := capacity.([]interface{}); len(tmpList) > 0 {
383411
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "capacity", 0)
@@ -407,11 +435,20 @@ func (s *AnalyticsAnalyticsInstanceResourceCrud) Create() error {
407435
request.Description = &tmp
408436
}
409437

438+
if domainId, ok := s.D.GetOkExists("domain_id"); ok {
439+
tmp := domainId.(string)
440+
request.DomainId = &tmp
441+
}
442+
410443
if emailNotification, ok := s.D.GetOkExists("email_notification"); ok {
411444
tmp := emailNotification.(string)
412445
request.EmailNotification = &tmp
413446
}
414447

448+
if featureBundle, ok := s.D.GetOkExists("feature_bundle"); ok {
449+
request.FeatureBundle = oci_analytics.FeatureBundleEnum(featureBundle.(string))
450+
}
451+
415452
if featureSet, ok := s.D.GetOkExists("feature_set"); ok {
416453
request.FeatureSet = oci_analytics.FeatureSetEnum(featureSet.(string))
417454
}
@@ -760,10 +797,16 @@ func (s *AnalyticsAnalyticsInstanceResourceCrud) SetData() error {
760797
s.D.Set("description", *s.Res.Description)
761798
}
762799

800+
if s.Res.DomainId != nil {
801+
s.D.Set("domain_id", *s.Res.DomainId)
802+
}
803+
763804
if s.Res.EmailNotification != nil {
764805
s.D.Set("email_notification", *s.Res.EmailNotification)
765806
}
766807

808+
s.D.Set("feature_bundle", s.Res.FeatureBundle)
809+
767810
s.D.Set("feature_set", s.Res.FeatureSet)
768811

769812
s.D.Set("freeform_tags", s.Res.FreeformTags)
@@ -794,6 +837,10 @@ func (s *AnalyticsAnalyticsInstanceResourceCrud) SetData() error {
794837

795838
s.D.Set("state", s.Res.LifecycleState)
796839

840+
if s.Res.SystemTags != nil {
841+
s.D.Set("system_tags", tfresource.SystemTagsToMap(s.Res.SystemTags))
842+
}
843+
797844
if s.Res.TimeCreated != nil {
798845
s.D.Set("time_created", s.Res.TimeCreated.String())
799846
}

internal/service/analytics/analytics_analytics_instances_data_source.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ func (s *AnalyticsAnalyticsInstancesDataSourceCrud) SetData() error {
132132
analyticsInstance["capacity"] = nil
133133
}
134134

135+
if r.DefinedTags != nil {
136+
analyticsInstance["defined_tags"] = tfresource.DefinedTagsToMap(r.DefinedTags)
137+
}
138+
135139
if r.Description != nil {
136140
analyticsInstance["description"] = *r.Description
137141
}
@@ -142,6 +146,8 @@ func (s *AnalyticsAnalyticsInstancesDataSourceCrud) SetData() error {
142146

143147
analyticsInstance["feature_set"] = r.FeatureSet
144148

149+
analyticsInstance["freeform_tags"] = r.FreeformTags
150+
145151
if r.Id != nil {
146152
analyticsInstance["id"] = *r.Id
147153
}
@@ -168,6 +174,10 @@ func (s *AnalyticsAnalyticsInstancesDataSourceCrud) SetData() error {
168174

169175
analyticsInstance["state"] = r.LifecycleState
170176

177+
if r.SystemTags != nil {
178+
analyticsInstance["system_tags"] = tfresource.SystemTagsToMap(r.SystemTags)
179+
}
180+
171181
if r.TimeCreated != nil {
172182
analyticsInstance["time_created"] = r.TimeCreated.String()
173183
}

website/docs/d/analytics_analytics_instance.html.markdown

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,18 @@ The following arguments are supported:
3434
The following attributes are exported:
3535

3636
* `capacity` - Service instance capacity metadata (e.g.: OLPU count, number of users, ...etc...).
37-
* `capacity_type` - The capacity model to use.
38-
* `capacity_value` - The capacity value selected (OLPU count, number of users, ...etc...). This parameter affects the number of CPUs, amount of memory or other resources allocated to the instance.
37+
* `capacity_type` - The capacity model to use. Accepted values are: OLPU_COUNT, USER_COUNT
38+
* `capacity_value` - The capacity value selected, either the number of OCPUs (OLPU_COUNT) or the number of users (USER_COUNT). This parameter affects the number of OCPUs, amount of memory, and other resources allocated to the instance.
3939
* `compartment_id` - The OCID of the compartment.
4040
* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
4141
* `description` - Optional description.
42+
* `domain_id` - Identity domain OCID.
4243
* `email_notification` - Email address receiving notifications.
44+
* `feature_bundle` - The feature set of an Analytics instance.
4345
* `feature_set` - Analytics feature set.
4446
* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
4547
* `id` - The resource OCID.
46-
* `kms_key_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Cloud Infrastructure Vault Key encrypting the customer data stored in this Analytics instance. A null value indicates Oracle managed default encryption.
48+
* `kms_key_id` - OCID of the Oracle Cloud Infrastructure Vault Key encrypting the customer data stored in this Analytics instance. A null value indicates Oracle managed default encryption.
4749
* `license_type` - The license used for the service.
4850
* `name` - The name of the Analytics instance. This name must be unique in the tenancy and cannot be changed.
4951
* `network_endpoint_details` - Base representation of a network endpoint.
@@ -73,6 +75,7 @@ The following attributes are exported:
7375
* `vcn_id` - OCID of the customer VCN peered with private access channel.
7476
* `service_url` - URL of the Analytics service.
7577
* `state` - The current state of an instance.
78+
* `system_tags` - System tags for this resource. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.key": "value"}`
7679
* `time_created` - The date and time the instance was created, in the format defined by RFC3339. Example: `2016-08-25T21:10:29.600Z`
7780
* `time_updated` - The date and time the instance was last updated (in the format defined by RFC3339). This timestamp represents updates made through this API. External events do not influence it.
7881
* `vanity_url_details` - Map of VanityUrl unique identifier key as KEY and VanityUrl Object as VALUE.

0 commit comments

Comments
 (0)