Configurable PVC SPEC via env var

pull/310/head
Frostebite 2022-01-31 22:05:48 +00:00
parent ff449d4da0
commit 236ed3e20b
3 changed files with 12 additions and 6 deletions

7
dist/index.js vendored
View File

@ -2371,6 +2371,7 @@ const async_wait_until_1 = __importDefault(__webpack_require__(41299));
const core = __importStar(__webpack_require__(42186)); const core = __importStar(__webpack_require__(42186));
const k8s = __importStar(__webpack_require__(89679)); const k8s = __importStar(__webpack_require__(89679));
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855)); const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
const yaml_1 = __importDefault(__webpack_require__(13552));
class KubernetesStorage { class KubernetesStorage {
static createPersistentVolumeClaim(buildParameters, pvcName, kubeClient, namespace) { static createPersistentVolumeClaim(buildParameters, pvcName, kubeClient, namespace) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
@ -2419,7 +2420,7 @@ class KubernetesStorage {
} }
catch (error) { catch (error) {
core.error('Failed to watch PVC'); core.error('Failed to watch PVC');
core.error(error); core.error(error.toString());
core.error(`PVC Body: ${JSON.stringify((yield kubeClient.readNamespacedPersistentVolumeClaim(name, namespace)).body, undefined, 4)}`); core.error(`PVC Body: ${JSON.stringify((yield kubeClient.readNamespacedPersistentVolumeClaim(name, namespace)).body, undefined, 4)}`);
throw error; throw error;
} }
@ -2435,13 +2436,15 @@ class KubernetesStorage {
}; };
pvc.spec = { pvc.spec = {
accessModes: ['ReadWriteOnce'], accessModes: ['ReadWriteOnce'],
storageClassName: process.env.K8s_STORAGE_CLASS || 'standard',
resources: { resources: {
requests: { requests: {
storage: buildParameters.kubeVolumeSize, storage: buildParameters.kubeVolumeSize,
}, },
}, },
}; };
if (process.env.K8S_PVC_SPEC) {
pvc.spec = yaml_1.default.parse(process.env.K8S_PVC_SPEC);
}
const result = yield kubeClient.createNamespacedPersistentVolumeClaim(namespace, pvc); const result = yield kubeClient.createNamespacedPersistentVolumeClaim(namespace, pvc);
return result; return result;
}); });

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -3,6 +3,7 @@ import * as core from '@actions/core';
import * as k8s from '@kubernetes/client-node'; import * as k8s from '@kubernetes/client-node';
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../build-parameters';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../services/cloud-runner-logger';
import YAML from 'yaml';
class KubernetesStorage { class KubernetesStorage {
public static async createPersistentVolumeClaim( public static async createPersistentVolumeClaim(
@ -54,9 +55,9 @@ class KubernetesStorage {
intervalBetweenAttempts: 15000, intervalBetweenAttempts: 15000,
}, },
); );
} catch (error) { } catch (error: any) {
core.error('Failed to watch PVC'); core.error('Failed to watch PVC');
core.error(error); core.error(error.toString());
core.error( core.error(
`PVC Body: ${JSON.stringify( `PVC Body: ${JSON.stringify(
(await kubeClient.readNamespacedPersistentVolumeClaim(name, namespace)).body, (await kubeClient.readNamespacedPersistentVolumeClaim(name, namespace)).body,
@ -82,13 +83,15 @@ class KubernetesStorage {
}; };
pvc.spec = { pvc.spec = {
accessModes: ['ReadWriteOnce'], accessModes: ['ReadWriteOnce'],
storageClassName: process.env.K8s_STORAGE_CLASS || 'standard',
resources: { resources: {
requests: { requests: {
storage: buildParameters.kubeVolumeSize, storage: buildParameters.kubeVolumeSize,
}, },
}, },
}; };
if (process.env.K8S_PVC_SPEC) {
pvc.spec = YAML.parse(process.env.K8S_PVC_SPEC);
}
const result = await kubeClient.createNamespacedPersistentVolumeClaim(namespace, pvc); const result = await kubeClient.createNamespacedPersistentVolumeClaim(namespace, pvc);
return result; return result;
} }