k8ts
Version:
Powerful framework for building Kubernetes manifests in TypeScript.
50 lines • 1.75 kB
JavaScript
;
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