From aed0bb924edddb71b21857e828ab4f5259a04cfe Mon Sep 17 00:00:00 2001 From: Eyal Date: Wed, 6 Jan 2016 14:28:36 +0200 Subject: [PATCH] change topology api to get complex query Implements: blueprint get-topology-api Change-Id: I706684992b8f9e7c1bda4a9f386c78ab9c4adb54 --- vitrageclient/v1/cli/topology.py | 27 +++++++++++++-------------- vitrageclient/v1/topology.py | 16 ++++++++++------ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/vitrageclient/v1/cli/topology.py b/vitrageclient/v1/cli/topology.py index 03ab804..475256c 100644 --- a/vitrageclient/v1/cli/topology.py +++ b/vitrageclient/v1/cli/topology.py @@ -19,16 +19,15 @@ class TopologyShow(show.ShowOne): def get_parser(self, prog_name): parser = super(TopologyShow, self).get_parser(prog_name) - parser.add_argument("--edges", - type=lambda s: [edge for edge in s.split(',')], - metavar="", - help="list of edges type (separated by ',')") - parser.add_argument("--vertices", - type=lambda s: [vertex for vertex in s.split(',')], - metavar="", - help="list of vertices types (separated by ',')") - parser.add_argument("--depth", type=int, - help="the depth of the topology") + parser.add_argument("--filter", + metavar="", + help="query for the graph)") + + parser.add_argument("--limit", type=int, + metavar="", + help="the depth of the topology graph") + + parser.add_argument("--root", help="the root of the topology graph") parser.add_argument('--graph-type', choices=['tree', 'graph'], default='graph', dest='type', @@ -41,8 +40,8 @@ class TopologyShow(show.ShowOne): return "json" def take_action(self, parsed_args): - topology = self.app.client.topology.get(edges=parsed_args.edges, - vertices=parsed_args.vertices, - depth=parsed_args.depth, - graph_type=parsed_args.type) + topology = self.app.client.topology.get(limit=parsed_args.limit, + graph_type=parsed_args.type, + query=parsed_args.filter, + root=parsed_args.root) return self.dict2columns(topology) diff --git a/vitrageclient/v1/topology.py b/vitrageclient/v1/topology.py index 1bdf573..a2b4905 100644 --- a/vitrageclient/v1/topology.py +++ b/vitrageclient/v1/topology.py @@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import json class Topology(object): @@ -17,15 +18,18 @@ class Topology(object): def __init__(self, api): self.api = api - def get(self, edges=None, vertices=None, depth=None, graph_type='graph'): + def get(self, depth=None, graph_type='graph', query=None, root=None, + limit=None): """Get a topology + :param limit: the depth of the topology graph + :param root: the root of the topology graph + :param query: the query filter for the topology :param graph_type: graph can be tree or graph :param depth: the depth of the topology graph - :param vertices: list of vertices types - :param edges: list of edges type """ - params = dict(edges=edges, vertices=vertices, depth=depth, - graph_type=graph_type) - return self.api.get(self.URL, params=params).json() + params = dict(depth=depth, graph_type=graph_type, + query=json.loads(query), + root=root) + return self.api.post(self.URL, json=params).json()