@pubgcorp/pk-template
Version:
p template engine for kubernetes
95 lines • 9.1 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.applyPkIoVirtualObject = void 0;
const common_1 = require("../../../common");
const build_1 = require("../../../pk-deploy/build");
const lazy_1 = require("../../../lazy");
class PkIoWaitObjectApplier {
constructor(kube, object) {
this.kube = kube;
this.object = object;
}
apply() {
return __awaiter(this, void 0, void 0, function* () {
const wo = this.object;
if (wo.spec.conditions) {
for (const target of wo.spec.conditions) {
yield this.waitTarget(target);
}
}
});
}
waitTarget(condition) {
return __awaiter(this, void 0, void 0, function* () {
while (true) {
const tobj = yield this.kube.getObject(condition.target.kind, condition.target.name, condition.target.namespace);
if (tobj === null)
continue;
const nodes = this.searchJsonPath(tobj, condition.path);
switch (condition.type) {
case 'is':
if (nodes.length === 1 && nodes[0].value === condition.value) {
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: condition '${condition.path} ${condition.type} ${condition.value}' is met.`);
return true;
}
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: want ${condition.path} is ${condition.value}, but ${nodes[0].value}`);
break;
case 'is not':
if (nodes.length === 1 && nodes[0].value !== condition.value) {
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: condition '${condition.path} ${condition.type} ${condition.value}' is met.`);
return true;
}
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: want ${condition.path} is not ${condition.value}, but ${nodes[0].value}`);
break;
case 'exist':
if (nodes.length) {
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: condition '${condition.path} ${condition.type} ${condition.value}' is met.`);
return true;
}
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: want ${condition.path} exists, but not exists`);
break;
case 'exist':
if (nodes.length === 0) {
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: condition '${condition.path} ${condition.type} ${condition.value}' is met.`);
return true;
}
this.kube.progress.info(` ${build_1.pkIoApiVersion} Wait: want ${condition.path} not exists, but exists`);
break;
default:
throw new Error(`unknown ${build_1.pkIoApiVersion} Wait target condition type ${condition.type}`);
}
yield (0, common_1.delay)(1000);
}
});
}
searchJsonPath(obj, path) {
try {
const jsonpath = (0, lazy_1.getJsonPath)();
const nodes = jsonpath.nodes(obj, path);
return nodes;
}
catch (e) {
throw new Error(`jsonpath (${path}) error - ${e.message}`);
}
}
}
const applyPkIoVirtualObject = (kube, object) => __awaiter(void 0, void 0, void 0, function* () {
if (object.apiVersion === build_1.pkIoApiVersion) {
switch (object.kind) {
case 'Wait':
return new PkIoWaitObjectApplier(kube, object).apply();
}
}
throw new Error(`unknown ${build_1.pkIoApiVersion}/${object.kind} object`);
});
exports.applyPkIoVirtualObject = applyPkIoVirtualObject;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbE9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9way9jb21tYW5kcy9kZXBsb3ltZW50L3ZpcnR1YWxPYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNENBQWlEO0FBQ2pELG9EQUEwRDtBQUUxRCx3Q0FBNEM7QUFxQjVDLE1BQU0scUJBQXFCO0lBQ3pCLFlBQW9CLElBQWUsRUFBVSxNQUFtQjtRQUE1QyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYTtJQUNoRSxDQUFDO0lBRUssS0FBSzs7WUFDVCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBcUIsQ0FBQztZQUN0QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUN0QixLQUFLLE1BQU0sTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUN2QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7UUFDSCxDQUFDO0tBQUE7SUFFYSxVQUFVLENBQUMsU0FBK0I7O1lBQ3RELE9BQU8sSUFBSSxFQUFFO2dCQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakgsSUFBSSxJQUFJLEtBQUssSUFBSTtvQkFBRSxTQUFTO2dCQUU1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hELFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRTtvQkFDdEIsS0FBSyxJQUFJO3dCQUNQLElBQUks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