Skip to content

Commit bdbd8c3

Browse files
skhm1srinioci
authored andcommitted
Added - Support for GenerateOnPremConnectorConfiguration resource in Data Safe
1 parent 89300b9 commit bdbd8c3

File tree

9 files changed

+268
-8
lines changed

9 files changed

+268
-8
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {}
5+
variable "user_ocid" {}
6+
variable "fingerprint" {}
7+
variable "private_key_path" {}
8+
variable "region" {}
9+
10+
variable "generate_on_prem_connector_configuration_password" {
11+
default = "BEstrO0ng_#1111"
12+
}
13+
14+
15+
16+
provider "oci" {
17+
tenancy_ocid = var.tenancy_ocid
18+
user_ocid = var.user_ocid
19+
fingerprint = var.fingerprint
20+
private_key_path = var.private_key_path
21+
region = var.region
22+
}
23+
24+
resource "oci_data_safe_generate_on_prem_connector_configuration" "test_generate_on_prem_connector_configuration" {
25+
#Required
26+
on_prem_connector_id = oci_data_safe_on_prem_connector.test_on_prem_connector.id
27+
password = var.generate_on_prem_connector_configuration_password
28+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package integrationtest
5+
6+
import (
7+
"fmt"
8+
"strconv"
9+
"testing"
10+
11+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
12+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
13+
14+
"github.com/oracle/terraform-provider-oci/httpreplay"
15+
"github.com/oracle/terraform-provider-oci/internal/acctest"
16+
17+
"github.com/oracle/terraform-provider-oci/internal/resourcediscovery"
18+
19+
"github.com/oracle/terraform-provider-oci/internal/utils"
20+
)
21+
22+
var (
23+
DataSafeGenerateOnPremConnectorConfigurationRepresentation = map[string]interface{}{
24+
"on_prem_connector_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_data_safe_on_prem_connector.test_on_prem_connector.id}`},
25+
"password": acctest.Representation{RepType: acctest.Required, Create: `BEstrO0ng_#1111`},
26+
}
27+
28+
DataSafeGenerateOnPremConnectorConfigurationResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_data_safe_on_prem_connector", "test_on_prem_connector", acctest.Required, acctest.Create, onPremConnectorRepresentation)
29+
)
30+
31+
// issue-routing-tag: data_safe/default
32+
func TestDataSafeGenerateOnPremConnectorConfigurationResource_basic(t *testing.T) {
33+
httpreplay.SetScenario("TestDataSafeGenerateOnPremConnectorConfigurationResource_basic")
34+
defer httpreplay.SaveScenario()
35+
36+
config := acctest.ProviderTestConfig()
37+
38+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
39+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
40+
41+
resourceName := "oci_data_safe_generate_on_prem_connector_configuration.test_generate_on_prem_connector_configuration"
42+
43+
var resId string
44+
// Save TF content to Create resource with only required properties. This has to be exactly the same as the config part in the create step in the test.
45+
acctest.SaveConfigContent(config+compartmentIdVariableStr+DataSafeGenerateOnPremConnectorConfigurationResourceDependencies+
46+
acctest.GenerateResourceFromRepresentationMap("oci_data_safe_generate_on_prem_connector_configuration", "test_generate_on_prem_connector_configuration", acctest.Required, acctest.Create, DataSafeGenerateOnPremConnectorConfigurationRepresentation), "datasafe", "generateOnPremConnectorConfiguration", t)
47+
48+
acctest.ResourceTest(t, nil, []resource.TestStep{
49+
// verify Create
50+
{
51+
Config: config + compartmentIdVariableStr + DataSafeGenerateOnPremConnectorConfigurationResourceDependencies +
52+
acctest.GenerateResourceFromRepresentationMap("oci_data_safe_generate_on_prem_connector_configuration", "test_generate_on_prem_connector_configuration", acctest.Required, acctest.Create, DataSafeGenerateOnPremConnectorConfigurationRepresentation),
53+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
54+
resource.TestCheckResourceAttrSet(resourceName, "on_prem_connector_id"),
55+
resource.TestCheckResourceAttr(resourceName, "password", "BEstrO0ng_#1111"),
56+
57+
func(s *terraform.State) (err error) {
58+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
59+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
60+
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
61+
return errExport
62+
}
63+
}
64+
return err
65+
},
66+
),
67+
},
68+
})
69+
}

internal/provider/register_datasource.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ import (
6262
tf_fusion_apps "github.com/oracle/terraform-provider-oci/internal/service/fusion_apps"
6363
tf_generative_ai "github.com/oracle/terraform-provider-oci/internal/service/generative_ai"
6464
tf_generic_artifacts_content "github.com/oracle/terraform-provider-oci/internal/service/generic_artifacts_content"
65-
tf_globally_distributed_database "github.com/oracle/terraform-provider-oci/internal/service/globally_distributed_database"
6665
tf_golden_gate "github.com/oracle/terraform-provider-oci/internal/service/golden_gate"
6766
tf_health_checks "github.com/oracle/terraform-provider-oci/internal/service/health_checks"
6867
tf_identity "github.com/oracle/terraform-provider-oci/internal/service/identity"
@@ -303,9 +302,6 @@ func init() {
303302
if common.CheckForEnabledServices("genericartifactscontent") {
304303
tf_generic_artifacts_content.RegisterDatasource()
305304
}
306-
if common.CheckForEnabledServices("globallydistributeddatabase") {
307-
tf_globally_distributed_database.RegisterDatasource()
308-
}
309305
if common.CheckForEnabledServices("goldengate") {
310306
tf_golden_gate.RegisterDatasource()
311307
}

internal/provider/register_resource.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ import (
6262
tf_fusion_apps "github.com/oracle/terraform-provider-oci/internal/service/fusion_apps"
6363
tf_generative_ai "github.com/oracle/terraform-provider-oci/internal/service/generative_ai"
6464
tf_generic_artifacts_content "github.com/oracle/terraform-provider-oci/internal/service/generic_artifacts_content"
65-
tf_globally_distributed_database "github.com/oracle/terraform-provider-oci/internal/service/globally_distributed_database"
6665
tf_golden_gate "github.com/oracle/terraform-provider-oci/internal/service/golden_gate"
6766
tf_health_checks "github.com/oracle/terraform-provider-oci/internal/service/health_checks"
6867
tf_identity "github.com/oracle/terraform-provider-oci/internal/service/identity"
@@ -303,9 +302,6 @@ func init() {
303302
if common.CheckForEnabledServices("genericartifactscontent") {
304303
tf_generic_artifacts_content.RegisterResource()
305304
}
306-
if common.CheckForEnabledServices("globallydistributeddatabase") {
307-
tf_globally_distributed_database.RegisterResource()
308-
}
309305
if common.CheckForEnabledServices("goldengate") {
310306
tf_golden_gate.RegisterResource()
311307
}

internal/service/data_safe/data_safe_export.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,11 @@ var exportDataSafeCalculateAuditVolumeCollectedHints = &tf_export.TerraformResou
388388
ResourceAbbreviation: "calculate_audit_volume_collected",
389389
}
390390

391+
var exportDataSafeGenerateOnPremConnectorConfigurationHints = &tf_export.TerraformResourceHints{
392+
ResourceClass: "oci_data_safe_generate_on_prem_connector_configuration",
393+
ResourceAbbreviation: "generate_on_prem_connector_configuration",
394+
}
395+
391396
var dataSafeResourceGraph = tf_export.TerraformResourceGraph{
392397
"oci_identity_compartment": {
393398
{TerraformResourceHints: exportDataSafeDataSafePrivateEndpointHints},
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package data_safe
5+
6+
import (
7+
"context"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
11+
oci_data_safe "github.com/oracle/oci-go-sdk/v65/datasafe"
12+
13+
"github.com/oracle/terraform-provider-oci/internal/client"
14+
"github.com/oracle/terraform-provider-oci/internal/tfresource"
15+
)
16+
17+
func DataSafeGenerateOnPremConnectorConfigurationResource() *schema.Resource {
18+
return &schema.Resource{
19+
Importer: &schema.ResourceImporter{
20+
State: schema.ImportStatePassthrough,
21+
},
22+
Timeouts: tfresource.DefaultTimeout,
23+
Create: createDataSafeGenerateOnPremConnectorConfiguration,
24+
Read: readDataSafeGenerateOnPremConnectorConfiguration,
25+
Delete: deleteDataSafeGenerateOnPremConnectorConfiguration,
26+
Schema: map[string]*schema.Schema{
27+
// Required
28+
"on_prem_connector_id": {
29+
Type: schema.TypeString,
30+
Required: true,
31+
ForceNew: true,
32+
},
33+
"password": {
34+
Type: schema.TypeString,
35+
Required: true,
36+
ForceNew: true,
37+
Sensitive: true,
38+
},
39+
40+
// Optional
41+
42+
// Computed
43+
},
44+
}
45+
}
46+
47+
func createDataSafeGenerateOnPremConnectorConfiguration(d *schema.ResourceData, m interface{}) error {
48+
sync := &DataSafeGenerateOnPremConnectorConfigurationResourceCrud{}
49+
sync.D = d
50+
sync.Client = m.(*client.OracleClients).DataSafeClient()
51+
52+
return tfresource.CreateResource(d, sync)
53+
}
54+
55+
func readDataSafeGenerateOnPremConnectorConfiguration(d *schema.ResourceData, m interface{}) error {
56+
return nil
57+
}
58+
59+
func deleteDataSafeGenerateOnPremConnectorConfiguration(d *schema.ResourceData, m interface{}) error {
60+
return nil
61+
}
62+
63+
type DataSafeGenerateOnPremConnectorConfigurationResourceCrud struct {
64+
tfresource.BaseCrud
65+
Client *oci_data_safe.DataSafeClient
66+
Res *oci_data_safe.GenerateOnPremConnectorConfigurationResponse
67+
DisableNotFoundRetries bool
68+
}
69+
70+
func (s *DataSafeGenerateOnPremConnectorConfigurationResourceCrud) ID() string {
71+
return *s.Res.OpcRequestId
72+
}
73+
74+
func (s *DataSafeGenerateOnPremConnectorConfigurationResourceCrud) Create() error {
75+
request := oci_data_safe.GenerateOnPremConnectorConfigurationRequest{}
76+
77+
if onPremConnectorId, ok := s.D.GetOkExists("on_prem_connector_id"); ok {
78+
tmp := onPremConnectorId.(string)
79+
request.OnPremConnectorId = &tmp
80+
}
81+
82+
if password, ok := s.D.GetOkExists("password"); ok {
83+
tmp := password.(string)
84+
request.GenerateOnPremConnectorConfigurationDetails = oci_data_safe.GenerateOnPremConnectorConfigurationDetails{
85+
Password: &tmp,
86+
}
87+
}
88+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "data_safe")
89+
90+
response, err := s.Client.GenerateOnPremConnectorConfiguration(context.Background(), request)
91+
if err != nil {
92+
return err
93+
}
94+
95+
s.Res = &response
96+
return nil
97+
}
98+
99+
func (s *DataSafeGenerateOnPremConnectorConfigurationResourceCrud) SetData() error {
100+
return nil
101+
}

internal/service/data_safe/register_resource.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func RegisterResource() {
2525
tfresource.RegisterResource("oci_data_safe_database_security_config", DataSafeDatabaseSecurityConfigResource())
2626
tfresource.RegisterResource("oci_data_safe_database_security_config_management", DataSafeDatabaseSecurityConfigManagementResource())
2727
tfresource.RegisterResource("oci_data_safe_discovery_job", DataSafeDiscoveryJobResource())
28+
tfresource.RegisterResource("oci_data_safe_generate_on_prem_connector_configuration", DataSafeGenerateOnPremConnectorConfigurationResource())
2829
tfresource.RegisterResource("oci_data_safe_library_masking_format", DataSafeLibraryMaskingFormatResource())
2930
tfresource.RegisterResource("oci_data_safe_masking_policies_masking_column", DataSafeMaskingPoliciesMaskingColumnResource())
3031
tfresource.RegisterResource("oci_data_safe_masking_policy", DataSafeMaskingPolicyResource())

website/docs/guides/resource_discovery.html.markdown

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,13 @@ data_safe
587587
* oci\_data\_safe\_sdm\_masking\_policy\_difference
588588
* oci\_data\_safe\_calculate\_audit\_volume\_available
589589
* oci\_data\_safe\_calculate\_audit\_volume\_collected
590+
* oci\_data\_safe\_generate\_on\_prem\_connector\_configuration
591+
* oci\_data\_safe\_security\_policy\_deployment
592+
* oci\_data\_safe\_security\_policy
593+
* oci\_data\_safe\_database\_security\_config
594+
* oci\_data\_safe\_sql\_firewall\_policy
595+
* oci\_data\_safe\_sql\_collection
596+
* oci\_data\_safe\_target\_database\_peer\_target\_database
590597

591598
database
592599

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
subcategory: "Data Safe"
3+
layout: "oci"
4+
page_title: "Oracle Cloud Infrastructure: oci_data_safe_generate_on_prem_connector_configuration"
5+
sidebar_current: "docs-oci-resource-data_safe-generate_on_prem_connector_configuration"
6+
description: |-
7+
Provides the Generate On Prem Connector Configuration resource in Oracle Cloud Infrastructure Data Safe service
8+
---
9+
10+
# oci_data_safe_generate_on_prem_connector_configuration
11+
This resource provides the Generate On Prem Connector Configuration resource in Oracle Cloud Infrastructure Data Safe service.
12+
13+
Creates and downloads the configuration of the specified on-premises connector.
14+
15+
16+
## Example Usage
17+
18+
```hcl
19+
resource "oci_data_safe_generate_on_prem_connector_configuration" "test_generate_on_prem_connector_configuration" {
20+
#Required
21+
on_prem_connector_id = oci_data_safe_on_prem_connector.test_on_prem_connector.id
22+
password = var.generate_on_prem_connector_configuration_password
23+
}
24+
```
25+
26+
## Argument Reference
27+
28+
The following arguments are supported:
29+
30+
* `on_prem_connector_id` - (Required) The OCID of the on-premises connector.
31+
* `password` - (Required) The password to encrypt the keys inside the wallet included as part of the configuration. The password must be between 12 and 30 characters long and must contain atleast 1 uppercase, 1 lowercase, 1 numeric, and 1 special character.
32+
33+
34+
** IMPORTANT **
35+
Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
36+
37+
## Attributes Reference
38+
39+
The following attributes are exported:
40+
41+
42+
## Timeouts
43+
44+
The `timeouts` block allows you to specify [timeouts](https://registry.terraform.io/providers/oracle/oci/latest/docs/guides/changing_timeouts) for certain operations:
45+
* `create` - (Defaults to 20 minutes), when creating the Generate On Prem Connector Configuration
46+
* `update` - (Defaults to 20 minutes), when updating the Generate On Prem Connector Configuration
47+
* `delete` - (Defaults to 20 minutes), when destroying the Generate On Prem Connector Configuration
48+
49+
50+
## Import
51+
52+
GenerateOnPremConnectorConfiguration can be imported using the `id`, e.g.
53+
54+
```
55+
$ terraform import oci_data_safe_generate_on_prem_connector_configuration.test_generate_on_prem_connector_configuration "id"
56+
```
57+

0 commit comments

Comments
 (0)