change topology api to get complex query

Implements: blueprint get-topology-api
Change-Id: I706684992b8f9e7c1bda4a9f386c78ab9c4adb54
This commit is contained in:
Eyal 2016-01-06 14:28:36 +02:00
parent f90209b0c7
commit aed0bb924e
2 changed files with 23 additions and 20 deletions
vitrageclient/v1

@ -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="<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")
parser.add_argument("--filter",
metavar="<query>",
help="query for the graph)")
parser.add_argument("--limit", type=int,
metavar="<depth>",
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)

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