diff --git a/frontend/packages/operator-lifecycle-manager/src/components/clusterserviceversion.tsx b/frontend/packages/operator-lifecycle-manager/src/components/clusterserviceversion.tsx index 155658e9dc0..715feb291a1 100644 --- a/frontend/packages/operator-lifecycle-manager/src/components/clusterserviceversion.tsx +++ b/frontend/packages/operator-lifecycle-manager/src/components/clusterserviceversion.tsx @@ -107,7 +107,7 @@ import { useClusterServiceVersion } from '../utils/useClusterServiceVersion'; import { useClusterServiceVersionPath } from '../utils/useClusterServiceVersionPath'; import { createUninstallOperatorModal } from './modals/uninstall-operator-modal'; import { ProvidedAPIsPage, ProvidedAPIPage, ProvidedAPIPageProps } from './operand'; -import { operatorGroupFor, operatorNamespaceFor } from './operator-group'; +import { operatorGroupFor, operatorNamespaceFor, targetNamespacesFor } from './operator-group'; import { CreateInitializationResourceButton } from './operator-install-page'; import { SourceMissingStatus, @@ -227,19 +227,28 @@ const ClusterServiceVersionStatus: React.FC = const ManagedNamespaces: React.FC = ({ obj }) => { const { t } = useTranslation(); - const olmTargetNamespaces = obj?.metadata?.annotations?.['olm.targetNamespaces'] ?? ''; - const managedNamespaces = olmTargetNamespaces?.split(',') || []; - - if (managedNamespaces.length === 1 && managedNamespaces[0] === '') { - return t('olm~All Namespaces'); + const managedNamespaces = targetNamespacesFor(obj)?.split(',') || []; + if (isCopiedCSV(obj)) { + return ( + <> + + {obj.status.message} + + ); } switch (managedNamespaces.length) { case 0: - return {t('olm~All Namespaces')}; + return t('olm~All Namespaces'); case 1: - return ( + return managedNamespaces[0] ? ( + ) : ( + t('olm~All Namespaces') ); default: return ( @@ -668,20 +677,22 @@ export const ClusterServiceVersionList: React.FC if (obj.kind === 'Subscription') { return t('olm~None'); } - const namespaces = obj.metadata.annotations?.['olm.targetNamespaces']?.split(',') || []; - if (namespaces.length === 1 && namespaces[0] === '') { - return t('olm~All Namespaces'); + + if (isCopiedCSV(obj)) { + return obj.metadata.namespace; } - switch (namespaces.length) { + const targetNamespaces = targetNamespacesFor(obj)?.split(',') ?? []; + switch (targetNamespaces.length) { case 0: return t('olm~All Namespaces'); case 1: - return namespaces[0]; + return targetNamespaces[0]; default: - return t('olm~{{count}} Namespaces', { count: namespaces.length }); + return t('olm~{{count}} Namespaces', { count: targetNamespaces.length }); } }; + const getOperatorNamespace = ( obj: ClusterServiceVersionKind | SubscriptionKind, ): string | null => { @@ -942,9 +953,9 @@ export const ClusterServiceVersionDetails: React.FC
- {olmTargetNamespaces === '' ? ( - t('olm~All Namespaces') - ) : ( - - )} +
diff --git a/frontend/packages/operator-lifecycle-manager/src/types.ts b/frontend/packages/operator-lifecycle-manager/src/types.ts index 6a013fdf7fd..1eed7271336 100644 --- a/frontend/packages/operator-lifecycle-manager/src/types.ts +++ b/frontend/packages/operator-lifecycle-manager/src/types.ts @@ -139,6 +139,7 @@ export type ClusterServiceVersionKind = { status?: { phase: ClusterServiceVersionPhase; reason: CSVConditionReason; + message?: string; requirementStatus?: RequirementStatus[]; }; } & K8sResourceKind;