Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. /*** BEGIN META {
  2. "name" : "Count executors",
  3. "comment" : "Shows the total number of nodes and executors on Jenkins",
  4. "parameters" : [ ],
  5. "core": "1.350",
  6. "authors" : [
  7. { name : "Andy Pemberton" }
  8. ]
  9. } END META**/
  10. import jenkins.model.Jenkins
  11.  
  12. println("====== Regular Slave Executors ======")
  13. println()
  14.  
  15. // Jenkins Master and slaves
  16. def regularSlaves = Jenkins.instance.computers.grep{
  17. it.class.superclass?.simpleName != 'AbstractCloudComputer' &&
  18. it.class.superclass?.simpleName != 'AbstractCloudSlave' &&
  19. it.class.simpleName != 'EC2AbstractSlave'
  20. }
  21. int regularSlaveExecutorCount = regularSlaves.inject(0, {a, c -> a + c.numExecutors})
  22. //TODO perhaps filter other known cloud slaves; shame there isn't a cleaner way to know them
  23.  
  24. println("| Node Name | Type | Executors |")
  25. regularSlaves.each {
  26. println "| ${it.displayName} | ${it.class.simpleName} | ${it.numExecutors} |"
  27. }
  28. println()
  29.  
  30. println("Total: " + regularSlaveExecutorCount + " executors")
  31. println()
  32.  
  33. println("====== Shared Slave Executors ======")
  34. println()
  35.  
  36. // CJOC Shared Slaves
  37. def sharedSlaves = Jenkins.instance.allItems.grep{
  38. it.class.name == 'com.cloudbees.opscenter.server.model.SharedSlave'
  39. }
  40. int sharedSlaveExecutorCount = sharedSlaves.inject(0, {a, c -> a + c.numExecutors})
  41.  
  42. println("| Node Name | Type | Executors |")
  43. sharedSlaves.each {
  44. println "| ${it.displayName} | ${it.class.simpleName} | ${it.numExecutors} |"
  45. }
  46. println()
  47.  
  48. println("Total: " + sharedSlaveExecutorCount + " executors")
  49. println()
  50.  
  51. println("====== Cloud Slave Executors ======")
  52. println()
  53.  
  54. println("| Cloud Name | Type | Max. Executors |")
  55. int totalInstanceCaps
  56. Jenkins.instance.clouds.each { cloud ->
  57. Integer instanceCaps
  58. try{
  59. instanceCaps = cloud.templates?.inject(0, {a, c -> a + (c.numExecutors * c.instanceCap)})
  60. totalInstanceCaps += instanceCaps
  61. }catch(e){
  62. }finally{
  63. }
  64. println "| ${cloud.displayName} | ${cloud.descriptor.displayName} | ${instanceCaps ?: ''} |"
  65. }
  66.  
  67. println()
  68. if(totalInstanceCaps != null && totalInstanceCaps > 0){
  69. println("Total: up to " + totalInstanceCaps + " executors")
  70. } else {
  71. println("Total: None")
  72. }
  73.  
  74. return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement