Home > Software engineering >  From deprecated cliOnline to OnlineNodeCommand
From deprecated cliOnline to OnlineNodeCommand

Time:07-01

So I created this groovy script but read that the cliOnline() command is deprecated. But I can't seem to figure out how to actually change my code to use hudson.model.Hudson.instance.OnlineNodeCommand()?

deprecated cliOnline

def nodes_checklist = ["PD100069", "PD100070", "PD100090", "PD10756"]; // List of nodes which should be turned online
def jenkinsNodes = jenkins.model.Jenkins.instance.getNodes() // Get all existing nodes on this Jenkins URL
for(def node_checker: nodes_checklist) {
    for(def node: jenkinsNodes) {
        if(node.getNodeName().contains(node_checker)) {
            println "The node "   node.getNodeName()   "'s offline status: "   node.toComputer().isOffline()
            if (node.toComputer().isOffline()){
                println "Turning "   node.getNodeName()   " online"
                node.toComputer().cliOnline() // If node is offline, turn it online
                println node.getNodeName()   "'s online status: " node.toComputer().isOnline()
            }
        }
    }
}

Does anyone know how to rewrite this to use the non-deprecated version?

CodePudding user response:

If you look at this depricated method, it simply calls a non depricated method setTemporarilyOffline(boolean temporarilyOffline, OfflineCause cause). So not sure why this was depricated. Anyway instead of using cliOnline() you can use setTemporarilyOffline. Check the following.

node.getComputer().setTemporarilyOffline(false, null)

Some proper code with a proper cause. Cause is not really needed when setting the node online though.

import hudson.slaves.OfflineCause.UserCause

def jenkinsNodes = Jenkins.instance.getNodes()
  for(def node: jenkinsNodes) {
      if (node.getComputer().isTemporarilyOffline()){  
           node.getComputer().setTemporarilyOffline(false, null)
      }
  }

Setting to temporarily offline

UserCause cause =  new UserCause(User.current(), "This is a automated process!!")
node.getComputer().setTemporarilyOffline(true, cause)
  • Related