Skip to content

Commit fe34f6f

Browse files
Akshay MallSrividyaKamakshi
authored andcommitted
Added - Support for Ekm-Xrr
1 parent 0078b2d commit fe34f6f

File tree

4 files changed

+165
-2
lines changed

4 files changed

+165
-2
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
variable "secondary_idcs_account_name_url" {
2+
default = "secondary_idcs_account_name_url"
3+
}
4+
5+
variable "secondary_private_endpoint_id" {
6+
default = "secondary_private_endpoint_id"
7+
}
8+
9+
variable "replica_region" {
10+
default = "us-dcc-phoenix-4"
11+
}
12+
13+
variable vault_id {
14+
default = "vault_id"
15+
}
16+
17+
variable virtual_vault_id {
18+
default = "virtual_vault_id"
19+
}
20+
21+
variable "vault_type" {
22+
default = "EXTERNAL"
23+
}
24+
25+
resource "oci_kms_vault_replication" "test_replication" {
26+
replica_region = var.replica_region
27+
vault_id = var.virtual_vault_id
28+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
variable "tenancy_ocid" {
2+
}
3+
4+
variable "user_ocid" {
5+
}
6+
7+
variable "fingerprint" {
8+
}
9+
10+
variable "private_key_path" {
11+
}
12+
13+
variable "region" {
14+
}
15+
16+
variable "compartment_ocid" {
17+
}
18+
19+
variable "ext_vault" {
20+
}
21+
22+
variable "ext_key_version_id" {
23+
}
24+
25+
26+
provider "oci" {
27+
version = "6.27.0"
28+
tenancy_ocid = var.tenancy_ocid
29+
user_ocid = var.user_ocid
30+
fingerprint = var.fingerprint
31+
private_key_path = var.private_key_path
32+
region = var.region
33+
}

internal/integrationtest/kms_vault_replication_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,53 @@ var (
1717
"vault_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_kms_vault.test_vault.id}`},
1818
}
1919

20+
ekmVaultReplicaMetadataRepresentation = map[string]interface{}{
21+
"vault_type": acctest.Representation{RepType: acctest.Required, Create: `EXTERNAL`},
22+
"private_endpoint_id": acctest.Representation{RepType: acctest.Required, Create: utils.GetEnvSettingWithBlankDefault("secondary_private_endpoint_id")},
23+
"idcs_account_name_url": acctest.Representation{RepType: acctest.Required, Create: utils.GetEnvSettingWithBlankDefault("secondary_idcs_account_name_url")},
24+
}
25+
26+
ekmVaultReplicaRepresentation = map[string]interface{}{
27+
"replica_region": acctest.Representation{RepType: acctest.Required, Create: `us-dcc-phoenix-2`},
28+
"vault_id": acctest.Representation{RepType: acctest.Required, Create: utils.GetEnvSettingWithBlankDefault("kms_external_vault_ocid")},
29+
"replica_vault_metadata": acctest.RepresentationGroup{RepType: acctest.Required, Group: ekmVaultReplicaMetadataRepresentation},
30+
}
31+
2032
KmsVaultReplicationResourceDependencies = KmsKeyResourceDependencies
33+
34+
KmsExternalVaultReplicationResourceDependencies = KmsExternalKeyResourceDependencies
2135
)
2236

37+
func TestEkmVaultReplicationResource_basic(t *testing.T) {
38+
httpreplay.SetScenario("TestKmsVaultReplicationResource_basic")
39+
defer httpreplay.SaveScenario()
40+
41+
config := acctest.ProviderTestConfig()
42+
43+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
44+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
45+
46+
//resourceName := "oci_kms_vault_replication.test_replica"
47+
48+
// 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.
49+
acctest.SaveConfigContent(config+compartmentIdVariableStr+KmsExternalVaultReplicationResourceDependencies+
50+
acctest.GenerateResourceFromRepresentationMap("oci_kms_vault_replication", "test_replica", acctest.Required, acctest.Create, ekmVaultReplicaRepresentation), "keymanagement", "vaultReplica", t)
51+
52+
fmt.Println(acctest.GenerateResourceFromRepresentationMap("oci_kms_vault_replication", "test_replica", acctest.Required, acctest.Create, ekmVaultReplicaRepresentation))
53+
54+
/*acctest.ResourceTest(t, nil, []resource.TestStep{
55+
// verify Create
56+
{
57+
Config: config + compartmentIdVariableStr + KmsExternalVaultReplicationResourceDependencies +
58+
acctest.GenerateResourceFromRepresentationMap("oci_kms_vault_replication", "test_replica", acctest.Required, acctest.Create, ekmVaultReplicaRepresentation),
59+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
60+
resource.TestCheckResourceAttr(resourceName, "replica_region", "us-dcc-phoenix-2"),
61+
resource.TestCheckResourceAttrSet(resourceName, "vault_id"),
62+
),
63+
},
64+
})*/
65+
}
66+
2367
// issue-routing-tag: kms/default
2468
func TestKmsVaultReplicationResource_basic(t *testing.T) {
2569
t.Skip("Skip this test because virtual private vault is needed")

internal/service/kms/kms_vault_replication_resource.go

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package kms
22

33
import (
44
"context"
5+
"fmt"
56
"strings"
67

78
"github.com/oracle/terraform-provider-oci/internal/client"
@@ -32,8 +33,38 @@ func KmsVaultReplicationResource() *schema.Resource {
3233
Type: schema.TypeString,
3334
Required: true,
3435
},
35-
36-
// Optional
36+
"replica_vault_metadata": {
37+
Type: schema.TypeList,
38+
Optional: true,
39+
Computed: true,
40+
ForceNew: true,
41+
MaxItems: 1,
42+
MinItems: 1,
43+
Elem: &schema.Resource{
44+
Schema: map[string]*schema.Schema{
45+
// Required
46+
"idcs_account_name_url": {
47+
Type: schema.TypeString,
48+
Required: true,
49+
ForceNew: true,
50+
},
51+
"vault_type": {
52+
Type: schema.TypeString,
53+
Required: true,
54+
ForceNew: true,
55+
},
56+
"private_endpoint_id": {
57+
Type: schema.TypeString,
58+
Required: true,
59+
ForceNew: true,
60+
},
61+
62+
// Optional
63+
64+
// Computed
65+
},
66+
},
67+
},
3768

3869
// Computed
3970
},
@@ -172,6 +203,17 @@ func (s *KmsVaultReplicaResourceCrud) createVaultReplicaHelper(vaultId string, r
172203
request.ReplicaRegion = &replicaRegion
173204
}
174205

206+
if replicaVaultMetadata, ok := s.D.GetOkExists("replica_vault_metadata"); ok {
207+
if tmpList := replicaVaultMetadata.([]interface{}); len(tmpList) > 0 {
208+
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "replica_vault_metadata", 0)
209+
tmp, err := s.mapToReplicaVaultMetadata(fieldKeyFormat)
210+
if err != nil {
211+
return err
212+
}
213+
request.ReplicaVaultMetadata = &tmp
214+
}
215+
}
216+
175217
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "kms")
176218

177219
_, err := s.Client.CreateVaultReplica(context.Background(), request)
@@ -242,3 +284,19 @@ func (s *KmsVaultReplicaResourceCrud) DeletedTarget() []string {
242284
string(oci_kms.VaultReplicaSummaryStatusDeleted),
243285
}
244286
}
287+
288+
func (s *KmsVaultReplicaResourceCrud) mapToReplicaVaultMetadata(fieldKeyFormat string) (oci_kms.ReplicaExternalVaultMetadata, error) {
289+
result := oci_kms.ReplicaExternalVaultMetadata{}
290+
291+
if privateEndpointId, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "private_endpoint_id")); ok {
292+
tmp := privateEndpointId.(string)
293+
result.PrivateEndpointId = &tmp
294+
}
295+
296+
if idcsAccountNameUrl, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "idcs_account_name_url")); ok {
297+
tmp := idcsAccountNameUrl.(string)
298+
result.IdcsAccountNameUrl = &tmp
299+
}
300+
301+
return result, nil
302+
}

0 commit comments

Comments
 (0)