From 4ee722878a3d8c919bdc74b84d1c52ff0d3350ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Nussbaumer?= <rn@google.com> Date: Wed, 19 Sep 2012 13:45:59 +0200 Subject: [PATCH] Adding RAPI resource for multi-allocation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is straightforward. Signed-off-by: RenΓ© Nussbaumer <rn@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- doc/rapi.rst | 19 +++++++++++++++++++ lib/rapi/connector.py | 1 + lib/rapi/rlib2.py | 18 ++++++++++++++++++ test/ganeti.rapi.client_unittest.py | 1 + 4 files changed, 39 insertions(+) diff --git a/doc/rapi.rst b/doc/rapi.rst index ac20323b4..9f8b1b9d1 100644 --- a/doc/rapi.rst +++ b/doc/rapi.rst @@ -628,6 +628,25 @@ to URI like:: It supports the ``dry-run`` argument. +``/2/instances-multi-alloc`` +++++++++++++++++++++++++++++ + +Tries to allocate multiple instances. + +It supports the following commands: ``POST`` + +``POST`` +~~~~~~~~ + +The parameters: + +.. opcode_params:: OP_INSTANCE_MULTI_ALLOC + +Job result: + +.. opcode_result:: OP_INSTANCE_MULTI_ALLOC + + ``/2/instances`` ++++++++++++++++ diff --git a/lib/rapi/connector.py b/lib/rapi/connector.py index b701d7141..0fe7071e1 100644 --- a/lib/rapi/connector.py +++ b/lib/rapi/connector.py @@ -185,6 +185,7 @@ def GetHandlers(node_name_pattern, instance_name_pattern, re.compile(r"^/2/jobs/(%s)/wait$" % job_id_pattern): rlib2.R_2_jobs_id_wait, + "/2/instances-multi-alloc": rlib2.R_2_instances_multi_alloc, "/2/tags": rlib2.R_2_tags, "/2/info": rlib2.R_2_info, "/2/os": rlib2.R_2_os, diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index e77dca8a8..b5514c42a 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -812,6 +812,24 @@ class R_2_instances(baserlib.OpcodeResource): }) +class R_2_instances_multi_alloc(baserlib.OpcodeResource): + """/2/instances-multi-alloc resource. + + """ + POST_OPCODE = opcodes.OpInstanceMultiAlloc + + def GetPostOpInput(self): + """Try to allocate multiple instances. + + @return: A dict with submitted jobs, allocatable instances and failed + allocations + + """ + return (self.request_body, { + "dry_run": self.dryRun(), + }) + + class R_2_instances_name(baserlib.OpcodeResource): """/2/instances/[instance_name] resource. diff --git a/test/ganeti.rapi.client_unittest.py b/test/ganeti.rapi.client_unittest.py index a09d4a2e2..ade61908c 100755 --- a/test/ganeti.rapi.client_unittest.py +++ b/test/ganeti.rapi.client_unittest.py @@ -46,6 +46,7 @@ import testutils _KNOWN_UNUSED = set([ rlib2.R_root, rlib2.R_2, + rlib2.R_2_instances_multi_alloc, ]) # Global variable for collecting used handlers -- GitLab