k8s-features
Version:
A Cucumber-js base library for Kubernetes Gherkin tests, with base world class, basic steps, reusable utility functions and k8s client
48 lines (43 loc) • 1.21 kB
JavaScript
const { AbstractKubernetesObjectPatcher } = require('./types.cjs');
const assert = require('node:assert');
/**
* @abstract
*/
class AbstractPodMountPatcher extends AbstractKubernetesObjectPatcher {
/**
* @param {string} volumeName
* @param {string} mountPath
*/
constructor(volumeName, mountPath) {
super();
assert.ok(volumeName, 'volumeName must be specified');
this.volumeName = volumeName;
this.mountPath = mountPath ?? '/mnt';
}
/**
* @abstract
* @param {import("@kubernetes/client-node").KubernetesObject} obj
*/
patch(obj) {
if (obj.kind !== 'Pod') {
throw new Error(`Expecting Pod kind, but got ${obj.kind}`);
}
const pod = obj;
if (!pod || !pod.spec || !pod.spec.containers || pod.spec.containers.length < 1) {
throw new Error('Pod has no container');
}
if (!pod.spec.containers[0].volumeMounts) {
pod.spec.containers[0].volumeMounts = [];
}
pod.spec.containers[0].volumeMounts.push({
name: this.volumeName,
mountPath: `${this.mountPath}/${this.volumeName}`,
});
if (!pod.spec.volumes) {
pod.spec.volumes = [];
}
}
}
module.exports = {
AbstractPodMountPatcher,
};