diff --git a/lib/modules/datasource/kubernetes-api/index.ts b/lib/modules/datasource/kubernetes-api/index.ts index 044a5b88bf180e9e1728ae982a0fee75231b58ce..30c130973d6501ae49255101575233c04db8ff8b 100644 --- a/lib/modules/datasource/kubernetes-api/index.ts +++ b/lib/modules/datasource/kubernetes-api/index.ts @@ -4,15 +4,17 @@ import * as kubernetesApiVersioning from '../../versioning/kubernetes-api'; import { Datasource } from '../datasource'; import type { GetReleasesConfig, ReleaseResult } from '../types'; +const apiData: Record<string, string[]> = JSON5.parse( + dataFiles.get('data/kubernetes-api.json5')! +); + +export const supportedApis = new Set(Object.keys(apiData)); + export class KubernetesApiDatasource extends Datasource { static readonly id = 'kubernetes-api'; - private readonly kubernetesApiVersions: Record<string, string[]>; constructor() { super(KubernetesApiDatasource.id); - this.kubernetesApiVersions = JSON5.parse( - dataFiles.get('data/kubernetes-api.json5')! - ); } override defaultVersioning = kubernetesApiVersioning.id; @@ -20,7 +22,7 @@ export class KubernetesApiDatasource extends Datasource { getReleases({ packageName, }: GetReleasesConfig): Promise<ReleaseResult | null> { - const versions = this.kubernetesApiVersions[packageName]; + const versions = apiData[packageName]; if (versions) { const releases = versions.map((version) => ({ version })); return Promise.resolve({ releases }); diff --git a/lib/modules/manager/kubernetes/extract.spec.ts b/lib/modules/manager/kubernetes/extract.spec.ts index 21b63f4bd30bb652670e75f01b2ae6cd962caebd..e7c6733a41d69cc29181532d1a1b66e0fb6fcfd1 100644 --- a/lib/modules/manager/kubernetes/extract.spec.ts +++ b/lib/modules/manager/kubernetes/extract.spec.ts @@ -13,16 +13,9 @@ describe('modules/manager/kubernetes/extract', () => { expect(extractPackageFile('', 'file.yaml', {})).toBeNull(); }); - it('returns only API version', () => { + it('does not return unknown kind', () => { const res = extractPackageFile(kubernetesConfigMapFile, 'file.yaml', {}); - expect(res?.deps).toStrictEqual([ - { - currentValue: 'v1', - datasource: 'kubernetes-api', - depName: 'ConfigMap', - versioning: 'kubernetes-api', - }, - ]); + expect(res).toBeNull(); }); it('extracts multiple Kubernetes configurations', () => { diff --git a/lib/modules/manager/kubernetes/extract.ts b/lib/modules/manager/kubernetes/extract.ts index e5813ea73c5862acd875b35f938fe934d9e02a07..1e385871f902ee4ad3139e045bc8e6b6f1db2448 100644 --- a/lib/modules/manager/kubernetes/extract.ts +++ b/lib/modules/manager/kubernetes/extract.ts @@ -2,7 +2,10 @@ import is from '@sindresorhus/is'; import { loadAll } from 'js-yaml'; import { logger } from '../../../logger'; import { newlineRegex, regEx } from '../../../util/regex'; -import { KubernetesApiDatasource } from '../../datasource/kubernetes-api'; +import { + KubernetesApiDatasource, + supportedApis, +} from '../../datasource/kubernetes-api'; import * as kubernetesApiVersioning from '../../versioning/kubernetes-api'; import { getDep } from '../dockerfile/extract'; import type { ExtractConfig, PackageDependency, PackageFile } from '../types'; @@ -57,7 +60,7 @@ function extractImages( } function extractApis(content: string, fileName: string): PackageDependency[] { - let doc: KubernetesConfiguration[] | undefined; + let doc: KubernetesConfiguration[]; try { doc = loadAll(content) as KubernetesConfiguration[]; @@ -73,6 +76,7 @@ function extractApis(content: string, fileName: string): PackageDependency[] { is.nonEmptyStringAndNotWhitespace(m.kind) && is.nonEmptyStringAndNotWhitespace(m.apiVersion) ) + .filter((m) => supportedApis.has(m.kind)) .map((configuration) => ({ depName: configuration.kind, currentValue: configuration.apiVersion,