From a0dcf7c2469a47d9fa946a240f482421cceff633 Mon Sep 17 00:00:00 2001
From: Oleksiy Mishchenko <oleksiy@google.com>
Date: Fri, 28 Nov 2008 12:02:16 +0000
Subject: [PATCH] RAPI: Switch from opcodes to no native 2.0 queries.

Reviewed-by: imsnah
---
 lib/rapi/connector.py |  4 ++--
 lib/rapi/rlib2.py     | 24 +++++++++++-------------
 2 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/lib/rapi/connector.py b/lib/rapi/connector.py
index ecf82c789..9540bc5f6 100644
--- a/lib/rapi/connector.py
+++ b/lib/rapi/connector.py
@@ -125,11 +125,11 @@ CONNECTOR.update({
   "/tags": rlib1.R_tags,
   "/info": rlib1.R_info,
 
-  "/nodes": rlib1.R_nodes,
+  "/nodes": rlib2.R_2_nodes,
   re.compile(r'^/nodes/([\w\._-]+)$'): rlib1.R_nodes_name,
   re.compile(r'^/nodes/([\w\._-]+)/tags$'): rlib1.R_nodes_name_tags,
 
-  "/instances": rlib1.R_instances,
+  "/instances": rlib2.R_2_instances,
   re.compile(r'^/instances/([\w\._-]+)$'): rlib1.R_instances_name,
   re.compile(r'^/instances/([\w\._-]+)/tags$'): rlib1.R_instances_name_tags,
 
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index f55dd3327..7a9dfd82d 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -128,14 +128,13 @@ class R_2_nodes(baserlib.R_Generic):
     ]
 
     """
-    op = ganeti.opcodes.OpQueryNodes(output_fields=["name"], names=[])
-    nodeslist = baserlib.ExtractField(ganeti.cli.SubmitOpCode(op), 0)
+    client = luxi.Client()
+    nodesdata = client.QueryNodes([], ["name"])
+    nodeslist = [row[0] for row in nodesdata]
 
     if 'bulk' in self.queryargs:
-      op = ganeti.opcodes.OpQueryNodes(output_fields=N_FIELDS,
-                                       names=nodeslist)
-      result = ganeti.cli.SubmitOpCode(op)
-      return baserlib.MapBulkFields(result, N_FIELDS)
+      bulkdata = client.QueryNodes(nodeslist, N_FIELDS)
+      return baserlib.MapBulkFields(bulkdata, N_FIELDS)
 
     return baserlib.BuildUriList(nodeslist, "/2/nodes/%s",
                                  uri_fields=("id", "uri"))
@@ -190,15 +189,14 @@ class R_2_instances(baserlib.R_Generic):
     ]
 
     """
-    op = ganeti.opcodes.OpQueryInstances(output_fields=["name"], names=[])
-    instanceslist = baserlib.ExtractField(ganeti.cli.SubmitOpCode(op), 0)
+    client = luxi.Client()
+    instancesdata = client.QueryInstances([], ["name"])
+    instanceslist = [row[0] for row in instancesdata]
 
-    if 'bulk' in self.queryargs:
-      op = ganeti.opcodes.OpQueryInstances(output_fields=I_FIELDS,
-                                           names=instanceslist)
-      result = ganeti.cli.SubmitOpCode(op)
-      return baserlib.MapBulkFields(result, I_FIELDS)
 
+    if 'bulk' in self.queryargs:
+      bulkdata = client.QueryInstances(instanceslist, I_FIELDS)
+      return baserlib.MapBulkFields(bulkdata, I_FIELDS)
 
     else:
       return baserlib.BuildUriList(instanceslist, "/2/instances/%s",
-- 
GitLab