From 9a6f172a35f78f4f445084434f7ecbe5ee1b0d40 Mon Sep 17 00:00:00 2001 From: Topliceanu Razvan <47887589+topliceanurazvan@users.noreply.github.com> Date: Thu, 28 Sep 2023 11:41:55 +0300 Subject: [PATCH] feat: handle optional matchResources --- .../validators/admission-policy/validator.ts | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/validation/src/validators/admission-policy/validator.ts b/packages/validation/src/validators/admission-policy/validator.ts index d84b5f46d..f4d2ca6da 100644 --- a/packages/validation/src/validators/admission-policy/validator.ts +++ b/packages/validation/src/validators/admission-policy/validator.ts @@ -96,21 +96,25 @@ export class AdmissionPolicyValidator extends AbstractPlugin { const namespaceMatchLabels: Record = policyBinding.content?.spec?.matchResources?.namespaceSelector?.matchLabels; - if (!namespaceMatchLabels) continue; + let filteredResources: Resource[] = []; - const namespacesResources = resources.filter(r => r.kind === 'Namespace'); + if (!namespaceMatchLabels) { + filteredResources = resources; + } else { + const namespacesResources = resources.filter(r => r.kind === 'Namespace'); - const filteredNamespaces = namespacesResources.filter(n => { - for (const key of Object.keys(namespaceMatchLabels)) { - if (n.content?.metadata?.labels?.[key] !== namespaceMatchLabels[key]) { - return false; + const filteredNamespaces = namespacesResources.filter(n => { + for (const key of Object.keys(namespaceMatchLabels)) { + if (n.content?.metadata?.labels?.[key] !== namespaceMatchLabels[key]) { + return false; + } } - } - return true; - }); + return true; + }); - const filteredResources = resources.filter(r => filteredNamespaces.find(n => n.name === r.namespace)); + filteredResources = resources.filter(r => filteredNamespaces.find(n => n.name === r.namespace)); + } if (!filteredResources.length) continue;