fuel-plugin-contrail/plugin_test/vapor/vapor/helpers/clients/contrail_api.py

95 lines
2.8 KiB
Python

from . import base
import urllib
class ContrailClient(base.ContrailBaseClient):
"""Contrail utilite wrapper."""
def create_network(self, net_name, net_attr):
"""Create virtual-network.
:param project_name: type list, tenant(project), network name
:param net_attr: type dictionary, network attributes
"""
data = {
"virtual-network": {
"parent_type": "project",
"fq_name": net_name,
"network_ipam_refs": net_attr}}
return self._post('/virtual-networks', json=data)
def add_router_interface(self, network, route_table, attr=None):
"""Add router interface to network.
:param network: type dictionary, network
:param route_table: type dictionary, router
:param attr: type dictionary, parameters of router interface(optianal)
"""
data = {"virtual-network": {'fq_name': network['fq_name'],
'route_table_refs': [{
'to': route_table['fq_name'], "attr":attr}]}}
return self._put(
'/virtual-network/{0}'.format(network['uuid']), json=data)
def get_route_tables(self):
"""Get router."""
return self._get('/route-tables')
def get_networks(self):
"""Get networks."""
return self._get('/virtual-networks')
def get_router_by_name(self, name):
"""Get router by name.
:param name: type string, name of router.
:return dictionary
"""
route_tables = self.get_route_tables()['route-tables']
route_table = [
route for route in route_tables
if name in route['fq_name']]
return route_table.pop()
def get_projects(self):
"""Get router."""
return self._get('/projects')
def get_project_by_name(self, name):
"""Get project by name.
:param name: type string, name of project.
:return dictionary
"""
projects = self.get_projects()
project = [p for p in projects if name in p['fq_name']]
return project.pop()
def get_instance_by_id(self, instance_id):
"""Get instance by id.
:param instance_id: type string, instance id.
:return dictionary
"""
return self._get('/virtual-machine/{0}'.format(instance_id))
def get_net_by_id(self, net_id):
"""Get network by id.
:param net_id: type string, instance id.
:return dictionary
"""
return self._get('/virtual-network/{0}'.format(net_id))
def get_bgp_routers(self):
"""Get bgp routers."""
return self._get('/bgp-routers')
def get_bgp_by_id(self, bgp_id):
"""Get bgp router by id.
:param bgp_id: type string, bgp router id.
:return dictionary
"""
return self._get('/bgp-router/{0}'.format(bgp_id))