Skip to content

Commit f230857

Browse files
andrecorreanetorrywhenHalimer
authored
Release 0.2.8 (#37)
* Release 0.2.1 * Release 0.2.2 * feat: TF < 1.3.0 restriction removed * feat: TF binary equal or greater than 1.3.0 requirement added * chore: release notes and version bump * chore: release notes, tag and SPECs updated * fix typo in dynamic groups that refered to domain groups * fix: version = "<= 5.16.0" removed * chore: release notes, version and spec updated * feat: OCI FW and ZPR IAM policies added * feat: examples updated * chore: release notes and version update * chore: release notes updated. * fix: attribute_sets = ["all"] added to oci_identity_domains_group * chore: release notes and version increment * fix: preventing username dupes to fail user lookup * fix: ignoring username dupes that can be provided as input * chore: release notes a version increment * chore: release date updated * feat: debug flag added * fix: user lookup only checks ACTIVE users * chore: release notes updated * doc: SPEC.md updated * feat: members checked against their respective identity domains. * doc: spec updated * chore: release notes * fix: debug reporting removed --------- Signed-off-by: Andre Correa <andre.correa@oracle.com> Co-authored-by: Rory Nguyen <rory.nguyen@oracle.com> Co-authored-by: josh_hammer <josh.hammer@oracle.com>
1 parent 3e2d458 commit f230857

File tree

6 files changed

+21
-20
lines changed

6 files changed

+21
-20
lines changed

RELEASE-NOTES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# March 25, 2025 Release Notes - 0.2.8
2+
## Updates
3+
1. [Identity Domains module](./identity-domains/)
4+
- Only ACTIVE users are looked up for group membership assignments in identity domains.
5+
6+
17
# January 10, 2025 Release Notes - 0.2.7
28
## Updates
39
1. [Groups module](./groups/)

identity-domains/SPEC.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ No modules.
5151
| [oci_identity_region_subscriptions.this](https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/identity_region_subscriptions) | data source |
5252
| [oci_identity_regions.these](https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/identity_regions) | data source |
5353
| [oci_identity_tenancy.this](https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/identity_tenancy) | data source |
54-
| [oci_identity_domain.service_provider_domain](https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/identity_domain) | data source |
55-
| [oci_identity_domains_app_roles.client_app_roles](https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/identity_domains_app_roles) | data source |
56-
| [oci_identity_domains_group.granted_app_group](https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/identity_domains_group) | data source |
57-
| [http.sp_signing_cert](https://docs.oracle.com/en/cloud/paas/identity-cloud/rest-api/op-admin-v1-signingcert-jwk-get.html) | data source |
5854

5955
## Inputs
6056

@@ -76,7 +72,6 @@ No modules.
7672
| <a name="output_identity_domain_applications"></a> [identity\_domain\_applications](#output\_identity\_domain\_applications) | The identity domain applications |
7773
| <a name="output_identity_domain_dynamic_groups"></a> [identity\_domain\_dynamic\_groups](#output\_identity\_domain\_dynamic\_groups) | The identity domain groups |
7874
| <a name="output_identity_domain_groups"></a> [identity\_domain\_groups](#output\_identity\_domain\_groups) | The identity domain groups |
79-
| <a name="output_identity_domain_identity_providers"></a> [identity\_domain\_identity\_providers](#output\_identity\_domain\_identity\_providers) | The identity domain identity providers |
80-
| <a name="output_identity_domain_applications"></a> [identity\_domain\_applications](#output\_identity\_domain\_applicationss) | The identity domain applications |
75+
| <a name="output_identity_domain_identity_providers"></a> [identity\_domain\_identity\_providers](#output\_identity\_domain\_identity\_providers) | The identity domain groups |
8176
| <a name="output_identity_domain_saml_metadata"></a> [identity\_domain\_saml\_metadata](#output\_identity\_domain\_saml\_metadata) | n/a |
8277
| <a name="output_identity_domains"></a> [identity\_domains](#output\_identity\_domains) | The identity domains. |

identity-domains/examples/vision/variables.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ variable "identity_domains_configuration" {
1717
variable "identity_domain_groups_configuration" {
1818
description = "The identity domain groups configuration."
1919
type = any
20+
default = null
2021
}
2122

2223
variable "identity_domain_dynamic_groups_configuration" {
2324
description = "The identity domain dynamic groups configuration."
2425
type = any
26+
default = null
2527
}

identity-domains/groups.tf

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ data "oci_identity_domain" "grp_domain" {
77
}
88

99
data "oci_identity_domains_users" "these" {
10-
1110
for_each = var.identity_domain_groups_configuration != null ? (var.identity_domain_groups_configuration.groups != null ? var.identity_domain_groups_configuration.groups : {} ): {}
12-
idcs_endpoint = contains(keys(oci_identity_domain.these),coalesce(each.value.identity_domain_id,"None")) ? oci_identity_domain.these[each.value.identity_domain_id].url : (contains(keys(oci_identity_domain.these),coalesce(var.identity_domain_groups_configuration.default_identity_domain_id,"None") ) ? oci_identity_domain.these[var.identity_domain_groups_configuration.default_identity_domain_id].url : data.oci_identity_domain.grp_domain[each.key].url)
13-
11+
idcs_endpoint = contains(keys(oci_identity_domain.these),coalesce(each.value.identity_domain_id,"None")) ? oci_identity_domain.these[each.value.identity_domain_id].url : (contains(keys(oci_identity_domain.these),coalesce(var.identity_domain_groups_configuration.default_identity_domain_id,"None") ) ? oci_identity_domain.these[var.identity_domain_groups_configuration.default_identity_domain_id].url : data.oci_identity_domain.grp_domain[each.key].url)
12+
user_filter = "active eq true" # Only active users are looked up.
1413

1514
}
1615

@@ -22,33 +21,34 @@ locals {
2221

2322

2423
resource "oci_identity_domains_group" "these" {
25-
for_each = var.identity_domain_groups_configuration != null ? var.identity_domain_groups_configuration.groups : {}
24+
for_each = var.identity_domain_groups_configuration != null ? var.identity_domain_groups_configuration.groups : {}
25+
lifecycle {
26+
precondition {
27+
condition = length(setsubtract(toset(each.value.members),toset([for m in each.value.members : m if contains(keys(local.users[each.key]),m)]))) == 0
28+
error_message = "VALIDATION FAILURE: following provided usernames in \"members\" attribute of group \"${each.key}\" do not exist or are not active\": ${join(", ",setsubtract(toset(each.value.members),toset([for m in each.value.members : m if contains(keys(local.users[each.key]),m)])))}. Please either correct their spelling or activate them."
29+
}
30+
}
2631

2732
attribute_sets = ["all"]
2833
idcs_endpoint = contains(keys(oci_identity_domain.these),coalesce(each.value.identity_domain_id,"None")) ? oci_identity_domain.these[each.value.identity_domain_id].url : (contains(keys(oci_identity_domain.these),coalesce(var.identity_domain_groups_configuration.default_identity_domain_id,"None") ) ? oci_identity_domain.these[var.identity_domain_groups_configuration.default_identity_domain_id].url : data.oci_identity_domain.grp_domain[each.key].url)
2934

3035
display_name = each.value.name
3136
schemas = ["urn:ietf:params:scim:schemas:core:2.0:Group","urn:ietf:params:scim:schemas:oracle:idcs:extension:group:Group","urn:ietf:params:scim:schemas:extension:custom:2.0:Group"]
32-
3337
urnietfparamsscimschemasoracleidcsextensiongroup_group {
3438
creation_mechanism = "api"
3539
description = each.value.description
3640
}
37-
3841
urnietfparamsscimschemasoracleidcsextensionrequestable_group {
3942
requestable = each.value.requestable
4043
}
41-
42-
dynamic "members" {
44+
dynamic "members" {
4345
for_each = each.value.members != null ? each.value.members : []
4446
content {
4547
type = "User"
4648
value = local.users[each.key][members["value"]]
47-
4849
}
4950
}
5051
urnietfparamsscimschemasoracleidcsextension_oci_tags {
51-
5252
dynamic "defined_tags" {
5353
for_each = each.value.defined_tags != null ? each.value.defined_tags : (var.identity_domain_groups_configuration.default_defined_tags !=null ? var.identity_domain_groups_configuration.default_defined_tags : {})
5454
content {

identity-domains/outputs.tf

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@ output "identity_domain_applications" {
2121
value = oci_identity_domains_app.these
2222
}
2323

24-
25-
2624
output "identity_domain_identity_providers" {
2725
description = "The identity domain groups"
2826
value = oci_identity_domains_identity_provider.these
2927
}
3028

3129
output "identity_domain_saml_metadata" {
3230
value = { for k,v in data.http.saml_metadata : k=> v.response_body }
33-
}
31+
}

release.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.2.7
1+
0.2.8

0 commit comments

Comments
 (0)