Skip to content

feat: added mirroring support #327

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 34 commits into from
Nov 29, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
fc93ca8
feat: added mirroring support
Ak-sky Oct 29, 2024
87a2643
feat: added mirroring support
Ak-sky Oct 29, 2024
a2a6373
feat: added mirroring support
Ak-sky Oct 29, 2024
c658f17
added mirroring test
Ak-sky Oct 29, 2024
62a3e2d
Merge branch 'main' into mirror
Ak-sky Nov 5, 2024
ed32059
Merge remote-tracking branch 'origin/main' into mirror
Ak-sky Nov 13, 2024
087f175
Merge branch 'main' into mirror
Ak-sky Nov 18, 2024
e966f58
added mirroring feat
Ak-sky Nov 19, 2024
31dbb39
added mirroring feat
Ak-sky Nov 19, 2024
05b231e
added mirroring feat
Ak-sky Nov 19, 2024
f8c66a9
minor fixes
Ak-sky Nov 19, 2024
f7a54d7
minor fixes
Ak-sky Nov 19, 2024
853574f
minor fixes
Ak-sky Nov 19, 2024
3f1117b
removed mirroring ex
Ak-sky Nov 20, 2024
cdbd699
resolved conflicts
Ak-sky Nov 20, 2024
e3b4b70
added tests
Ak-sky Nov 20, 2024
8843366
minor fixes
Ak-sky Nov 21, 2024
a51810c
fix auth policy var exposure
Ak-sky Nov 21, 2024
38becf9
minor fixes
Ak-sky Nov 21, 2024
1016854
updated mirroring variable
Ak-sky Nov 21, 2024
88dc2e1
updated mirroring variable description
Ak-sky Nov 21, 2024
899fcba
updated mirroring variable description
Ak-sky Nov 21, 2024
122ac00
minor fixes
Ak-sky Nov 22, 2024
2b02a8a
minor fixes
Ak-sky Nov 22, 2024
4639bc8
auth policy fixes
Ak-sky Nov 22, 2024
45c7db6
auth policy fixes
Ak-sky Nov 22, 2024
849c925
Merge remote-tracking branch 'origin/main' into mirror
Ak-sky Nov 24, 2024
63e6d15
updated test
Ak-sky Nov 24, 2024
8513199
fscloud in schematics
Ak-sky Nov 26, 2024
8849900
updated mirroring variable in fscloud
Ak-sky Nov 26, 2024
1f2dae1
addressed review comments
Ak-sky Nov 29, 2024
45b566b
addressed review comments
Ak-sky Nov 29, 2024
8a578f0
addressed review comments
Ak-sky Nov 29, 2024
3ceb859
addressed review comments
Ak-sky Nov 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
auth policy fixes
  • Loading branch information
Ak-sky committed Nov 22, 2024
commit 4639bc8f21168e9faa9afba67d0cc5356e1ef7c1
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,14 +127,12 @@ You need the following permissions to run this module.
| [ibm_event_streams_topic.es_topic](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/event_streams_topic) | resource |
| [ibm_iam_authorization_policy.es_s2s_policy](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/iam_authorization_policy) | resource |
| [ibm_iam_authorization_policy.kms_policy](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/iam_authorization_policy) | resource |
| [ibm_iam_authorization_policy.mirroring_policy](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/iam_authorization_policy) | resource |
| [ibm_resource_instance.es_instance](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/resource_instance) | resource |
| [ibm_resource_key.service_credentials](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/resource_key) | resource |
| [ibm_resource_tag.es_access_tag](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/resource_tag) | resource |
| [time_sleep.wait_for_authorization_policy](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
| [time_sleep.wait_for_es_s2s_policy](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
| [time_sleep.wait_for_kms_authorization_policy](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
| [time_sleep.wait_for_mirroring_authorization_policy](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |

### Inputs

Expand Down
34 changes: 8 additions & 26 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -153,22 +153,6 @@ resource "time_sleep" "wait_for_kms_authorization_policy" {
create_duration = "30s"
}

# Create s2s at service level for provisioning mirroring instance
resource "ibm_iam_authorization_policy" "es_s2s_policy" {
count = var.mirroring_enabled == false || var.skip_es_s2s_iam_authorization_policy ? 0 : 1
source_service_name = "messagehub"
target_service_name = "messagehub"
roles = ["Reader"]
description = "Required for provisioning mirroring instance."
}

# workaround for https://github.com/IBM-Cloud/terraform-provider-ibm/issues/4478
resource "time_sleep" "wait_for_es_s2s_policy" {
depends_on = [ibm_iam_authorization_policy.es_s2s_policy]

create_duration = "30s"
}

# Parse GUID from source ES instance
module "es_guid_crn_parser" {
count = var.mirroring_enabled ? 1 : 0
Expand All @@ -177,22 +161,20 @@ module "es_guid_crn_parser" {
crn = var.mirroring.source_crn
}

# Create IAM Authorization Policies to allow mirroring EN instance to access source EN instance
resource "ibm_iam_authorization_policy" "mirroring_policy" {
depends_on = [ibm_resource_instance.es_instance]
count = var.mirroring_enabled ? 1 : 0
# Create s2s at service level for provisioning mirroring instance
resource "ibm_iam_authorization_policy" "es_s2s_policy" {
count = var.mirroring_enabled == false || var.skip_es_s2s_iam_authorization_policy ? 0 : 1
source_service_name = "messagehub"
source_resource_instance_id = ibm_resource_instance.es_instance.guid
source_resource_group_id = var.resource_group_id
target_service_name = "messagehub"
target_resource_instance_id = module.es_guid_crn_parser[0].service_instance
roles = ["Reader"]
description = "Allow an Event Streams mirroring instance ${ibm_resource_instance.es_instance.guid} to read from the source Event Streams instance ${module.es_guid_crn_parser[0].service_instance}."
description = "Allow all Event Streams instances in the resource group ${var.resource_group_id} to read from the source Event Streams instance ${module.es_guid_crn_parser[0].service_instance}."
}

# workaround for https://github.com/IBM-Cloud/terraform-provider-ibm/issues/4478
resource "time_sleep" "wait_for_mirroring_authorization_policy" {
count = var.mirroring_enabled ? 1 : 0
depends_on = [ibm_iam_authorization_policy.mirroring_policy]
resource "time_sleep" "wait_for_es_s2s_policy" {
depends_on = [ibm_iam_authorization_policy.es_s2s_policy]

create_duration = "30s"
}
Expand Down Expand Up @@ -250,7 +232,7 @@ locals {
}

resource "ibm_event_streams_mirroring_config" "es_mirroring_config" {
depends_on = [ibm_resource_instance.es_instance, time_sleep.wait_for_mirroring_authorization_policy]
depends_on = [ibm_resource_instance.es_instance]
count = var.mirroring_enabled ? 1 : 0
resource_instance_id = ibm_resource_instance.es_instance.id
mirroring_topic_patterns = var.mirroring_topic_patterns
Expand Down
2 changes: 1 addition & 1 deletion tests/pr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func TestRunFSCloudExample(t *testing.T) {
/*
Comment out the 'ResourceGroup' input to force this tests to create a unique resource group to ensure tests do
not clash. This is due to the fact that an auth policy may already exist in this resource group since we are
re-using a permanent HPCS instance. By using a new resource group, the auth policy will not already exist
re-using a permanent HPCS instance and permanent Event Streams instance. By using a new resource group, the auth policy will not already exist
since this module scopes auth policies by resource group.
*/
//ResourceGroup: resourceGroup,
Expand Down