From 600eeb319f30463e7feea89306dabe794c0d4a03 Mon Sep 17 00:00:00 2001
From: Apollon Oikonomopoulos <apollon@noc.grnet.gr>
Date: Mon, 18 Apr 2011 18:01:41 +0300
Subject: [PATCH] Add network query LUXI method

Signed-off-by: Apollon Oikonomopoulos <apollon@noc.grnet.gr>
---
 lib/luxi.py           | 4 ++++
 lib/server/masterd.py | 9 +++++++++
 2 files changed, 13 insertions(+)

diff --git a/lib/luxi.py b/lib/luxi.py
index 2f434f636..9e2930e9f 100644
--- a/lib/luxi.py
+++ b/lib/luxi.py
@@ -61,6 +61,7 @@ REQ_QUERY_JOBS = "QueryJobs"
 REQ_QUERY_INSTANCES = "QueryInstances"
 REQ_QUERY_NODES = "QueryNodes"
 REQ_QUERY_GROUPS = "QueryGroups"
+REQ_QUERY_NETWORKS = "QueryNetworks"
 REQ_QUERY_EXPORTS = "QueryExports"
 REQ_QUERY_CONFIG_VALUES = "QueryConfigValues"
 REQ_QUERY_CLUSTER_INFO = "QueryClusterInfo"
@@ -539,6 +540,9 @@ class Client(object):
   def QueryGroups(self, names, fields, use_locking):
     return self.CallMethod(REQ_QUERY_GROUPS, (names, fields, use_locking))
 
+  def QueryNetworks(self, names, fields, use_locking):
+    return self.CallMethod(REQ_QUERY_NETWORKS, (names, fields, use_locking))
+
   def QueryExports(self, nodes, use_locking):
     return self.CallMethod(REQ_QUERY_EXPORTS, (nodes, use_locking))
 
diff --git a/lib/server/masterd.py b/lib/server/masterd.py
index aa56df8aa..9efbf71d8 100644
--- a/lib/server/masterd.py
+++ b/lib/server/masterd.py
@@ -301,6 +301,15 @@ class ClientOps:
       op = opcodes.OpGroupQuery(names=names, output_fields=fields)
       return self._Query(op)
 
+    elif method == luxi.REQ_QUERY_NETWORKS:
+      (names, fields, use_locking) = args
+      logging.info("Received network query request for %s", names)
+      if use_locking:
+        raise errors.OpPrereqError("Sync queries are not allowed",
+                                   errors.ECODE_INVAL)
+      op = opcodes.OpNetworkQuery(names=names, output_fields=fields)
+      return self._Query(op)
+
     elif method == luxi.REQ_QUERY_EXPORTS:
       nodes, use_locking = args
       if use_locking:
-- 
GitLab