File: create_slave.py

package info (click to toggle)
python-jenkinsapi 0.3.17-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,500 kB
  • sloc: python: 10,001; xml: 50; makefile: 31; sh: 26
file content (82 lines) | stat: -rw-r--r-- 2,392 bytes parent folder | download
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""
How to create slaves/nodes
"""

import logging
import requests
from jenkinsapi.jenkins import Jenkins
from jenkinsapi.utils.requester import Requester

requests.packages.urllib3.disable_warnings()

log_level = getattr(logging, "DEBUG")
logging.basicConfig(level=log_level)
logger = logging.getLogger()

jenkins_url = "http://localhost:8080/"
username = "default_user"  # In case Jenkins requires authentication
password = "default_password"

jenkins = Jenkins(
    jenkins_url,
    requester=Requester(
        username, password, baseurl=jenkins_url, ssl_verify=False
    ),
)

# Create JNLP(Java Webstart) slave
node_dict = {
    "num_executors": 1,  # Number of executors
    "node_description": "Test JNLP Node",  # Just a user friendly text
    "remote_fs": "/tmp",  # Remote workspace location
    "labels": "my_new_node",  # Space separated labels string
    "exclusive": True,  # Only run jobs assigned to it
}
new_jnlp_node = jenkins.nodes.create_node("My new webstart node", node_dict)

node_dict = {
    "num_executors": 1,
    "node_description": "Test SSH Node",
    "remote_fs": "/tmp",
    "labels": "new_node",
    "exclusive": True,
    "host": "localhost",  # Remote hostname
    "port": 22,  # Remote post, usually 22
    "credential_description": "localhost cred",  # Credential to use
    # [Mandatory for SSH node!]
    # (see Credentials example)
    "jvm_options": "-Xmx2000M",  # JVM parameters
    "java_path": "/bin/java",  # Path to java
    "prefix_start_slave_cmd": "",
    "suffix_start_slave_cmd": "",
    "max_num_retries": 0,
    "retry_wait_time": 0,
    "retention": "OnDemand",  # Change to 'Always' for
    # immediate slave launch
    "ondemand_delay": 1,
    "ondemand_idle_delay": 5,
    "env": [  # Environment variables
        {"key": "TEST", "value": "VALUE"},
        {"key": "TEST2", "value": "value2"},
    ],
}
new_ssh_node = jenkins.nodes.create_node("My new SSH node", node_dict)

# Take this slave offline
if new_ssh_node.is_online():
    new_ssh_node.toggle_temporarily_offline()

    # Take this slave back online
    new_ssh_node.toggle_temporarily_offline()

# Get a list of all slave names
slave_names = jenkins.nodes.keys()

# Get Node object
my_node = jenkins.nodes["My new SSH node"]
# Take this slave offline
my_node.set_offline()

# Delete slaves
del jenkins.nodes["My new webstart node"]
del jenkins.nodes["My new SSH node"]