pk-template
Version:
p template engine for kubernetes
74 lines • 7.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const exec_1 = require("./exec");
const kubectl_1 = require("./kubectl");
class PkKubeCtl extends kubectl_1.KubeCtl {
constructor(config, progress) {
super(config, progress);
}
queryUnnamespacables() {
const command = `kubectl api-resources --no-headers --namespaced=false --kubeconfig ${this.config.kubeConfig}`;
const result = exec_1.execPipeSync(command);
const lines = result.split('\n').filter(l => l);
const set = {};
// Time-to-black-magic. Please refer to https://jira.krafton.com/browse/PUBG-8902 to see the background.
const mustHaveElement = 'storage.k8s.io';
const mustHaveElementIdx = result.indexOf(mustHaveElement);
const lineIdentifier = '\n';
const mustHaveElementLineIdx = result.lastIndexOf(lineIdentifier, mustHaveElementIdx) + lineIdentifier.length;
const apiGroupIdx = mustHaveElementIdx - mustHaveElementLineIdx;
for (const line of lines) {
const sp = line.substring(apiGroupIdx).trim().split(/\s+/);
const key = sp.length == 2
? `/${sp[1]}`
: `${sp[0]}/${sp[2]}`;
set[key] = true;
}
return set;
}
getPkzSpec(name) {
const command = `kubectl get configmap ${name} --kubeconfig ${this.config.kubeConfig} --namespace pk-deployments -ojson`;
const result = exec_1.execPipeSync(command, '(NotFound)');
if (result) {
const configmap = JSON.parse(result);
return configmap;
}
return null;
}
toApiGroup(apiVersion) {
const sp = apiVersion.split('/');
return sp.length == 2 ? sp[0] : '';
}
isNamespacedType(apiGroup, kind) {
if (!this.unnamespacables) {
this.unnamespacables = this.queryUnnamespacables();
}
return !this.unnamespacables[`${apiGroup}/${kind}`];
}
isNamespacedObject(object) {
const apiGroup = this.toApiGroup(object.apiVersion);
return this.isNamespacedType(apiGroup, object.kind);
}
deleteObjects(keys) {
for (const key of keys) {
if (key.apiGroup == '' && key.kind == 'Namespace' && key.name == 'default') {
this.progress.verbose(' skip default namespaces');
continue;
}
const namespaced = this.isNamespacedType(key.apiGroup, key.kind);
if (namespaced && !key.namespace) {
this.progress.error(`!!! cannot determine object to delete (apigroup=${key.apiGroup}, kind=${key.kind}, name=${key.name}), namespace is missing`);
continue;
}
this.progress.confirm(`delete ${key.kind} ${namespaced ? key.namespace + '/' : ''}${key.name}`);
if (namespaced) {
this.deleteRaw(this.config, key.kind, key.name, key.namespace);
}
else {
this.deleteRaw(this.config, key.kind, key.name);
}
}
}
}
exports.PkKubeCtl = PkKubeCtl;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGsta3ViZWN0bC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9way1rdWJlY3RsL3BrLWt1YmVjdGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBc0M7QUFFdEMsdUNBQW9DO0FBRXBDLE1BQWEsU0FBVSxTQUFRLGlCQUFPO0lBR3BDLFlBQ0UsTUFBc0IsRUFDdEIsUUFBbUI7UUFDbkIsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLHNFQUFzRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9HLE1BQU0sTUFBTSxHQUFHLG1CQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLEdBQUcsR0FBUyxFQUFFLENBQUM7UUFFckIsd0dBQXdHO1FBQ3hHLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDOUcsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLEdBQUcsc0JBQXNCLENBQUM7UUFDaEUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMs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