Module: Jenkins2::Client::NodeCommands
- Included in:
- Jenkins2::Client
- Defined in:
- lib/jenkins2/client/node_commands.rb
Instance Method Summary collapse
-
#connect_node(node: '(master)') ⇒ Object
Connects a node.
-
#create_node(node: nil, xml_config: nil) ⇒ Object
Creates a new node, by providing node definition XML.
-
#delete_node(node: nil) ⇒ Object
- Deletes a node
node -
Node name.
- Deletes a node
-
#disconnect_node(node: '(master)', message: nil) ⇒ Object
Disconnects a node.
-
#get_node(node: '(master)') ⇒ Object
- Returns the node state
node -
Node name,
(master)for master.
- Returns the node state
-
#get_node_xml(node: '(master)') ⇒ Object
Returns the node definition XML.
-
#node_connected?(node: '(master)') ⇒ Boolean
Checks if node is connected, i.e.
- #node_idle?(node: '(master)') ⇒ Boolean
-
#node_online?(node: '(master)') ⇒ Boolean
- Checks if node is online (= not temporarily offline )
node -
Node name.
- Checks if node is online (= not temporarily offline )
-
#offline_node(node: '(master)', message: nil) ⇒ Object
Sets node temporarily offline.
-
#online_node(node: '(master)') ⇒ Object
Sets node back online, if node is temporarily offline.
-
#update_node(node: '(master)', xml_config: nil) ⇒ Object
- Updates the node definition XML Keyword parameters:
node -
Node name,
(master)for master.
- Updates the node definition XML Keyword parameters:
-
#wait_node_idle(node: '(master)', max_wait_minutes: 60) ⇒ Object
Waits for node to become idle or until
max_wait_minutespass.
Instance Method Details
#connect_node(node: '(master)') ⇒ Object
Connects a node.
node-
Node name,
(master)for master.
8 9 10 |
# File 'lib/jenkins2/client/node_commands.rb', line 8 def connect_node( node: '(master)' ) api_request( :post, "/computer/#{node}/launchSlaveAgent" ) end |
#create_node(node: nil, xml_config: nil) ⇒ Object
Creates a new node, by providing node definition XML. Keyword parameters:
node-
Node name.
xml_config-
New configuration in xml format.
16 17 18 19 20 21 22 23 |
# File 'lib/jenkins2/client/node_commands.rb', line 16 def create_node( node: nil, xml_config: nil ) xml_config = STDIN.read if xml_config.nil? api_request( :post, "/computer/doCreateItem", :raw ) do |req| req.form_data = { 'name' => node, type: "hudson.slaves.DumbSlave$DescriptorImpl", json: {}.to_json } end update_node( node: node, xml_config: xml_config ) end |
#delete_node(node: nil) ⇒ Object
Deletes a node
node-
Node name. Master cannot be deleted.
27 28 29 30 |
# File 'lib/jenkins2/client/node_commands.rb', line 27 def delete_node( node: nil ) raise ArgumentError, 'node must be provided' if node.nil? api_request( :post, "/computer/#{node}/doDelete" ) end |
#disconnect_node(node: '(master)', message: nil) ⇒ Object
Disconnects a node.
node-
Node name,
(master)for master. message-
Reason why the node is being disconnected.
35 36 37 38 39 |
# File 'lib/jenkins2/client/node_commands.rb', line 35 def disconnect_node( node: '(master)', message: nil ) api_request( :post, "/computer/#{node}/doDisconnect" ) do |req| req.body = "offlineMessage=#{CGI::escape message}" unless .nil? end end |
#get_node(node: '(master)') ⇒ Object
Returns the node state
node-
Node name,
(master)for master.
49 50 51 |
# File 'lib/jenkins2/client/node_commands.rb', line 49 def get_node( node: '(master)' ) api_request( :get, "/computer/#{node}/api/json" ) end |
#get_node_xml(node: '(master)') ⇒ Object
Returns the node definition XML.
node-
Node name,
(master)for master.
43 44 45 |
# File 'lib/jenkins2/client/node_commands.rb', line 43 def get_node_xml( node: '(master)' ) api_request( :get, "/computer/#{node}/config.xml", :body ) end |
#node_connected?(node: '(master)') ⇒ Boolean
Checks if node is connected, i.e. Master connected and launched client on it.
node-
Node name. Use
(master)for master.
100 101 102 |
# File 'lib/jenkins2/client/node_commands.rb', line 100 def node_connected?( node: '(master)' ) !get_node( node: node )['offline'] end |
#node_idle?(node: '(master)') ⇒ Boolean
88 89 90 |
# File 'lib/jenkins2/client/node_commands.rb', line 88 def node_idle?( node: '(master)' ) get_node( node: node )['idle'] end |
#node_online?(node: '(master)') ⇒ Boolean
Checks if node is online (= not temporarily offline )
node-
Node name. Use
(master)for master.
94 95 96 |
# File 'lib/jenkins2/client/node_commands.rb', line 94 def node_online?( node: '(master)' ) !get_node( node: node )['temporarilyOffline'] end |
#offline_node(node: '(master)', message: nil) ⇒ Object
Sets node temporarily offline. Does nothing, if node is already offline.
node-
Node name, or
(master)for master. message-
Record the note about this node is being disconnected.
56 57 58 59 60 61 62 |
# File 'lib/jenkins2/client/node_commands.rb', line 56 def offline_node( node: '(master)', message: nil ) if node_online?( node: node ) api_request( :post, "/computer/#{node}/toggleOffline" ) do |req| req.body = "offlineMessage=#{CGI::escape message}" unless .nil? end end end |
#online_node(node: '(master)') ⇒ Object
Sets node back online, if node is temporarily offline.
node-
Node name,
(master)for master.
66 67 68 |
# File 'lib/jenkins2/client/node_commands.rb', line 66 def online_node( node: '(master)' ) api_request( :post, "/computer/#{node}/toggleOffline" ) unless node_online?( node: node ) end |
#update_node(node: '(master)', xml_config: nil) ⇒ Object
Updates the node definition XML Keyword parameters:
node-
Node name,
(master)for master. xml_config-
New configuration in xml format.
74 75 76 77 78 79 |
# File 'lib/jenkins2/client/node_commands.rb', line 74 def update_node( node: '(master)', xml_config: nil ) xml_config = STDIN.read if xml_config.nil? api_request( :post, "/computer/#{node}/config.xml", :body ) do |req| req.body = xml_config end end |
#wait_node_idle(node: '(master)', max_wait_minutes: 60) ⇒ Object
Waits for node to become idle or until max_wait_minutes pass.
node-
Node name,
(master)for master. max_wait_minutes-
Maximum wait time in minutes. Default 60.
84 85 86 |
# File 'lib/jenkins2/client/node_commands.rb', line 84 def wait_node_idle( node: '(master)', max_wait_minutes: 60 ) Jenkins2::Wait.wait( max_wait_minutes: max_wait_minutes ){ node_idle? node: node } end |