kui-shell
Version:
This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool
76 lines • 3.3 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 });
const debug_1 = require("debug");
const i18n_1 = require("@kui-shell/core/api/i18n");
const table_models_1 = require("@kui-shell/core/api/table-models");
const resource_1 = require("../../model/resource");
const strings = i18n_1.i18n('plugin-k8s');
const debug = debug_1.default('k8s/view/modes/events');
function getEvents(tab, resource) {
return __awaiter(this, void 0, void 0, function* () {
try {
const cmdGetPodEvents = `kubectl get events --field-selector involvedObject.name=${resource.metadata.name},involvedObject.namespace=${resource.metadata.namespace} -n ${resource.metadata.namespace}`;
const customColumns = 'custom-columns=TYPE:type,REASON:reason,LAST SEEN:lastTimestamp,COUNT:count,FIRST SEEN:firstTimestamp,FROM:source.component,MESSAGE:message';
const cmd = `${cmdGetPodEvents} -o "${customColumns}"`;
debug('getEvents', cmd);
return tab.REPL.qexec(cmd).then(result => {
if (table_models_1.isTable(result) && !result.body[0]) {
return strings('No resources found.');
}
return result;
});
}
catch (err) {
return err.message;
}
});
}
function hasEvents(resource) {
return resource_1.isKubeResource(resource) && !(resource.apiVersion === 'v1' && resource.kind === 'Event');
}
exports.eventsMode = {
when: hasEvents,
mode: (command, resource) => {
debug('events', resource);
try {
return {
mode: 'events',
label: strings('events'),
leaveBottomStripeAlone: true,
direct: {
plugin: 'k8s/dist/index',
operation: 'renderAndViewEvents',
parameters: { command, resource }
}
};
}
catch (err) {
debug('error rendering events mode', err);
}
}
};
exports.renderAndViewEvents = (tab, parameters) => __awaiter(void 0, void 0, void 0, function* () {
const { command, resource } = parameters;
debug('renderAndViewEvents', command, resource);
const events = yield getEvents(tab, resource.resource);
if (typeof events === 'string') {
const pre = document.createElement('pre');
const code = document.createElement('code');
pre.appendChild(code);
code.innerText = events;
return pre;
}
else {
return events;
}
});
//# sourceMappingURL=events.js.map