From: Leon Handreke Date: Wed, 10 Jul 2013 13:46:04 +0000 (+0100) Subject: Expose bulk parameter for GetJobs in RAPI client X-Git-Tag: v2.8.0rc1~44 X-Git-Url: https://code.grnet.gr/git/ganeti-local/commitdiff_plain/3312709dee41c2eeee89af945c2a0471d9c5e517 Expose bulk parameter for GetJobs in RAPI client This patch exposes the bulk argument of the jobs resource on the RAPI python wrapper, making it possible to retrieve status information about all jobs with a single call. Signed-off-by: Leon Handreke Signed-off-by: Klaus Aehlig Reviewed-by: Klaus Aehlig --- diff --git a/lib/rapi/client.py b/lib/rapi/client.py index eb3c21e..35b1191 100644 --- a/lib/rapi/client.py +++ b/lib/rapi/client.py @@ -1294,17 +1294,28 @@ class GanetiRapiClient(object): # pylint: disable=R0904 ("/%s/instances/%s/console" % (GANETI_RAPI_VERSION, instance)), None, None) - def GetJobs(self): + def GetJobs(self, bulk=False): """Gets all jobs for the cluster. + @type bulk: bool + @param bulk: Whether to return detailed information about jobs. @rtype: list of int - @return: job ids for the cluster + @return: List of job ids for the cluster or list of dicts with detailed + information about the jobs if bulk parameter was true. """ - return [int(j["id"]) - for j in self._SendRequest(HTTP_GET, - "/%s/jobs" % GANETI_RAPI_VERSION, - None, None)] + query = [] + _AppendIf(query, bulk, ("bulk", 1)) + + if bulk: + return self._SendRequest(HTTP_GET, + "/%s/jobs" % GANETI_RAPI_VERSION, + query, None) + else: + return [int(j["id"]) + for j in self._SendRequest(HTTP_GET, + "/%s/jobs" % GANETI_RAPI_VERSION, + None, None)] def GetJobStatus(self, job_id): """Gets the status of a job. diff --git a/test/py/ganeti.rapi.client_unittest.py b/test/py/ganeti.rapi.client_unittest.py index 555ee21..a219673 100755 --- a/test/py/ganeti.rapi.client_unittest.py +++ b/test/py/ganeti.rapi.client_unittest.py @@ -837,6 +837,14 @@ class GanetiRapiClientTests(testutils.GanetiTestCase): self.assertEqual([123, 124], self.client.GetJobs()) self.assertHandler(rlib2.R_2_jobs) + self.rapi.AddResponse('[ { "id": "123", "uri": "\\/2\\/jobs\\/123" },' + ' { "id": "124", "uri": "\\/2\\/jobs\\/124" } ]') + self.assertEqual([{"id": "123", "uri": "/2/jobs/123"}, + {"id": "124", "uri": "/2/jobs/124"}], + self.client.GetJobs(bulk=True)) + self.assertHandler(rlib2.R_2_jobs) + self.assertBulk() + def testGetJobStatus(self): self.rapi.AddResponse("{\"foo\": \"bar\"}") self.assertEqual({"foo": "bar"}, self.client.GetJobStatus(1234))