UNPKG

kui-shell

Version:

This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool

79 lines 3.55 kB
"use strict"; 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 util_1 = require("@kui-shell/core/api/util"); const ascii_to_table_1 = require("@kui-shell/core/webapp/util/ascii-to-table"); const mode = { mode: 'Logs', direct: (tab, _) => __awaiter(void 0, void 0, void 0, function* () { const run = _.resource; const [taskRuns, pods] = yield Promise.all([ tab.REPL.rexec(`kubectl get taskrun -l tekton.dev/pipelineRun=${run.metadata.name}`), tab.REPL.rexec(`kubectl get pods -n ${run.metadata.namespace} -l tekton.dev/pipelineRun=${run.metadata.name}`) ]); const containers = util_1.default.flatten(pods.map(pod => { const taskName = pod.metadata.labels['tekton.dev/task']; const taskRun = taskRuns.find(_ => _.metadata.labels['tekton.dev/task'] === taskName); return pod.spec.containers.map((container, idx) => { const { containerID } = pod.status.containerStatuses[idx]; const stepRun = taskRun.status.steps.find(_ => _.terminated.containerID === containerID); const status = stepRun && stepRun.terminated.reason; return { name: taskName, css: 'slightly-deemphasize', onclick: `kubectl get task ${taskName} -o yaml`, attributes: [ { key: 'STEP', value: container.name }, { key: 'STATUS', value: status, tag: 'badge', css: ascii_to_table_1.cssForValue[status] }, { key: 'ACTIONS', value: 'View Logs', outerCSS: 'clickable clickable-color', onclick: `kubectl logs ${pod.metadata.name} ${container.name} -n ${pod.metadata.namespace}` } ] }; }); })); const table = { title: 'Container Logs', body: containers, header: { name: 'TASK', attributes: [ { key: 'STEP', value: 'STEP' }, { key: 'STATUS', value: 'STATUS' }, { key: 'ACTIONS', value: 'ACTIONS' } ] } }; return table; }) }; exports.default = mode; //# sourceMappingURL=logs.js.map