Skip to content

Commit 307579d

Browse files
XinruXiao-9ravinitp
authored andcommitted
Added - Support for Multitenant support for Workload Identity (WRIS)
1 parent c5558b3 commit 307579d

14 files changed

+1150
-2
lines changed

examples/container_engine/main.tf

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,22 @@ variable "node_pool_state" {
5252
default = []
5353
}
5454

55+
variable "cluster_workload_mapping_namespace" {
56+
default = "namespace"
57+
}
58+
59+
variable "cluster_workload_mapping_defined_tags_value" {
60+
default = "value"
61+
}
62+
63+
variable "cluster_workload_mapping_freeform_tags" {
64+
default = { "Department" = "Finance" }
65+
}
66+
67+
variable defined_tag_namespace_name {
68+
default = "test"
69+
}
70+
5571
provider "oci" {
5672
region = var.region
5773
tenancy_ocid = var.tenancy_ocid
@@ -60,6 +76,24 @@ provider "oci" {
6076
private_key_path = var.private_key_path
6177
}
6278

79+
resource "oci_identity_tag_namespace" "tag-namespace1" {
80+
#Required
81+
compartment_id = var.tenancy_ocid
82+
description = "example tag namespace"
83+
name = var.defined_tag_namespace_name != "" ? var.defined_tag_namespace_name : "example-tag-namespace-all"
84+
85+
is_retired = false
86+
}
87+
88+
resource "oci_identity_tag" "tag1" {
89+
#Required
90+
description = "example tag"
91+
name = "example-tag"
92+
tag_namespace_id = oci_identity_tag_namespace.tag-namespace1.id
93+
94+
is_retired = false
95+
}
96+
6397
data "oci_identity_availability_domain" "ad1" {
6498
compartment_id = var.tenancy_ocid
6599
ad_number = 1
@@ -268,6 +302,17 @@ resource "oci_containerengine_node_pool" "test_flex_shape_node_pool" {
268302
ssh_public_key = var.node_pool_ssh_public_key
269303
}
270304

305+
resource "oci_containerengine_cluster_workload_mapping" "test_cluster_workload_mapping" {
306+
#Required"
307+
cluster_id = oci_containerengine_cluster.test_cluster.id
308+
mapped_compartment_id = var.compartment_ocid
309+
namespace = var.cluster_workload_mapping_namespace
310+
311+
#Optional
312+
defined_tags = {"${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}" = "${var.cluster_workload_mapping_defined_tags_value}"}
313+
freeform_tags = var.cluster_workload_mapping_freeform_tags
314+
}
315+
271316
output "cluster" {
272317
value = {
273318
id = oci_containerengine_cluster.test_cluster.id

internal/integrationtest/containerengine_cluster_workload_mapping_test.go

Lines changed: 337 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
// Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package containerengine
5+
6+
import (
7+
"context"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
oci_containerengine "github.com/oracle/oci-go-sdk/v65/containerengine"
11+
12+
"github.com/oracle/terraform-provider-oci/internal/client"
13+
"github.com/oracle/terraform-provider-oci/internal/tfresource"
14+
)
15+
16+
func ContainerengineClusterWorkloadMappingDataSource() *schema.Resource {
17+
fieldMap := make(map[string]*schema.Schema)
18+
fieldMap["cluster_id"] = &schema.Schema{
19+
Type: schema.TypeString,
20+
Required: true,
21+
}
22+
fieldMap["workload_mapping_id"] = &schema.Schema{
23+
Type: schema.TypeString,
24+
Required: true,
25+
}
26+
return tfresource.GetSingularDataSourceItemSchema(ContainerengineClusterWorkloadMappingResource(), fieldMap, readSingularContainerengineClusterWorkloadMapping)
27+
}
28+
29+
func readSingularContainerengineClusterWorkloadMapping(d *schema.ResourceData, m interface{}) error {
30+
sync := &ContainerengineClusterWorkloadMappingDataSourceCrud{}
31+
sync.D = d
32+
sync.Client = m.(*client.OracleClients).ContainerEngineClient()
33+
34+
return tfresource.ReadResource(sync)
35+
}
36+
37+
type ContainerengineClusterWorkloadMappingDataSourceCrud struct {
38+
D *schema.ResourceData
39+
Client *oci_containerengine.ContainerEngineClient
40+
Res *oci_containerengine.GetWorkloadMappingResponse
41+
}
42+
43+
func (s *ContainerengineClusterWorkloadMappingDataSourceCrud) VoidState() {
44+
s.D.SetId("")
45+
}
46+
47+
func (s *ContainerengineClusterWorkloadMappingDataSourceCrud) Get() error {
48+
request := oci_containerengine.GetWorkloadMappingRequest{}
49+
50+
if clusterId, ok := s.D.GetOkExists("cluster_id"); ok {
51+
tmp := clusterId.(string)
52+
request.ClusterId = &tmp
53+
}
54+
55+
if workloadMappingId, ok := s.D.GetOkExists("workload_mapping_id"); ok {
56+
tmp := workloadMappingId.(string)
57+
request.WorkloadMappingId = &tmp
58+
}
59+
60+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "containerengine")
61+
62+
response, err := s.Client.GetWorkloadMapping(context.Background(), request)
63+
if err != nil {
64+
return err
65+
}
66+
67+
s.Res = &response
68+
return nil
69+
}
70+
71+
func (s *ContainerengineClusterWorkloadMappingDataSourceCrud) SetData() error {
72+
if s.Res == nil {
73+
return nil
74+
}
75+
76+
s.D.SetId(*s.Res.Id)
77+
78+
if s.Res.DefinedTags != nil {
79+
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
80+
}
81+
82+
s.D.Set("freeform_tags", s.Res.FreeformTags)
83+
84+
if s.Res.MappedCompartmentId != nil {
85+
s.D.Set("mapped_compartment_id", *s.Res.MappedCompartmentId)
86+
}
87+
88+
if s.Res.MappedTenancyId != nil {
89+
s.D.Set("mapped_tenancy_id", *s.Res.MappedTenancyId)
90+
}
91+
92+
if s.Res.Namespace != nil {
93+
s.D.Set("namespace", *s.Res.Namespace)
94+
}
95+
96+
s.D.Set("state", s.Res.LifecycleState)
97+
98+
if s.Res.TimeCreated != nil {
99+
s.D.Set("time_created", s.Res.TimeCreated.String())
100+
}
101+
102+
return nil
103+
}

0 commit comments

Comments
 (0)