From 2276aa2998d3a2a3aba29d6d161fb2de5a8338ad Mon Sep 17 00:00:00 2001
From: Oleksiy Mishchenko <oleksiy@google.com>
Date: Fri, 14 Nov 2008 10:34:34 +0000
Subject: [PATCH] RAPI: Implement an instance reboot

Reviewed-by: imsnah
---
 lib/rapi/connector.py |  2 ++
 lib/rapi/rlib2.py     | 27 +++++++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/lib/rapi/connector.py b/lib/rapi/connector.py
index 1ce02ad26..99a00cec4 100644
--- a/lib/rapi/connector.py
+++ b/lib/rapi/connector.py
@@ -140,5 +140,7 @@ CONNECTOR.update({
   "/2/instances": rlib2.R_2_instances,
   re.compile(r'^/2/instances/([\w\._-]+)$'): rlib1.R_instances_name,
   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,
   re.compile(r'/2/jobs/(%s)$' % constants.JOB_ID_TEMPLATE): rlib2.R_2_jobs_id,
   })
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index 832fe456f..1556cfbf9 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -245,6 +245,33 @@ class R_2_instances(baserlib.R_Generic):
     return job_id
 
 
+class R_2_instances_name_reboot(baserlib.R_Generic):
+  """/2/instances/[instance_name]/reboot resource.
+
+  Implements an instance reboot.
+
+  """
+
+  DOC_URI = "/2/instances/[instance_name]/reboot"
+
+  def GET(self):
+    """Reboot an instance.
+
+    """
+    instance_name = self.items[0]
+    reboot_type = self.queryargs.get('reboot_type',
+                                     constants.INSTANCE_REBOOT_HARD)
+    ignore_secondaries = self.queryargs.get('ignore_secondaries', False)
+    op = ganeti.opcodes.OpRebootInstance(
+        instance_name=instance_name,
+        reboot_type=reboot_type,
+        ignore_secondaries=ignore_secondaries)
+
+    job_id = ganeti.cli.SendJob([op])
+
+    return job_id
+
+
 class R_2_instances_name_tags(baserlib.R_Generic):
   """/2/instances/[instance_name]/tags resource.
 
-- 
GitLab