From d82608427986a9cd542346b45e7fb4c9918c66fd Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Tue, 18 Aug 2009 11:40:02 +0200
Subject: [PATCH] rapi: Add /2/instances/[instance_name]/info resource

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 doc/rapi.rst          | 14 ++++++++++++++
 lib/rapi/connector.py |  2 ++
 lib/rapi/rlib2.py     | 16 ++++++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/doc/rapi.rst b/doc/rapi.rst
index 92c923a92..125221904 100644
--- a/doc/rapi.rst
+++ b/doc/rapi.rst
@@ -283,6 +283,20 @@ Deletes an instance.
 It supports the ``dry-run`` argument.
 
 
+``/2/instances/[instance_name]/info``
++++++++++++++++++++++++++++++++++++++++
+
+It supports the following commands: ``GET``.
+
+``GET``
+~~~~~~~
+
+Requests detailed information about the instance. An optional parameter,
+``static`` (bool), can be set to return only static information from the
+configuration without querying the instance's nodes. The result will be a job
+id.
+
+
 ``/2/instances/[instance_name]/reboot``
 +++++++++++++++++++++++++++++++++++++++
 
diff --git a/lib/rapi/connector.py b/lib/rapi/connector.py
index 96d616e17..168d96067 100644
--- a/lib/rapi/connector.py
+++ b/lib/rapi/connector.py
@@ -167,6 +167,8 @@ CONNECTOR.update({
       rlib2.R_2_nodes_name_storage_repair,
   "/2/instances": rlib2.R_2_instances,
   re.compile(r'^/2/instances/([\w\._-]+)$'): rlib2.R_2_instances_name,
+  re.compile(r'^/2/instances/([\w\._-]+)/info$'):
+      rlib2.R_2_instances_name_info,
   re.compile(r'^/2/instances/([\w\._-]+)/tags$'): rlib2.R_2_instances_name_tags,
   re.compile(r'^/2/instances/([\w\._-]+)/reboot$'):
       rlib2.R_2_instances_name_reboot,
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index 72937c3b5..3c6f22729 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -481,6 +481,22 @@ class R_2_instances_name(baserlib.R_Generic):
     return baserlib.SubmitJob([op])
 
 
+class R_2_instances_name_info(baserlib.R_Generic):
+  """/2/instances/[instance_name]/info resource.
+
+  """
+  def GET(self):
+    """Request detailed instance information.
+
+    """
+    instance_name = self.items[0]
+    static = bool(self._checkIntVariable("static", default=0))
+
+    op = opcodes.OpQueryInstanceData(instances=[instance_name],
+                                     static=static)
+    return baserlib.SubmitJob([op])
+
+
 class R_2_instances_name_reboot(baserlib.R_Generic):
   """/2/instances/[instance_name]/reboot resource.
 
-- 
GitLab