Home > Software engineering >  Bring 'offline node' online script
Bring 'offline node' online script

Time:07-01

So I was wondering if it's possible to create a script that checks in a node is offline and if it is it should bring it back online. The login used should be by username and token.

I'm talking about a script that triggers this button on the right:

enter image description here

CodePudding user response:

If you want to simply make temporarily disabled nodes online you can use the following script to do this.

def jenkinsNodes = Jenkins.instance.getNodes()
def nodeLabelToMatch = "label1"
  for(def node: jenkinsNodes) {
      if(node.labelString.contains(nodeLabelToMatch)) {
        if (node.getComputer().isOffline()){  
            node.getComputer().cliOnline()
        }
      }
  }

Update : Full Pipeline

The script is written in groovy

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                script {
                    def jenkinsNodes = Jenkins.instance.getNodes()
                    def nodeLabelToMatch = "label1"
                      for(def node: jenkinsNodes) {
                          if(node.labelString.contains(nodeLabelToMatch)) {
                            if (node.getComputer().isOffline()){  
                                node.getComputer().cliOnline()
                            }
                          }
                      }
                }
            }
        }
   }
}

CodePudding user response:

I knew I had dealt with this before but did not recall the Node States

The isAcceptingTasks() JavaDoc explains this as:

Needed to allow agents programmatic suspension of task scheduling that does not overlap with being offline.

The isTemporarilyOffline() JavaDoc elaborates:

Returns true if this node is marked temporarily offline by the user.
In contrast, isOffline() represents the actual online/offline state

JavaDoc for isOffline (both Temporarily and Disconnected), setTemporarilyOffline and setAcceptingTasks.


My experience relates to: JENKINS-59283 - Use distinct icon for disconnected and temporarily offline computers / PR-4195 and having brought agents on-line when they should have been unavailable per schedule (Node Availability: Bring this agent online according to a schedule) so nothing ran. The PR was to introduce a yellow X for the Not Accepting but On-line condition, which evidently has since been lost.

  • Related