From 43273fbb572770c01223906572bb683e2ee4d8e6 Mon Sep 17 00:00:00 2001 From: Rael Garcia Date: Tue, 30 Jun 2026 07:35:39 +0000 Subject: [PATCH] fix(grafana): pin STG-global V2 Grafana major version to 13 (AROSLSRE-1362) Azure Managed Grafana retired major version 11 for new Standard-SKU workspace creation on 2026-06-15 (valid: 12, 13). The STG-global V2 workspace is created fresh, so it must be born on a supported version. Add a V2-only stgGlobalV2.grafanaMajorVersion field (empty-sentinel default, 13 in the stg overlay) and source the V2 global-infra grafanaMajorVersion param from it instead of monitoring.grafanaMajorVersion. This keeps the live fleet grandfathered and untouched. --- config/config.msft.clouds-overlay.yaml | 5 +++++ config/config.schema.json | 6 +++++- config/config.yaml | 1 + config/rendered/dev/ci00/centralus.yaml | 1 + config/rendered/dev/ci01/centralus.yaml | 1 + config/rendered/dev/cspr/westus3.yaml | 1 + config/rendered/dev/dev/westus3.yaml | 1 + config/rendered/dev/perf/westus3.yaml | 1 + config/rendered/dev/pers/westus3.yaml | 1 + .../configurations/global-infra-stg.tmpl.bicepparam | 9 ++++++--- 10 files changed, 23 insertions(+), 4 deletions(-) diff --git a/config/config.msft.clouds-overlay.yaml b/config/config.msft.clouds-overlay.yaml index 5535e7c287f..55b7b7fcadc 100644 --- a/config/config.msft.clouds-overlay.yaml +++ b/config/config.msft.clouds-overlay.yaml @@ -48,6 +48,11 @@ clouds: # New Grafana workspace (live stg is arohcp-stg; this is the V2 one). # Globally unique — must differ from the live name to avoid NameNotUnique. grafanaName: "arohcp-{{ .ctx.environment }}2" + # V2-only Grafana major version. Azure Managed Grafana retired v11 for + # new Standard-SKU workspace creation on 2026-06-15 (valid: 12, 13), so + # the brand-new V2 workspace must be born on 13. Kept separate from the + # shared monitoring config so the live fleet stays grandfathered. + grafanaMajorVersion: "13" # E2E e2e: regionTest: diff --git a/config/config.schema.json b/config/config.schema.json index 8e210eb35ac..7310fbca99c 100644 --- a/config/config.schema.json +++ b/config/config.schema.json @@ -3342,6 +3342,9 @@ }, "grafanaName": { "type": "string" + }, + "grafanaMajorVersion": { + "type": "string" } }, "additionalProperties": false, @@ -3356,7 +3359,8 @@ "svcParentZoneName", "cxParentZoneName", "kustoName", - "grafanaName" + "grafanaName", + "grafanaMajorVersion" ] }, "releaseApprover": { diff --git a/config/config.yaml b/config/config.yaml index e2448d25f85..11ab4d0f1d4 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -119,6 +119,7 @@ defaults: cxParentZoneName: "empty-sentinel" kustoName: "empty-sentinel" grafanaName: "empty-sentinel" + grafanaMajorVersion: "empty-sentinel" # Image Registry Policy imageRegistryPolicy: extraAllowedRegistries: "" diff --git a/config/rendered/dev/ci00/centralus.yaml b/config/rendered/dev/ci00/centralus.yaml index fdd296dd676..03a22ad7888 100755 --- a/config/rendered/dev/ci00/centralus.yaml +++ b/config/rendered/dev/ci00/centralus.yaml @@ -914,6 +914,7 @@ stgGlobalV2: frontDoorName: empty-sentinel genevaKeyVaultName: empty-sentinel globalKeyVaultName: empty-sentinel + grafanaMajorVersion: empty-sentinel grafanaName: empty-sentinel kustoName: empty-sentinel oidcStorageAccountName: empty-sentinel diff --git a/config/rendered/dev/ci01/centralus.yaml b/config/rendered/dev/ci01/centralus.yaml index b05cfc262c5..89d348bca2a 100755 --- a/config/rendered/dev/ci01/centralus.yaml +++ b/config/rendered/dev/ci01/centralus.yaml @@ -914,6 +914,7 @@ stgGlobalV2: frontDoorName: empty-sentinel genevaKeyVaultName: empty-sentinel globalKeyVaultName: empty-sentinel + grafanaMajorVersion: empty-sentinel grafanaName: empty-sentinel kustoName: empty-sentinel oidcStorageAccountName: empty-sentinel diff --git a/config/rendered/dev/cspr/westus3.yaml b/config/rendered/dev/cspr/westus3.yaml index 6da603c06e0..9149529ee23 100755 --- a/config/rendered/dev/cspr/westus3.yaml +++ b/config/rendered/dev/cspr/westus3.yaml @@ -912,6 +912,7 @@ stgGlobalV2: frontDoorName: empty-sentinel genevaKeyVaultName: empty-sentinel globalKeyVaultName: empty-sentinel + grafanaMajorVersion: empty-sentinel grafanaName: empty-sentinel kustoName: empty-sentinel oidcStorageAccountName: empty-sentinel diff --git a/config/rendered/dev/dev/westus3.yaml b/config/rendered/dev/dev/westus3.yaml index e94bc569f8c..5354fc32a94 100755 --- a/config/rendered/dev/dev/westus3.yaml +++ b/config/rendered/dev/dev/westus3.yaml @@ -912,6 +912,7 @@ stgGlobalV2: frontDoorName: empty-sentinel genevaKeyVaultName: empty-sentinel globalKeyVaultName: empty-sentinel + grafanaMajorVersion: empty-sentinel grafanaName: empty-sentinel kustoName: empty-sentinel oidcStorageAccountName: empty-sentinel diff --git a/config/rendered/dev/perf/westus3.yaml b/config/rendered/dev/perf/westus3.yaml index 29b80bdc6ec..2da0842c003 100755 --- a/config/rendered/dev/perf/westus3.yaml +++ b/config/rendered/dev/perf/westus3.yaml @@ -912,6 +912,7 @@ stgGlobalV2: frontDoorName: empty-sentinel genevaKeyVaultName: empty-sentinel globalKeyVaultName: empty-sentinel + grafanaMajorVersion: empty-sentinel grafanaName: empty-sentinel kustoName: empty-sentinel oidcStorageAccountName: empty-sentinel diff --git a/config/rendered/dev/pers/westus3.yaml b/config/rendered/dev/pers/westus3.yaml index e45f92ff6ac..d6edfe7926a 100755 --- a/config/rendered/dev/pers/westus3.yaml +++ b/config/rendered/dev/pers/westus3.yaml @@ -914,6 +914,7 @@ stgGlobalV2: frontDoorName: empty-sentinel genevaKeyVaultName: empty-sentinel globalKeyVaultName: empty-sentinel + grafanaMajorVersion: empty-sentinel grafanaName: empty-sentinel kustoName: empty-sentinel oidcStorageAccountName: empty-sentinel diff --git a/dev-infrastructure/configurations/global-infra-stg.tmpl.bicepparam b/dev-infrastructure/configurations/global-infra-stg.tmpl.bicepparam index d28b39dbc30..1b3ccadcc1d 100644 --- a/dev-infrastructure/configurations/global-infra-stg.tmpl.bicepparam +++ b/dev-infrastructure/configurations/global-infra-stg.tmpl.bicepparam @@ -18,10 +18,13 @@ param keyVaultTagKey = '{{ .global.keyVault.tagKey }}' param keyVaultTagValue = '{{ .global.keyVault.tagValue }}' param keyVaultEncryptionKeyName = '{{ .global.keyVault.encryptionKeyName }}' -// V2 grafana name from stgGlobalV2 (not monitoring.grafanaName) so the parallel -// STG-global stack does not collide with the live arohcp-stg Grafana workspace. +// V2 grafana name and major version from stgGlobalV2 (not monitoring.*) so the +// parallel STG-global stack does not collide with the live arohcp-stg Grafana +// workspace, and so the brand-new V2 workspace is created on a Grafana major +// version Azure still accepts for new Standard-SKU workspaces (v11 retired +// 2026-06-15; valid: 12, 13). The live fleet stays grandfathered on monitoring.*. param grafanaName = '{{ .stgGlobalV2.grafanaName }}' -param grafanaMajorVersion = '{{ .monitoring.grafanaMajorVersion }}' +param grafanaMajorVersion = '{{ .stgGlobalV2.grafanaMajorVersion }}' param grafanaZoneRedundantMode = '{{ .monitoring.grafanaZoneRedundantMode }}' param grafanaRoles = '{{ .monitoring.grafanaRoles }}' param crossTenantSecurityGroup = '{{ .monitoring.crossTenantSecurityGroup }}'