diff --git a/lib/luxi.py b/lib/luxi.py index 2f434f6362c577c76b12e539d9d235bb7798277d..9e2930e9f997d9f819540b89727982c562d8c2c0 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 aa56df8aaaddca39737644b698a17c5f1e2c5958..9efbf71d84b78c13a03ab3c96444bd99baa7dd53 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: