From c5a92eb307c637a47416621987b543b8ab7921ae Mon Sep 17 00:00:00 2001 From: ocofaigh Date: Thu, 18 Sep 2025 14:11:47 +0100 Subject: [PATCH 1/3] fix(deps): update DA dependencies + example cleanup --- examples/advanced/README.md | 8 +++++ examples/basic/README.md | 4 ++- examples/basic/main.tf | 58 ++++++++++++++----------------------- examples/basic/outputs.tf | 5 ---- ibm_catalog.json | 8 ++--- tests/pr_test.go | 47 ++++++++++-------------------- 6 files changed, 52 insertions(+), 78 deletions(-) diff --git a/examples/advanced/README.md b/examples/advanced/README.md index d52511a3..12a52fe4 100644 --- a/examples/advanced/README.md +++ b/examples/advanced/README.md @@ -2,3 +2,11 @@ + +An end-to-end advanced example that will provision the following: +- A new resource group if one is not passed in. +- A new Cloud Logs instance. +- A new Key Protect instance with a root key. +- A new COS instance and KMS encrypted bucket. +- An Activity Tracker target for the new COS bucket, Cloud Logs instance and Event Streams instance. +- And Activity Tracker route for the above created targets. diff --git a/examples/basic/README.md b/examples/basic/README.md index e5977ae2..0da3f1a7 100644 --- a/examples/basic/README.md +++ b/examples/basic/README.md @@ -8,4 +8,6 @@ The text below should describe exactly what resources are provisioned / configur An end-to-end basic example that will provision the following: - A new resource group if one is not passed in. -- A new standard plan Cloud Object Storage instance using the root level module. +- A new COS instance and bucket. +- An Activity Tracker target for the new COS bucket. +- And Activity Tracker route for the COS bucket target. diff --git a/examples/basic/main.tf b/examples/basic/main.tf index 93cbecef..7cc2e861 100644 --- a/examples/basic/main.tf +++ b/examples/basic/main.tf @@ -11,41 +11,27 @@ module "resource_group" { } ############################################################################## -# Event Streams +# COS instance and bucket ############################################################################## -locals { - topic_name = "${var.prefix}-topic" -} - -module "event_streams" { - source = "terraform-ibm-modules/event-streams/ibm" - version = "4.1.7" - es_name = "${var.prefix}-eventsteams" - tags = var.resource_tags - region = var.region +module "cos" { + source = "terraform-ibm-modules/cos/ibm" + version = "10.2.21" resource_group_id = module.resource_group.resource_group_id - plan = "standard" - topics = [{ - name = local.topic_name - partitions = 1 - config = { - "cleanup.policy" = "delete" - "retention.ms" = "86400000" # 1 Day - "retention.bytes" = "10485760" # 10 MB - "segment.bytes" = "536870912" # 512 MB - } - }, ] + region = var.region + cos_instance_name = "${var.prefix}-cos" + cos_tags = var.resource_tags + bucket_name = "${var.prefix}-bucket" } ############################################################################## # - Activity Tracker Event Routing config: -# - Event Streams AT target -# - AT route event stream target +# - COS bucket AT target +# - AT route to COS bucket target ############################################################################## locals { - es_target_name = "${var.prefix}-es-at-target" + bucket_target_name = "${var.prefix}-cos-at-target" } module "activity_tracker" { @@ -54,25 +40,23 @@ module "activity_tracker" { # source = "terraform-ibm-modules/activity-tracker/ibm" # version = "X.Y.Z" # Replace "X.X.X" with a release version to lock into a specific release - # Activity Tracker target - eventstreams_targets = [ + # COS bucket target + cos_targets = [ { - instance_id = module.event_streams.id - brokers = [module.event_streams.kafka_brokers_sasl[0]] - topic = local.topic_name - target_region = var.region - target_name = local.es_target_name - service_to_service_enabled = true - skip_atracker_es_iam_auth_policy = false + bucket_name = module.cos.bucket_name + endpoint = module.cos.s3_endpoint_direct + instance_id = module.cos.cos_instance_id + target_region = var.region + target_name = "${var.prefix}-cos-target" } ] - # Activity Tracker route + # Activity Tracker route to COS bucket activity_tracker_routes = [ { locations = ["*", "global"] - target_ids = [module.activity_tracker.activity_tracker_targets[local.es_target_name].id] - route_name = "${var.prefix}-at-route" + target_ids = [module.activity_tracker.activity_tracker_targets[local.bucket_target_name].id] + route_name = "${var.prefix}-cos-route" } ] } diff --git a/examples/basic/outputs.tf b/examples/basic/outputs.tf index 566bc90e..f683246a 100644 --- a/examples/basic/outputs.tf +++ b/examples/basic/outputs.tf @@ -12,11 +12,6 @@ output "resource_group_id" { value = module.resource_group.resource_group_id } -output "event_streams_crn" { - description = "The CRN of the event stream resource instance." - value = module.event_streams.crn -} - output "event_routing_targets" { value = module.activity_tracker.activity_tracker_targets description = "The created AT event routing target." diff --git a/ibm_catalog.json b/ibm_catalog.json index fcf4897e..a287742a 100644 --- a/ibm_catalog.json +++ b/ibm_catalog.json @@ -315,7 +315,7 @@ "name": "deploy-arch-ibm-cos", "description": "Enable this to create an IBM Cloud Object Storage(COS) instance. The buckets to store events will be created by the Activity Tracker Event Routing deployable architecture.", "id": "68921490-2778-4930-ac6d-bae7be6cd958-global", - "version": "v10.2.1", + "version": "v10.2.21", "flavors": [ "instance" ], @@ -347,7 +347,7 @@ "name": "deploy-arch-ibm-kms", "description": "Enable when you want to create your own managed keys to encrypt the buckets. Select only if existing KMS instance or Key is not provided. ", "id": "2cad4789-fa90-4886-9c9e-857081c273ee-global", - "version": "v5.1.19", + "version": "v5.1.27", "flavors": [ "fully-configurable" ], @@ -383,7 +383,7 @@ "fully-configurable" ], "id": "63d8ae58-fbf3-41ce-b844-0fb5b85882ab-global", - "version": "v1.6.11", + "version": "v1.6.28", "optional": true, "on_by_default": true, "input_mapping": [ @@ -411,7 +411,7 @@ "name": "deploy-arch-ibm-cloud-monitoring", "description": "Configure IBM Cloud Monitoring to collect the platform metrics.", "id": "73debdbf-894f-4c14-81c7-5ece3a70b67d-global", - "version": "v1.6.4", + "version": "v1.7.2", "flavors": [ "fully-configurable" ], diff --git a/tests/pr_test.go b/tests/pr_test.go index 05b11dba..ecc3ce65 100644 --- a/tests/pr_test.go +++ b/tests/pr_test.go @@ -22,11 +22,14 @@ import ( "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/testschematic" ) -// Use existing resource group +/* +Global variables +*/ const resourceGroup = "geretain-test-resources" const yamlLocation = "../common-dev-assets/common-go-assets/common-permanent-resources.yaml" const fullyConfigurableTerraformDir = "solutions/fully-configurable" const AccountSettingsDADir = "solutions/event-routing-account-settings" +const terraformVersion = "terraform_v1.10" // This should match the version in the ibm_catalog.json // Removed "in-che" from validRegions since it isn’t supported under the Standard plan of Event Streams. var validRegions = []string{ @@ -44,7 +47,6 @@ var validRegions = []string{ var IgnoreUpdates = []string{ "module.account_routing_settings.ibm_atracker_settings.atracker_settings[0]", } - var permanentResources map[string]interface{} func TestMain(m *testing.M) { @@ -59,7 +61,7 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } -func setupexistingOptions(t *testing.T, cloudLogsPrefix string) (preReqTfOptions *terraform.Options, err error) { +func setupExistingOptions(t *testing.T, cloudLogsPrefix string) (preReqTfOptions *terraform.Options, err error) { realTerraformDir := "./resources" tempTerraformDir, tempCopyErr := files.CopyTerraformFolderToTemp(realTerraformDir, cloudLogsPrefix) @@ -109,11 +111,12 @@ func TestFullyConfigurableInSchematics(t *testing.T) { Tags: []string{"test-schematic"}, DeleteWorkspaceOnFail: false, WaitJobCompleteMinutes: 60, + TerraformVersion: terraformVersion, }) cloudLogsPrefix := fmt.Sprintf("cloud-logs-%s", strings.ToLower(random.UniqueId())) - existingTerraformOptions, err := setupexistingOptions(t, cloudLogsPrefix) + existingTerraformOptions, err := setupExistingOptions(t, cloudLogsPrefix) if err != nil { assert.True(t, err == nil, "cloud logs instance creation failed") @@ -162,16 +165,18 @@ func TestFullyConfigurableUpgradeInSchematics(t *testing.T) { "*.tf", fullyConfigurableTerraformDir + "/*.tf", }, - ResourceGroup: resourceGroup, - TemplateFolder: fullyConfigurableTerraformDir, - Tags: []string{"test-schematic"}, - DeleteWorkspaceOnFail: false, - WaitJobCompleteMinutes: 60, + ResourceGroup: resourceGroup, + TemplateFolder: fullyConfigurableTerraformDir, + Tags: []string{"test-schematic"}, + DeleteWorkspaceOnFail: false, + WaitJobCompleteMinutes: 60, + CheckApplyResultForUpgrade: true, + TerraformVersion: terraformVersion, }) cloudLogsPrefix := fmt.Sprintf("cloud-logs-%s", strings.ToLower(random.UniqueId())) - existingTerraformOptions, err := setupexistingOptions(t, cloudLogsPrefix) + existingTerraformOptions, err := setupExistingOptions(t, cloudLogsPrefix) if err != nil { assert.True(t, err == nil, "cloud logs instance creation failed") @@ -237,6 +242,7 @@ func TestRunAccountSettings(t *testing.T) { Tags: []string{"er-da-test"}, DeleteWorkspaceOnFail: false, WaitJobCompleteMinutes: 60, + TerraformVersion: terraformVersion, IgnoreUpdates: testhelper.Exemptions{ // Ignore for consistency check List: IgnoreUpdates, }, @@ -274,24 +280,3 @@ func TestActivityTrackerDefaultConfiguration(t *testing.T) { err := options.RunAddonTest() require.NoError(t, err) } - -func TestActivityTrackerDependencyPermutations(t *testing.T) { - t.Skip("Skipping dependency permutations until the test is fixed") - t.Parallel() - options := testaddons.TestAddonsOptionsDefault(&testaddons.TestAddonOptions{ - Testing: t, - Prefix: "act-per", - AddonConfig: cloudinfo.AddonConfig{ - OfferingName: "deploy-arch-ibm-activity-tracker", - OfferingFlavor: "fully-configurable", - Inputs: map[string]interface{}{ - "prefix": "act-per", - "region": validRegions[rand.Intn(len(validRegions))], - "existing_resource_group_name": resourceGroup, - }, - }, - }) - - err := options.RunAddonPermutationTest() - assert.NoError(t, err, "Dependency permutation test should not fail") -} From 77c2020ff4e86ef2c8377aec7f93215a1dca5abe Mon Sep 17 00:00:00 2001 From: ocofaigh Date: Thu, 18 Sep 2025 17:29:43 +0100 Subject: [PATCH 2/3] bump git submodule --- common-dev-assets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-dev-assets b/common-dev-assets index 9abb2581..325cfd0d 160000 --- a/common-dev-assets +++ b/common-dev-assets @@ -1 +1 @@ -Subproject commit 9abb2581610844f40aeb4f8a8b7f24e5a127d45b +Subproject commit 325cfd0d91902e08079644092bbf298c4872f388 From c611dca0993ddc34ed145cace22cef8f028abb73 Mon Sep 17 00:00:00 2001 From: ocofaigh Date: Fri, 19 Sep 2025 09:23:09 +0100 Subject: [PATCH 3/3] fix typo --- examples/basic/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/basic/README.md b/examples/basic/README.md index 0da3f1a7..680ff08f 100644 --- a/examples/basic/README.md +++ b/examples/basic/README.md @@ -10,4 +10,4 @@ An end-to-end basic example that will provision the following: - A new resource group if one is not passed in. - A new COS instance and bucket. - An Activity Tracker target for the new COS bucket. -- And Activity Tracker route for the COS bucket target. +- An Activity Tracker route for the COS bucket target.