add parameters for get topology

Change-Id: I18a7fa92aa12516c5b7a24b93e4c7b7a556a9e4e
This commit is contained in:
Eyal 2015-12-22 18:08:16 +02:00
parent b6bcaa3031
commit eab3e79587
3 changed files with 33 additions and 4 deletions

View File

@ -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}

View File

@ -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="<edge type,edge type>",
help="list of edges type (separated by ',')")
parser.add_argument("--vertices",
type=lambda s: [vertex for vertex in s.split(',')],
metavar="<vertex type,vertex type>",
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)

View File

@ -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()