Skip to content

Commit 427bf65

Browse files
Xu Zhangvsin12
authored andcommitted
Added - Support for Oracle Process Automation (OPA) - Customer Facing Release
(cherry picked from commit c22db2a)
1 parent 1c8d943 commit 427bf65

15 files changed

+1644
-0
lines changed

examples/opa/main.tf

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {
5+
}
6+
7+
variable "user_ocid" {
8+
}
9+
10+
variable "fingerprint" {
11+
}
12+
13+
variable "private_key_path" {
14+
}
15+
16+
variable "region" {
17+
}
18+
19+
variable "compartment_id" {
20+
}
21+
22+
variable "idcs_access_token" {
23+
24+
}
25+
26+
provider "oci" {
27+
tenancy_ocid = var.tenancy_ocid
28+
user_ocid = var.user_ocid
29+
fingerprint = var.fingerprint
30+
private_key_path = var.private_key_path
31+
region = var.region
32+
}
33+
34+
resource "oci_opa_opa_instance" "test_opa_instance" {
35+
compartment_id = "${var.compartment_id}"
36+
consumption_model = "UCM"
37+
display_name = "displayName"
38+
idcs_at = "${var.idcs_access_token}"
39+
metering_type = "EXECUTION_PACK"
40+
shape_name = "PRODUCTION"
41+
}
42+
43+
data "oci_opa_opa_instances" "test_opa_instances" {
44+
compartment_id = "${var.compartment_id}"
45+
display_name = "displayName2"
46+
filter {
47+
name = "id"
48+
values = ["${oci_opa_opa_instance.test_opa_instance.id}"]
49+
}
50+
id = "${oci_opa_opa_instance.test_opa_instance.id}"
51+
state = "ACTIVE"
52+
}
53+
54+
data "oci_opa_opa_instance" "test_opa_instance" {
55+
opa_instance_id = "${oci_opa_opa_instance.test_opa_instance.id}"
56+
}

internal/client/opa_clients.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package client
5+
6+
import (
7+
oci_opa "github.com/oracle/oci-go-sdk/v65/opa"
8+
9+
oci_common "github.com/oracle/oci-go-sdk/v65/common"
10+
)
11+
12+
func init() {
13+
RegisterOracleClient("oci_opa.OpaInstanceClient", &OracleClient{InitClientFn: initOpaOpaInstanceClient})
14+
}
15+
16+
func initOpaOpaInstanceClient(configProvider oci_common.ConfigurationProvider, configureClient ConfigureClient, serviceClientOverrides ServiceClientOverrides) (interface{}, error) {
17+
client, err := oci_opa.NewOpaInstanceClientWithConfigurationProvider(configProvider)
18+
if err != nil {
19+
return nil, err
20+
}
21+
err = configureClient(&client.BaseClient)
22+
if err != nil {
23+
return nil, err
24+
}
25+
26+
if serviceClientOverrides.HostUrlOverride != "" {
27+
client.Host = serviceClientOverrides.HostUrlOverride
28+
}
29+
return &client, nil
30+
}
31+
32+
func (m *OracleClients) OpaInstanceClient() *oci_opa.OpaInstanceClient {
33+
return m.GetClient("oci_opa.OpaInstanceClient").(*oci_opa.OpaInstanceClient)
34+
}

internal/integrationtest/opa_opa_instance_test.go

Lines changed: 375 additions & 0 deletions
Large diffs are not rendered by default.

internal/provider/register_datasource.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ import (
7777
tf_oda "github.com/oracle/terraform-provider-oci/internal/service/oda"
7878
tf_onesubscription "github.com/oracle/terraform-provider-oci/internal/service/onesubscription"
7979
tf_ons "github.com/oracle/terraform-provider-oci/internal/service/ons"
80+
tf_opa "github.com/oracle/terraform-provider-oci/internal/service/opa"
8081
tf_opensearch "github.com/oracle/terraform-provider-oci/internal/service/opensearch"
8182
tf_operator_access_control "github.com/oracle/terraform-provider-oci/internal/service/operator_access_control"
8283
tf_opsi "github.com/oracle/terraform-provider-oci/internal/service/opsi"
@@ -179,6 +180,7 @@ func init() {
179180
tf_oda.RegisterDatasource()
180181
tf_onesubscription.RegisterDatasource()
181182
tf_ons.RegisterDatasource()
183+
tf_opa.RegisterDatasource()
182184
tf_opensearch.RegisterDatasource()
183185
tf_operator_access_control.RegisterDatasource()
184186
tf_opsi.RegisterDatasource()

internal/provider/register_resource.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ import (
7777
tf_oda "github.com/oracle/terraform-provider-oci/internal/service/oda"
7878
tf_onesubscription "github.com/oracle/terraform-provider-oci/internal/service/onesubscription"
7979
tf_ons "github.com/oracle/terraform-provider-oci/internal/service/ons"
80+
tf_opa "github.com/oracle/terraform-provider-oci/internal/service/opa"
8081
tf_opensearch "github.com/oracle/terraform-provider-oci/internal/service/opensearch"
8182
tf_operator_access_control "github.com/oracle/terraform-provider-oci/internal/service/operator_access_control"
8283
tf_opsi "github.com/oracle/terraform-provider-oci/internal/service/opsi"
@@ -179,6 +180,7 @@ func init() {
179180
tf_oda.RegisterResource()
180181
tf_onesubscription.RegisterResource()
181182
tf_ons.RegisterResource()
183+
tf_opa.RegisterResource()
182184
tf_opensearch.RegisterResource()
183185
tf_operator_access_control.RegisterResource()
184186
tf_opsi.RegisterResource()

internal/service/opa/opa_export.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package opa
2+
3+
import (
4+
oci_opa "github.com/oracle/oci-go-sdk/v65/opa"
5+
6+
tf_export "github.com/oracle/terraform-provider-oci/internal/commonexport"
7+
)
8+
9+
func init() {
10+
tf_export.RegisterCompartmentGraphs("opa", opaResourceGraph)
11+
}
12+
13+
// Custom overrides for generating composite IDs within the resource discovery framework
14+
15+
// Hints for discovering and exporting this resource to configuration and state files
16+
var exportOpaOpaInstanceHints = &tf_export.TerraformResourceHints{
17+
ResourceClass: "oci_opa_opa_instance",
18+
DatasourceClass: "oci_opa_opa_instances",
19+
DatasourceItemsAttr: "opa_instance_collection",
20+
IsDatasourceCollection: true,
21+
ResourceAbbreviation: "opa_instance",
22+
RequireResourceRefresh: true,
23+
DiscoverableLifecycleStates: []string{
24+
string(oci_opa.OpaInstanceLifecycleStateActive),
25+
},
26+
}
27+
28+
var opaResourceGraph = tf_export.TerraformResourceGraph{
29+
"oci_identity_compartment": {
30+
{TerraformResourceHints: exportOpaOpaInstanceHints},
31+
},
32+
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package opa
5+
6+
import (
7+
"context"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
oci_opa "github.com/oracle/oci-go-sdk/v65/opa"
11+
12+
"github.com/oracle/terraform-provider-oci/internal/client"
13+
"github.com/oracle/terraform-provider-oci/internal/tfresource"
14+
)
15+
16+
func OpaOpaInstanceDataSource() *schema.Resource {
17+
fieldMap := make(map[string]*schema.Schema)
18+
fieldMap["opa_instance_id"] = &schema.Schema{
19+
Type: schema.TypeString,
20+
Required: true,
21+
}
22+
return tfresource.GetSingularDataSourceItemSchema(OpaOpaInstanceResource(), fieldMap, readSingularOpaOpaInstance)
23+
}
24+
25+
func readSingularOpaOpaInstance(d *schema.ResourceData, m interface{}) error {
26+
sync := &OpaOpaInstanceDataSourceCrud{}
27+
sync.D = d
28+
sync.Client = m.(*client.OracleClients).OpaInstanceClient()
29+
30+
return tfresource.ReadResource(sync)
31+
}
32+
33+
type OpaOpaInstanceDataSourceCrud struct {
34+
D *schema.ResourceData
35+
Client *oci_opa.OpaInstanceClient
36+
Res *oci_opa.GetOpaInstanceResponse
37+
}
38+
39+
func (s *OpaOpaInstanceDataSourceCrud) VoidState() {
40+
s.D.SetId("")
41+
}
42+
43+
func (s *OpaOpaInstanceDataSourceCrud) Get() error {
44+
request := oci_opa.GetOpaInstanceRequest{}
45+
46+
if opaInstanceId, ok := s.D.GetOkExists("opa_instance_id"); ok {
47+
tmp := opaInstanceId.(string)
48+
request.OpaInstanceId = &tmp
49+
}
50+
51+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "opa")
52+
53+
response, err := s.Client.GetOpaInstance(context.Background(), request)
54+
if err != nil {
55+
return err
56+
}
57+
58+
s.Res = &response
59+
return nil
60+
}
61+
62+
func (s *OpaOpaInstanceDataSourceCrud) SetData() error {
63+
if s.Res == nil {
64+
return nil
65+
}
66+
67+
s.D.SetId(*s.Res.Id)
68+
69+
if s.Res.CompartmentId != nil {
70+
s.D.Set("compartment_id", *s.Res.CompartmentId)
71+
}
72+
73+
s.D.Set("consumption_model", s.Res.ConsumptionModel)
74+
75+
if s.Res.DefinedTags != nil {
76+
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
77+
}
78+
79+
if s.Res.Description != nil {
80+
s.D.Set("description", *s.Res.Description)
81+
}
82+
83+
if s.Res.DisplayName != nil {
84+
s.D.Set("display_name", *s.Res.DisplayName)
85+
}
86+
87+
s.D.Set("freeform_tags", s.Res.FreeformTags)
88+
s.D.Set("freeform_tags", s.Res.FreeformTags)
89+
90+
if s.Res.IdentityAppDisplayName != nil {
91+
s.D.Set("identity_app_display_name", *s.Res.IdentityAppDisplayName)
92+
}
93+
94+
if s.Res.IdentityAppGuid != nil {
95+
s.D.Set("identity_app_guid", *s.Res.IdentityAppGuid)
96+
}
97+
98+
if s.Res.IdentityAppOpcServiceInstanceGuid != nil {
99+
s.D.Set("identity_app_opc_service_instance_guid", *s.Res.IdentityAppOpcServiceInstanceGuid)
100+
}
101+
102+
if s.Res.IdentityDomainUrl != nil {
103+
s.D.Set("identity_domain_url", *s.Res.IdentityDomainUrl)
104+
}
105+
106+
if s.Res.InstanceUrl != nil {
107+
s.D.Set("instance_url", *s.Res.InstanceUrl)
108+
}
109+
110+
if s.Res.IsBreakglassEnabled != nil {
111+
s.D.Set("is_breakglass_enabled", *s.Res.IsBreakglassEnabled)
112+
}
113+
114+
s.D.Set("metering_type", s.Res.MeteringType)
115+
116+
s.D.Set("shape_name", s.Res.ShapeName)
117+
118+
s.D.Set("state", s.Res.LifecycleState)
119+
120+
if s.Res.SystemTags != nil {
121+
s.D.Set("system_tags", tfresource.SystemTagsToMap(s.Res.SystemTags))
122+
}
123+
124+
if s.Res.TimeCreated != nil {
125+
s.D.Set("time_created", s.Res.TimeCreated.String())
126+
}
127+
128+
if s.Res.TimeUpdated != nil {
129+
s.D.Set("time_updated", s.Res.TimeUpdated.String())
130+
}
131+
132+
return nil
133+
}

0 commit comments

Comments
 (0)