From: Ruslan Lutsenko Date: Fri, 18 Jan 2013 02:25:38 +0000 (+0100) Subject: set node online/offline X-Git-Tag: v0.2.23~258^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cc5c4211755e6e98cec88813946869780d1db0f7;p=tools%2Fpython-jenkinsapi.git set node online/offline --- diff --git a/jenkinsapi/node.py b/jenkinsapi/node.py index 8a2c1bb..c942de1 100644 --- a/jenkinsapi/node.py +++ b/jenkinsapi/node.py @@ -1,5 +1,6 @@ from jenkinsapi.jenkinsbase import JenkinsBase import logging +import urllib log = logging.getLogger(__name__) @@ -33,11 +34,49 @@ class Node(JenkinsBase): return self._data def is_online(self): + self.poll() return not self._data['offline'] + def is_temporarily_offline(self): + self.poll() + return self._data['temporarilyOffline'] + def is_jnlpagent(self): return self._data['jnlpAgent'] def is_idle(self): return self._data['idle'] + + def set_online(self): + self.poll() + if self._data['offline'] and not self._data['temporarilyOffline']: + raise AssertionError("Node is offline and not marked as temporarilyOffline" + + ", check client connection: " + + "offline = %s , temporarilyOffline = %s" % + (self._data['offline'], self._data['temporarilyOffline'])) + elif self._data['offline'] and self._data['temporarilyOffline']: + self.toggle_temporarily_offline() + self.poll() + if self._data['offline']: + raise AssertionError("The node state is still offline, check client connection:" + + " offline = %s , temporarilyOffline = %s" % + (self._data['offline'], self._data['temporarilyOffline'])) + + def set_offline(self, message="requested from jenkinsapi"): + self.poll() + if not self._data['offline']: + self.toggle_temporarily_offline(message) + self.poll() + if not self._data['offline']: + raise AssertionError("The node state is still online:" + + "offline = %s , temporarilyOffline = %s" % + (self._data['offline'], self._data['temporarilyOffline'])) + + def toggle_temporarily_offline(self, message="requested from jenkinsapi"): + initial_state = self.is_temporarily_offline() + url = self.baseurl + "/toggleOffline?offlineMessage=" + urllib.quote(message) + html_result = self.hit_url(url) + log.debug(html_result) + if initial_state == self.is_temporarily_offline(): + raise AssertionError("The node state has not changed: temporarilyOffline = %s" % state)