Skip to content
Snippets Groups Projects
Unverified Commit 8201641d authored by Michael Kriese's avatar Michael Kriese Committed by GitHub
Browse files

fix(manager/kubernetes): don't extract unknown kubernetes objects (#18230)

parent 3489e469
Branches
Tags
No related merge requests found
...@@ -4,15 +4,17 @@ import * as kubernetesApiVersioning from '../../versioning/kubernetes-api'; ...@@ -4,15 +4,17 @@ import * as kubernetesApiVersioning from '../../versioning/kubernetes-api';
import { Datasource } from '../datasource'; import { Datasource } from '../datasource';
import type { GetReleasesConfig, ReleaseResult } from '../types'; 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 { export class KubernetesApiDatasource extends Datasource {
static readonly id = 'kubernetes-api'; static readonly id = 'kubernetes-api';
private readonly kubernetesApiVersions: Record<string, string[]>;
constructor() { constructor() {
super(KubernetesApiDatasource.id); super(KubernetesApiDatasource.id);
this.kubernetesApiVersions = JSON5.parse(
dataFiles.get('data/kubernetes-api.json5')!
);
} }
override defaultVersioning = kubernetesApiVersioning.id; override defaultVersioning = kubernetesApiVersioning.id;
...@@ -20,7 +22,7 @@ export class KubernetesApiDatasource extends Datasource { ...@@ -20,7 +22,7 @@ export class KubernetesApiDatasource extends Datasource {
getReleases({ getReleases({
packageName, packageName,
}: GetReleasesConfig): Promise<ReleaseResult | null> { }: GetReleasesConfig): Promise<ReleaseResult | null> {
const versions = this.kubernetesApiVersions[packageName]; const versions = apiData[packageName];
if (versions) { if (versions) {
const releases = versions.map((version) => ({ version })); const releases = versions.map((version) => ({ version }));
return Promise.resolve({ releases }); return Promise.resolve({ releases });
......
...@@ -13,16 +13,9 @@ describe('modules/manager/kubernetes/extract', () => { ...@@ -13,16 +13,9 @@ describe('modules/manager/kubernetes/extract', () => {
expect(extractPackageFile('', 'file.yaml', {})).toBeNull(); expect(extractPackageFile('', 'file.yaml', {})).toBeNull();
}); });
it('returns only API version', () => { it('does not return unknown kind', () => {
const res = extractPackageFile(kubernetesConfigMapFile, 'file.yaml', {}); const res = extractPackageFile(kubernetesConfigMapFile, 'file.yaml', {});
expect(res?.deps).toStrictEqual([ expect(res).toBeNull();
{
currentValue: 'v1',
datasource: 'kubernetes-api',
depName: 'ConfigMap',
versioning: 'kubernetes-api',
},
]);
}); });
it('extracts multiple Kubernetes configurations', () => { it('extracts multiple Kubernetes configurations', () => {
......
...@@ -2,7 +2,10 @@ import is from '@sindresorhus/is'; ...@@ -2,7 +2,10 @@ import is from '@sindresorhus/is';
import { loadAll } from 'js-yaml'; import { loadAll } from 'js-yaml';
import { logger } from '../../../logger'; import { logger } from '../../../logger';
import { newlineRegex, regEx } from '../../../util/regex'; 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 * as kubernetesApiVersioning from '../../versioning/kubernetes-api';
import { getDep } from '../dockerfile/extract'; import { getDep } from '../dockerfile/extract';
import type { ExtractConfig, PackageDependency, PackageFile } from '../types'; import type { ExtractConfig, PackageDependency, PackageFile } from '../types';
...@@ -57,7 +60,7 @@ function extractImages( ...@@ -57,7 +60,7 @@ function extractImages(
} }
function extractApis(content: string, fileName: string): PackageDependency[] { function extractApis(content: string, fileName: string): PackageDependency[] {
let doc: KubernetesConfiguration[] | undefined; let doc: KubernetesConfiguration[];
try { try {
doc = loadAll(content) as KubernetesConfiguration[]; doc = loadAll(content) as KubernetesConfiguration[];
...@@ -73,6 +76,7 @@ function extractApis(content: string, fileName: string): PackageDependency[] { ...@@ -73,6 +76,7 @@ function extractApis(content: string, fileName: string): PackageDependency[] {
is.nonEmptyStringAndNotWhitespace(m.kind) && is.nonEmptyStringAndNotWhitespace(m.kind) &&
is.nonEmptyStringAndNotWhitespace(m.apiVersion) is.nonEmptyStringAndNotWhitespace(m.apiVersion)
) )
.filter((m) => supportedApis.has(m.kind))
.map((configuration) => ({ .map((configuration) => ({
depName: configuration.kind, depName: configuration.kind,
currentValue: configuration.apiVersion, currentValue: configuration.apiVersion,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment