pk-template
Version:
p template engine for kubernetes
149 lines • 9.28 kB
JavaScript
;
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.applyPkd = (options, pkz) => __awaiter(this, void 0, void 0, function* () {
// const buildApplySteps = (objects: IObject[]): IApplyStep[] => {
// const g: IApplyStep[] = [
// { name: 'Namespaces', objects: [], final: false },
// { name: 'Resources', objects: [], final: false },
// { name: 'Deployments', objects: [], final: false },
// { name: 'PktPackage', objects: [], final: true },
// ];
// for (const o of objects) {
// if (!o.metadata.namespace) {
// const namespaced = kube.isNamespacedObject(o);
// if (namespaced) {
// ui.error(`namespace is missing on (kind=${o.kind}, name=${o.metadata.name})`);
// ui.verbose(pkyaml.dumpYaml(o));
// process.exit(1);
// }
// }
// switch (o.kind) {
// case 'Namespace':
// g[0].objects.push(o);
// break;
// case 'Pod':
// case 'Deployment':
// case 'DaemonSet':
// case 'StatefulSet':
// g[2].objects.push(o);
// break;
// default:
// if (o.kind == 'ConfigMap') {
// const name = o.metadata.name;
// const pkgid = o.metadata.annotations && o.metadata.annotations['pkt.io/pkz-id'];
// if (name === pkgid) {
// g[3].objects.push(o);
// } else {
// g[1].objects.push(o);
// }
// } else {
// g[1].objects.push(o);
// }
// }
// }
// return g;
// }
// const findDisappearedObjects = (currcmap: IObject): IResourceKey[] => {
// const prevcmap = kube.getPkzSpec(currcmap.metadata.name) ||
// { metadata: { name: currcmap.metadata.name }, data: { objects: '' } };
// const prevSpec = PkdCatalog.parse(prevcmap.metadata.name, prevcmap.data.objects);
// const currSpec = PkdCatalog.parse(currcmap.metadata.name, currcmap.data.objects);
// return prevSpec.subtract(currSpec);
// }
// const precheckStep = (objects: IObject[], steps: IApplyStep[]) => {
// ui.header('pre-check');
// const chalk = getChalk().yellowBright;
// ui.output(` target deployment : ${chalk(pkz.name)}`);
// ui.output(` kubectl options :${chalk(wholeOption)} `);
// ui.output(` context : ${chalk(kubeOption.context)} `);
// ui.output(` apply : ${chalk(options.dryRun ? 'no' : 'yes')} `);
// ui.output();
// for (const step of steps) {
// ui.output(` ${step.name.padEnd(15)}: ${step.objects.length} objects`);
// }
// ui.output();
// ui.output(` total ${objects.length} objects to apply`);
// ui.output();
// ui.confirm("proceed");
// }
// const deleteStep = async (step: IApplyStep) => {
// ui.header(`Delete step`);
// const deleteList = findDisappearedObjects(step.objects[0]);
// const targets = deleteList.map(o => `${o.kind}/${o.namespace}/${o.name}`).join(', ');
// if (targets.length == 0) {
// ui.verbose(' - targets: none');
// ui.info();
// ui.confirm('skip');
// ui.verbose(' - kubectl: delete skipped');
// } else {
// ui.verbose(` - targets: ${targets}`);
// ui.verbose()
// ui.confirm(`delete ${targets.length} objects`);
// ui.verbose(' - kubectl: delete');
// kube.deleteObjects(deleteList);
// ui.output();
// }
// }
// const applyStep = async (step: IApplyStep) => {
// ui.header(`${step.name} step`);
// if (step.objects.length == 0) {
// ui.verbose(' - targets: none');
// ui.verbose()
// ui.confirm(`skip`);
// ui.verbose(' - kubectl: apply skipped');
// return;
// }
// const targets = step.objects.map(o => `${o.kind}/${o.metadata.namespace || ''}/${o.metadata.name}`).join(', ');
// ui.verbose(` - targets: ${targets}`);
// ui.verbose()
// ui.confirm(`apply these ${step.objects.length} objects`);
// ui.verbose(` - kubectl: apply`);
// await kube.applyRaw(step.objects, wholeOption);
// ui.output();
// }
// const buildKubeOption = (pkz: IPkDeployment): string => {
// let option = ''
// if (pkz.context)
// option += ` --context ${pkz.context}`;
// return option;
// }
// const ui = new Progress(options);
// const kubeOption = {
// context: pkz.context,
// kube_dryrun_option: options.dryRun ? ' --dry-run' : '',
// kube_option: buildKubeOption(pkz),
// sequential_apply: false,
// };
// const kube = new PkKubeCtl(kubeOption, ui);
// const wholeOption = `${kubeOption.kube_dryrun_option}${kubeOption.kube_option}`
// if (!options.dryRun) {
// ui.error('CAUTION) APPLYING TO REAL KUBERNETES CLUSTER !!!');
// if (options.yes && !options.immediate) {
// for (let i = 10; i >= 0; --i) {
// process.stdout.write(`..${i} `);
// await delay(500);
// }
// console.log('.. START !!!');
// }
// }
// const objects = pkz.objects.filter(o => o);
// const steps = buildApplySteps(objects);
// precheckStep(objects, steps);
// for (const step of steps) {
// if (step.final) {
// await deleteStep(step);
// }
// await applyStep(step);
// }
// ui.output();
// ui.success('success !!!');
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGstZGVwbG95L2FwcGx5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFlYSxRQUFBLFFBQVEsR0FBRyxDQUFPLE9BQTBCLEVBQUUsR0FBa0IsRUFBRSxFQUFFO0lBRS9FLGtFQUFrRTtJQUNsRSxnQ0FBZ0M7SUFDaEMsNkRBQTZEO0lBQzdELDREQUE0RDtJQUM1RCw4REFBOEQ7SUFDOUQsNERBQTREO0lBQzVELFNBQVM7SUFFVCxpQ0FBaUM7SUFDakMsdUNBQXVDO0lBQ3ZDLDZEQUE2RDtJQUM3RCxnQ0FBZ0M7SUFDaEMsaUdBQWlHO0lBQ2pHLGtEQUFrRDtJQUNsRCxtQ0FBbUM7SUFDbkMsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFFWiw0QkFBNEI7SUFDNUIsZ0NBQWdDO0lBQ2hDLHdDQUF3QztJQUN4Qyx5QkFBeUI7SUFFekIsMEJBQTBCO0lBQzFCLGlDQUFpQztJQUNqQyxnQ0FBZ0M7SUFDaEMsa0NBQWtDO0lBQ2xDLHdDQUF3QztJQUN4Qyx5QkFBeUI7SUFFekIsdUJBQXVCO0lBQ3ZCLCtDQUErQztJQUMvQyxvREFBb0Q7SUFDcEQsdUdBQXVHO0lBQ3ZHLDRDQUE0QztJQUM1QyxnREFBZ0Q7SUFDaEQsK0JBQStCO0lBQy9CLGdEQUFnRDtJQUNoRCx3QkFBd0I7SUFDeEIsMkJBQTJCO0lBQzNCLDRDQUE0QztJQUM1QyxvQkFBb0I7SUFDcEIsWUFBWTtJQUNaLFFBQVE7SUFFUixnQkFBZ0I7SUFDaEIsSUFBSTtJQUVKLDBFQUEwRTtJQUMxRSxrRUFBa0U7SUFDbEUsaUZBQWlGO0lBQ2pGLHdGQUF3RjtJQUN4Rix3RkFBd0Y7SUFDeEYsMENBQTBDO0lBQzFDLElBQUk7SUFFSixzRUFBc0U7SUFDdEUsOEJBQThCO0lBQzlCLDZDQUE2QztJQUM3QywrREFBK0Q7SUFDL0Qsa0VBQWtFO0lBQ2xFLDBFQUEwRTtJQUMxRSxxRkFBcUY7SUFDckYsbUJBQW1CO0lBQ25CLGtDQUFrQztJQUNsQyxvRkFBb0Y7SUFDcEYsUUFBUTtJQUNSLG1CQUFtQjtJQUNuQixpRUFBaUU7SUFDakUsbUJBQW1CO0lBQ25CLDZCQUE2QjtJQUM3QixJQUFJO0lBRUosbURBQW1EO0lBQ25ELGdDQUFnQztJQUNoQyxrRUFBa0U7SUFDbEUsNEZBQTRGO0lBQzVGLGlDQUFpQztJQUNqQywyQ0FBMkM7SUFDM0MscUJBQXFCO0lBQ3JCLDhCQUE4QjtJQUM5QixxREFBcUQ7SUFDckQsZUFBZTtJQUNmLGlEQUFpRDtJQUNqRCx1QkFBdUI7SUFDdkIsMERBQTBEO0lBQzFELDZDQUE2QztJQUM3QywwQ0FBMEM7SUFDMUMsdUJBQXVCO0lBQ3ZCLFFBQVE7SUFDUixJQUFJO0lBRUosa0RBQWtEO0lBQ2xELHNDQUFzQztJQUV0QyxzQ0FBc0M7SUFDdEMsMkNBQTJDO0lBQzNDLHVCQUF1QjtJQUN2Qiw4QkFBOEI7SUFDOUIsb0RBQW9EO0lBQ3BELGtCQUFrQjtJQUNsQixRQUFRO0lBRVIsc0hBQXNIO0lBQ3RILDZDQUE2QztJQUM3QyxtQkFBbUI7SUFDbkIsZ0VBQWdFO0lBQ2hFLHdDQUF3QztJQUV4QyxzREFBc0Q7SUFFdEQsbUJBQW1CO0lBQ25CLElBQUk7SUFFSiw0REFBNEQ7SUFDNUQsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixpREFBaUQ7SUFFakQscUJBQXFCO0lBQ3JCLElBQUk7SUFHSixvQ0FBb0M7SUFDcEMsdUJBQXVCO0lBQ3ZCLDRCQUE0QjtJQUM1Qiw4REFBOEQ7SUFDOUQseUNBQXlDO0lBQ3pDLCtCQUErQjtJQUMvQixLQUFLO0lBQ0wsOENBQThDO0lBQzlDLGtGQUFrRjtJQUVsRix5QkFBeUI7SUFDekIsb0VBQW9FO0lBQ3BFLCtDQUErQztJQUMvQywwQ0FBMEM7SUFDMUMsK0NBQStDO0lBQy9DLGdDQUFnQztJQUNoQyxZQUFZO0lBQ1osdUNBQXVDO0lBQ3ZDLFFBQVE7SUFDUixJQUFJO0lBQ0osOENBQThDO0lBQzlDLDBDQUEwQztJQUUxQyxnQ0FBZ0M7SUFDaEMsOEJBQThCO0lBQzlCLHdCQUF3QjtJQUN4QixrQ0FBa0M7SUFDbEMsUUFBUTtJQUNSLDZCQUE2QjtJQUM3QixJQUFJO0lBRUosZUFBZTtJQUNmLDZCQUE2QjtBQUUvQixDQUFDLENBQUEsQ0FBQSJ9