groovy 从不建议使用的cliOnline到OnlineNodeCommand

ki1q1bka  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(89)

所以我创建了这个groovy脚本,但是读到cliOnline()命令被弃用了。但是我似乎不知道如何实际更改代码以使用hudson.model.Hudson.instance.OnlineNodeCommand()
不建议使用的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()
            }
        }
    }
}

有人知道如何重写它以使用非弃用版本吗?

t5zmwmid

t5zmwmid1#

如果你看这个被废弃的方法,它只是调用了一个未被废弃的方法setTemporarilyOffline(boolean temporarilyOffline, OfflineCause cause)。所以不确定为什么它被废弃了。不管怎样,你可以使用setTemporarilyOffline来代替cliOnline()。检查以下内容。

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

一些适当的代码与适当的原因。原因是不是真正需要时,设置节点在线虽然。

import hudson.slaves.OfflineCause.UserCause

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

设置为暂时脱机

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

相关问题