From 413f9191a4e0c4ad99c1532b39ddc061e6d6d464 Mon Sep 17 00:00:00 2001 From: devantler Date: Tue, 23 Jun 2026 08:22:49 +0200 Subject: [PATCH] fix(teams): reference maintainers team by numerical id so #50 reconciles provider-github imports Team/TeamRepository/TeamMembership by the team's NUMERICAL id, not its slug. The merged #50 used the slug "maintainers" everywhere, so once delivered (v1.5.0) every team resource failed observe with strconv.ParseInt errors and the whole team taxonomy stayed unsynced. - Team: external-name slug -> numerical id 17046606 (stable import id) - TeamRepository/TeamMembership: hardcoded teamId slug -> teamIdRef so the team id resolves from the Team CR's external-name - TeamRepository import ids: maintainers: -> 17046606: --- deploy/teams/maintainers.yaml | 57 ++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/deploy/teams/maintainers.yaml b/deploy/teams/maintainers.yaml index a750a47..cfffcd7 100644 --- a/deploy/teams/maintainers.yaml +++ b/deploy/teams/maintainers.yaml @@ -9,8 +9,11 @@ kind: Team metadata: name: maintainers annotations: - # Adopt the EXISTING devantler-tech/maintainers team (read-only). - crossplane.io/external-name: maintainers + # Adopt the EXISTING devantler-tech/maintainers team (read-only). provider-github + # imports a Team by its NUMERICAL id, not its slug — a slug external-name fails + # observe with `Unexpected ID format ("maintainers"), expected numerical ID`. The + # team id is stable; `forProvider.name` keeps the slug as the human-readable name. + crossplane.io/external-name: "17046606" spec: managementPolicies: ["Observe"] forProvider: @@ -28,7 +31,8 @@ metadata: spec: managementPolicies: ["Observe", "Create", "Update", "LateInitialize"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers username: devantler role: maintainer providerConfigRef: @@ -40,11 +44,12 @@ kind: TeamRepository metadata: name: maintainers-actions annotations: - crossplane.io/external-name: maintainers:actions + crossplane.io/external-name: "17046606:actions" spec: managementPolicies: ["Observe"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: actions permission: maintain providerConfigRef: @@ -56,11 +61,12 @@ kind: TeamRepository metadata: name: maintainers-dotnet-template annotations: - crossplane.io/external-name: maintainers:dotnet-template + crossplane.io/external-name: "17046606:dotnet-template" spec: managementPolicies: ["Observe"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: dotnet-template permission: maintain providerConfigRef: @@ -72,11 +78,12 @@ kind: TeamRepository metadata: name: maintainers-go-template annotations: - crossplane.io/external-name: maintainers:go-template + crossplane.io/external-name: "17046606:go-template" spec: managementPolicies: ["Observe"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: go-template permission: maintain providerConfigRef: @@ -88,11 +95,12 @@ kind: TeamRepository metadata: name: maintainers-ksail annotations: - crossplane.io/external-name: maintainers:ksail + crossplane.io/external-name: "17046606:ksail" spec: managementPolicies: ["Observe"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: ksail permission: maintain providerConfigRef: @@ -104,11 +112,12 @@ kind: TeamRepository metadata: name: maintainers-monorepo annotations: - crossplane.io/external-name: maintainers:monorepo + crossplane.io/external-name: "17046606:monorepo" spec: managementPolicies: ["Observe"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: monorepo permission: maintain providerConfigRef: @@ -120,11 +129,12 @@ kind: TeamRepository metadata: name: maintainers-platform annotations: - crossplane.io/external-name: maintainers:platform + crossplane.io/external-name: "17046606:platform" spec: managementPolicies: ["Observe"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: platform permission: maintain providerConfigRef: @@ -136,11 +146,12 @@ kind: TeamRepository metadata: name: maintainers-reusable-workflows annotations: - crossplane.io/external-name: maintainers:reusable-workflows + crossplane.io/external-name: "17046606:reusable-workflows" spec: managementPolicies: ["Observe"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: reusable-workflows permission: maintain providerConfigRef: @@ -154,7 +165,8 @@ metadata: spec: managementPolicies: ["Observe", "Create", "Update", "LateInitialize"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: gitops-tenant-template permission: maintain providerConfigRef: @@ -168,7 +180,8 @@ metadata: spec: managementPolicies: ["Observe", "Create", "Update", "LateInitialize"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: platform-template permission: maintain providerConfigRef: @@ -182,7 +195,8 @@ metadata: spec: managementPolicies: ["Observe", "Create", "Update", "LateInitialize"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: unifi permission: maintain providerConfigRef: @@ -196,7 +210,8 @@ metadata: spec: managementPolicies: ["Observe", "Create", "Update", "LateInitialize"] forProvider: - teamId: maintainers + teamIdRef: + name: maintainers repository: homebrew-tap permission: maintain providerConfigRef: