Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // TODO: create node package to do this
- const blessed = require('blessed'),
- contrib = require('blessed-contrib'),
- shell = require('shelljs');
- const screen = blessed.screen(),
- grid = new contrib.grid({rows: 12, cols: 12, screen: screen})
- var deploymentsTable = grid.set(0,0,2,5, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Deployments', columnWidth: [25, 7, 7, 10, 10, 3]}
- )
- var servicesTable = grid.set(0,5,2,5, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Services', columnWidth: [20, 10, 10, 10, 10]}
- )
- var minikubeTable = grid.set(0,10,2,2, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Minikube Status', columnWidth: [10, 10]}
- )
- var podTable = grid.set(2,0,6,6, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Pods', columnWidth: [40, 8, 8, 10, 10]}
- )
- var replicationSetTable = grid.set(2,6,2,6, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Replication Sets', columnWidth: [40, 10, 10, 10, 5]}
- )
- var jobTable = grid.set(4,6,2,6, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Jobs', columnWidth: [40, 10, 10, 10, 5]}
- )
- var secretTable = grid.set(6,6,2,6, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Secrets', columnWidth: [20, 40, 10, 10]}
- )
- var configmapTable = grid.set(8,6,2,6, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Config Maps', columnWidth: [20, 40, 10, 10]}
- )
- var endpointsTable = grid.set(8,0,2,3, contrib.table,
- {keys: true, fg: 'green', interactive: false, label: 'Minikube Status', columnWidth: [10, 10, 10]}
- )
- function getMinikubeStatus() {
- var data = [];
- var minikubeStatus = shell.exec("minikube status", {silent: true});
- var headers = ['PROCESS', 'STATUS']
- minikubeStatus.split("\n").forEach(function(e){
- row = e.split(": ");
- if(row.length == 2){ data.push(row) }
- })
- minikubeTable.setData({headers: headers, data: data})
- }
- function getKubectl(command, table) {
- var data = [];
- var get = shell.exec(command, {silent: true});
- var headers = get.split("\n").slice(0, 1)[0].trim().split(/\s+/);
- get.split("\n").slice(1, -1).forEach(function(e){
- row = e.trim().split(/\s+/);
- data.push(row)
- })
- table.setData({headers: headers, data: data})
- }
- getMinikubeStatus();
- getKubectl("kubectl get pods", podTable);
- getKubectl("kubectl get deployments", deploymentsTable);
- getKubectl("kubectl get services", servicesTable);
- getKubectl("kubectl get rs", replicationSetTable);
- getKubectl("kubectl get job", jobTable);
- getKubectl("kubectl get secret", secretTable);
- getKubectl("kubectl get configmap", configmapTable);
- getKubectl("kubectl get endpoints", endpointsTable);
- setInterval(function(){
- getMinikubeStatus();
- getKubectl("kubectl get pods", podTable);
- getKubectl("kubectl get deployments", deploymentsTable);
- getKubectl("kubectl get services", servicesTable);
- getKubectl("kubectl get rs", replicationSetTable);
- getKubectl("kubectl get job", jobTable);
- getKubectl("kubectl get secret", secretTable);
- getKubectl("kubectl get configmap", configmapTable);
- getKubectl("kubectl get endpoints", endpointsTable);
- }, 3000);
- screen.key(['escape', 'q', 'C-c'], function(ch, key) { return process.exit(0); });
- screen.on('resize', function() {
- minikubeTable.emit('attach');
- podTable.emit('attach');
- deploymentsTable.emit('attach');
- });
- screen.render();
Add Comment
Please, Sign In to add comment