UNPKG

k8ts

Version:

Powerful framework for building Kubernetes manifests in TypeScript.

50 lines 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Pvc = void 0; const instruments_1 = require("@k8ts/instruments"); 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 StorageClassKind = storage_1.storage.v1.StorageClass._; const pvc_ResourcesSpec = instruments_1.ResourcesSpec.make({ storage: instruments_1.Unit.Data }); class Pvc extends instruments_1.Resource_Top { get kind() { return default_1.v1.PersistentVolumeClaim._; } __needs__() { const self = this; return { bind: self.bound, storageClass: self.props.$storageClass }; } body() { const self = this; const { $storage, $accessModes, $mode, $storageClass, $bind } = self.props; const nAccessModes = access_mode_1.Access.pv_parseAccessMode($accessModes); if (!$bind && !$storageClass) { throw new error_1.MakeError(`While manifesting ${self.node.format("source")}, PVC that doesn't have a $bind must have a $storageClass.`); } return { spec: { accessModes: nAccessModes, volumeName: self.props.$bind?.name, volumeMode: $mode, resources: pvc_ResourcesSpec .parse({ storage: $storage }) .toObject(), storageClassName: self.props.$storageClass?.name ?? "standard" } }; } get bound() { return this.props.$bind; } } exports.Pvc = Pvc; //# sourceMappingURL=pvc.js.map