diff --git a/.changeset/upset-clowns-worry.md b/.changeset/upset-clowns-worry.md new file mode 100644 index 000000000..69b27ef63 --- /dev/null +++ b/.changeset/upset-clowns-worry.md @@ -0,0 +1,5 @@ +--- +'@openchoreo/backstage-plugin-backend': patch +--- + +Fix Deploy UI showing Failed for ProjectReleaseBinding during namespace provisioning diff --git a/plugins/openchoreo-backend/src/services/transformers/release-binding.test.ts b/plugins/openchoreo-backend/src/services/transformers/release-binding.test.ts index 1433feab5..20dfdaef8 100644 --- a/plugins/openchoreo-backend/src/services/transformers/release-binding.test.ts +++ b/plugins/openchoreo-backend/src/services/transformers/release-binding.test.ts @@ -56,6 +56,17 @@ describe('deriveBindingStatus', () => { expect(deriveBindingStatus(binding)).toBe('NotReady'); }); + it('returns NotReady for NamespaceProgressing reason', () => { + const binding = makeBinding([ + { + type: 'Ready', + status: 'False', + reason: 'NamespaceProgressing', + message: 'Namespace is still being provisioned', + }, + ]); + expect(deriveBindingStatus(binding)).toBe('NotReady'); + }); it('returns NotReady for JobRunning reason', () => { const binding = makeBinding([ { type: 'Ready', status: 'False', reason: 'JobRunning' }, diff --git a/plugins/openchoreo-backend/src/services/transformers/release-binding.ts b/plugins/openchoreo-backend/src/services/transformers/release-binding.ts index 6f28c6b02..bdc8b5d5f 100644 --- a/plugins/openchoreo-backend/src/services/transformers/release-binding.ts +++ b/plugins/openchoreo-backend/src/services/transformers/release-binding.ts @@ -19,6 +19,9 @@ const PROGRESSING_REASONS = [ // plane seeds it with the project's latest release once one exists, so a // just-created binding sits here briefly. Pending, not an error. 'ProjectReleaseNotSet', + // ProjectReleaseBinding's DataPlane Namespace is still being created or has + // not yet been observed as ready. Pending, not an error. + 'NamespaceProgressing', ] as const; /** Reasons that represent an intentional non-deployed state, not an error. */