UNPKG

k8ts

Version:

Powerful framework for building Kubernetes manifests in TypeScript.

57 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Pv = void 0; const instruments_1 = require("@k8ts/instruments"); const sample_interfaces_1 = require("@k8ts/sample-interfaces"); const error_1 = require("../../../error"); const default_1 = require("../../../kinds/default"); const storage_1 = require("../../../kinds/storage"); const access_mode_1 = require("../access-mode"); const parse_backend_1 = require("./parse-backend"); const StorageClassKind = storage_1.storage.v1.StorageClass._; class Pv extends instruments_1.Resource_Top { __MODE__; get kind() { return default_1.v1.PersistentVolume._; } __needs__() { return { storageClass: this.props.$storageClass }; } body() { const self = this; const pvProps = self.props; const accessModes = access_mode_1.Access.pv_parseAccessMode(pvProps.$accessModes); if (self.props.$backend?.type === "Local") { if (!pvProps.nodeAffinity) { throw new error_1.MakeError(`While manifesting ${self.node.format("source")}, PV with Local backend must have nodeAffinity.`); } } if (!self.props.$backend && !self.props.$storageClass) { throw new error_1.MakeError(`While manifesting ${self.node.format("source")}, PV that doesn't have a $backend must have a $storageClass.`); } let base = { accessModes, storageClassName: pvProps.$storageClass?.name ?? "standard", capacity: pvProps.$capacity ? { storage: sample_interfaces_1.CDK.Quantity.fromString(pvProps.$capacity) } : undefined, volumeMode: pvProps.$mode ?? "Filesystem", mountOptions: pvProps.mountOptions, persistentVolumeReclaimPolicy: pvProps.reclaimPolicy ?? "Retain", nodeAffinity: pvProps.nodeAffinity }; base = { ...base, ...(0, parse_backend_1.parseBackend)(pvProps.$backend) }; return { spec: base }; } } exports.Pv = Pv; //# sourceMappingURL=pv.js.map