UNPKG

@provisioner/appengine

Version:

CodeZero provisioner for appengine

1,378 lines (1,332 loc) 165 kB
(() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __reExport = (target, module, desc) => { if (module && typeof module === "object" || typeof module === "function") { for (let key of __getOwnPropNames(module)) if (!__hasOwnProp.call(target, key) && key !== "default") __defProp(target, key, { get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable }); } return target; }; var __toModule = (module) => { return __reExport(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? { get: () => module.default, enumerable: true } : { value: module, enumerable: true })), module); }; var __decorateClass = (decorators, target, key, kind) => { var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result; if (kind && result) __defProp(target, key, result); return result; }; // ../appengine-contracts/lib/app.js var require_app = __commonJS({ "../appengine-contracts/lib/app.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isPortNumber = exports.isGenerateOptions = void 0; exports.isGenerateOptions = (value) => !!value.generate; exports.isPortNumber = (value) => typeof value === "number"; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/annotations.js var require_annotations = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/annotations.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Annotations = void 0; var Annotations = class { }; exports.Annotations = Annotations; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/attempt.js var require_attempt = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/attempt.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/cluster.js var require_cluster = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/cluster.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/helpers.js var require_helpers = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/helpers.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/if.js var require_if = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/if.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/labels.js var require_labels = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/labels.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Labels = void 0; var Labels = class { }; exports.Labels = Labels; Labels.K8SAppCreatedBy = "app.kubernetes.io/created-by"; Labels.K8SAppComponent = "app.kubernetes.io/component"; Labels.K8SAppInstance = "app.kubernetes.io/instance"; Labels.K8SAppManagedBy = "app.kubernetes.io/managed-by"; Labels.K8SAppName = "app.kubernetes.io/name"; Labels.K8SAppPartOf = "app.kubernetes.io/part-of"; Labels.K8SAppVersion = "app.kubernetes.io/version"; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/markers.js var require_markers = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/markers.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setAnnotation = exports.setLabel = void 0; exports.setLabel = (resource, key, value, override = true) => { var _a2; if (!override && ((_a2 = resource.metadata) === null || _a2 === void 0 ? void 0 : _a2.labels[key])) return resource; resource.metadata = resource.metadata || {}; resource.metadata.labels = { ...resource.metadata.labels, [key]: value }; return resource; }; exports.setAnnotation = (resource, key, value, override = true) => { var _a2; if (!override && ((_a2 = resource.metadata) === null || _a2 === void 0 ? void 0 : _a2.annotations[key])) return resource; resource.metadata = resource.metadata || {}; resource.metadata.annotations = { ...resource.metadata.annotations, [key]: value }; return resource; }; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/options.js var require_options = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/options.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/processor.js var require_processor = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/processor.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/resource.js var require_resource = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/resource.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toResourceId = exports.ResourceAddress = void 0; var ResourceAddress = class { }; exports.ResourceAddress = ResourceAddress; exports.toResourceId = (resource) => { var _a2, _b, _c, _d, _e, _f; return { apiVersion: resource.apiVersion, kind: resource.kind, metadata: { ...((_a2 = resource.metadata) === null || _a2 === void 0 ? void 0 : _a2.namespace) ? { namespace: (_b = resource.metadata) === null || _b === void 0 ? void 0 : _b.namespace } : void 0, ...((_c = resource.metadata) === null || _c === void 0 ? void 0 : _c.name) ? { name: (_d = resource.metadata) === null || _d === void 0 ? void 0 : _d.name } : void 0, ...((_e = resource.metadata) === null || _e === void 0 ? void 0 : _e.labels) ? { labels: (_f = resource.metadata) === null || _f === void 0 ? void 0 : _f.labels } : void 0 } }; }; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/resourceHelper.js var require_resourceHelper = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/resourceHelper.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResourceHelper = void 0; var markers_1 = require_markers(); var ResourceHelper = class { constructor(resource = {}) { this.resource = resource; this.resource.apiVersion = this.resource.apiVersion || "v1"; this.resource.metadata = this.resource.metadata || {}; } get isNew() { return !!this.resource.metadata.uid; } get name() { return this.resource.metadata.name; } get namespace() { return this.resource.metadata.namespace; } get spec() { return this.resource.spec; } get metadata() { return this.resource.metadata; } get ownerReferences() { return this.resource.metadata.ownerReferences; } setLabel(key, value, override = true) { markers_1.setLabel(this.resource, key, value, override); return this; } setAnnotation(key, value, override = true) { markers_1.setAnnotation(this.resource, key, value, override); return this; } toString() { var _a2, _b, _c; return ((_a2 = this.resource.metadata) === null || _a2 === void 0 ? void 0 : _a2.namespace) ? `${this.resource.kind} ${((_b = this.resource.metadata) === null || _b === void 0 ? void 0 : _b.name) || ""} in namespace ${this.resource.metadata.namespace}` : `${this.resource.kind} ${((_c = this.resource.metadata) === null || _c === void 0 ? void 0 : _c.name) || ""}`; } *each(kind) { if (!this.resource.items) return; for (const item of this.resource.items) yield { apiVersion: this.resource.apiVersion, kind, ...item }; } }; exports.ResourceHelper = ResourceHelper; ResourceHelper.isResource = (object) => typeof object === "object" && "kind" in object; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/request.js var require_request = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/request.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/ts-try/dist/index.js var require_dist = __commonJS({ "../../node_modules/ts-try/dist/index.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function isPromise(obj) { return !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function"; } function tryify(p) { return p.then((x) => x, (err) => err); } function tryF(input) { if (isPromise(input)) { return tryify(input); } const block = input; try { const v = block(); if (isPromise(v)) { return tryify(v); } return v; } catch (err) { return err; } } exports.tryF = tryF; function isError(e) { return e instanceof Error; } exports.isError = isError; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/result.js var require_result = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/result.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Result = void 0; var ts_try_1 = require_dist(); var Result = class { constructor(result) { if (ts_try_1.isError(result)) { this.error = result; if (this.error.error && typeof this.error.error != "string") this.error = this.error.error; } else if (result != void 0) { if (result.kind) this.object = result; else this.other = result; } } get errorMessage() { return this.error ? this.error.message : void 0; } get errorCode() { return this.error ? this.error.statusCode || this.error.code : void 0; } get hasItems() { var _a2, _b; return (_b = (_a2 = this.object) === null || _a2 === void 0 ? void 0 : _a2.items) === null || _b === void 0 ? void 0 : _b.length; } static async from(fn) { if (fn) { const result = await ts_try_1.tryF(fn); return new Result(result); } return Result.undefined; } as() { return this.object; } *each(kind) { var _a2; if (!((_a2 = this.object) === null || _a2 === void 0 ? void 0 : _a2.items)) return; for (const item of this.object.items) yield { apiVersion: this.object.apiVersion, kind, ...item }; } throwIfError(message) { if (this.error) { if (message) throw new Error(message); else if (this.errorCode) throw this.error; else throw new Error(this.errorMessage); } } otherAs() { return this.other; } }; exports.Result = Result; Result.undefined = new Result(void 0); } }); // ../../node_modules/ulid/stubs/crypto.js var require_crypto = __commonJS({ "../../node_modules/ulid/stubs/crypto.js"() { } }); // ../../node_modules/ulid/dist/index.umd.js var require_index_umd = __commonJS({ "../../node_modules/ulid/dist/index.umd.js"(exports, module) { (function(global, factory) { typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : factory(global.ULID = {}); })(exports, function(exports2) { "use strict"; function createError(message) { var err = new Error(message); err.source = "ulid"; return err; } var ENCODING = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"; var ENCODING_LEN = ENCODING.length; var TIME_MAX = Math.pow(2, 48) - 1; var TIME_LEN = 10; var RANDOM_LEN = 16; function replaceCharAt(str, index, char) { if (index > str.length - 1) { return str; } return str.substr(0, index) + char + str.substr(index + 1); } function incrementBase32(str) { var done = void 0; var index = str.length; var char = void 0; var charIndex = void 0; var maxCharIndex = ENCODING_LEN - 1; while (!done && index-- >= 0) { char = str[index]; charIndex = ENCODING.indexOf(char); if (charIndex === -1) { throw createError("incorrectly encoded string"); } if (charIndex === maxCharIndex) { str = replaceCharAt(str, index, ENCODING[0]); continue; } done = replaceCharAt(str, index, ENCODING[charIndex + 1]); } if (typeof done === "string") { return done; } throw createError("cannot increment this string"); } function randomChar(prng) { var rand = Math.floor(prng() * ENCODING_LEN); if (rand === ENCODING_LEN) { rand = ENCODING_LEN - 1; } return ENCODING.charAt(rand); } function encodeTime(now, len) { if (isNaN(now)) { throw new Error(now + " must be a number"); } if (now > TIME_MAX) { throw createError("cannot encode time greater than " + TIME_MAX); } if (now < 0) { throw createError("time must be positive"); } if (Number.isInteger(now) === false) { throw createError("time must be an integer"); } var mod = void 0; var str = ""; for (; len > 0; len--) { mod = now % ENCODING_LEN; str = ENCODING.charAt(mod) + str; now = (now - mod) / ENCODING_LEN; } return str; } function encodeRandom(len, prng) { var str = ""; for (; len > 0; len--) { str = randomChar(prng) + str; } return str; } function decodeTime(id) { if (id.length !== TIME_LEN + RANDOM_LEN) { throw createError("malformed ulid"); } var time = id.substr(0, TIME_LEN).split("").reverse().reduce(function(carry, char, index) { var encodingIndex = ENCODING.indexOf(char); if (encodingIndex === -1) { throw createError("invalid character found: " + char); } return carry += encodingIndex * Math.pow(ENCODING_LEN, index); }, 0); if (time > TIME_MAX) { throw createError("malformed ulid, timestamp too large"); } return time; } function detectPrng() { var allowInsecure = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; var root = arguments[1]; if (!root) { root = typeof window !== "undefined" ? window : null; } var browserCrypto = root && (root.crypto || root.msCrypto); if (browserCrypto) { return function() { var buffer = new Uint8Array(1); browserCrypto.getRandomValues(buffer); return buffer[0] / 255; }; } else { try { var nodeCrypto = require_crypto(); return function() { return nodeCrypto.randomBytes(1).readUInt8() / 255; }; } catch (e) { } } if (allowInsecure) { try { console.error("secure crypto unusable, falling back to insecure Math.random()!"); } catch (e) { } return function() { return Math.random(); }; } throw createError("secure crypto unusable, insecure Math.random not allowed"); } function factory(currPrng) { if (!currPrng) { currPrng = detectPrng(); } return function ulid2(seedTime) { if (isNaN(seedTime)) { seedTime = Date.now(); } return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, currPrng); }; } function monotonicFactory(currPrng) { if (!currPrng) { currPrng = detectPrng(); } var lastTime = 0; var lastRandom = void 0; return function ulid2(seedTime) { if (isNaN(seedTime)) { seedTime = Date.now(); } if (seedTime <= lastTime) { var incrementedRandom = lastRandom = incrementBase32(lastRandom); return encodeTime(lastTime, TIME_LEN) + incrementedRandom; } lastTime = seedTime; var newRandom = lastRandom = encodeRandom(RANDOM_LEN, currPrng); return encodeTime(seedTime, TIME_LEN) + newRandom; }; } var ulid = factory(); exports2.replaceCharAt = replaceCharAt; exports2.incrementBase32 = incrementBase32; exports2.randomChar = randomChar; exports2.encodeTime = encodeTime; exports2.encodeRandom = encodeRandom; exports2.decodeTime = decodeTime; exports2.detectPrng = detectPrng; exports2.factory = factory; exports2.monotonicFactory = monotonicFactory; exports2.ulid = ulid; Object.defineProperty(exports2, "__esModule", { value: true }); }); } }); // (disabled):../../node_modules/util/util.js var require_util = __commonJS({ "(disabled):../../node_modules/util/util.js"() { } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/status.js var require_status = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/status.js"(exports) { "use strict"; var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Status = exports.Stage = exports.Event = exports.isStage = void 0; var ulid_1 = require_index_umd(); var util_1 = __importDefault(require_util()); exports.isStage = (item) => { return item.is === "s"; }; var Event = class { constructor() { this.is = "e"; } }; exports.Event = Event; var Stage = class { constructor() { this.is = "s"; this.depth = 0; this.events = []; } get isRoot() { return !this.parentId; } begin() { this.condition = "running"; this.startTime = new Date(); } end() { this.endTime = new Date(); } toJSON() { return { is: this.is, id: this.id, parentId: this.parentId, depth: this.depth, condition: this.condition, name: this.name, startTime: this.startTime, endTime: this.endTime, events: this.events }; } add(event) { if (!event.id) { event.id = ulid_1.ulid(); event.timestamp = new Date(); event.stageId = this.id; } this.latestEvent = event; this.events.push(event); } }; exports.Stage = Stage; var Status = class { constructor() { this.stages = []; this.warnings = []; this.errors = []; this.findStage = (id) => this.stages.find((stage) => id === stage.id); this.newStage = () => new Stage(); } mutated(...items) { } begin() { this.condition = "running"; } end() { if (this.condition === "running") this.condition = "done"; } toJSON() { return { condition: this.condition, stages: this.stages.map((s) => s.toJSON()) }; } fromPartial(status) { const { stages, ...rest } = status; Object.assign(this, rest); this.stages = stages.map((s) => Object.assign(this.newStage(), s)); } push(stageName, stageIdOrMeta, meta = void 0) { if (this.condition !== "running") this.begin(); if (typeof stageIdOrMeta === "object") meta = stageIdOrMeta; else if (stageIdOrMeta && this.findStage(stageIdOrMeta)) throw new Error(`Stage Id ${stageIdOrMeta} already exists`); const stage = this.newStage(); stage.id = stageIdOrMeta || ulid_1.ulid(); stage.name = stageName; stage.meta = meta; this.addStage(stage); } pop(skipped, mutants = []) { if (!this.currentStage) throw new Error("Pop called without a current stage"); mutants.push(this.currentStage); if (this.currentStage.condition === "running") this.currentStage.condition = skipped === true ? "skipped" : "done"; this.currentStage.end(); if (this.currentStage.parentId) this.currentStage = this.findStage(this.currentStage.parentId); else { this.currentStage = null; this.end(); } this.mutated(...mutants); } info(message, ...args) { const event = new Event(); event.type = "info"; event.message = util_1.default.format(message, ...args); this.addEvent(event); } warn(message, ...args) { const event = new Event(); event.type = "warn"; event.message = util_1.default.format(message, ...args); this.addEvent(event); } error(ex, message, ...args) { const event = new Event(); event.type = "error"; if (ex) { event.exception = ex; event.message = ex.message; } if (message) event.message = util_1.default.format(message, ...args); this.addEvent(event); } addStage(stage) { const lastStage = this.currentStage; if (this.currentStage) { if (!stage.parentId) { stage.depth = this.currentStage.depth + 1; stage.parentId = this.currentStage.id; } delete this.currentStage.latestEvent; } this.stages.push(stage); this.currentStage = stage; this.currentStage.begin(); this.mutated(lastStage, stage); } addEvent(event) { var _a2; const mutations = []; if (event.stageId) { if (event.stageId === ((_a2 = this.currentStage) === null || _a2 === void 0 ? void 0 : _a2.id)) { this.currentStage.add(event); mutations.push(this.currentStage); } else { const stage = this.findStage(event.stageId); stage.add(event); mutations.push(stage); } } else if (this.currentStage) { event.stageId = this.currentStage.id; this.currentStage.add(event); mutations.push(this.currentStage); } if (event.type === "warn") this.warnings.push(event); else if (event.type === "error") { this.errors.push(event); let current = this.currentStage; while (current) { current.condition = "error"; mutations.push(current); current = current.parentId ? this.findStage(current.parentId) : void 0; } this.condition = "error"; } mutations.push(event); this.mutated(...mutations); } update(stage, update) { const popIt = stage === this.currentStage && update.condition !== "running"; Object.assign(stage, update); if (popIt) this.pop(); } received(items) { for (const item of items) { if (!item) continue; if (exports.isStage(item)) { const stage = this.findStage(item.id); if (stage) this.update(stage, item); else this.addStage(Object.assign(this.newStage(), item)); } else this.addEvent(Object.assign(new Event(), item)); } } }; exports.Status = Status; } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/version.js var require_version = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/version.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../../node_modules/@c6o/kubeclient-contracts/lib/index.js var require_lib = __commonJS({ "../../node_modules/@c6o/kubeclient-contracts/lib/index.js"(exports) { "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); } : function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !exports2.hasOwnProperty(p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_annotations(), exports); __exportStar(require_attempt(), exports); __exportStar(require_cluster(), exports); __exportStar(require_helpers(), exports); __exportStar(require_if(), exports); __exportStar(require_labels(), exports); __exportStar(require_markers(), exports); __exportStar(require_options(), exports); __exportStar(require_processor(), exports); __exportStar(require_resource(), exports); __exportStar(require_resourceHelper(), exports); __exportStar(require_request(), exports); __exportStar(require_result(), exports); __exportStar(require_status(), exports); __exportStar(require_version(), exports); } }); // ../contracts/lib/annotations.js var require_annotations2 = __commonJS({ "../contracts/lib/annotations.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Annotations = void 0; var kubeclient_contracts_1 = require_lib(); var Annotations = class extends kubeclient_contracts_1.Annotations { }; exports.Annotations = Annotations; } }); // ../contracts/lib/codezero.js var require_codezero = __commonJS({ "../contracts/lib/codezero.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CodeZeroHelper = void 0; var kubeclient_contracts_1 = require_lib(); var CodeZeroHelper = class extends kubeclient_contracts_1.ResourceHelper { get displayName() { var _a2; return ((_a2 = this.resource.metadata.annotations) === null || _a2 === void 0 ? void 0 : _a2["system.codezero.io/display"]) || this.name; } get iconUrl() { var _a2; return (_a2 = this.resource.metadata.annotations) === null || _a2 === void 0 ? void 0 : _a2["system.codezero.io/iconUrl"]; } get componentLabels() { return { "app.kubernetes.io/managed-by": "codezero" }; } }; exports.CodeZeroHelper = CodeZeroHelper; } }); // ../contracts/lib/app.js var require_app2 = __commonJS({ "../contracts/lib/app.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AppHelper = exports.AppStatuses = void 0; var codezero_1 = require_codezero(); exports.AppStatuses = { create: { Pending: "Installing", Completed: "Running", Error: "Error" }, update: { Pending: "Configuring", Completed: "Running", Error: "Degraded" }, remove: { Pending: "Terminating", Completed: "Terminated", Error: "Degraded" } }; var AppHelper = class extends codezero_1.CodeZeroHelper { constructor() { super(...arguments); this.getServiceName = (serviceObject) => Object.keys(serviceObject)[0]; } get services() { var _a2; if (this._services) return this._services; this.resource.spec.provisioner = this.resource.spec.provisioner || {}; const appProvisioner = this.resource.metadata.name; const services = ((_a2 = this.resource.spec.provisioner) === null || _a2 === void 0 ? void 0 : _a2.services) || []; return this._services = [ ...services, { [appProvisioner]: this.resource.spec.provisioner } ]; } get appId() { return this.resource.metadata.name; } get instanceId() { return `${this.namespace}-${this.name}`; } get tag() { var _a2; return (_a2 = this.resource.spec.provisioner) === null || _a2 === void 0 ? void 0 : _a2.tag; } get description() { var _a2; return ((_a2 = this.resource.metadata.annotations) === null || _a2 === void 0 ? void 0 : _a2["system.codezero.io/description"]) || this.appId; } get edition() { var _a2; return ((_a2 = this.resource.metadata.labels) === null || _a2 === void 0 ? void 0 : _a2["system.codezero.io/edition"]) || "latest"; } get provisioner() { return this.spec.provisioner; } get routes() { return this.spec.routes; } get hasRoutes() { var _a2; return (_a2 = this.routes) === null || _a2 === void 0 ? void 0 : _a2.length; } get httpRoute() { var _a2; return (_a2 = this.routes) === null || _a2 === void 0 ? void 0 : _a2.find((item) => item.type === "http"); } get spec() { return this.resource.spec; } get appEdition() { return this.edition; } get appName() { return this.resource.metadata.name; } get appNamespace() { return this.resource.metadata.namespace; } get isNew() { return !!this.resource.metadata.uid; } get serviceNames() { return this.services.map((serviceObject) => this.getServiceName(serviceObject)); } get componentLabels() { return { ...super.componentLabels, "system.codezero.io/app": this.name, "system.codezero.io/id": this.instanceId, "system.codezero.io/edition": this.edition, "app.kubernetes.io/name": this.name }; } get appComponentMergeDocument() { return { metadata: { labels: this.componentLabels } }; } get volumes() { var _a2, _b; return (_b = (_a2 = this.spec) === null || _a2 === void 0 ? void 0 : _a2.provisioner) === null || _b === void 0 ? void 0 : _b.volumes; } static volumesPath() { return "/spec/provisioner/volumes"; } getServiceSpec(serviceName) { return this.getServiceObject(serviceName)[serviceName]; } getServicePackage(serviceName) { const serviceSpec = this.getServiceSpec(serviceName); return serviceSpec.package; } getServiceTagPrefix(serviceName) { const serviceSpec = this.getServiceSpec(serviceName); return serviceSpec["tag-prefix"] || serviceName; } getServiceObject(serviceName) { return this.services.find((serviceObject) => this.getServiceName(serviceObject) === serviceName) || {}; } upsertLabel(labelName, labelValue) { this.resource.metadata.labels[labelName] = labelValue; } insertOnlyLabel(labelName, labelValue) { if (!this.resource.metadata.labels[labelName]) this.resource.metadata.labels[labelName] = labelValue; } }; exports.AppHelper = AppHelper; } }); // ../contracts/lib/contracts.js var require_contracts = __commonJS({ "../contracts/lib/contracts.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../contracts/lib/oauth.js var require_oauth = __commonJS({ "../contracts/lib/oauth.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../contracts/lib/helpers/configMap.js var require_configMap = __commonJS({ "../contracts/lib/helpers/configMap.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigMapHelper = void 0; var kubeclient_contracts_1 = require_lib(); var ConfigMapHelper = class extends kubeclient_contracts_1.ResourceHelper { }; exports.ConfigMapHelper = ConfigMapHelper; ConfigMapHelper.from = (namespace, name) => new ConfigMapHelper(ConfigMapHelper.template(namespace, name)); ConfigMapHelper.template = (namespace, name, data) => ({ apiVersion: "v1", kind: "ConfigMap", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 }, ...data ? { data } : void 0 }); } }); // ../contracts/lib/helpers/cronJob.js var require_cronJob = __commonJS({ "../contracts/lib/helpers/cronJob.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CronJobHelper = void 0; var codezero_1 = require_codezero(); var CronJobHelper = class extends codezero_1.CodeZeroHelper { }; exports.CronJobHelper = CronJobHelper; CronJobHelper.template = (namespace, name) => ({ apiVersion: "batch/v1beta1", kind: "CronJob", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 } }); CronJobHelper.from = (namespace, name) => new CronJobHelper(CronJobHelper.template(namespace, name)); } }); // ../contracts/lib/helpers/deployment.js var require_deployment = __commonJS({ "../contracts/lib/helpers/deployment.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeploymentHelper = void 0; var codezero_1 = require_codezero(); var DeploymentHelper = class extends codezero_1.CodeZeroHelper { static volumesPath() { return "/spec/template/spec/volumes"; } static volumeMountsPath() { return "/spec/template/spec/containers/volumeMounts"; } get templateSpec() { var _a2, _b; return (_b = (_a2 = this.spec) === null || _a2 === void 0 ? void 0 : _a2.template) === null || _b === void 0 ? void 0 : _b.spec; } get appName() { var _a2; return (_a2 = this.metadata) === null || _a2 === void 0 ? void 0 : _a2.ownerReferences[0].name; } get volumes() { var _a2; return (_a2 = this.templateSpec) === null || _a2 === void 0 ? void 0 : _a2.volumes; } get volumeMounts() { var _a2, _b; return (_b = (_a2 = this.templateSpec) === null || _a2 === void 0 ? void 0 : _a2.containers[0]) === null || _b === void 0 ? void 0 : _b.volumeMounts; } get volumesNotMounted() { var _a2; return (_a2 = this.volumes) === null || _a2 === void 0 ? void 0 : _a2.filter((volume) => !this.volumeMounts.some((volumeMount) => volume.name === volumeMount.name)); } }; exports.DeploymentHelper = DeploymentHelper; DeploymentHelper.template = (namespace, name) => ({ apiVersion: "apps/v1", kind: "Deployment", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 } }); DeploymentHelper.from = (namespace, name) => new DeploymentHelper(DeploymentHelper.template(namespace, name)); } }); // ../contracts/lib/helpers/job.js var require_job = __commonJS({ "../contracts/lib/helpers/job.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JobHelper = void 0; var codezero_1 = require_codezero(); var JobHelper = class extends codezero_1.CodeZeroHelper { }; exports.JobHelper = JobHelper; JobHelper.template = (namespace, name) => ({ apiVersion: "batch/v1", kind: "Job", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 } }); JobHelper.from = (namespace, name) => new JobHelper(JobHelper.template(namespace, name)); } }); // ../contracts/lib/helpers/namespace.js var require_namespace = __commonJS({ "../contracts/lib/helpers/namespace.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NamespaceHelper = void 0; var kubeclient_contracts_1 = require_lib(); var NamespaceHelper = class extends kubeclient_contracts_1.ResourceHelper { }; exports.NamespaceHelper = NamespaceHelper; NamespaceHelper.template = (name) => ({ apiVersion: "v1", kind: "Namespace", metadata: { ...name ? { name } : void 0 } }); NamespaceHelper.from = (name) => new NamespaceHelper(NamespaceHelper.template(name)); } }); // ../contracts/lib/helpers/persistentVolume.js var require_persistentVolume = __commonJS({ "../contracts/lib/helpers/persistentVolume.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PersistentVolumeObject = void 0; var codezero_1 = require_codezero(); var PersistentVolumeObject = class extends codezero_1.CodeZeroHelper { }; exports.PersistentVolumeObject = PersistentVolumeObject; } }); // ../contracts/lib/helpers/persistentVolumeClaim.js var require_persistentVolumeClaim = __commonJS({ "../contracts/lib/helpers/persistentVolumeClaim.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PersistentVolumeClaimObject = void 0; var codezero_1 = require_codezero(); var PersistentVolumeClaimObject = class extends codezero_1.CodeZeroHelper { get volumeName() { return this.spec.volumeName; } get appName() { var _a2; return (_a2 = this.metadata.ownerReferences[0]) === null || _a2 === void 0 ? void 0 : _a2.name; } }; exports.PersistentVolumeClaimObject = PersistentVolumeClaimObject; } }); // ../contracts/lib/helpers/pod.js var require_pod = __commonJS({ "../contracts/lib/helpers/pod.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PodHelper = void 0; var codezero_1 = require_codezero(); var PodHelper = class extends codezero_1.CodeZeroHelper { }; exports.PodHelper = PodHelper; PodHelper.template = (namespace, name) => ({ apiVersion: "v1", kind: "Pod", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 } }); PodHelper.from = (namespace, name) => new PodHelper(PodHelper.template(namespace, name)); } }); // ../contracts/lib/helpers/secret.js var require_secret = __commonJS({ "../contracts/lib/helpers/secret.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SecretHelper = void 0; var kubeclient_contracts_1 = require_lib(); var SecretHelper = class extends kubeclient_contracts_1.ResourceHelper { }; exports.SecretHelper = SecretHelper; SecretHelper.from = (namespace, name) => new SecretHelper(SecretHelper.template(namespace, name)); SecretHelper.template = (namespace, name, data) => ({ apiVersion: "v1", kind: "Secret", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 }, ...data ? { data } : void 0 }); } }); // ../contracts/lib/helpers/service.js var require_service = __commonJS({ "../contracts/lib/helpers/service.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceHelper = void 0; var kubeclient_contracts_1 = require_lib(); var ServiceHelper = class extends kubeclient_contracts_1.ResourceHelper { }; exports.ServiceHelper = ServiceHelper; ServiceHelper.template = (namespace, name) => ({ apiVersion: "v1", kind: "Service", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 } }); ServiceHelper.from = (namespace, name) => new ServiceHelper(ServiceHelper.template(namespace, name)); } }); // ../contracts/lib/helpers/statefulSet.js var require_statefulSet = __commonJS({ "../contracts/lib/helpers/statefulSet.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StatefulSetHelper = void 0; var codezero_1 = require_codezero(); var StatefulSetHelper = class extends codezero_1.CodeZeroHelper { }; exports.StatefulSetHelper = StatefulSetHelper; StatefulSetHelper.template = (namespace, name) => ({ apiVersion: "apps/v1", kind: "StatefulSet", metadata: { ...name ? { name } : void 0, ...namespace ? { namespace } : void 0 } }); StatefulSetHelper.from = (namespace, name) => new StatefulSetHelper(StatefulSetHelper.template(namespace, name)); } }); // ../contracts/lib/helpers/index.js var require_helpers2 = __commonJS({ "../contracts/lib/helpers/index.js"(exports) { "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); } : function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !exports2.hasOwnProperty(p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_configMap(), exports); __exportStar(require_cronJob(), exports); __exportStar(require_deployment(), exports); __exportStar(require_job(), exports); __exportStar(require_namespace(), exports); __exportStar(require_persistentVolume(), exports); __exportStar(require_persistentVolumeClaim(), exports); __exportStar(require_pod(), exports); __exportStar(require_secret(), exports); __exportStar(require_service(), exports); __exportStar(require_statefulSet(), exports); } }); // ../contracts/lib/labels.js var require_labels2 = __commonJS({ "../contracts/lib/labels.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Labels = void 0; var kubeclient_contracts_1 = require_lib(); var Labels = class extends kubeclient_contracts_1.Labels { }; exports.Labels = Labels; Labels.valueManagedByC6O = "codezero"; } }); // ../contracts/lib/user.js var require_user = __commonJS({ "../contracts/lib/user.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../contracts/lib/store.js var require_store = __commonJS({ "../contracts/lib/store.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../contracts/lib/resolver.js var require_resolver = __commonJS({ "../contracts/lib/resolver.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../contracts/lib/signal.js var require_signal = __commonJS({ "../contracts/lib/signal.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clearDocumentSignal = exports.signalDocument = exports.isDocumentSignalled = exports.DOCUMENT_SIGNAL_JSON_PATCH = exports.DOCUMENT_SIGNAL = void 0; exports.DOCUMENT_SIGNAL = "system.codezero.io/update-signal"; exports.DOCUMENT_SIGNAL_JSON_PATCH = "system.codezero.io~1update-signal"; exports.isDocumentSignalled = (document2) => { var _a2, _b; return ((_b = (_a2 = document2.metadata) === null || _a2 === void 0 ? void 0 : _a2.annotations) === null || _b === void 0 ? void 0 : _b[exports.DOCUMENT_SIGNAL]) === "true"; }; exports.signalDocument = (document2) => { if (!document2.metadata) document2.metadata = { annotations: { [exports.DOCUMENT_SIGNAL]: "true" } }; else if (!document2.metadata.annotations) document2.metadata.annotations = { [exports.DOCUMENT_SIGNAL]: "true" }; else document2.metadata.annotations[exports.DOCUMENT_SIGNAL] = "true"; }; exports.clearDocumentSignal = (document2) => { var _a2, _b; return (_b = (_a2 = document2.metadata) === null || _a2 === void 0 ? void 0 : _a2.annotations) === null || _b === void 0 ? true : delete _b[exports.DOCUMENT_SIGNAL]; }; } }); // ../contracts/lib/provisioner.js var require_provisioner = __commonJS({ "../contracts/lib/provisioner.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); // ../contracts/lib/index.js var require_lib2 = __commonJS({ "../contracts/lib/index.js"(exports) { "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); } : function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !exports2.hasOwnProperty(p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_annotations2(), exports);