Skip to content

Commit ea6cff8

Browse files
Terraform Team AutomationMaxrovr
authored andcommitted
Added - Support for OIC: FAaas Self Service with Henosis
1 parent 7bcba6d commit ea6cff8

File tree

4 files changed

+122
-14
lines changed

4 files changed

+122
-14
lines changed

examples/integration/main.tf

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ variable certificate_secret_id {
3535
default = ""
3636
}
3737

38+
variable domain_id {
39+
default = ""
40+
}
3841
provider "oci" {
3942
tenancy_ocid = var.tenancy_ocid
4043
user_ocid = var.user_ocid
@@ -52,8 +55,8 @@ resource "oci_integration_integration_instance" "test_integration_instance" {
5255
# shape = "PRODUCTION"
5356
is_byol = "false"
5457
message_packs = "10"
55-
56-
idcs_at = var.integration_instance_idcs_access_token
58+
domain_id = var.domain_id
59+
# idcs_at = var.integration_instance_idcs_access_token
5760

5861
#Optional
5962
# For stand / enterprise type only
@@ -96,3 +99,15 @@ data "oci_integration_integration_instance" "test_integration_instance" {
9699
#Required
97100
integration_instance_id = oci_integration_integration_instance.test_integration_instance.id
98101
}
102+
103+
resource "oci_integration_integration_instance" "test_integration_instance_idcs" {
104+
#Required
105+
compartment_id = var.compartment_id
106+
display_name = "instance4643_idcs"
107+
integration_instance_type = "STANDARDX"
108+
shape = "DEVELOPMENT"
109+
# shape = "PRODUCTION"
110+
is_byol = "false"
111+
message_packs = "10"
112+
idcs_at = var.integration_instance_idcs_access_token
113+
}

internal/integrationtest/integration_integration_instance_test.go

Lines changed: 93 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ var (
6969
// STANDARD or ENTERPRISE only
7070
// "custom_endpoint": acctest.RepresentationGroup{RepType: acctest.Optional, Group: integrationInstanceCustomEndpointRepresentation},
7171
// "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")}`},
72-
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
73-
"idcs_at": acctest.Representation{RepType: acctest.Required, Create: `${var.idcs_access_token}`},
72+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
73+
// "idcs_at": acctest.Representation{RepType: acctest.Required, Create: `${var.idcs_access_token}`},
74+
"domain_id": acctest.Representation{RepType: acctest.Required, Create: `${var.domain_id}`},
7475
"is_file_server_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`},
7576
"is_visual_builder_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`},
7677
// STANDARD or ENTERPRISE only
@@ -88,8 +89,30 @@ var (
8889
"message_packs": acctest.Representation{RepType: acctest.Required, Create: `1`, Update: `2`},
8990
// Not supported yet
9091
// "alternate_custom_endpoints": acctest.RepresentationGroup{RepType: acctest.Optional, Group: integrationInstanceAlternateCustomEndpointsRepresentation},
91-
"consumption_model": acctest.Representation{RepType: acctest.Optional, Create: `UCM`},
92+
"consumption_model": acctest.Representation{RepType: acctest.Optional, Create: `UCM`}, // STANDARD or ENTERPRISE only
93+
// "custom_endpoint": acctest.RepresentationGroup{RepType: acctest.Optional, Group: integrationInstanceCustomEndpointRepresentation},
94+
// "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")}`},
95+
96+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
97+
// "idcs_at": acctest.Representation{RepType: acctest.Required, Create: `${var.idcs_access_token}`},
98+
"domain_id": acctest.Representation{RepType: acctest.Required, Create: `${var.domain_id}`},
99+
"is_file_server_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`},
100+
"is_visual_builder_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`},
92101
// STANDARD or ENTERPRISE only
102+
// "network_endpoint_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: integrationInstanceNetworkEndpointDetailsRepresentation},
103+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsDifferencesRepresentationAgain},
104+
}
105+
106+
integrationInstanceRepresentationIdcsAt = map[string]interface{}{
107+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
108+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `displayName`, Update: `displayName2`},
109+
"integration_instance_type": acctest.Representation{RepType: acctest.Required, Create: `${var.instance_type}`},
110+
"shape": acctest.Representation{RepType: acctest.Required, Create: `DEVELOPMENT`},
111+
"is_byol": acctest.Representation{RepType: acctest.Required, Create: `false`, Update: `true`},
112+
"message_packs": acctest.Representation{RepType: acctest.Required, Create: `1`, Update: `2`},
113+
// Not supported yet
114+
// "alternate_custom_endpoints": acctest.RepresentationGroup{RepType: acctest.Optional, Group: integrationInstanceAlternateCustomEndpointsRepresentation},
115+
"consumption_model": acctest.Representation{RepType: acctest.Optional, Create: `UCM`}, // STANDARD or ENTERPRISE only
93116
// "custom_endpoint": acctest.RepresentationGroup{RepType: acctest.Optional, Group: integrationInstanceCustomEndpointRepresentation},
94117
// "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")}`},
95118

@@ -164,7 +187,7 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
164187
acctest.ResourceTest(t, testAccCheckIntegrationIntegrationInstanceDestroy, []resource.TestStep{
165188
// verify Create
166189
{
167-
Config: config + instanceTypeVariableStr + compartmentIdVariableStr + idcsAccessTokenVariableStr() +
190+
Config: config + instanceTypeVariableStr + compartmentIdVariableStr + domainIdVariableStr +
168191
acctest.GenerateResourceFromRepresentationMap("oci_integration_integration_instance", "test_integration_instance", acctest.Required, acctest.Create, integrationInstanceRepresentation),
169192
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
170193
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
@@ -188,7 +211,7 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
188211
{
189212
Config: config + instanceTypeVariableStr + compartmentIdVariableStr +
190213
tagVariablesStr() +
191-
idcsAccessTokenVariableStr() +
214+
domainIdVariableStr +
192215
vaultSecretIdStr +
193216
IntegrationIntegrationInstanceResourceDependencies +
194217
acctest.GenerateResourceFromRepresentationMap(
@@ -207,14 +230,20 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
207230
// }),
208231
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
209232
resource.TestCheckResourceAttr(resourceName, "consumption_model", "UCM"),
233+
resource.TestCheckResourceAttr(resourceName, "custom_endpoint.#", "0"),
234+
// resource.TestCheckResourceAttrSet(resourceName, "custom_endpoint.0.certificate_secret_id"),
235+
// resource.TestCheckResourceAttr(resourceName, "custom_endpoint.0.hostname", "hostname.com"),
236+
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"),
237+
resource.TestCheckResourceAttrSet(resourceName, "domain_id"),
238+
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
210239
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
211240
resource.TestCheckResourceAttr(resourceName, "consumption_model", "UCM"),
212241
resource.TestCheckResourceAttr(resourceName, "custom_endpoint.#", "0"),
213242
// resource.TestCheckResourceAttrSet(resourceName, "custom_endpoint.0.certificate_secret_id"),
214243
// resource.TestCheckResourceAttr(resourceName, "custom_endpoint.0.hostname", "hostname2.com"),
215244
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"), // resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
216245
resource.TestCheckResourceAttrSet(resourceName, "id"),
217-
resource.TestCheckResourceAttrSet(resourceName, "idcs_at"),
246+
// resource.TestCheckResourceAttrSet(resourceName, "idcs_at"),
218247
resource.TestCheckResourceAttrSet(resourceName, "instance_url"),
219248
resource.TestCheckResourceAttr(resourceName, "integration_instance_type", utils.GetEnvSettingWithBlankDefault("instance_type")),
220249
resource.TestCheckResourceAttr(resourceName, "is_byol", "false"),
@@ -248,7 +277,7 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
248277
{
249278
Config: config + instanceTypeVariableStr + compartmentIdVariableStr +
250279
tagVariablesStr() +
251-
idcsAccessTokenVariableStr() +
280+
domainIdVariableStr +
252281
compartmentIdUVariableStr +
253282
vaultSecretIdStr +
254283
IntegrationIntegrationInstanceResourceDependencies +
@@ -274,9 +303,10 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
274303
// resource.TestCheckResourceAttrSet(resourceName, "custom_endpoint.0.certificate_secret_id"),
275304
// resource.TestCheckResourceAttr(resourceName, "custom_endpoint.0.hostname", "hostname2.com"),
276305
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"),
306+
resource.TestCheckResourceAttrSet(resourceName, "domain_id"),
277307
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
278308
resource.TestCheckResourceAttrSet(resourceName, "id"),
279-
resource.TestCheckResourceAttrSet(resourceName, "idcs_at"),
309+
// resource.TestCheckResourceAttrSet(resourceName, "idcs_at"),
280310
resource.TestCheckResourceAttrSet(resourceName, "instance_url"),
281311
resource.TestCheckResourceAttr(resourceName, "integration_instance_type", utils.GetEnvSettingWithBlankDefault("instance_type")),
282312
resource.TestCheckResourceAttr(resourceName, "is_byol", "false"),
@@ -305,7 +335,7 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
305335

306336
// verify updates to updatable parameters
307337
{
308-
Config: config + instanceTypeVariableStr + compartmentIdVariableStr + tagVariablesStr() + idcsAccessTokenVariableStr() + vaultSecretIdStr + IntegrationIntegrationInstanceResourceDependencies +
338+
Config: config + instanceTypeVariableStr + compartmentIdVariableStr + tagVariablesStr() + domainIdVariableStr + vaultSecretIdStr + IntegrationIntegrationInstanceResourceDependencies +
309339
acctest.GenerateResourceFromRepresentationMap("oci_integration_integration_instance", "test_integration_instance", acctest.Optional, acctest.Update, integrationInstanceRepresentation),
310340
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
311341
// resource.TestCheckResourceAttr(resourceName, "alternate_custom_endpoints.#", "1"),
@@ -321,9 +351,10 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
321351
// resource.TestCheckResourceAttrSet(resourceName, "custom_endpoint.0.certificate_secret_id"),
322352
// resource.TestCheckResourceAttr(resourceName, "custom_endpoint.0.hostname", "hostname2-updated.com"),
323353
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"),
354+
resource.TestCheckResourceAttrSet(resourceName, "domain_id"),
324355
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
325356
resource.TestCheckResourceAttrSet(resourceName, "id"),
326-
resource.TestCheckResourceAttrSet(resourceName, "idcs_at"),
357+
// resource.TestCheckResourceAttrSet(resourceName, "idcs_at"),
327358
resource.TestCheckResourceAttrSet(resourceName, "instance_url"),
328359
resource.TestCheckResourceAttr(resourceName, "integration_instance_type", utils.GetEnvSettingWithBlankDefault("instance_type")),
329360
resource.TestCheckResourceAttr(resourceName, "is_byol", "true"),
@@ -355,7 +386,7 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
355386
{
356387
Config: config + instanceTypeVariableStr +
357388
acctest.GenerateDataSourceFromRepresentationMap("oci_integration_integration_instances", "test_integration_instances", acctest.Optional, acctest.Update, integrationInstanceDataSourceRepresentation) +
358-
compartmentIdVariableStr + tagVariablesStr() + idcsAccessTokenVariableStr() + vaultSecretIdStr + IntegrationIntegrationInstanceResourceDependencies +
389+
compartmentIdVariableStr + tagVariablesStr() + domainIdVariableStr + vaultSecretIdStr + IntegrationIntegrationInstanceResourceDependencies +
359390
acctest.GenerateResourceFromRepresentationMap("oci_integration_integration_instance", "test_integration_instance", acctest.Optional, acctest.Update, integrationInstanceRepresentation),
360391
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
361392
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
@@ -406,7 +437,7 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
406437
{
407438
Config: config + instanceTypeVariableStr +
408439
acctest.GenerateDataSourceFromRepresentationMap("oci_integration_integration_instance", "test_integration_instance", acctest.Optional, acctest.Update, IntegrationintegrationInstanceSingularDataSourceRepresentation) +
409-
compartmentIdVariableStr + tagVariablesStr() + idcsAccessTokenVariableStr() + vaultSecretIdStr + IntegrationIntegrationInstanceResourceDependencies +
440+
compartmentIdVariableStr + tagVariablesStr() + domainIdVariableStr + vaultSecretIdStr + IntegrationIntegrationInstanceResourceDependencies +
410441
acctest.GenerateResourceFromRepresentationMap("oci_integration_integration_instance", "test_integration_instance", acctest.Optional, acctest.Update, integrationInstanceRepresentation),
411442
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
412443
resource.TestCheckResourceAttrSet(singularDatasourceName, "integration_instance_id"),
@@ -456,13 +487,63 @@ func TestIntegrationIntegrationInstanceResource_basic(t *testing.T) {
456487
ImportState: true,
457488
ImportStateVerify: true,
458489
ImportStateVerifyIgnore: []string{
490+
"domain_id",
459491
"idcs_at",
460492
},
461493
ResourceName: resourceName,
462494
},
463495
})
464496
}
465497

498+
func TestIntegrationIntegrationInstanceResource_idcsAt(t *testing.T) {
499+
httpreplay.SetScenario("TestIntegrationIntegrationInstanceResource_idcsAt")
500+
defer httpreplay.SaveScenario()
501+
502+
if strings.Contains(utils.GetEnvSettingWithBlankDefault("suppressed_tests"), "TestIntegrationIntegrationInstanceResource_idcsAt") {
503+
t.Skip("Skipping suppressed TestIntegrationIntegrationInstanceResource_idcsAt")
504+
}
505+
506+
config := acctest.ProviderTestConfig()
507+
508+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
509+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
510+
511+
instanceType := utils.GetEnvSettingWithBlankDefault("instance_type")
512+
instanceTypeVariableStr := fmt.Sprintf("variable \"instance_type\" { default = \"%s\" }\n", instanceType)
513+
514+
resourceName := "oci_integration_integration_instance.test_integration_instance"
515+
516+
// Save TF content to Create resource with optional properties. This has to be exactly the same as the config part in the "Create with optionals" step in the test.
517+
acctest.SaveConfigContent(config+instanceTypeVariableStr+compartmentIdVariableStr+IntegrationIntegrationInstanceResourceDependencies+
518+
acctest.GenerateResourceFromRepresentationMap("oci_integration_integration_instance", "test_integration_instance", acctest.Optional, acctest.Create, integrationInstanceRepresentationIdcsAt), "integration", "integrationInstance", t)
519+
520+
acctest.ResourceTest(t, testAccCheckIntegrationIntegrationInstanceDestroy, []resource.TestStep{
521+
// verify Create
522+
{
523+
Config: config + instanceTypeVariableStr + compartmentIdVariableStr + idcsAccessTokenVariableStr() +
524+
acctest.GenerateResourceFromRepresentationMap("oci_integration_integration_instance", "test_integration_instance", acctest.Required, acctest.Create, integrationInstanceRepresentationIdcsAt),
525+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
526+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
527+
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"),
528+
resource.TestCheckResourceAttr(resourceName, "integration_instance_type", utils.GetEnvSettingWithBlankDefault("instance_type")),
529+
resource.TestCheckResourceAttr(resourceName, "is_byol", "false"),
530+
resource.TestCheckResourceAttr(resourceName, "message_packs", "1"),
531+
resource.TestCheckResourceAttrSet(resourceName, "idcs_at"),
532+
533+
func(s *terraform.State) (err error) {
534+
_, err = acctest.FromInstanceState(s, resourceName, "id")
535+
return err
536+
},
537+
),
538+
},
539+
540+
// delete before next Create
541+
{
542+
Config: config + compartmentIdVariableStr,
543+
},
544+
})
545+
}
546+
466547
func testAccCheckIntegrationIntegrationInstanceDestroy(s *terraform.State) error {
467548
noResourceFound := true
468549
client := acctest.TestAccProvider.Meta().(*tf_client.OracleClients).IntegrationInstanceClient()

internal/service/integration/integration_integration_instance_resource.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ func IntegrationIntegrationInstanceResource() *schema.Resource {
140140
DiffSuppressFunc: tfresource.DefinedTagsDiffSuppressFunction,
141141
Elem: schema.TypeString,
142142
},
143+
"domain_id": {
144+
Type: schema.TypeString,
145+
Optional: true,
146+
ForceNew: true,
147+
},
143148
"freeform_tags": {
144149
Type: schema.TypeMap,
145150
Optional: true,
@@ -546,6 +551,11 @@ func (s *IntegrationIntegrationInstanceResourceCrud) Create() error {
546551
request.DisplayName = &tmp
547552
}
548553

554+
if domainId, ok := s.D.GetOkExists("domain_id"); ok {
555+
tmp := domainId.(string)
556+
request.DomainId = &tmp
557+
}
558+
549559
if freeformTags, ok := s.D.GetOkExists("freeform_tags"); ok {
550560
request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{}))
551561
}

website/docs/r/integration_integration_instance.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ resource "oci_integration_integration_instance" "test_integration_instance" {
4141
certificate_secret_id = oci_vault_secret.test_secret.id
4242
}
4343
defined_tags = {"foo-namespace.bar-key"= "value"}
44+
domain_id = oci_identity_domain.test_domain.id
4445
freeform_tags = {"bar-key"= "value"}
4546
idcs_at = var.integration_instance_idcs_at
4647
is_file_server_enabled = var.integration_instance_is_file_server_enabled
@@ -79,6 +80,7 @@ The following arguments are supported:
7980
* `hostname` - (Required) (Updatable) A custom hostname to be used for the integration instance URL, in FQDN format.
8081
* `defined_tags` - (Optional) (Updatable) Usage of predefined tag keys. These predefined keys are scoped to namespaces. Example: `{"foo-namespace.bar-key": "value"}`
8182
* `display_name` - (Required) (Updatable) Integration Instance Identifier.
83+
* `domain_id` - (Optional) The OCID of the identity domain, that will be used to determine the corresponding Idcs Stripe and create an Idcs application within the stripe. This parameter is mutually exclusive with parameter: idcsAt, i.e only one of two parameters should be specified.
8284
* `freeform_tags` - (Optional) (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}`
8385
* `idcs_at` - (Optional) (Updatable) IDCS Authentication token. This is required for all realms with IDCS. Its optional as its not required for non IDCS realms.
8486
* `integration_instance_type` - (Required) (Updatable) Standard or Enterprise type, Oracle Integration Generation 2 uses ENTERPRISE and STANDARD, Oracle Integration 3 uses ENTERPRISEX and STANDARDX

0 commit comments

Comments
 (0)