RAPI client: Support modifying instances
authorMichael Hanselmann <hansmi@google.com>
Tue, 17 Aug 2010 16:50:37 +0000 (18:50 +0200)
committerMichael Hanselmann <hansmi@google.com>
Wed, 18 Aug 2010 11:21:43 +0000 (13:21 +0200)
Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

lib/rapi/client.py
qa/ganeti-qa.py
qa/qa_rapi.py

index 4989831..5a549e7 100644 (file)
@@ -718,6 +718,23 @@ class GanetiRapiClient(object):
                              ("/%s/instances/%s" %
                               (GANETI_RAPI_VERSION, instance)), query, None)
 
+  def ModifyInstance(self, instance, **kwargs):
+    """Modifies an instance.
+
+    More details for parameters can be found in the RAPI documentation.
+
+    @type instance: string
+    @param instance: Instance name
+    @rtype: int
+    @return: job id
+
+    """
+    body = kwargs
+
+    return self._SendRequest(HTTP_PUT,
+                             ("/%s/instances/%s/modify" %
+                              (GANETI_RAPI_VERSION, instance)), None, body)
+
   def GetInstanceTags(self, instance):
     """Gets tags for an instance.
 
index 7f27000..541a8f6 100755 (executable)
@@ -162,6 +162,8 @@ def RunCommonInstanceTests(instance):
 
   if qa_config.TestEnabled('instance-modify'):
     RunTest(qa_instance.TestInstanceModify, instance)
+    if qa_rapi.Enabled():
+      RunTest(qa_rapi.TestRapiInstanceModify, instance)
 
   if qa_config.TestEnabled('instance-console'):
     RunTest(qa_instance.TestInstanceConsole, instance)
index 10c4033..16a7a92 100644 (file)
@@ -358,6 +358,28 @@ def TestRapiInstanceRename(instance, rename_target):
     _WaitForRapiJob(_rapi_client.RenameInstance(name1, name2))
 
 
+def TestRapiInstanceModify(instance):
+  """Test modifying instance via RAPI"""
+  def _ModifyInstance(**kwargs):
+    _WaitForRapiJob(_rapi_client.ModifyInstance(instance["name"], **kwargs))
+
+  _ModifyInstance(hvparams={
+    constants.HV_KERNEL_ARGS: "single",
+    })
+
+  _ModifyInstance(beparams={
+    constants.BE_VCPUS: 3,
+    })
+
+  _ModifyInstance(beparams={
+    constants.BE_VCPUS: constants.VALUE_DEFAULT,
+    })
+
+  _ModifyInstance(hvparams={
+    constants.HV_KERNEL_ARGS: constants.VALUE_DEFAULT,
+    })
+
+
 def TestInterClusterInstanceMove(src_instance, dest_instance, pnode, snode):
   """Test tools/move-instance"""
   master = qa_config.GetMasterNode()