From 30b6b5c01442453af20424a2885a9ce5b6a106ea Mon Sep 17 00:00:00 2001 From: David Johansen Date: Tue, 28 Jan 2014 18:24:16 -0800 Subject: [PATCH] Adding method to expose /computer/api/python - allows one to query totalExecutors and busyExecutors on a master - tests included, both unit and sys --- jenkinsapi/jenkins.py | 4 ++++ jenkinsapi_tests/systests/test_jenkins.py | 4 ++++ jenkinsapi_tests/unittests/test_jenkins.py | 14 ++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/jenkinsapi/jenkins.py b/jenkinsapi/jenkins.py index e7b01ac..01fbf07 100644 --- a/jenkinsapi/jenkins.py +++ b/jenkinsapi/jenkins.py @@ -319,6 +319,10 @@ class Jenkins(JenkinsBase): url = '%s/computer/%s' % (self.baseurl, nodename) return Executors(url, nodename, self) + def get_master_data(self): + url = '%s/computer/api/python' % self.baseurl + return self.get_data(url) + @property def version(self): """ diff --git a/jenkinsapi_tests/systests/test_jenkins.py b/jenkinsapi_tests/systests/test_jenkins.py index 7933b70..8c4b265 100644 --- a/jenkinsapi_tests/systests/test_jenkins.py +++ b/jenkinsapi_tests/systests/test_jenkins.py @@ -85,5 +85,9 @@ class JobTests(BaseSystemTest): self.assertIsInstance(j, Job) self.assertEquals(j.name, copied_job_name) + def test_get_master_data(self): + master_data = self.jenkins.get_master_data() + self.assertEquals(master_data['totalExecutors'], 2, master_data['totalExecutors']) + if __name__ == '__main__': unittest.main() diff --git a/jenkinsapi_tests/unittests/test_jenkins.py b/jenkinsapi_tests/unittests/test_jenkins.py index 2af6058..d3225bc 100644 --- a/jenkinsapi_tests/unittests/test_jenkins.py +++ b/jenkinsapi_tests/unittests/test_jenkins.py @@ -331,6 +331,20 @@ class TestJenkins(unittest.TestCase): requester=mock_requester) self.assertEquals('0.0', J.version) + @mock.patch.object(JenkinsBase, 'get_data') + def test_get_master_data(self, _base_poll): + base_url = 'http://localhost:808' + _base_poll.return_value = { + "busyExecutors" : 59, + "totalExecutors" : 75 + } + j = Jenkins(base_url, + username='foouser', password='foopassword') + data = j.get_master_data() + self.assertEquals(data['busyExecutors'], 59) + self.assertEquals(data['totalExecutors'], 75) + + class TestJenkinsURLs(unittest.TestCase): @mock.patch.object(Jenkins, '_poll') -- 2.34.1