diff --git a/vitrageclient/common/utils.py b/vitrageclient/common/utils.py index 964a79c..bdff905 100644 --- a/vitrageclient/common/utils.py +++ b/vitrageclient/common/utils.py @@ -19,3 +19,9 @@ def import_versioned_module(version, submodule=None): if submodule: module = '.'.join((module, submodule)) return importutils.import_module(module) + + +def args_to_dict(args, attrs): + return {(attr, value) + for attr, value in [(attr, getattr(args, attr)) for attr in attrs] + if value is not None} diff --git a/vitrageclient/v1/cli/topology.py b/vitrageclient/v1/cli/topology.py index 91198f4..fd1dd43 100644 --- a/vitrageclient/v1/cli/topology.py +++ b/vitrageclient/v1/cli/topology.py @@ -15,10 +15,27 @@ from cliff import show # noinspection PyAbstractClass class TopologyShow(show.ShowOne): + """Show the topology of the system""" + + 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") + return parser def formatter_default(self): return "json" def take_action(self, parsed_args): - topology = self.app.client.topology.get() + topology = self.app.client.topology.get(edges=parsed_args.edges, + vertices=parsed_args.vertices, + depth=parsed_args.depth) return self.dict2columns(topology) diff --git a/vitrageclient/v1/topology.py b/vitrageclient/v1/topology.py index 55d573b..c7a0602 100644 --- a/vitrageclient/v1/topology.py +++ b/vitrageclient/v1/topology.py @@ -17,7 +17,13 @@ class Topology(object): def __init__(self, api): self.api = api - def get(self): - """Get a topology """ + def get(self, edges=None, vertices=None, depth=None): + """Get a topology - return self.api.get(self.URL).json() + :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) + return self.api.get(self.URL, params=params).json()