-
Notifications
You must be signed in to change notification settings - Fork 55
/
addnode.py
44 lines (37 loc) · 1.43 KB
/
addnode.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import sys
import os
import time
import json
from lib.logLib import *
from lib.cmdLib import *
from lib.sftpLib import *
import jenkinsapi
from jenkinsapi.jenkins import Jenkins
def addnode(jenkinsurl, nodename, num_executors, remote_fs, ip, port, username, password):
cmdstr = "mkdir -p " + remote_fs
ssh_cmd(ip, port, username, password, cmdstr)
J = Jenkins(jenkinsurl)
node = J.create_node(nodename, num_executors = num_executors, node_description = None, remote_fs = remote_fs, labels = nodename)
put_file(ip, port, username, password, "./jenkins/slave.jar", remote_fs + "/" + "slave.jar")
cmdstr = "cd " + remote_fs + " &&java -jar slave.jar -jnlpUrl " + jenkinsurl + "computer/" + nodename + "/slave-agent.jnlp"
async_ssh_cmd(ip, port, username, password, cmdstr)
#time.sleep(5)
is_online = False
while(is_online is False):
is_online = node.is_online()
time.sleep(1)
if __name__ == '__main__':
try:
jenkinsurl = sys.argv[1]
nodename = sys.argv[2]
num_executors = int(sys.argv[3])
remote_fs = sys.argv[4]
ip = sys.argv[5]
port = int(sys.argv[6])
username = sys.argv[7]
password = sys.argv[8]
addnode(jenkinsurl, nodename, num_executors, remote_fs, ip, port, username, password)
except Exception as e:
raise Exception(e)