From 4399f11abb1b5e30976f5fd9f0db9ebba09294d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20B=C3=A4hler?= Date: Mon, 14 Oct 2024 08:02:30 +0200 Subject: [PATCH] feat: implement review --- .../__fixtures__/malformedProfiles.yml | 38 --- .../sveltos/__fixtures__/randomManifest.yml | 21 -- .../__fixtures__/validClusterProfile.yml | 49 ---- .../__fixtures__/validClusterProfileOCI.yml | 13 - .../__fixtures__/validEventTrigger.yml | 48 ---- .../sveltos/__fixtures__/validProfile.yml | 49 ---- lib/modules/manager/sveltos/extract.spec.ts | 232 +++++++++++++++++- lib/modules/manager/sveltos/extract.ts | 5 +- 8 files changed, 226 insertions(+), 229 deletions(-) delete mode 100644 lib/modules/manager/sveltos/__fixtures__/malformedProfiles.yml delete mode 100644 lib/modules/manager/sveltos/__fixtures__/randomManifest.yml delete mode 100644 lib/modules/manager/sveltos/__fixtures__/validClusterProfile.yml delete mode 100644 lib/modules/manager/sveltos/__fixtures__/validClusterProfileOCI.yml delete mode 100644 lib/modules/manager/sveltos/__fixtures__/validEventTrigger.yml delete mode 100644 lib/modules/manager/sveltos/__fixtures__/validProfile.yml diff --git a/lib/modules/manager/sveltos/__fixtures__/malformedProfiles.yml b/lib/modules/manager/sveltos/__fixtures__/malformedProfiles.yml deleted file mode 100644 index 7be3637cf71863..00000000000000 --- a/lib/modules/manager/sveltos/__fixtures__/malformedProfiles.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -# malformed eventtrigger as the source is null -apiVersion: lib.projectsveltos.io/v1beta1 -kind: EventTrigger -spec: - helmCharts: [] ---- -# malformed eventtrigger as the source is empty -apiVersion: lib.projectsveltos.io/v1beta1 -kind: EventTrigger -spec: - helmCharts: null ---- -# malformed clusterprofile as the sources array is empty -apiVersion: config.projectsveltos.io/v1beta1 -kind: ClusterProfile -spec: - helmCharts: [] ---- -# malformed clusterprofile as the source is null -apiVersion: config.projectsveltos.io/v1beta1 -kind: ClusterProfile -spec: - helmCharts: null ---- -# malformed profile as the sources array is empty -apiVersion: config.projectsveltos.io/v1beta1 -kind: Profile -spec: - helmCharts: [] ---- -# malformed profile as the source is null -apiVersion: config.projectsveltos.io/v1beta1 -kind: Profile -spec: - helmCharts: null - - diff --git a/lib/modules/manager/sveltos/__fixtures__/randomManifest.yml b/lib/modules/manager/sveltos/__fixtures__/randomManifest.yml deleted file mode 100644 index 007ecd317d2de6..00000000000000 --- a/lib/modules/manager/sveltos/__fixtures__/randomManifest.yml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nginx-deployment - labels: - app: nginx -spec: - replicas: 3 - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - image: nginx:1.14.2 - ports: - - containerPort: 80 diff --git a/lib/modules/manager/sveltos/__fixtures__/validClusterProfile.yml b/lib/modules/manager/sveltos/__fixtures__/validClusterProfile.yml deleted file mode 100644 index 56b6a2b79aa939..00000000000000 --- a/lib/modules/manager/sveltos/__fixtures__/validClusterProfile.yml +++ /dev/null @@ -1,49 +0,0 @@ ---- -apiVersion: config.projectsveltos.io/v1beta1 -kind: ClusterProfile -metadata: - name: baseline -spec: - helmCharts: - - repositoryURL: https://prometheus-community.github.io/helm-charts - repositoryName: prometheus-community - chartName: prometheus-community/prometheus - chartVersion: "23.4.0" - - repositoryURL: https://kyverno.github.io/kyverno/ - repositoryName: kyverno - chartName: kyverno/kyverno - chartVersion: "v3.2.5" ---- -apiVersion: config.projectsveltos.io/v1beta1 -kind: ClusterProfile -metadata: - name: kyverno -spec: - helmCharts: - - repositoryURL: https://kyverno.github.io/kyverno/ - repositoryName: kyverno - chartName: kyverno/kyverno-policies - chartVersion: v3.2.0 - releaseName: kyverno-latest - releaseNamespace: kyverno - helmChartAction: Install - values: | - admissionController: - replicas: 1 ---- -apiVersion: config.projectsveltos.io/v1beta1 -kind: ClusterProfile -metadata: - name: vault -spec: - syncMode: Continuous - helmCharts: - - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault - repositoryName: oci-vault - chartName: oci://registry-1.docker.io/bitnamicharts/vault - chartVersion: 0.7.2 - - repositoryURL: oci://custom-registry:443/charts/vault-sidecar - repositoryName: oci-custom-vault - chartName: oci://custom-registry:443/charts/vault-sidecar - chartVersion: 0.5.0 - diff --git a/lib/modules/manager/sveltos/__fixtures__/validClusterProfileOCI.yml b/lib/modules/manager/sveltos/__fixtures__/validClusterProfileOCI.yml deleted file mode 100644 index 0c77bb28510fe6..00000000000000 --- a/lib/modules/manager/sveltos/__fixtures__/validClusterProfileOCI.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -apiVersion: config.projectsveltos.io/v1beta1 -kind: ClusterProfile -metadata: - name: vault -spec: - syncMode: Continuous - helmCharts: - - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault - repositoryName: oci-vault - chartName: oci://registry-1.docker.io/bitnamicharts/vault - chartVersion: 0.7.2 - diff --git a/lib/modules/manager/sveltos/__fixtures__/validEventTrigger.yml b/lib/modules/manager/sveltos/__fixtures__/validEventTrigger.yml deleted file mode 100644 index 2974f4323e05bb..00000000000000 --- a/lib/modules/manager/sveltos/__fixtures__/validEventTrigger.yml +++ /dev/null @@ -1,48 +0,0 @@ ---- -apiVersion: lib.projectsveltos.io/v1beta1 -kind: EventTrigger -metadata: - name: baseline -spec: - helmCharts: - - repositoryURL: https://prometheus-community.github.io/helm-charts - repositoryName: prometheus-community - chartName: prometheus-community/prometheus - chartVersion: "23.4.0" - - repositoryURL: https://kyverno.github.io/kyverno/ - repositoryName: kyverno - chartName: kyverno/kyverno - chartVersion: "v3.2.5" ---- -apiVersion: lib.projectsveltos.io/v1beta1 -kind: EventTrigger -metadata: - name: kyverno -spec: - helmCharts: - - repositoryURL: https://kyverno.github.io/kyverno/ - repositoryName: kyverno - chartName: kyverno/kyverno-policies - chartVersion: v3.2.0 - releaseName: kyverno-latest - releaseNamespace: kyverno - helmChartAction: Install - values: | - admissionController: - replicas: 1 ---- -apiVersion: lib.projectsveltos.io/v1beta1 -kind: EventTrigger -metadata: - name: vault -spec: - syncMode: Continuous - helmCharts: - - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault - repositoryName: oci-vault - chartName: oci://registry-1.docker.io/bitnamicharts/vault - chartVersion: 0.7.2 - - repositoryURL: oci://custom-registry:443/charts/vault-sidecar - repositoryName: oci-custom-vault - chartName: oci://custom-registry:443/charts/vault-sidecar - chartVersion: 0.5.0 diff --git a/lib/modules/manager/sveltos/__fixtures__/validProfile.yml b/lib/modules/manager/sveltos/__fixtures__/validProfile.yml deleted file mode 100644 index 3f824baf14409e..00000000000000 --- a/lib/modules/manager/sveltos/__fixtures__/validProfile.yml +++ /dev/null @@ -1,49 +0,0 @@ ---- -apiVersion: config.projectsveltos.io/v1beta1 -kind: Profile -metadata: - name: baseline -spec: - helmCharts: - - repositoryURL: https://prometheus-community.github.io/helm-charts - repositoryName: prometheus-community - chartName: prometheus-community/prometheus - chartVersion: "23.4.0" - - repositoryURL: https://kyverno.github.io/kyverno/ - repositoryName: kyverno - chartName: kyverno/kyverno - chartVersion: "v3.2.5" ---- -apiVersion: config.projectsveltos.io/v1beta1 -kind: Profile -metadata: - name: kyverno -spec: - helmCharts: - - repositoryURL: https://kyverno.github.io/kyverno/ - repositoryName: kyverno - chartName: kyverno/kyverno-policies - chartVersion: v3.2.0 - releaseName: kyverno-latest - releaseNamespace: kyverno - helmChartAction: Install - values: | - admissionController: - replicas: 1 ---- -apiVersion: config.projectsveltos.io/v1beta1 -kind: Profile -metadata: - name: vault -spec: - syncMode: Continuous - helmCharts: - - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault - repositoryName: oci-vault - chartName: oci://registry-1.docker.io/bitnamicharts/vault - chartVersion: 0.7.2 - - repositoryURL: oci://custom-registry:443/charts/vault-sidecar - repositoryName: oci-custom-vault - chartName: oci://custom-registry:443/charts/vault-sidecar - chartVersion: 0.5.0 - diff --git a/lib/modules/manager/sveltos/extract.spec.ts b/lib/modules/manager/sveltos/extract.spec.ts index 3f82b98ba75ed3..5655531f43f774 100644 --- a/lib/modules/manager/sveltos/extract.spec.ts +++ b/lib/modules/manager/sveltos/extract.spec.ts @@ -1,15 +1,233 @@ import { codeBlock } from 'common-tags'; -import { Fixtures } from '../../../../test/fixtures'; import { extractDefinition } from './extract'; import type { ProfileDefinition } from './schema'; import { extractPackageFile } from '.'; -const validProfile = Fixtures.get('validProfile.yml'); -const validClusterProfile = Fixtures.get('validClusterProfile.yml'); -const validClusterProfileOCI = Fixtures.get('validClusterProfileOCI.yml'); -const validEventTrigger = Fixtures.get('validEventTrigger.yml'); -const malformedProfiles = Fixtures.get('malformedProfiles.yml'); -const randomManifest = Fixtures.get('randomManifest.yml'); +const validProfile = codeBlock` +--- +apiVersion: config.projectsveltos.io/v1beta1 +kind: Profile +metadata: + name: baseline +spec: + helmCharts: + - repositoryURL: https://prometheus-community.github.io/helm-charts + repositoryName: prometheus-community + chartName: prometheus-community/prometheus + chartVersion: "23.4.0" + - repositoryURL: https://kyverno.github.io/kyverno/ + repositoryName: kyverno + chartName: kyverno/kyverno + chartVersion: "v3.2.5" +--- +apiVersion: config.projectsveltos.io/v1beta1 +kind: Profile +metadata: + name: kyverno +spec: + helmCharts: + - repositoryURL: https://kyverno.github.io/kyverno/ + repositoryName: kyverno + chartName: kyverno/kyverno-policies + chartVersion: v3.2.0 + releaseName: kyverno-latest + releaseNamespace: kyverno + helmChartAction: Install + values: | + admissionController: + replicas: 1 +--- +apiVersion: config.projectsveltos.io/v1beta1 +kind: Profile +metadata: + name: vault +spec: + syncMode: Continuous + helmCharts: + - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault + repositoryName: oci-vault + chartName: oci://registry-1.docker.io/bitnamicharts/vault + chartVersion: 0.7.2 + - repositoryURL: oci://custom-registry:443/charts/vault-sidecar + repositoryName: oci-custom-vault + chartName: oci://custom-registry:443/charts/vault-sidecar + chartVersion: 0.5.0 +`; +const validClusterProfile = codeBlock` +--- +apiVersion: config.projectsveltos.io/v1beta1 +kind: ClusterProfile +metadata: + name: baseline +spec: + helmCharts: + - repositoryURL: https://prometheus-community.github.io/helm-charts + repositoryName: prometheus-community + chartName: prometheus-community/prometheus + chartVersion: "23.4.0" + - repositoryURL: https://kyverno.github.io/kyverno/ + repositoryName: kyverno + chartName: kyverno/kyverno + chartVersion: "v3.2.5" +--- +apiVersion: config.projectsveltos.io/v1beta1 +kind: ClusterProfile +metadata: + name: kyverno +spec: + helmCharts: + - repositoryURL: https://kyverno.github.io/kyverno/ + repositoryName: kyverno + chartName: kyverno/kyverno-policies + chartVersion: v3.2.0 + releaseName: kyverno-latest + releaseNamespace: kyverno + helmChartAction: Install + values: | + admissionController: + replicas: 1 +--- +apiVersion: config.projectsveltos.io/v1beta1 +kind: ClusterProfile +metadata: + name: vault +spec: + syncMode: Continuous + helmCharts: + - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault + repositoryName: oci-vault + chartName: oci://registry-1.docker.io/bitnamicharts/vault + chartVersion: 0.7.2 + - repositoryURL: oci://custom-registry:443/charts/vault-sidecar + repositoryName: oci-custom-vault + chartName: oci://custom-registry:443/charts/vault-sidecar + chartVersion: 0.5.0 +`; +const validClusterProfileOCI = codeBlock` +--- +apiVersion: config.projectsveltos.io/v1beta1 +kind: ClusterProfile +metadata: + name: vault +spec: + syncMode: Continuous + helmCharts: + - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault + repositoryName: oci-vault + chartName: oci://registry-1.docker.io/bitnamicharts/vault + chartVersion: 0.7.2 +`; +const validEventTrigger = codeBlock` +--- +apiVersion: lib.projectsveltos.io/v1beta1 +kind: EventTrigger +metadata: + name: baseline +spec: + helmCharts: + - repositoryURL: https://prometheus-community.github.io/helm-charts + repositoryName: prometheus-community + chartName: prometheus-community/prometheus + chartVersion: "23.4.0" + - repositoryURL: https://kyverno.github.io/kyverno/ + repositoryName: kyverno + chartName: kyverno/kyverno + chartVersion: "v3.2.5" +--- +apiVersion: lib.projectsveltos.io/v1beta1 +kind: EventTrigger +metadata: + name: kyverno +spec: + helmCharts: + - repositoryURL: https://kyverno.github.io/kyverno/ + repositoryName: kyverno + chartName: kyverno/kyverno-policies + chartVersion: v3.2.0 + releaseName: kyverno-latest + releaseNamespace: kyverno + helmChartAction: Install + values: | + admissionController: + replicas: 1 +--- +apiVersion: lib.projectsveltos.io/v1beta1 +kind: EventTrigger +metadata: + name: vault +spec: + syncMode: Continuous + helmCharts: + - repositoryURL: oci://registry-1.docker.io/bitnamicharts/vault + repositoryName: oci-vault + chartName: oci://registry-1.docker.io/bitnamicharts/vault + chartVersion: 0.7.2 + - repositoryURL: oci://custom-registry:443/charts/vault-sidecar + repositoryName: oci-custom-vault + chartName: oci://custom-registry:443/charts/vault-sidecar + chartVersion: 0.5.0 +`; +const malformedProfiles = codeBlock` +--- +# malformed eventtrigger as the source is null +apiVersion: lib.projectsveltos.io/v1beta1 +kind: EventTrigger +spec: + helmCharts: [] +--- +# malformed eventtrigger as the source is empty +apiVersion: lib.projectsveltos.io/v1beta1 +kind: EventTrigger +spec: + helmCharts: null +--- +# malformed clusterprofile as the sources array is empty +apiVersion: config.projectsveltos.io/v1beta1 +kind: ClusterProfile +spec: + helmCharts: [] +--- +# malformed clusterprofile as the source is null +apiVersion: config.projectsveltos.io/v1beta1 +kind: ClusterProfile +spec: + helmCharts: null +--- +# malformed profile as the sources array is empty +apiVersion: config.projectsveltos.io/v1beta1 +kind: Profile +spec: + helmCharts: [] +--- +# malformed profile as the source is null +apiVersion: config.projectsveltos.io/v1beta1 +kind: Profile +spec: + helmCharts: null +`; +const randomManifest = codeBlock` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment + labels: + app: nginx +spec: + replicas: 3 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 +`; describe('modules/manager/sveltos/extract', () => { describe('extractDefinition()', () => { diff --git a/lib/modules/manager/sveltos/extract.ts b/lib/modules/manager/sveltos/extract.ts index 7dea158b66add9..35d39cceef5245 100644 --- a/lib/modules/manager/sveltos/extract.ts +++ b/lib/modules/manager/sveltos/extract.ts @@ -1,5 +1,3 @@ -import is from '@sindresorhus/is'; -import { logger } from '../../../logger'; import { coerceArray } from '../../../util/array'; import { trimTrailingSlash } from '../../../util/url'; import { parseYaml } from '../../../util/yaml'; @@ -20,8 +18,7 @@ export function extractPackageFile( packageFile: string, config?: ExtractConfig, ): PackageFileContent | null { - let definitions: ProfileDefinition[]; - definitions = parseYaml(content, { + const definitions = parseYaml(content, { customSchema: ProfileDefinition, failureBehaviour: 'filter', });