Skip to content

Commit 508afa5

Browse files
fix: Setup Kyma in tests and Infinite loop in GenericList (#3737)
* fix: Infinite loop in GenericList * KymaModulesList improcments * comment kyma alpha deploy * add create kcp system ns and module template crds * move module template crd and apply it differently * add kyma crd and cr and fix modules test * Fix kyma channel * cleanup * second fix for genericList infinite loop * review changes --------- Co-authored-by: akucharska <agata.kucharska@sap.com>
1 parent 4368dfe commit 508afa5

File tree

8 files changed

+1870
-51
lines changed

8 files changed

+1870
-51
lines changed

.github/scripts/install-kyma.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ fi
1616

1717
# Create if not exist
1818
kubectl get ns kyma-system || kubectl create ns kyma-system
19+
kubectl get ns kcp-system || kubectl create ns kcp-system
1920

20-
./bin/kyma alpha deploy
21+
# ./bin/kyma alpha deploy
2122

2223
echo "Apply and enable keda module"
2324
kubectl apply -f https://github.com/kyma-project/keda-manager/releases/latest/download/keda-manager.yaml
@@ -47,6 +48,8 @@ kubectl apply -f https://github.com/kyma-project/telemetry-manager/releases/late
4748
kubectl apply -f https://github.com/kyma-project/telemetry-manager/releases/latest/download/telemetry-default-cr.yaml -n kyma-system
4849

4950
echo "Apply modules fixtures"
51+
kubectl apply -f tests/integration/fixtures/module-templates-crd.yaml
52+
kubectl apply -f tests/integration/fixtures/test-crd-kyma.yaml
5053
kubectl apply -f tests/integration/fixtures/modules
5154

5255
echo "Apply gardener resources"

src/components/KymaModules/KymaModulesEdit.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,6 @@ export default function KymaModulesEdit({ resource, ...props }) {
285285
text={t('kyma-modules.managed')}
286286
checked={findModuleSpec(kymaResource, module.name)?.managed}
287287
onChange={event => {
288-
console.log(event);
289288
setManaged(event.target.checked, index);
290289
}}
291290
/>

src/components/KymaModules/KymaModulesList.js

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,12 @@ export default function KymaModulesList({
218218
resource?.version,
219219
);
220220

221+
const moduleDocs =
222+
currentModuleTemplate?.spec?.info?.documentation ||
223+
currentModuleTemplate?.metadata?.annotations[
224+
'operator.kyma-project.io/doc-url'
225+
];
226+
221227
const currentModuleReleaseMeta = findModuleReleaseMeta(resource.name);
222228

223229
const isChannelOverriden =
@@ -250,7 +256,8 @@ export default function KymaModulesList({
250256
<>
251257
{moduleStatus?.channel
252258
? moduleStatus?.channel
253-
: kymaResource?.spec?.modules?.[moduleIndex]?.channel}
259+
: kymaResource?.spec?.modules?.[moduleIndex]?.channel ||
260+
kymaResource?.spec?.channel}
254261
{isChannelOverriden ? (
255262
<Tag
256263
hideStateIcon
@@ -277,17 +284,13 @@ export default function KymaModulesList({
277284
{moduleStatus?.state || 'Unknown'}
278285
</StatusBadge>,
279286
// Documentation
280-
<ExternalLink
281-
url={
282-
currentModuleTemplate?.spec?.info
283-
? currentModuleTemplate.spec.info.documentation
284-
: currentModuleTemplate?.metadata?.annotations[
285-
'operator.kyma-project.io/doc-url'
286-
]
287-
}
288-
>
289-
{t('common.headers.link')}
290-
</ExternalLink>,
287+
moduleDocs ? (
288+
<ExternalLink url={moduleDocs}>
289+
{t('common.headers.link')}
290+
</ExternalLink>
291+
) : (
292+
EMPTY_TEXT_PLACEHOLDER
293+
),
291294
];
292295
};
293296

@@ -478,6 +481,19 @@ export default function KymaModulesList({
478481
return false;
479482
};
480483

484+
function getEntries(statusModules = [], specModules = []) {
485+
specModules.forEach(specItem => {
486+
const exists = statusModules.some(
487+
statusItem => statusItem.name === specItem.name,
488+
);
489+
490+
if (!exists) {
491+
statusModules.push({ name: specItem.name });
492+
}
493+
});
494+
return statusModules;
495+
}
496+
481497
return (
482498
<React.Fragment key="modules-list">
483499
{!detailsOpen &&
@@ -571,7 +587,10 @@ export default function KymaModulesList({
571587
customColumnLayout={customColumnLayout}
572588
enableColumnLayout
573589
hasDetailsView
574-
entries={resource?.status?.modules}
590+
entries={getEntries(
591+
resource?.status?.modules,
592+
resource?.spec?.modules,
593+
)}
575594
headerRenderer={headerRenderer}
576595
rowRenderer={rowRenderer}
577596
noHideFields={['Name', '', 'Namespace']}

src/shared/components/GenericList/GenericList.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,13 @@ export const GenericList = ({
124124
const [searchQuery, setSearchQuery] = useState('');
125125

126126
useEffect(() => {
127-
if (pagination) {
128-
// move back when the last item from the last page is deleted
129-
const pagesCount = Math.ceil(entries.length / pagination.itemsPerPage);
130-
if (currentPage > pagesCount && pagesCount > 0) {
131-
setCurrentPage(pagesCount);
127+
if (entries.length > 0) {
128+
if (pagination) {
129+
// move back when the last item from the last page is deleted
130+
const pagesCount = Math.ceil(entries.length / pagination.itemsPerPage);
131+
if (currentPage > pagesCount && pagesCount > 0) {
132+
setCurrentPage(pagesCount);
133+
}
132134
}
133135
}
134136
setFilteredEntries(

0 commit comments

Comments
 (0)