Do not install init script in PREFIX/bin.
[ganeti-local] / lib / rpc.py
index e632e49..b840e72 100644 (file)
@@ -30,8 +30,9 @@ import os
 from twisted.internet.pollreactor import PollReactor
 
 class ReReactor(PollReactor):
-  """A re-startable Reactor implementation"""
+  """A re-startable Reactor implementation.
 
+  """
   def run(self, installSignalHandlers=1):
     """Custom run method.
 
@@ -90,7 +91,7 @@ class NodeController:
       reactor.stop()
 
   def cb_call(self, obj):
-    """Callback for successfull connect.
+    """Callback for successful connect.
 
     If the connect and login sequence succeeded, we proceed with
     making the actual call.
@@ -159,8 +160,8 @@ class MirrorContextFactory:
       finally:
         fd.close()
     except EnvironmentError, err:
-      raise errors.ConfigurationError, ("missing SSL certificate: %s" %
-                                        str(err))
+      raise errors.ConfigurationError("missing SSL certificate: %s" %
+                                      str(err))
     self.mycert = crypto.load_certificate(crypto.FILETYPE_PEM, data)
     self.mypem = crypto.dump_certificate(crypto.FILETYPE_PEM, self.mycert)
     self.mydigest = self.mycert.digest('SHA')
@@ -292,7 +293,7 @@ def call_instance_start(node, instance, extra_args):
   This is a single-node call.
 
   """
-  c = Client("instance_start", [instance.Dumps(), extra_args])
+  c = Client("instance_start", [instance.ToDict(), extra_args])
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
@@ -304,7 +305,7 @@ def call_instance_shutdown(node, instance):
   This is a single-node call.
 
   """
-  c = Client("instance_shutdown", [instance.Dumps()])
+  c = Client("instance_shutdown", [instance.ToDict()])
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
@@ -316,13 +317,26 @@ def call_instance_os_add(node, inst, osdev, swapdev):
   This is a single-node call.
 
   """
-  params = [inst.Dumps(), osdev, swapdev]
+  params = [inst.ToDict(), osdev, swapdev]
   c = Client("instance_os_add", params)
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
 
 
+def call_instance_run_rename(node, inst, old_name, osdev, swapdev):
+  """Run the OS rename script for an instance.
+
+  This is a single-node call.
+
+  """
+  params = [inst.ToDict(), old_name, osdev, swapdev]
+  c = Client("instance_run_rename", params)
+  c.connect(node)
+  c.run()
+  return c.getresult().get(node, False)
+
+
 def call_instance_info(node, instance):
   """Returns information about a single instance.
 
@@ -451,13 +465,13 @@ def call_version(node_list):
   return c.getresult()
 
 
-def call_blockdev_create(node, bdev, size, on_primary):
+def call_blockdev_create(node, bdev, size, on_primary, info):
   """Request creation of a given block device.
 
   This is a single-node call.
 
   """
-  params = [bdev.Dumps(), size, on_primary]
+  params = [bdev.ToDict(), size, on_primary, info]
   c = Client("blockdev_create", params)
   c.connect(node)
   c.run()
@@ -470,7 +484,7 @@ def call_blockdev_remove(node, bdev):
   This is a single-node call.
 
   """
-  c = Client("blockdev_remove", [bdev.Dumps()])
+  c = Client("blockdev_remove", [bdev.ToDict()])
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
@@ -482,7 +496,7 @@ def call_blockdev_assemble(node, disk, on_primary):
   This is a single-node call.
 
   """
-  params = [disk.Dumps(), on_primary]
+  params = [disk.ToDict(), on_primary]
   c = Client("blockdev_assemble", params)
   c.connect(node)
   c.run()
@@ -495,7 +509,7 @@ def call_blockdev_shutdown(node, disk):
   This is a single-node call.
 
   """
-  c = Client("blockdev_shutdown", [disk.Dumps()])
+  c = Client("blockdev_shutdown", [disk.ToDict()])
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
@@ -507,7 +521,7 @@ def call_blockdev_addchild(node, bdev, ndev):
   This is a single-node call.
 
   """
-  params = [bdev.Dumps(), ndev.Dumps()]
+  params = [bdev.ToDict(), ndev.ToDict()]
   c = Client("blockdev_addchild", params)
   c.connect(node)
   c.run()
@@ -520,7 +534,7 @@ def call_blockdev_removechild(node, bdev, ndev):
   This is a single-node call.
 
   """
-  params = [bdev.Dumps(), ndev.Dumps()]
+  params = [bdev.ToDict(), ndev.ToDict()]
   c = Client("blockdev_removechild", params)
   c.connect(node)
   c.run()
@@ -533,7 +547,7 @@ def call_blockdev_getmirrorstatus(node, disks):
   This is a single-node call.
 
   """
-  params = [dsk.Dumps() for dsk in disks]
+  params = [dsk.ToDict() for dsk in disks]
   c = Client("blockdev_getmirrorstatus", params)
   c.connect(node)
   c.run()
@@ -546,7 +560,7 @@ def call_blockdev_find(node, disk):
   This is a single-node call.
 
   """
-  c = Client("blockdev_find", [disk.Dumps()])
+  c = Client("blockdev_find", [disk.ToDict()])
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
@@ -591,13 +605,13 @@ def call_os_diagnose(node_list):
     if result[node_name]:
       for data in result[node_name]:
         if data:
-          if isinstance(data, basestring):
-            nr.append(objects.ConfigObject.Loads(data))
-          elif isinstance(data, tuple) and len(data) == 2:
-            nr.append(errors.InvalidOS(data[0], data[1]))
+          if isinstance(data, dict):
+            nr.append(objects.OS.FromDict(data))
+          elif isinstance(data, tuple) and len(data) == 3:
+            nr.append(errors.InvalidOS(data[0], data[1], data[2]))
           else:
-            raise errors.ProgrammerError, ("Invalid data from"
-                                           " xcserver.os_diagnose")
+            raise errors.ProgrammerError("Invalid data from"
+                                         " xcserver.os_diagnose")
     new_result[node_name] = nr
   return new_result
 
@@ -615,10 +629,10 @@ def call_os_get(node_list, name):
   new_result = {}
   for node_name in result:
     data = result[node_name]
-    if isinstance(data, basestring):
-      new_result[node_name] = objects.ConfigObject.Loads(data)
-    elif isinstance(data, tuple) and len(data) == 2:
-      new_result[node_name] = errors.InvalidOS(data[0], data[1])
+    if isinstance(data, dict):
+      new_result[node_name] = objects.OS.FromDict(data)
+    elif isinstance(data, tuple) and len(data) == 3:
+      new_result[node_name] = errors.InvalidOS(data[0], data[1], data[2])
     else:
       new_result[node_name] = data
   return new_result
@@ -648,7 +662,7 @@ def call_blockdev_snapshot(node, cf_bdev):
   This is a single-node call.
 
   """
-  c = Client("blockdev_snapshot", [cf_bdev.Dumps()])
+  c = Client("blockdev_snapshot", [cf_bdev.ToDict()])
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
@@ -660,7 +674,7 @@ def call_snapshot_export(node, snap_bdev, dest_node, instance):
   This is a single-node call.
 
   """
-  params = [snap_bdev.Dumps(), dest_node, instance.Dumps()]
+  params = [snap_bdev.ToDict(), dest_node, instance.ToDict()]
   c = Client("snapshot_export", params)
   c.connect(node)
   c.run()
@@ -677,8 +691,8 @@ def call_finalize_export(node, instance, snap_disks):
   """
   flat_disks = []
   for disk in snap_disks:
-    flat_disks.append(disk.Dumps())
-  params = [instance.Dumps(), flat_disks]
+    flat_disks.append(disk.ToDict())
+  params = [instance.ToDict(), flat_disks]
   c = Client("finalize_export", params)
   c.connect(node)
   c.run()
@@ -706,7 +720,7 @@ def call_instance_os_import(node, inst, osdev, swapdev, src_node, src_image):
   This is a single-node call.
 
   """
-  params = [inst.Dumps(), osdev, swapdev, src_node, src_image]
+  params = [inst.ToDict(), osdev, swapdev, src_node, src_image]
   c = Client("instance_os_import", params)
   c.connect(node)
   c.run()