From caaccccf95912ecd72183663e108da947b641315 Mon Sep 17 00:00:00 2001 From: Thanh Ha Date: Mon, 26 Jun 2017 17:10:13 -0400 Subject: [PATCH] Add jenkins-admin scripts to global-jjb Change-Id: I3419d1af343d04dc85f777b61d820f7c4f27276e Signed-off-by: Thanh Ha --- .coafile | 8 ++++++++ jenkins-admin/del_computer.groovy | 39 ++++++++++++++++++++++++++++++++++++++ jenkins-admin/slay_computer.groovy | 35 ++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 jenkins-admin/del_computer.groovy create mode 100644 jenkins-admin/slay_computer.groovy diff --git a/.coafile b/.coafile index 340ef8b6..571d201e 100644 --- a/.coafile +++ b/.coafile @@ -6,6 +6,14 @@ ignore_length_regex = Signed-off-by, http://, https:// +[Groovy] +bears = SpaceConsistencyBear +files = **/*.groovy +ignore = .git/**, + .tox/** +indent_size = 4 +use_spaces = true + [YAML] bears = YAMLLintBear files = **/*.yaml diff --git a/jenkins-admin/del_computer.groovy b/jenkins-admin/del_computer.groovy new file mode 100644 index 00000000..01438870 --- /dev/null +++ b/jenkins-admin/del_computer.groovy @@ -0,0 +1,39 @@ +/***************** +* Removes offline slave nodes +* +* NOTE: Some slaves can't be removed as the backing instance already is +* missing but the UI collection didn't get the update. See the +* slay_computer.groovy for a more drastic destruction +* +* NOTE 2: If you have any slaves you want to live through this and you +* have them currently marked offline you _must_ bring them back online. +*****************/ + +import hudson.model.* + +def numberOfflineNodes = 0 +def numberNodes = 0 + +slaveNodes = hudson.model.Hudson.instance + +for (slave in slaveNodes.nodes) { + def computer = slave.computer + numberNodes ++ + println "" + println "Checking computer ${computer.name}:" + if (computer.offline) { + numberOfflineNodes ++ + println '\tcomputer.isOffline: ' + slave.getComputer().isOffline() + println '\tcomputer.offline: ' + computer.offline + println '\tRemoving slave' + slaveNodes.removeNode(slave) + } else { + println '\tcomputer.isOffline: ' + slave.getComputer().isOffline() + println '\tcomputer.offline: ' + computer.offline + } +} + +println "Number of Offline Nodes: " + numberOfflineNodes +println "Number of Nodes: " + numberNodes + +// vim: sw=4 sts=4 ts=4 et ai : diff --git a/jenkins-admin/slay_computer.groovy b/jenkins-admin/slay_computer.groovy new file mode 100644 index 00000000..97ede6cd --- /dev/null +++ b/jenkins-admin/slay_computer.groovy @@ -0,0 +1,35 @@ +/***************** +* Completely slays misbehaving slave nodes +* +* NOTE: Use del_computer.groovy first! If nodes are still hanging around +* _then_ consider using this script. This one is mucking around in a +* location we should not normally be touching, however if a slave +* refuses to go away (tosses an exception) this _will_ get rid of it. +* +* NOTE 2: If you have any slaves you want to live through this and you +* have them currently marked offline you _must_ bring them back online. +*****************/ + +import jenkins.* +import jenkins.model.* +import hudson.* +import hudson.model.* + +for (aComputer in Jenkins.instance.computers) { + try { + println "displayName: " + aComputer.properties.displayName + println "offline: " + aComputer.properties.offline + println "temporarilyOffline: " + aComputer.properties.temporarilyOffline + if (aComputer.properties.offline) { + println "Bad node, removing" + Jenkins.instance.removeComputer(aComputer) + } + println "" + } + catch (NullPointerException nullPointer) { + println "NullPointerException caught" + println "" + } +} + +// vim: sw=4 sts=4 ts=4 et ai : -- 2.16.6