UNPKG

pk-template

Version:
158 lines 11.8 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const pkyaml = __importStar(require("../pk-yaml")); const lazy_1 = require("../lazy"); const pkt_1 = require("../pkt/pkt"); const utils_1 = require("../pk-template/utils"); const objectError = (object, err) => { console.log(pkyaml.dumpYaml(object)); console.error(lazy_1.getChalk().red('ERROR: ' + err)); process.exit(1); }; const buildCatalog = (buildInfo, objects) => { const catalog = objects .map(o => { const kind = o.kind; const avs = o.apiVersion.split('/'); const apiGroup = avs.length == 2 ? avs[0] : ''; const namespace = o.metadata.namespace || ''; const name = o.metadata.name; const sha = (o.metadata.annotations && o.metadata.annotations['pk.io/sha']) || utils_1.sha256(o, 8); return `${kind}/${apiGroup}/${name}/${namespace}/${sha}`; }) .join('\n'); return { apiVersion: "v1", kind: "ConfigMap", metadata: { name: buildInfo.name, namespace: "pk-deployments", annotations: { "pkt.io/type": "pk-deployment", "pkt.io/pk-deployment-id": buildInfo.id, "pkt.io/pk-deployment-name": buildInfo.name, }, }, data: { header: '\n' + '#--------------------------------------------------------\n' + '# DEPLOYMENT SPEC\n' + '#--------------------------------------------------------\n' + '\n' + pkyaml.dumpYaml(buildInfo) + '\n' + '#--------------------------------------------------------\n' + '\n', catalog: catalog, }, }; }; const expandNamespaceSpec = (namespaceSpec, conf, app, envName, clusterName) => { return namespaceSpec.replace(/({\w+})/g, (m, p1, p2) => { const key = m.substr(1, m.length - 2); if (key == 'project') { return conf.data.project.name; } if (key == 'app') { return app.name; } if (key == 'env') { return envName; } if (key == 'cluster') { return clusterName; } throw new Error(`unknown key from namespace {${key}}`); }); }; const validateObjects = (objects) => { for (const o of objects) { if (!o.metadata) { objectError(o, 'object does not have metadata'); } if (!o.kind) { objectError(o, 'object does not have kind'); } if (!o.apiVersion) { objectError(o, 'object does not have apiVersion'); } if (!o.metadata.name) { objectError(o, 'object does not have name'); } } }; const makeBuildSpec = (conf, app, envName, clusterName) => { const namespaceSpec = app.namespace || conf.data.namespace || '{project}-{app}-{env}'; const namespace = expandNamespaceSpec(namespaceSpec, conf, app, envName, clusterName); const deploymentName = `${conf.data.project.name}-${app.name}-${envName}-${clusterName}`; const deploymentId = `${app.id}-${envName}-${clusterName}`; const buildSpec = { id: deploymentId, name: deploymentName, created: new Date().toJSON(), project: conf.data.project, cluster: clusterName, namespace, git: { repo: utils_1.repository(), path: utils_1.repositoryPath('./app.pkt'), }, app: { name: app.name, id: app.id, }, env: envName, }; if (app.owner) { buildSpec.app.owner = app.owner; } return buildSpec; }; exports.buildPkd = (conf, appName, envName, clusterName) => __awaiter(this, void 0, void 0, function* () { const app = conf.getApp(appName); if (!app) { throw new Error(`app ${appName} not exits`); } const env = conf.getMergedEnv(appName, envName, clusterName); if (!env) { throw new Error(`app ${appName} does not have env ${envName}`); } const buildSpec = makeBuildSpec(conf, app, envName, clusterName); let objects = yield pkt_1.generate({ options: {}, file: `app.pkt`, env: env.name, values: { // ...env.values, namespace: buildSpec.namespace, env: env.name, cluster: clusterName, deployment: buildSpec, }, }); objects = objects.map(o => o); validateObjects(objects); const catalogObject = buildCatalog(buildSpec, objects); objects.push(catalogObject); const pkd = { header: buildSpec, objects, }; return pkd; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGstZGVwbG95L2J1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsbURBQXFDO0FBQ3JDLGtDQUFtQztBQUluQyxvQ0FBc0M7QUFDdEMsZ0RBQTBFO0FBRzFFLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBZSxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUE4QixFQUFFLE9BQWtCLEVBQUUsRUFBRTtJQUUxRSxNQUFNLE9BQU8sR0FBRyxPQUFPO1NBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNQLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM3QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMs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