diff --git a/src/components/KymaModules/KymaModulesAddModule.js b/src/components/KymaModules/KymaModulesAddModule.js index 94fe968a0c..0019a2b153 100644 --- a/src/components/KymaModules/KymaModulesAddModule.js +++ b/src/components/KymaModules/KymaModulesAddModule.js @@ -127,9 +127,7 @@ export default function KymaModulesAddModule({ { channel: channel.channel, version: channel.version, - isBeta: - module.metadata.labels['operator.kyma-project.io/beta'] === - 'true', + isBeta: moduleMetaRelase.spec.beta ?? false, isMetaRelease: true, }, ], @@ -145,9 +143,7 @@ export default function KymaModulesAddModule({ .channels.push({ channel: channel.channel, version: channel.version, - isBeta: - module.metadata.labels['operator.kyma-project.io/beta'] === - 'true', + isBeta: moduleMetaRelase.spec.beta ?? false, isMetaRelease: true, }); } @@ -226,9 +222,11 @@ export default function KymaModulesAddModule({ return false; } const moduleData = modulesAddData?.find(module => module.name === name); + return moduleData ? moduleData.channels.some( - ({ channel: ch, isBeta }) => ch === channel && isBeta, + ({ channel: ch, isBeta }) => + ch === (channel || kymaResource.spec.channel) && isBeta, ) : false; }); @@ -239,7 +237,8 @@ export default function KymaModulesAddModule({ ?.find(mod => mod.name === moduleName) ?.channels.some( ({ channel: ch, isBeta }) => - ch === findStatus(moduleName)?.channel && isBeta, + ch === findStatus(moduleName)?.channel || + (kymaResource.spec.channel && isBeta), ); }; diff --git a/src/components/KymaModules/KymaModulesCreate.js b/src/components/KymaModules/KymaModulesCreate.js index 0d29486375..21fe097985 100644 --- a/src/components/KymaModules/KymaModulesCreate.js +++ b/src/components/KymaModules/KymaModulesCreate.js @@ -182,9 +182,7 @@ export default function KymaModulesCreate({ resource, ...props }) { { channel: channel.channel, version: channel.version, - isBeta: - module.metadata.labels['operator.kyma-project.io/beta'] === - 'true', + isBeta: moduleMetaRelase.spec.beta ?? false, isMetaRelease: true, }, ], @@ -196,9 +194,7 @@ export default function KymaModulesCreate({ resource, ...props }) { .channels.push({ channel: channel.channel, version: channel.version, - isBeta: - module.metadata.labels['operator.kyma-project.io/beta'] === - 'true', + isBeta: moduleMetaRelase.spec.beta ?? false, isMetaRelease: true, }); } @@ -226,9 +222,11 @@ export default function KymaModulesCreate({ resource, ...props }) { return false; } const moduleData = modulesEditData?.find(module => module.name === name); + return moduleData ? moduleData.channels.some( - ({ channel: ch, isBeta }) => ch === channel && isBeta, + ({ channel: ch, isBeta }) => + ch === (channel || kymaResource.spec.channel) && isBeta, ) : false; }); diff --git a/src/components/KymaModules/KymaModulesList.js b/src/components/KymaModules/KymaModulesList.js index 03e66fe85a..d1bf6db8a1 100644 --- a/src/components/KymaModules/KymaModulesList.js +++ b/src/components/KymaModules/KymaModulesList.js @@ -71,6 +71,12 @@ export default function KymaModulesList({ const namespace = 'kyma-system'; const modulesResourceUrl = `/apis/operator.kyma-project.io/v1beta2/moduletemplates`; + const modulesReleaseMetaResourceUrl = `/apis/operator.kyma-project.io/v1beta2/modulereleasemetas`; + + const { data: moduleReleaseMetas } = useGet(modulesReleaseMetaResourceUrl, { + pollingInterval: 3000, + skip: !resourceName, + }); const { data: modules, loading: modulesLoading } = useGet( modulesResourceUrl, @@ -124,6 +130,12 @@ export default function KymaModulesList({ return moduleWithInfo ?? moduleWithoutInfo; }; + const findModuleReleaseMeta = moduleName => { + return moduleReleaseMetas?.items.find( + item => item.spec.moduleName === moduleName, + ); + }; + const findStatus = moduleName => { return kymaResource?.status.modules?.find( module => moduleName === module.name, @@ -136,9 +148,11 @@ export default function KymaModulesList({ return extensionResource.kind === resourceKind; }); }; - const checkBeta = module => { + + const checkBeta = (module, currentModuleReleaseMeta) => { return ( - module?.metadata.labels['operator.kyma-project.io/beta'] === 'true' + module?.metadata.labels['operator.kyma-project.io/beta'] === 'true' || + currentModuleReleaseMeta?.spec?.beta === true ); }; @@ -189,6 +203,8 @@ export default function KymaModulesList({ resource?.version, ); + const currentModuleReleaseMeta = findModuleReleaseMeta(resource.name); + const isChannelOverriden = kymaResource?.spec?.modules?.[moduleIndex]?.channel !== undefined; @@ -202,7 +218,7 @@ export default function KymaModulesList({ ) : ( resource.name )} - {checkBeta(currentModule) ? ( + {checkBeta(currentModule, currentModuleReleaseMeta) ? ( {t('kyma-modules.beta')}