Guest User

Untitled

a guest
Nov 21st, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. // TODO: create node package to do this
  2. const blessed = require('blessed'),
  3. contrib = require('blessed-contrib'),
  4. shell = require('shelljs');
  5.  
  6. const screen = blessed.screen(),
  7. grid = new contrib.grid({rows: 12, cols: 12, screen: screen})
  8.  
  9. var deploymentsTable = grid.set(0,0,2,5, contrib.table,
  10. {keys: true, fg: 'green', interactive: false, label: 'Deployments', columnWidth: [25, 7, 7, 10, 10, 3]}
  11. )
  12. var servicesTable = grid.set(0,5,2,5, contrib.table,
  13. {keys: true, fg: 'green', interactive: false, label: 'Services', columnWidth: [20, 10, 10, 10, 10]}
  14. )
  15. var minikubeTable = grid.set(0,10,2,2, contrib.table,
  16. {keys: true, fg: 'green', interactive: false, label: 'Minikube Status', columnWidth: [10, 10]}
  17. )
  18. var podTable = grid.set(2,0,6,6, contrib.table,
  19. {keys: true, fg: 'green', interactive: false, label: 'Pods', columnWidth: [40, 8, 8, 10, 10]}
  20. )
  21. var replicationSetTable = grid.set(2,6,2,6, contrib.table,
  22. {keys: true, fg: 'green', interactive: false, label: 'Replication Sets', columnWidth: [40, 10, 10, 10, 5]}
  23. )
  24. var jobTable = grid.set(4,6,2,6, contrib.table,
  25. {keys: true, fg: 'green', interactive: false, label: 'Jobs', columnWidth: [40, 10, 10, 10, 5]}
  26. )
  27. var secretTable = grid.set(6,6,2,6, contrib.table,
  28. {keys: true, fg: 'green', interactive: false, label: 'Secrets', columnWidth: [20, 40, 10, 10]}
  29. )
  30. var configmapTable = grid.set(8,6,2,6, contrib.table,
  31. {keys: true, fg: 'green', interactive: false, label: 'Config Maps', columnWidth: [20, 40, 10, 10]}
  32. )
  33. var endpointsTable = grid.set(8,0,2,3, contrib.table,
  34. {keys: true, fg: 'green', interactive: false, label: 'Minikube Status', columnWidth: [10, 10, 10]}
  35. )
  36.  
  37. function getMinikubeStatus() {
  38. var data = [];
  39. var minikubeStatus = shell.exec("minikube status", {silent: true});
  40. var headers = ['PROCESS', 'STATUS']
  41.  
  42. minikubeStatus.split("\n").forEach(function(e){
  43. row = e.split(": ");
  44. if(row.length == 2){ data.push(row) }
  45. })
  46. minikubeTable.setData({headers: headers, data: data})
  47. }
  48.  
  49. function getKubectl(command, table) {
  50. var data = [];
  51. var get = shell.exec(command, {silent: true});
  52. var headers = get.split("\n").slice(0, 1)[0].trim().split(/\s+/);
  53.  
  54. get.split("\n").slice(1, -1).forEach(function(e){
  55. row = e.trim().split(/\s+/);
  56. data.push(row)
  57. })
  58. table.setData({headers: headers, data: data})
  59. }
  60.  
  61. getMinikubeStatus();
  62. getKubectl("kubectl get pods", podTable);
  63. getKubectl("kubectl get deployments", deploymentsTable);
  64. getKubectl("kubectl get services", servicesTable);
  65. getKubectl("kubectl get rs", replicationSetTable);
  66. getKubectl("kubectl get job", jobTable);
  67. getKubectl("kubectl get secret", secretTable);
  68. getKubectl("kubectl get configmap", configmapTable);
  69. getKubectl("kubectl get endpoints", endpointsTable);
  70.  
  71. setInterval(function(){
  72. getMinikubeStatus();
  73. getKubectl("kubectl get pods", podTable);
  74. getKubectl("kubectl get deployments", deploymentsTable);
  75. getKubectl("kubectl get services", servicesTable);
  76. getKubectl("kubectl get rs", replicationSetTable);
  77. getKubectl("kubectl get job", jobTable);
  78. getKubectl("kubectl get secret", secretTable);
  79. getKubectl("kubectl get configmap", configmapTable);
  80. getKubectl("kubectl get endpoints", endpointsTable);
  81. }, 3000);
  82.  
  83. screen.key(['escape', 'q', 'C-c'], function(ch, key) { return process.exit(0); });
  84. screen.on('resize', function() {
  85. minikubeTable.emit('attach');
  86. podTable.emit('attach');
  87. deploymentsTable.emit('attach');
  88. });
  89. screen.render();
Add Comment
Please, Sign In to add comment