@pubgcorp/pk-template
Version:
p template engine for kubernetes
152 lines • 9.45 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.applyPkd = void 0;
const applyPkd = (options, pkz) => __awaiter(void 0, 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 !!!');
});
exports.applyPkd = applyPkd;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGstZGVwbG95L2FwcGx5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQWVPLE1BQU0sUUFBUSxHQUFHLENBQU8sT0FBMEIsRUFBRSxHQUFrQixFQUFFLEVBQUU7SUFFL0Usa0VBQWtFO0lBQ2xFLGdDQUFnQztJQUNoQyw2REFBNkQ7SUFDN0QsNERBQTREO0lBQzVELDhEQUE4RDtJQUM5RCw0REFBNEQ7SUFDNUQsU0FBUztJQUVULGlDQUFpQztJQUNqQyx1Q0FBdUM7SUFDdkMsNkRBQTZEO0lBQzdELGdDQUFnQztJQUNoQyxpR0FBaUc7SUFDakcsa0RBQWtEO0lBQ2xELG1DQUFtQztJQUNuQyxnQkFBZ0I7SUFDaEIsWUFBWTtJQUVaLDRCQUE0QjtJQUM1QixnQ0FBZ0M7SUFDaEMsd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUV6QiwwQkFBMEI7SUFDMUIsaUNBQWlDO0lBQ2pDLGdDQUFnQztJQUNoQyxrQ0FBa0M7SUFDbEMsd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUV6Qix1QkFBdUI7SUFDdkIsK0NBQStDO0lBQy9DLG9EQUFvRDtJQUNwRCx1R0FBdUc7SUFDdkcsNENBQTRDO0lBQzVDLGdEQUFnRDtJQUNoRCwrQkFBK0I7SUFDL0IsZ0RBQWdEO0lBQ2hELHdCQUF3QjtJQUN4QiwyQkFBMkI7SUFDM0IsNENBQTRDO0lBQzVDLG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osUUFBUTtJQUVSLGdCQUFnQjtJQUNoQixJQUFJO0lBRUosMEVBQTBFO0lBQzFFLGtFQUFrRTtJQUNsRSxpRkFBaUY7SUFDakYsd0ZBQXdGO0lBQ3hGLHdGQUF3RjtJQUN4RiwwQ0FBMEM7SUFDMUMsSUFBSTtJQUVKLHNFQUFzRTtJQUN0RSw4QkFBOEI7SUFDOUIsNkNBQTZDO0lBQzdDLCtEQUErRDtJQUMvRCxrRUFBa0U7SUFDbEUsMEVBQTBFO0lBQzFFLHFGQUFxRjtJQUNyRixtQkFBbUI7SUFDbkIsa0NBQWtDO0lBQ2xDLG9GQUFvRjtJQUNwRixRQUFRO0lBQ1IsbUJBQW1CO0lBQ25CLGlFQUFpRTtJQUNqRSxtQkFBbUI7SUFDbkIsNkJBQTZCO0lBQzdCLElBQUk7SUFFSixtREFBbUQ7SUFDbkQsZ0NBQWdDO0lBQ2hDLGtFQUFrRTtJQUNsRSw0RkFBNEY7SUFDNUYsaUNBQWlDO0lBQ2pDLDJDQUEyQztJQUMzQyxxQkFBcUI7SUFDckIsOEJBQThCO0lBQzlCLHFEQUFxRDtJQUNyRCxlQUFlO0lBQ2YsaURBQWlEO0lBQ2pELHVCQUF1QjtJQUN2QiwwREFBMEQ7SUFDMUQsNkNBQTZDO0lBQzdDLDBDQUEwQztJQUMxQyx1QkFBdUI7SUFDdkIsUUFBUTtJQUNSLElBQUk7SUFFSixrREFBa0Q7SUFDbEQsc0NBQXNDO0lBRXRDLHNDQUFzQztJQUN0QywyQ0FBMkM7SUFDM0MsdUJBQXVCO0lBQ3ZCLDhCQUE4QjtJQUM5QixvREFBb0Q7SUFDcEQsa0JBQWtCO0lBQ2xCLFFBQVE7SUFFUixzSEFBc0g7SUFDdEgsNkNBQTZDO0lBQzdDLG1CQUFtQjtJQUNuQixnRUFBZ0U7SUFDaEUsd0NBQXdDO0lBRXhDLHNEQUFzRDtJQUV0RCxtQkFBbUI7SUFDbkIsSUFBSTtJQUVKLDREQUE0RDtJQUM1RCxzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLGlEQUFpRDtJQUVqRCxxQkFBcUI7SUFDckIsSUFBSTtJQUdKLG9DQUFvQztJQUNwQyx1QkFBdUI7SUFDdkIsNEJBQTRCO0lBQzVCLDhEQUE4RDtJQUM5RCx5Q0FBeUM7SUFDekMsK0JBQStCO0lBQy9CLEtBQUs7SUFDTCw4Q0FBOEM7SUFDOUMsa0ZBQWtGO0lBRWxGLHlCQUF5QjtJQUN6QixvRUFBb0U7SUFDcEUsK0NBQStDO0lBQy9DLDBDQUEwQztJQUMxQywrQ0FBK0M7SUFDL0MsZ0NBQWdDO0lBQ2hDLFlBQVk7SUFDWix1Q0FBdUM7SUFDdkMsUUFBUTtJQUNSLElBQUk7SUFDSiw4Q0FBOEM7SUFDOUMsMENBQTBDO0lBRTFDLGdDQUFnQztJQUNoQyw4QkFBOEI7SUFDOUIsd0JBQXdCO0lBQ3hCLGtDQUFrQztJQUNsQyxRQUFRO0lBQ1IsNkJBQTZCO0lBQzdCLElBQUk7SUFFSixlQUFlO0lBQ2YsNkJBQTZCO0FBRS9CLENBQUMsQ0FBQSxDQUFBO0FBL0pZLFFBQUEsUUFBUSxZQStKcEIifQ==