mirror of
https://github.com/ansible/awx.git
synced 2026-01-25 00:11:23 -03:30
Cleans up feature set for 3.3
This removes the experimental features that were not selected for 3.3 release. * Removes dpath requirement * Removes generated action_plugins * Removes network UI v1 api * Removes unused network management commands * Removes network UI CLI client * Removes templates * Removes unused DataBinding models * Removes obsolete test * Removes unused admin and tests * Removes experimental UndoPersistence, RedoPersistence, and auto-layout functions * Removes API endpoints for network visualization * Removes unused consumer routes * Removes group, site, and rack features for 3.3 * Removes unused tables controller * Removes undo/redo * Removes group code and scale checks
This commit is contained in:
parent
8d28748451
commit
b29a605800
@ -1,120 +0,0 @@
|
||||
|
||||
|
||||
.PHONY: all models admin v1_api_serializers v1_api_views v1_api_urls v2_api_serializers v2_api_views v1_api_client v2_api_urls v2_api_access v2_api_client
|
||||
|
||||
all: tuples models admin v1_api_serializers v1_api_views v1_api_urls v2_api_serializers v2_api_views v1_api_client action_plugins v2_api_urls v2_api_access v2_api_client
|
||||
|
||||
tuples:
|
||||
jinja2 templates/tuples.pyt designs/models.yml > tuples.py
|
||||
autopep8 -i tuples.py --ignore-local-config --max-line-length 160
|
||||
|
||||
models:
|
||||
jinja2 templates/models.pyt designs/models.yml > models.py
|
||||
autopep8 -i models.py --ignore-local-config --max-line-length 160
|
||||
|
||||
admin:
|
||||
jinja2 templates/admin.pyt designs/models.yml > admin.py
|
||||
autopep8 -i admin.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v1_api_serializers:
|
||||
jinja2 templates/v1_api_serializers.pyt designs/models.yml > v1_api_serializers.py
|
||||
autopep8 -i v1_api_serializers.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v1_api_views:
|
||||
jinja2 templates/v1_api_views.pyt designs/models.yml > v1_api_views.py
|
||||
autopep8 -i v1_api_views.py --ignore-local-config --max-line-length 80
|
||||
|
||||
v1_api_urls:
|
||||
jinja2 templates/v1_api_urls.pyt designs/models.yml > v1_api_urls.py
|
||||
autopep8 -i v1_api_urls.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v2_api_urls:
|
||||
jinja2 templates/v2_api_urls.pyt designs/models.yml > v2_api_urls.py
|
||||
autopep8 -i v2_api_urls.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v2_api_access:
|
||||
jinja2 templates/v2_api_access.pyt designs/models.yml > v2_api_access.py
|
||||
autopep8 -i v2_api_access.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v2_api_serializers:
|
||||
jinja2 templates/v2_api_serializers.pyt designs/models.yml > v2_api_serializers.py
|
||||
autopep8 -i v2_api_serializers.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v2_api_views:
|
||||
jinja2 templates/v2_api_views.pyt designs/models.yml > v2_api_views.py
|
||||
autopep8 -i v2_api_views.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v1_api_client:
|
||||
jinja2 templates/v1_api_client.pyt designs/models.yml > client/v1_api_client.py
|
||||
autopep8 -i client/v1_api_client.py --ignore-local-config --max-line-length 160
|
||||
|
||||
v2_api_client:
|
||||
jinja2 templates/v2_api_client.pyt designs/models.yml > client/v2_api_client.py
|
||||
autopep8 -i client/v2_api_client.py --ignore-local-config --max-line-length 160
|
||||
|
||||
action_plugins: ap_create_model ap_get_model ap_delete_model ap_update_model ap_list_model
|
||||
|
||||
ap_create_model:
|
||||
jinja2 templates/action_plugins/create_model.pyt designs/models.yml > action_plugins/create_model.py
|
||||
cd action_plugins; csplit -k -f create_ create_model.py '/#----/' '{*}'
|
||||
rm action_plugins/create_model.py
|
||||
./tools/fix_action_plugin_names.py action_plugins/create_*
|
||||
autopep8 -i action_plugins/create_*.py --ignore-local-config --max-line-length 160
|
||||
jinja2 templates/library/create_model.pyt designs/models.yml > library/create_model.py
|
||||
cd library; csplit -k -f create_ create_model.py '/#----/' '{*}'
|
||||
rm library/create_model.py
|
||||
./tools/fix_action_plugin_names.py library/create_*
|
||||
autopep8 -i library/create_*.py --ignore-local-config --max-line-length 160
|
||||
|
||||
|
||||
ap_update_model:
|
||||
jinja2 templates/action_plugins/update_model.pyt designs/models.yml > action_plugins/update_model.py
|
||||
cd action_plugins; csplit -k -f update_ update_model.py '/#----/' '{*}'
|
||||
rm action_plugins/update_model.py
|
||||
./tools/fix_action_plugin_names.py action_plugins/update_*
|
||||
autopep8 -i action_plugins/update_*.py --ignore-local-config --max-line-length 160
|
||||
jinja2 templates/library/update_model.pyt designs/models.yml > library/update_model.py
|
||||
cd library; csplit -k -f update_ update_model.py '/#----/' '{*}'
|
||||
rm library/update_model.py
|
||||
./tools/fix_action_plugin_names.py library/update_*
|
||||
autopep8 -i library/update_*.py --ignore-local-config --max-line-length 160
|
||||
|
||||
|
||||
ap_get_model:
|
||||
jinja2 templates/action_plugins/get_model.pyt designs/models.yml > action_plugins/get_model.py
|
||||
cd action_plugins; csplit -k -f get_ get_model.py '/#----/' '{*}'
|
||||
rm action_plugins/get_model.py
|
||||
./tools/fix_action_plugin_names.py action_plugins/get_*
|
||||
autopep8 -i action_plugins/get_*.py --ignore-local-config --max-line-length 160
|
||||
jinja2 templates/library/get_model.pyt designs/models.yml > library/get_model.py
|
||||
cd library; csplit -k -f get_ get_model.py '/#----/' '{*}'
|
||||
rm library/get_model.py
|
||||
./tools/fix_action_plugin_names.py library/get_*
|
||||
autopep8 -i library/get_*.py --ignore-local-config --max-line-length 160
|
||||
|
||||
|
||||
ap_delete_model:
|
||||
jinja2 templates/action_plugins/delete_model.pyt designs/models.yml > action_plugins/delete_model.py
|
||||
cd action_plugins; csplit -k -f delete_ delete_model.py '/#----/' '{*}'
|
||||
rm action_plugins/delete_model.py
|
||||
./tools/fix_action_plugin_names.py action_plugins/delete_*
|
||||
autopep8 -i action_plugins/delete_*.py --ignore-local-config --max-line-length 160
|
||||
jinja2 templates/library/delete_model.pyt designs/models.yml > library/delete_model.py
|
||||
cd library; csplit -k -f delete_ delete_model.py '/#----/' '{*}'
|
||||
rm library/delete_model.py
|
||||
./tools/fix_action_plugin_names.py library/delete_*
|
||||
autopep8 -i library/delete_*.py --ignore-local-config --max-line-length 160
|
||||
|
||||
|
||||
ap_list_model:
|
||||
jinja2 templates/action_plugins/list_model.pyt designs/models.yml > action_plugins/list_model.py
|
||||
cd action_plugins; csplit -k -f list_ list_model.py '/#----/' '{*}'
|
||||
rm action_plugins/list_model.py
|
||||
./tools/fix_action_plugin_names.py action_plugins/list_*
|
||||
autopep8 -i action_plugins/list_*.py --ignore-local-config --max-line-length 160
|
||||
jinja2 templates/library/list_model.pyt designs/models.yml > library/list_model.py
|
||||
cd library; csplit -k -f list_ list_model.py '/#----/' '{*}'
|
||||
rm library/list_model.py
|
||||
./tools/fix_action_plugin_names.py library/list_*
|
||||
autopep8 -i library/list_*.py --ignore-local-config --max-line-length 160
|
||||
|
||||
@ -1,61 +0,0 @@
|
||||
#---- create_device
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
topology = self._task.args.get('topology', None)
|
||||
name = self._task.args.get('name', None)
|
||||
x = self._task.args.get('x', None)
|
||||
y = self._task.args.get('y', None)
|
||||
id = self._task.args.get('id', None)
|
||||
device_type = self._task.args.get('device_type', None)
|
||||
|
||||
interface_id_seq = self._task.args.get('interface_id_seq', 0)
|
||||
process_id_seq = self._task.args.get('process_id_seq', 0)
|
||||
host_id = self._task.args.get('host_id', 0)
|
||||
|
||||
url = server + '/api/v2/canvas/device/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,61 +0,0 @@
|
||||
#---- create_group
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
id = self._task.args.get('id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
x1 = self._task.args.get('x1', None)
|
||||
y1 = self._task.args.get('y1', None)
|
||||
x2 = self._task.args.get('x2', None)
|
||||
y2 = self._task.args.get('y2', None)
|
||||
topology = self._task.args.get('topology', None)
|
||||
group_type = self._task.args.get('group_type', None)
|
||||
|
||||
inventory_group_id = self._task.args.get('inventory_group_id', 0)
|
||||
|
||||
url = server + '/api/v2/canvas/group/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,46 +0,0 @@
|
||||
#---- create_groupdevice
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
group = self._task.args.get('group', None)
|
||||
device = self._task.args.get('device', None)
|
||||
|
||||
url = server + '/api/v2/canvas/groupdevice/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(group=group,
|
||||
device=device,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,48 +0,0 @@
|
||||
#---- create_interface
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
device = self._task.args.get('device', None)
|
||||
name = self._task.args.get('name', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/interface/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
id=id,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,54 +0,0 @@
|
||||
#---- create_link
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
from_device = self._task.args.get('from_device', None)
|
||||
to_device = self._task.args.get('to_device', None)
|
||||
from_interface = self._task.args.get('from_interface', None)
|
||||
to_interface = self._task.args.get('to_interface', None)
|
||||
id = self._task.args.get('id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
|
||||
url = server + '/api/v2/canvas/link/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
from_interface=from_interface,
|
||||
to_interface=to_interface,
|
||||
id=id,
|
||||
name=name,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,51 +0,0 @@
|
||||
#---- create_process
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
device = self._task.args.get('device', None)
|
||||
name = self._task.args.get('name', None)
|
||||
process_type = self._task.args.get('process_type', None)
|
||||
|
||||
id = self._task.args.get('id', 0)
|
||||
|
||||
url = server + '/api/v2/canvas/process/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,51 +0,0 @@
|
||||
#---- create_stream
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
from_device = self._task.args.get('from_device', None)
|
||||
to_device = self._task.args.get('to_device', None)
|
||||
label = self._task.args.get('label', None)
|
||||
|
||||
id = self._task.args.get('id', 0)
|
||||
|
||||
url = server + '/api/v2/canvas/stream/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
label=label,
|
||||
id=id,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,44 +0,0 @@
|
||||
#---- create_toolbox
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
name = self._task.args.get('name', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolbox/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(name=name,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,46 +0,0 @@
|
||||
#---- create_toolboxitem
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
toolbox = self._task.args.get('toolbox', None)
|
||||
data = self._task.args.get('data', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolboxitem/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(toolbox=toolbox,
|
||||
data=data,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,59 +0,0 @@
|
||||
#---- create_topology
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
name = self._task.args.get('name', None)
|
||||
scale = self._task.args.get('scale', None)
|
||||
panX = self._task.args.get('panX', None)
|
||||
panY = self._task.args.get('panY', None)
|
||||
|
||||
device_id_seq = self._task.args.get('device_id_seq', 0)
|
||||
link_id_seq = self._task.args.get('link_id_seq', 0)
|
||||
group_id_seq = self._task.args.get('group_id_seq', 0)
|
||||
stream_id_seq = self._task.args.get('stream_id_seq', 0)
|
||||
|
||||
url = server + '/api/v2/canvas/topology/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(name=name,
|
||||
scale=scale,
|
||||
panX=panX,
|
||||
panY=panY,
|
||||
device_id_seq=device_id_seq,
|
||||
link_id_seq=link_id_seq,
|
||||
group_id_seq=group_id_seq,
|
||||
stream_id_seq=stream_id_seq,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,46 +0,0 @@
|
||||
#---- create_topologyinventory
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
the_list = self._task.args.get('list', None)
|
||||
list_var = self._task.args.get('list_var', None)
|
||||
|
||||
topology = self._task.args.get('topology', None)
|
||||
inventory_id = self._task.args.get('inventory_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/topologyinventory/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(topology=topology,
|
||||
inventory_id=inventory_id,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
if var is not None:
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
elif list_var is not None:
|
||||
if the_list is None:
|
||||
the_list = []
|
||||
the_list.append(response.json())
|
||||
result['ansible_facts'] = {list_var: the_list}
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_device
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
device_id = self._task.args.get('device_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/device/' + str(device_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_group
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
group_id = self._task.args.get('group_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/group/' + str(group_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_groupdevice
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
group_device_id = self._task.args.get('group_device_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/groupdevice/' + str(group_device_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_interface
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
interface_id = self._task.args.get('interface_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/interface/' + str(interface_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_link
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
link_id = self._task.args.get('link_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/link/' + str(link_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_process
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
process_id = self._task.args.get('process_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/process/' + str(process_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_stream
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
stream_id = self._task.args.get('stream_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/stream/' + str(stream_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_toolbox
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
toolbox_id = self._task.args.get('toolbox_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolbox/' + str(toolbox_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_toolboxitem
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
toolbox_item_id = self._task.args.get('toolbox_item_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolboxitem/' + str(toolbox_item_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_topology
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
topology_id = self._task.args.get('topology_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/topology/' + str(topology_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,29 +0,0 @@
|
||||
#---- delete_topologyinventory
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
topology_inventory_id = self._task.args.get('topology_inventory_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/topologyinventory/' + str(topology_inventory_id) + '/'
|
||||
requests.delete(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_device
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
device_id = self._task.args.get('device_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/device/' + str(device_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_group
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
group_id = self._task.args.get('group_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/group/' + str(group_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_groupdevice
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
group_device_id = self._task.args.get('group_device_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/groupdevice/' + str(group_device_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_interface
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
interface_id = self._task.args.get('interface_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/interface/' + str(interface_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_link
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
link_id = self._task.args.get('link_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/link/' + str(link_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_process
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
process_id = self._task.args.get('process_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/process/' + str(process_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_stream
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
stream_id = self._task.args.get('stream_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/stream/' + str(stream_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_toolbox
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
toolbox_id = self._task.args.get('toolbox_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolbox/' + str(toolbox_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_toolboxitem
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
toolbox_item_id = self._task.args.get('toolbox_item_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolboxitem/' + str(toolbox_item_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_topology
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
topology_id = self._task.args.get('topology_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/topology/' + str(topology_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,32 +0,0 @@
|
||||
#---- get_topologyinventory
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
topology_inventory_id = self._task.args.get('topology_inventory_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/topologyinventory/' + str(topology_inventory_id) + '/'
|
||||
response = requests.get(url,
|
||||
verify=False,
|
||||
auth=(user, password))
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,57 +0,0 @@
|
||||
#---- list_device
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
device_id = self._task.args.get('device_id', None)
|
||||
topology = self._task.args.get('topology', None)
|
||||
name = self._task.args.get('name', None)
|
||||
x = self._task.args.get('x', None)
|
||||
y = self._task.args.get('y', None)
|
||||
id = self._task.args.get('id', None)
|
||||
device_type = self._task.args.get('device_type', None)
|
||||
interface_id_seq = self._task.args.get('interface_id_seq', None)
|
||||
process_id_seq = self._task.args.get('process_id_seq', None)
|
||||
host_id = self._task.args.get('host_id', None)
|
||||
|
||||
filter_data = dict(device_id=device_id,
|
||||
topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/device/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,57 +0,0 @@
|
||||
#---- list_group
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
group_id = self._task.args.get('group_id', None)
|
||||
id = self._task.args.get('id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
x1 = self._task.args.get('x1', None)
|
||||
y1 = self._task.args.get('y1', None)
|
||||
x2 = self._task.args.get('x2', None)
|
||||
y2 = self._task.args.get('y2', None)
|
||||
topology = self._task.args.get('topology', None)
|
||||
group_type = self._task.args.get('group_type', None)
|
||||
inventory_group_id = self._task.args.get('inventory_group_id', None)
|
||||
|
||||
filter_data = dict(group_id=group_id,
|
||||
id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/group/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,43 +0,0 @@
|
||||
#---- list_groupdevice
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
group_device_id = self._task.args.get('group_device_id', None)
|
||||
group = self._task.args.get('group', None)
|
||||
device = self._task.args.get('device', None)
|
||||
|
||||
filter_data = dict(group_device_id=group_device_id,
|
||||
group=group,
|
||||
device=device,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/groupdevice/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,45 +0,0 @@
|
||||
#---- list_interface
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
interface_id = self._task.args.get('interface_id', None)
|
||||
device = self._task.args.get('device', None)
|
||||
name = self._task.args.get('name', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
filter_data = dict(interface_id=interface_id,
|
||||
device=device,
|
||||
name=name,
|
||||
id=id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/interface/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,51 +0,0 @@
|
||||
#---- list_link
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
link_id = self._task.args.get('link_id', None)
|
||||
from_device = self._task.args.get('from_device', None)
|
||||
to_device = self._task.args.get('to_device', None)
|
||||
from_interface = self._task.args.get('from_interface', None)
|
||||
to_interface = self._task.args.get('to_interface', None)
|
||||
id = self._task.args.get('id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
|
||||
filter_data = dict(link_id=link_id,
|
||||
from_device=from_device,
|
||||
to_device=to_device,
|
||||
from_interface=from_interface,
|
||||
to_interface=to_interface,
|
||||
id=id,
|
||||
name=name,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/link/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,47 +0,0 @@
|
||||
#---- list_process
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
process_id = self._task.args.get('process_id', None)
|
||||
device = self._task.args.get('device', None)
|
||||
name = self._task.args.get('name', None)
|
||||
process_type = self._task.args.get('process_type', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
filter_data = dict(process_id=process_id,
|
||||
device=device,
|
||||
name=name,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/process/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,47 +0,0 @@
|
||||
#---- list_stream
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
stream_id = self._task.args.get('stream_id', None)
|
||||
from_device = self._task.args.get('from_device', None)
|
||||
to_device = self._task.args.get('to_device', None)
|
||||
label = self._task.args.get('label', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
filter_data = dict(stream_id=stream_id,
|
||||
from_device=from_device,
|
||||
to_device=to_device,
|
||||
label=label,
|
||||
id=id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/stream/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,41 +0,0 @@
|
||||
#---- list_toolbox
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
toolbox_id = self._task.args.get('toolbox_id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
|
||||
filter_data = dict(toolbox_id=toolbox_id,
|
||||
name=name,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/toolbox/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,43 +0,0 @@
|
||||
#---- list_toolboxitem
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
toolbox_item_id = self._task.args.get('toolbox_item_id', None)
|
||||
toolbox = self._task.args.get('toolbox', None)
|
||||
data = self._task.args.get('data', None)
|
||||
|
||||
filter_data = dict(toolbox_item_id=toolbox_item_id,
|
||||
toolbox=toolbox,
|
||||
data=data,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/toolboxitem/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,55 +0,0 @@
|
||||
#---- list_topology
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
topology_id = self._task.args.get('topology_id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
scale = self._task.args.get('scale', None)
|
||||
panX = self._task.args.get('panX', None)
|
||||
panY = self._task.args.get('panY', None)
|
||||
device_id_seq = self._task.args.get('device_id_seq', None)
|
||||
link_id_seq = self._task.args.get('link_id_seq', None)
|
||||
group_id_seq = self._task.args.get('group_id_seq', None)
|
||||
stream_id_seq = self._task.args.get('stream_id_seq', None)
|
||||
|
||||
filter_data = dict(topology_id=topology_id,
|
||||
name=name,
|
||||
scale=scale,
|
||||
panX=panX,
|
||||
panY=panY,
|
||||
device_id_seq=device_id_seq,
|
||||
link_id_seq=link_id_seq,
|
||||
group_id_seq=group_id_seq,
|
||||
stream_id_seq=stream_id_seq,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/topology/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,43 +0,0 @@
|
||||
#---- list_topologyinventory
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
topology_inventory_id = self._task.args.get('topology_inventory_id', None)
|
||||
topology = self._task.args.get('topology', None)
|
||||
inventory_id = self._task.args.get('inventory_id', None)
|
||||
|
||||
filter_data = dict(topology_inventory_id=topology_inventory_id,
|
||||
topology=topology,
|
||||
inventory_id=inventory_id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
url = '/api/v2/canvas/topologyinventory/'
|
||||
results = []
|
||||
while url is not None:
|
||||
url = server + url
|
||||
data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
result['ansible_facts'] = {var: results}
|
||||
return result
|
||||
@ -1,56 +0,0 @@
|
||||
#---- update_device
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
device_id = self._task.args.get('device_id', None)
|
||||
topology = self._task.args.get('topology', None)
|
||||
name = self._task.args.get('name', None)
|
||||
x = self._task.args.get('x', None)
|
||||
y = self._task.args.get('y', None)
|
||||
id = self._task.args.get('id', None)
|
||||
device_type = self._task.args.get('device_type', None)
|
||||
interface_id_seq = self._task.args.get('interface_id_seq', None)
|
||||
process_id_seq = self._task.args.get('process_id_seq', None)
|
||||
host_id = self._task.args.get('host_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/device/' + str(device_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,56 +0,0 @@
|
||||
#---- update_group
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
group_id = self._task.args.get('group_id', None)
|
||||
id = self._task.args.get('id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
x1 = self._task.args.get('x1', None)
|
||||
y1 = self._task.args.get('y1', None)
|
||||
x2 = self._task.args.get('x2', None)
|
||||
y2 = self._task.args.get('y2', None)
|
||||
topology = self._task.args.get('topology', None)
|
||||
group_type = self._task.args.get('group_type', None)
|
||||
inventory_group_id = self._task.args.get('inventory_group_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/group/' + str(group_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,42 +0,0 @@
|
||||
#---- update_groupdevice
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
group_device_id = self._task.args.get('group_device_id', None)
|
||||
group = self._task.args.get('group', None)
|
||||
device = self._task.args.get('device', None)
|
||||
|
||||
url = server + '/api/v2/canvas/groupdevice/' + str(group_device_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(group=group,
|
||||
device=device,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,44 +0,0 @@
|
||||
#---- update_interface
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
interface_id = self._task.args.get('interface_id', None)
|
||||
device = self._task.args.get('device', None)
|
||||
name = self._task.args.get('name', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/interface/' + str(interface_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,50 +0,0 @@
|
||||
#---- update_link
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
link_id = self._task.args.get('link_id', None)
|
||||
from_device = self._task.args.get('from_device', None)
|
||||
to_device = self._task.args.get('to_device', None)
|
||||
from_interface = self._task.args.get('from_interface', None)
|
||||
to_interface = self._task.args.get('to_interface', None)
|
||||
id = self._task.args.get('id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
|
||||
url = server + '/api/v2/canvas/link/' + str(link_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
from_interface=from_interface,
|
||||
to_interface=to_interface,
|
||||
id=id,
|
||||
name=name,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,46 +0,0 @@
|
||||
#---- update_process
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
process_id = self._task.args.get('process_id', None)
|
||||
device = self._task.args.get('device', None)
|
||||
name = self._task.args.get('name', None)
|
||||
process_type = self._task.args.get('process_type', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/process/' + str(process_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,46 +0,0 @@
|
||||
#---- update_stream
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
stream_id = self._task.args.get('stream_id', None)
|
||||
from_device = self._task.args.get('from_device', None)
|
||||
to_device = self._task.args.get('to_device', None)
|
||||
label = self._task.args.get('label', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/stream/' + str(stream_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
label=label,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,40 +0,0 @@
|
||||
#---- update_toolbox
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
toolbox_id = self._task.args.get('toolbox_id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolbox/' + str(toolbox_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(name=name,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,42 +0,0 @@
|
||||
#---- update_toolboxitem
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
toolbox_item_id = self._task.args.get('toolbox_item_id', None)
|
||||
toolbox = self._task.args.get('toolbox', None)
|
||||
data = self._task.args.get('data', None)
|
||||
|
||||
url = server + '/api/v2/canvas/toolboxitem/' + str(toolbox_item_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(toolbox=toolbox,
|
||||
data=data,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,54 +0,0 @@
|
||||
#---- update_topology
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
topology_id = self._task.args.get('topology_id', None)
|
||||
name = self._task.args.get('name', None)
|
||||
scale = self._task.args.get('scale', None)
|
||||
panX = self._task.args.get('panX', None)
|
||||
panY = self._task.args.get('panY', None)
|
||||
device_id_seq = self._task.args.get('device_id_seq', None)
|
||||
link_id_seq = self._task.args.get('link_id_seq', None)
|
||||
group_id_seq = self._task.args.get('group_id_seq', None)
|
||||
stream_id_seq = self._task.args.get('stream_id_seq', None)
|
||||
|
||||
url = server + '/api/v2/canvas/topology/' + str(topology_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(name=name,
|
||||
scale=scale,
|
||||
panX=panX,
|
||||
panY=panY,
|
||||
device_id_seq=device_id_seq,
|
||||
link_id_seq=link_id_seq,
|
||||
group_id_seq=group_id_seq,
|
||||
stream_id_seq=stream_id_seq,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,42 +0,0 @@
|
||||
#---- update_topologyinventory
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
BYPASS_HOST_LOOP = True
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
|
||||
server = self._task.args.get('server',
|
||||
"{0}:{1}".format(self._play_context.remote_addr,
|
||||
self._play_context.port))
|
||||
user = self._task.args.get('user', self._play_context.remote_user)
|
||||
password = self._task.args.get('password', self._play_context.password)
|
||||
|
||||
var = self._task.args.get('var', None)
|
||||
|
||||
topology_inventory_id = self._task.args.get('topology_inventory_id', None)
|
||||
topology = self._task.args.get('topology', None)
|
||||
inventory_id = self._task.args.get('inventory_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/topologyinventory/' + str(topology_inventory_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
inventory_id=inventory_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
data=json.dumps(data),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
headers=headers)
|
||||
result['ansible_facts'] = {var: response.json()}
|
||||
return result
|
||||
@ -1,251 +0,0 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from awx.network_ui.models import Device
|
||||
|
||||
from awx.network_ui.models import Link
|
||||
|
||||
from awx.network_ui.models import Topology
|
||||
|
||||
from awx.network_ui.models import Client
|
||||
|
||||
from awx.network_ui.models import TopologyHistory
|
||||
|
||||
from awx.network_ui.models import MessageType
|
||||
|
||||
from awx.network_ui.models import Interface
|
||||
|
||||
from awx.network_ui.models import Group
|
||||
|
||||
from awx.network_ui.models import GroupDevice
|
||||
|
||||
from awx.network_ui.models import DataBinding
|
||||
|
||||
from awx.network_ui.models import DataType
|
||||
|
||||
from awx.network_ui.models import DataSheet
|
||||
|
||||
from awx.network_ui.models import Stream
|
||||
|
||||
from awx.network_ui.models import Process
|
||||
|
||||
from awx.network_ui.models import Toolbox
|
||||
|
||||
from awx.network_ui.models import ToolboxItem
|
||||
|
||||
from awx.network_ui.models import FSMTrace
|
||||
|
||||
from awx.network_ui.models import TopologyInventory
|
||||
|
||||
from awx.network_ui.models import EventTrace
|
||||
|
||||
from awx.network_ui.models import Coverage
|
||||
|
||||
from awx.network_ui.models import TopologySnapshot
|
||||
|
||||
from awx.network_ui.models import TestCase
|
||||
|
||||
from awx.network_ui.models import Result
|
||||
|
||||
from awx.network_ui.models import CodeUnderTest
|
||||
|
||||
from awx.network_ui.models import TestResult
|
||||
|
||||
|
||||
class DeviceAdmin(admin.ModelAdmin):
|
||||
fields = ('topology', 'name', 'x', 'y', 'id', 'device_type', 'interface_id_seq', 'process_id_seq', 'host_id',)
|
||||
raw_id_fields = ('topology',)
|
||||
|
||||
|
||||
admin.site.register(Device, DeviceAdmin)
|
||||
|
||||
|
||||
class LinkAdmin(admin.ModelAdmin):
|
||||
fields = ('from_device', 'to_device', 'from_interface', 'to_interface', 'id', 'name',)
|
||||
raw_id_fields = ('from_device', 'to_device', 'from_interface', 'to_interface',)
|
||||
|
||||
|
||||
admin.site.register(Link, LinkAdmin)
|
||||
|
||||
|
||||
class TopologyAdmin(admin.ModelAdmin):
|
||||
fields = ('name', 'scale', 'panX', 'panY', 'device_id_seq', 'link_id_seq', 'group_id_seq', 'stream_id_seq',)
|
||||
raw_id_fields = ()
|
||||
|
||||
|
||||
admin.site.register(Topology, TopologyAdmin)
|
||||
|
||||
|
||||
class ClientAdmin(admin.ModelAdmin):
|
||||
fields = ()
|
||||
raw_id_fields = ()
|
||||
|
||||
|
||||
admin.site.register(Client, ClientAdmin)
|
||||
|
||||
|
||||
class TopologyHistoryAdmin(admin.ModelAdmin):
|
||||
fields = ('topology', 'client', 'message_type', 'message_id', 'message_data', 'undone',)
|
||||
raw_id_fields = ('topology', 'client', 'message_type',)
|
||||
|
||||
|
||||
admin.site.register(TopologyHistory, TopologyHistoryAdmin)
|
||||
|
||||
|
||||
class MessageTypeAdmin(admin.ModelAdmin):
|
||||
fields = ('name',)
|
||||
raw_id_fields = ()
|
||||
|
||||
|
||||
admin.site.register(MessageType, MessageTypeAdmin)
|
||||
|
||||
|
||||
class InterfaceAdmin(admin.ModelAdmin):
|
||||
fields = ('device', 'name', 'id',)
|
||||
raw_id_fields = ('device',)
|
||||
|
||||
|
||||
admin.site.register(Interface, InterfaceAdmin)
|
||||
|
||||
|
||||
class GroupAdmin(admin.ModelAdmin):
|
||||
fields = ('id', 'name', 'x1', 'y1', 'x2', 'y2', 'topology', 'group_type', 'inventory_group_id',)
|
||||
raw_id_fields = ('topology',)
|
||||
|
||||
|
||||
admin.site.register(Group, GroupAdmin)
|
||||
|
||||
|
||||
class GroupDeviceAdmin(admin.ModelAdmin):
|
||||
fields = ('group', 'device',)
|
||||
raw_id_fields = ('group', 'device',)
|
||||
|
||||
|
||||
admin.site.register(GroupDevice, GroupDeviceAdmin)
|
||||
|
||||
|
||||
class DataBindingAdmin(admin.ModelAdmin):
|
||||
fields = ('column', 'row', 'table', 'primary_key_id', 'field', 'data_type', 'sheet',)
|
||||
raw_id_fields = ('data_type', 'sheet',)
|
||||
|
||||
|
||||
admin.site.register(DataBinding, DataBindingAdmin)
|
||||
|
||||
|
||||
class DataTypeAdmin(admin.ModelAdmin):
|
||||
fields = ('type_name',)
|
||||
raw_id_fields = ()
|
||||
|
||||
|
||||
admin.site.register(DataType, DataTypeAdmin)
|
||||
|
||||
|
||||
class DataSheetAdmin(admin.ModelAdmin):
|
||||
fields = ('name', 'topology', 'client',)
|
||||
raw_id_fields = ('topology', 'client',)
|
||||
|
||||
|
||||
admin.site.register(DataSheet, DataSheetAdmin)
|
||||
|
||||
|
||||
class StreamAdmin(admin.ModelAdmin):
|
||||
fields = ('from_device', 'to_device', 'label', 'id',)
|
||||
raw_id_fields = ('stream_id', 'from_device', 'to_device',)
|
||||
|
||||
|
||||
admin.site.register(Stream, StreamAdmin)
|
||||
|
||||
|
||||
class ProcessAdmin(admin.ModelAdmin):
|
||||
fields = ('device', 'name', 'process_type', 'id',)
|
||||
raw_id_fields = ('device',)
|
||||
|
||||
|
||||
admin.site.register(Process, ProcessAdmin)
|
||||
|
||||
|
||||
class ToolboxAdmin(admin.ModelAdmin):
|
||||
fields = ('name',)
|
||||
raw_id_fields = ()
|
||||
|
||||
|
||||
admin.site.register(Toolbox, ToolboxAdmin)
|
||||
|
||||
|
||||
class ToolboxItemAdmin(admin.ModelAdmin):
|
||||
fields = ('toolbox', 'data',)
|
||||
raw_id_fields = ('toolbox',)
|
||||
|
||||
|
||||
admin.site.register(ToolboxItem, ToolboxItemAdmin)
|
||||
|
||||
|
||||
class FSMTraceAdmin(admin.ModelAdmin):
|
||||
fields = ('fsm_name', 'from_state', 'to_state', 'message_type', 'client', 'trace_session_id', 'order',)
|
||||
raw_id_fields = ('client',)
|
||||
|
||||
|
||||
admin.site.register(FSMTrace, FSMTraceAdmin)
|
||||
|
||||
|
||||
class TopologyInventoryAdmin(admin.ModelAdmin):
|
||||
fields = ('topology', 'inventory_id',)
|
||||
raw_id_fields = ('topology',)
|
||||
|
||||
|
||||
admin.site.register(TopologyInventory, TopologyInventoryAdmin)
|
||||
|
||||
|
||||
class EventTraceAdmin(admin.ModelAdmin):
|
||||
fields = ('client', 'trace_session_id', 'event_data', 'message_id',)
|
||||
raw_id_fields = ('client',)
|
||||
|
||||
|
||||
admin.site.register(EventTrace, EventTraceAdmin)
|
||||
|
||||
|
||||
class CoverageAdmin(admin.ModelAdmin):
|
||||
fields = ('coverage_data', 'test_result',)
|
||||
raw_id_fields = ('test_result',)
|
||||
|
||||
|
||||
admin.site.register(Coverage, CoverageAdmin)
|
||||
|
||||
|
||||
class TopologySnapshotAdmin(admin.ModelAdmin):
|
||||
fields = ('client', 'topology_id', 'trace_session_id', 'snapshot_data', 'order',)
|
||||
raw_id_fields = ('client', 'snapshot_data',)
|
||||
|
||||
|
||||
admin.site.register(TopologySnapshot, TopologySnapshotAdmin)
|
||||
|
||||
|
||||
class TestCaseAdmin(admin.ModelAdmin):
|
||||
fields = ('name', 'test_case_data',)
|
||||
raw_id_fields = ('name',)
|
||||
|
||||
|
||||
admin.site.register(TestCase, TestCaseAdmin)
|
||||
|
||||
|
||||
class ResultAdmin(admin.ModelAdmin):
|
||||
fields = ('name',)
|
||||
raw_id_fields = ()
|
||||
|
||||
|
||||
admin.site.register(Result, ResultAdmin)
|
||||
|
||||
|
||||
class CodeUnderTestAdmin(admin.ModelAdmin):
|
||||
fields = ('version_x', 'version_y', 'version_z', 'commits_since', 'commit_hash',)
|
||||
raw_id_fields = ('code_under_test_id',)
|
||||
|
||||
|
||||
admin.site.register(CodeUnderTest, CodeUnderTestAdmin)
|
||||
|
||||
|
||||
class TestResultAdmin(admin.ModelAdmin):
|
||||
fields = ('test_case', 'result', 'code_under_test', 'time', 'id', 'client',)
|
||||
raw_id_fields = ('test_case', 'result', 'code_under_test', 'client',)
|
||||
|
||||
|
||||
admin.site.register(TestResult, TestResultAdmin)
|
||||
@ -1,3 +0,0 @@
|
||||
API client for the networking visualization.
|
||||
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
|
||||
class _Settings(object):
|
||||
|
||||
def __init__(self):
|
||||
self.SERVER = 'https://meganuke:8043'
|
||||
self.SSL_VERIFY = False
|
||||
self.user = None
|
||||
self.password = None
|
||||
|
||||
|
||||
settings = _Settings()
|
||||
@ -1,94 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Usage:
|
||||
networking_visualization_client.py [options] (create|list|get|update|delete) [device|topology|interface|link] [<filter>...]
|
||||
|
||||
Options:
|
||||
-h, --help Show this page
|
||||
--user=<u> User
|
||||
--password-file=<f>|-p=<f> Password file
|
||||
--debug Show debug logging
|
||||
--verbose Show verbose logging
|
||||
"""
|
||||
from docopt import docopt
|
||||
import logging
|
||||
import sys
|
||||
from getpass import getpass
|
||||
|
||||
from conf import settings
|
||||
import json
|
||||
import os
|
||||
|
||||
import v2_api_client
|
||||
|
||||
|
||||
logger = logging.getLogger('networking_visualization_client')
|
||||
|
||||
|
||||
def main(args=None):
|
||||
try:
|
||||
if args is None:
|
||||
args = sys.argv[1:]
|
||||
parsed_args = docopt(__doc__, args)
|
||||
if parsed_args['--debug']:
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
elif parsed_args['--verbose']:
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
else:
|
||||
logging.basicConfig(level=logging.WARNING)
|
||||
|
||||
settings.user = parsed_args['--user']
|
||||
if parsed_args['--password-file'] and os.path.exists(os.path.abspath(parsed_args['--password-file'])):
|
||||
with open(os.path.abspath(parsed_args['--password-file'])) as f:
|
||||
settings.password = f.read().strip()
|
||||
else:
|
||||
settings.password = getpass()
|
||||
query_filter = {}
|
||||
if parsed_args['<filter>']:
|
||||
for key_value in parsed_args['<filter>']:
|
||||
if "=" in key_value:
|
||||
key, _, value = key_value.partition("=")
|
||||
if value.lower() in ["true", "yes"]:
|
||||
query_filter[key] = True
|
||||
elif value.lower() in ["false", "no"]:
|
||||
query_filter[key] = False
|
||||
else:
|
||||
try:
|
||||
query_filter[key] = int(value)
|
||||
except ValueError:
|
||||
try:
|
||||
query_filter[key] = float(value)
|
||||
except ValueError:
|
||||
query_filter[key] = value
|
||||
else:
|
||||
raise Exception("Filters should be in the form of 'key=value'")
|
||||
|
||||
operation = ('get' if parsed_args['get'] else
|
||||
'list' if parsed_args['list'] else
|
||||
'create' if parsed_args['create'] else
|
||||
'delete' if parsed_args['delete'] else
|
||||
'update' if parsed_args['update'] else None)
|
||||
|
||||
if (parsed_args['topology']):
|
||||
result = v2_api_client.__dict__[operation + "_topology"](**query_filter)
|
||||
elif (parsed_args['device']):
|
||||
result = v2_api_client.__dict__[operation + "_device"](**query_filter)
|
||||
elif (parsed_args['interface']):
|
||||
result = v2_api_client.__dict__[operation + "_interface"](**query_filter)
|
||||
elif (parsed_args['link']):
|
||||
result = v2_api_client.__dict__[operation + "_link"](**query_filter)
|
||||
if isinstance(result, dict) or isinstance(result, list):
|
||||
print json.dumps(result, sort_keys=True, indent=4)
|
||||
|
||||
except BaseException, e:
|
||||
print ("Error: {0}".format(e))
|
||||
raise
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
docopt
|
||||
requests
|
||||
pyyaml
|
||||
@ -1,27 +0,0 @@
|
||||
|
||||
|
||||
import requests
|
||||
|
||||
from conf import settings
|
||||
|
||||
|
||||
def get_url():
|
||||
return settings.SERVER
|
||||
|
||||
|
||||
def get_auth():
|
||||
return (settings.user, settings.password)
|
||||
|
||||
|
||||
def get_verify():
|
||||
return settings.SSL_VERIFY
|
||||
|
||||
|
||||
def unpaginate(server, url, verify, auth, filter_data):
|
||||
results = []
|
||||
while url is not None:
|
||||
url = "{0}{1}".format(server, url)
|
||||
data = requests.get(url, verify=verify, auth=auth, params=filter_data).json()
|
||||
results.extend(data.get('results', []))
|
||||
url = data.get('next', None)
|
||||
return results
|
||||
@ -1,588 +0,0 @@
|
||||
|
||||
import requests
|
||||
|
||||
import util
|
||||
import json
|
||||
from collections import namedtuple
|
||||
|
||||
|
||||
Device = namedtuple('Device', ['device_id',
|
||||
'topology',
|
||||
'name',
|
||||
'x',
|
||||
'y',
|
||||
'id',
|
||||
'device_type',
|
||||
'interface_id_seq',
|
||||
'process_id_seq',
|
||||
'host_id',
|
||||
])
|
||||
|
||||
Link = namedtuple('Link', ['link_id',
|
||||
'from_device',
|
||||
'to_device',
|
||||
'from_interface',
|
||||
'to_interface',
|
||||
'id',
|
||||
'name',
|
||||
])
|
||||
|
||||
Topology = namedtuple('Topology', ['topology_id',
|
||||
'name',
|
||||
'scale',
|
||||
'panX',
|
||||
'panY',
|
||||
'device_id_seq',
|
||||
'link_id_seq',
|
||||
'group_id_seq',
|
||||
'stream_id_seq',
|
||||
])
|
||||
|
||||
Interface = namedtuple('Interface', ['interface_id',
|
||||
'device',
|
||||
'name',
|
||||
'id',
|
||||
])
|
||||
|
||||
Group = namedtuple('Group', ['group_id',
|
||||
'id',
|
||||
'name',
|
||||
'x1',
|
||||
'y1',
|
||||
'x2',
|
||||
'y2',
|
||||
'topology',
|
||||
'group_type',
|
||||
'inventory_group_id',
|
||||
])
|
||||
|
||||
GroupDevice = namedtuple('GroupDevice', ['group_device_id',
|
||||
'group',
|
||||
'device',
|
||||
])
|
||||
|
||||
Stream = namedtuple('Stream', ['stream_id',
|
||||
'from_device',
|
||||
'to_device',
|
||||
'label',
|
||||
'id',
|
||||
])
|
||||
|
||||
Process = namedtuple('Process', ['process_id',
|
||||
'device',
|
||||
'name',
|
||||
'process_type',
|
||||
'id',
|
||||
])
|
||||
|
||||
Toolbox = namedtuple('Toolbox', ['toolbox_id',
|
||||
'name',
|
||||
])
|
||||
|
||||
ToolboxItem = namedtuple('ToolboxItem', ['toolbox_item_id',
|
||||
'toolbox',
|
||||
'data',
|
||||
])
|
||||
|
||||
TopologyInventory = namedtuple('TopologyInventory', ['topology_inventory_id',
|
||||
'topology',
|
||||
'inventory_id',
|
||||
])
|
||||
|
||||
|
||||
def list_device(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/device/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_device(device_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_device(topology, name, x, y, id, device_type, interface_id_seq=0, process_id_seq=0, host_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/device/", data=json.dumps(dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_device(device_id, topology=None, name=None, x=None, y=None, id=None, device_type=None, interface_id_seq=None, process_id_seq=None, host_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/device/" + str(device_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_device(device_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_link(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/link/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_link(link_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_link(from_device, to_device, from_interface, to_interface, id, name,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/link/", data=json.dumps(dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
from_interface=from_interface,
|
||||
to_interface=to_interface,
|
||||
id=id,
|
||||
name=name,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_link(link_id, from_device=None, to_device=None, from_interface=None, to_interface=None, id=None, name=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
from_interface=from_interface,
|
||||
to_interface=to_interface,
|
||||
id=id,
|
||||
name=name,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/link/" + str(link_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_link(link_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_topology(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/topology/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_topology(topology_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_topology(name, scale, panX, panY, device_id_seq=0, link_id_seq=0, group_id_seq=0, stream_id_seq=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/topology/", data=json.dumps(dict(name=name,
|
||||
scale=scale,
|
||||
panX=panX,
|
||||
panY=panY,
|
||||
device_id_seq=device_id_seq,
|
||||
link_id_seq=link_id_seq,
|
||||
group_id_seq=group_id_seq,
|
||||
stream_id_seq=stream_id_seq,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_topology(topology_id, name=None, scale=None, panX=None, panY=None, device_id_seq=None, link_id_seq=None, group_id_seq=None, stream_id_seq=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(name=name,
|
||||
scale=scale,
|
||||
panX=panX,
|
||||
panY=panY,
|
||||
device_id_seq=device_id_seq,
|
||||
link_id_seq=link_id_seq,
|
||||
group_id_seq=group_id_seq,
|
||||
stream_id_seq=stream_id_seq,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/topology/" + str(topology_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_topology(topology_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_interface(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/interface/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_interface(interface_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_interface(device, name, id,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/interface/", data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_interface(interface_id, device=None, name=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/interface/" + str(interface_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_interface(interface_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_group(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/group/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_group(group_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_group(id, name, x1, y1, x2, y2, topology, group_type, inventory_group_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/group/", data=json.dumps(dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, group_type=None, inventory_group_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/group/" + str(group_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_group(group_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_groupdevice(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/groupdevice/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_groupdevice(group_device_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_groupdevice(group, device,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/groupdevice/", data=json.dumps(dict(group=group,
|
||||
device=device,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_groupdevice(group_device_id, group=None, device=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(group=group,
|
||||
device=device,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/groupdevice/" + str(group_device_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_groupdevice(group_device_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_stream(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/stream/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_stream(stream_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_stream(from_device, to_device, label, id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/stream/", data=json.dumps(dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
label=label,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_stream(stream_id, from_device=None, to_device=None, label=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
label=label,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/stream/" + str(stream_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_stream(stream_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_process(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/process/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_process(process_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_process(device, name, process_type, id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/process/", data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_process(process_id, device=None, name=None, process_type=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/process/" + str(process_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_process(process_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_toolbox(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/toolbox/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_toolbox(toolbox_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_toolbox(name,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/toolbox/", data=json.dumps(dict(name=name,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_toolbox(toolbox_id, name=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(name=name,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/toolbox/" + str(toolbox_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_toolbox(toolbox_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_toolboxitem(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/toolboxitem/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_toolboxitem(toolbox_item_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_toolboxitem(toolbox, data,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/toolboxitem/", data=json.dumps(dict(toolbox=toolbox,
|
||||
data=data,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_toolboxitem(toolbox_item_id, toolbox=None, data=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(toolbox=toolbox,
|
||||
data=data,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/toolboxitem/" + str(toolbox_item_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_toolboxitem(toolbox_item_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_topologyinventory(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/network_ui/api/v1/topologyinventory/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_topologyinventory(topology_inventory_id):
|
||||
response = requests.get(util.get_url() + "/network_ui/api/v1/topologyinventory/" +
|
||||
str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_topologyinventory(topology, inventory_id,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/topologyinventory/", data=json.dumps(dict(topology=topology,
|
||||
inventory_id=inventory_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_topologyinventory(topology_inventory_id, topology=None, inventory_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
inventory_id=inventory_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/topologyinventory/" + str(topology_inventory_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_topologyinventory(topology_inventory_id):
|
||||
response = requests.delete(util.get_url() + "/network_ui/api/v1/topologyinventory/" +
|
||||
str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
@ -1,502 +0,0 @@
|
||||
|
||||
import requests
|
||||
|
||||
import util
|
||||
import json
|
||||
|
||||
|
||||
def list_device(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/device/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_device(device_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_device(topology, name, x, y, id, device_type, interface_id_seq=0, process_id_seq=0, host_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/device/", data=json.dumps(dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_device(device_id, topology=None, name=None, x=None, y=None, id=None, device_type=None, interface_id_seq=None, process_id_seq=None, host_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/device/" + str(device_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_device(device_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_link(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/link/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_link(link_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_link(from_device, to_device, from_interface, to_interface, id, name,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/link/", data=json.dumps(dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
from_interface=from_interface,
|
||||
to_interface=to_interface,
|
||||
id=id,
|
||||
name=name,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_link(link_id, from_device=None, to_device=None, from_interface=None, to_interface=None, id=None, name=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
from_interface=from_interface,
|
||||
to_interface=to_interface,
|
||||
id=id,
|
||||
name=name,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/link/" + str(link_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_link(link_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_topology(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/topology/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_topology(topology_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_topology(name, scale, panX, panY, device_id_seq=0, link_id_seq=0, group_id_seq=0, stream_id_seq=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/topology/", data=json.dumps(dict(name=name,
|
||||
scale=scale,
|
||||
panX=panX,
|
||||
panY=panY,
|
||||
device_id_seq=device_id_seq,
|
||||
link_id_seq=link_id_seq,
|
||||
group_id_seq=group_id_seq,
|
||||
stream_id_seq=stream_id_seq,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_topology(topology_id, name=None, scale=None, panX=None, panY=None, device_id_seq=None, link_id_seq=None, group_id_seq=None, stream_id_seq=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(name=name,
|
||||
scale=scale,
|
||||
panX=panX,
|
||||
panY=panY,
|
||||
device_id_seq=device_id_seq,
|
||||
link_id_seq=link_id_seq,
|
||||
group_id_seq=group_id_seq,
|
||||
stream_id_seq=stream_id_seq,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/topology/" + str(topology_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_topology(topology_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_interface(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/interface/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_interface(interface_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_interface(device, name, id,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/interface/", data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_interface(interface_id, device=None, name=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/interface/" + str(interface_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_interface(interface_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_group(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/group/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_group(group_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_group(id, name, x1, y1, x2, y2, topology, group_type, inventory_group_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/group/", data=json.dumps(dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, group_type=None, inventory_group_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/group/" + str(group_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_group(group_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_groupdevice(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/groupdevice/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_groupdevice(group_device_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_groupdevice(group, device,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/groupdevice/", data=json.dumps(dict(group=group,
|
||||
device=device,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_groupdevice(group_device_id, group=None, device=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(group=group,
|
||||
device=device,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/groupdevice/" + str(group_device_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_groupdevice(group_device_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_stream(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/stream/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_stream(stream_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_stream(from_device, to_device, label, id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/stream/", data=json.dumps(dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
label=label,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_stream(stream_id, from_device=None, to_device=None, label=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(from_device=from_device,
|
||||
to_device=to_device,
|
||||
label=label,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/stream/" + str(stream_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_stream(stream_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_process(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/process/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_process(process_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_process(device, name, process_type, id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/process/", data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_process(process_id, device=None, name=None, process_type=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/process/" + str(process_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_process(process_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_toolbox(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/toolbox/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_toolbox(toolbox_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_toolbox(name,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/toolbox/", data=json.dumps(dict(name=name,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_toolbox(toolbox_id, name=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(name=name,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/toolbox/" + str(toolbox_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_toolbox(toolbox_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_toolboxitem(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/toolboxitem/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_toolboxitem(toolbox_item_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_toolboxitem(toolbox, data,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/toolboxitem/", data=json.dumps(dict(toolbox=toolbox,
|
||||
data=data,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_toolboxitem(toolbox_item_id, toolbox=None, data=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(toolbox=toolbox,
|
||||
data=data,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/toolboxitem/" + str(toolbox_item_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_toolboxitem(toolbox_item_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
|
||||
|
||||
def list_topologyinventory(**kwargs):
|
||||
response = util.unpaginate(util.get_url(), '/api/v2/canvas/topologyinventory/', util.get_verify(), util.get_auth(), kwargs)
|
||||
return response
|
||||
|
||||
|
||||
def get_topologyinventory(topology_inventory_id):
|
||||
response = requests.get(util.get_url() + "/api/v2/canvas/topologyinventory/" + str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_topologyinventory(topology, inventory_id,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/topologyinventory/", data=json.dumps(dict(topology=topology,
|
||||
inventory_id=inventory_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_topologyinventory(topology_inventory_id, topology=None, inventory_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
inventory_id=inventory_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/topologyinventory/" + str(topology_inventory_id) + "/",
|
||||
data=json.dumps(data),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
headers=headers)
|
||||
return response
|
||||
|
||||
|
||||
def delete_topologyinventory(topology_inventory_id):
|
||||
response = requests.delete(util.get_url() + "/api/v2/canvas/topologyinventory/" +
|
||||
str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth())
|
||||
return response
|
||||
@ -1 +0,0 @@
|
||||
alter table prototype_device add constraint prototype_device_topology_id_unique unique (topology_id, id);
|
||||
@ -5,25 +5,20 @@ from channels.sessions import channel_session
|
||||
from awx.network_ui.models import Topology, Device, Link, Client, TopologyHistory, MessageType, Interface
|
||||
from awx.network_ui.models import Group as DeviceGroup
|
||||
from awx.network_ui.models import GroupDevice as GroupDeviceMap
|
||||
from awx.network_ui.models import DataSheet, DataBinding, DataType
|
||||
from awx.network_ui.models import Process, Stream
|
||||
from awx.network_ui.models import Toolbox, ToolboxItem
|
||||
from awx.network_ui.models import FSMTrace, EventTrace, Coverage, TopologySnapshot
|
||||
from awx.network_ui.models import TopologyInventory
|
||||
from awx.network_ui.models import TestCase, TestResult, CodeUnderTest, Result
|
||||
from awx.network_ui.messages import MultipleMessage, InterfaceCreate, LinkCreate, to_dict
|
||||
import urlparse
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.db.models import Q
|
||||
from collections import defaultdict
|
||||
import math
|
||||
import random
|
||||
import logging
|
||||
from django.utils.dateparse import parse_datetime
|
||||
|
||||
|
||||
from awx.network_ui.utils import transform_dict
|
||||
import dpath.util
|
||||
from pprint import pformat
|
||||
|
||||
import json
|
||||
@ -33,16 +28,11 @@ HISTORY_MESSAGE_IGNORE_TYPES = ['DeviceSelected',
|
||||
'DeviceUnSelected',
|
||||
'LinkSelected',
|
||||
'LinkUnSelected',
|
||||
'Undo',
|
||||
'Redo',
|
||||
'MouseEvent',
|
||||
'MouseWheelEvent',
|
||||
'KeyEvent']
|
||||
|
||||
|
||||
SPACING = 200
|
||||
RACK_SPACING = 50
|
||||
|
||||
logger = logging.getLogger("awx.network_ui.consumers")
|
||||
|
||||
|
||||
@ -51,209 +41,6 @@ class NetworkUIException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def circular_layout(topology_id):
|
||||
n = Device.objects.filter(topology_id=topology_id).count()
|
||||
|
||||
r = 200
|
||||
if n > 0:
|
||||
arc_radians = 2 * math.pi / n
|
||||
else:
|
||||
arc_radians = 2 * math.pi
|
||||
|
||||
for i, device in enumerate(Device.objects.filter(topology_id=topology_id)):
|
||||
device.x = math.cos(arc_radians * i + math.pi / 4) * r
|
||||
device.y = math.sin(arc_radians * i + math.pi / 4) * r
|
||||
device.save()
|
||||
|
||||
send_snapshot(Group("topology-%s" % topology_id), topology_id)
|
||||
|
||||
|
||||
def v_distance(graph, grid, device):
|
||||
|
||||
d = 0
|
||||
for edge in graph['edges'][device]:
|
||||
d += math.sqrt(math.pow(device.x - edge.x, 2) + math.pow(device.y - edge.y, 2))
|
||||
|
||||
return d
|
||||
|
||||
|
||||
def reduce_distance(graph, grid):
|
||||
|
||||
devices = graph['vertices']
|
||||
|
||||
def sum_distances():
|
||||
distances = {x: v_distance(graph, grid, x) for x in grid.keys()}
|
||||
return sum(distances.values())
|
||||
|
||||
total_distance = sum_distances()
|
||||
|
||||
for i in xrange(10000):
|
||||
a = random.choice(devices)
|
||||
b = random.choice(devices)
|
||||
if a == b:
|
||||
continue
|
||||
else:
|
||||
swap(grid, a, b)
|
||||
place(grid, a)
|
||||
place(grid, b)
|
||||
new_total = sum_distances()
|
||||
if new_total < total_distance:
|
||||
print "New total", new_total
|
||||
total_distance = new_total
|
||||
a.save()
|
||||
b.save()
|
||||
else:
|
||||
swap(grid, a, b)
|
||||
place(grid, a)
|
||||
place(grid, b)
|
||||
|
||||
|
||||
def place(grid, device):
|
||||
device.x = grid[device][1] * SPACING
|
||||
device.y = grid[device][0] * SPACING
|
||||
|
||||
|
||||
def swap(grid, a, b):
|
||||
tmp = grid[a]
|
||||
grid[a] = grid[b]
|
||||
grid[b] = tmp
|
||||
|
||||
|
||||
def grid_layout(topology_id):
|
||||
n = Device.objects.filter(topology_id=topology_id).count()
|
||||
|
||||
cols = rows = int(math.ceil(math.sqrt(n)))
|
||||
|
||||
def device_seq_generator():
|
||||
for d in Device.objects.filter(topology_id=topology_id):
|
||||
yield d
|
||||
|
||||
device_seq = device_seq_generator()
|
||||
|
||||
grid = {}
|
||||
graph = dict(vertices=[], edges=defaultdict(list))
|
||||
|
||||
links = Link.objects.filter(Q(from_device__topology_id=topology_id) |
|
||||
Q(to_device__topology_id=topology_id))
|
||||
|
||||
for l in links:
|
||||
graph['edges'][l.from_device].append(l.to_device)
|
||||
graph['edges'][l.to_device].append(l.from_device)
|
||||
|
||||
for i in xrange(rows):
|
||||
for j in xrange(cols):
|
||||
try:
|
||||
device = next(device_seq)
|
||||
graph['vertices'].append(device)
|
||||
grid[device] = (i, j)
|
||||
place(grid, device)
|
||||
device.save()
|
||||
except StopIteration:
|
||||
pass
|
||||
|
||||
reduce_distance(graph, grid)
|
||||
|
||||
send_snapshot(Group("topology-%s" % topology_id), topology_id)
|
||||
|
||||
|
||||
def tier_layout(topology_id):
|
||||
|
||||
devices = list(Device.objects.filter(topology_id=topology_id))
|
||||
device_map = {x.pk: x for x in devices}
|
||||
links = Link.objects.filter(Q(from_device__topology_id=topology_id) |
|
||||
Q(to_device__topology_id=topology_id))
|
||||
|
||||
def guess_role(devices):
|
||||
|
||||
for device in devices:
|
||||
if getattr(device, "role", None):
|
||||
continue
|
||||
if device.type == "host":
|
||||
device.role = "host"
|
||||
continue
|
||||
if device.type == "switch":
|
||||
if 'leaf' in device.name.lower():
|
||||
device.role = "leaf"
|
||||
continue
|
||||
if 'spine' in device.name.lower():
|
||||
device.role = "spine"
|
||||
continue
|
||||
device.role = "unknown"
|
||||
|
||||
guess_role(devices)
|
||||
|
||||
edges = defaultdict(set)
|
||||
racks = []
|
||||
|
||||
for l in links:
|
||||
edges[device_map[l.from_device.pk]].add(device_map[l.to_device.pk])
|
||||
edges[device_map[l.to_device.pk]].add(device_map[l.from_device.pk])
|
||||
|
||||
|
||||
similar_connections = defaultdict(list)
|
||||
|
||||
for device, connections in edges.iteritems():
|
||||
similar_connections[tuple(connections)].append(device)
|
||||
|
||||
|
||||
for connections, from_devices in similar_connections.iteritems():
|
||||
if len(from_devices) > 0 and from_devices[0].role == "host":
|
||||
racks.append(from_devices)
|
||||
|
||||
tiers = defaultdict(list)
|
||||
|
||||
for device in devices:
|
||||
if getattr(device, 'tier', None):
|
||||
pass
|
||||
elif device.role == "leaf":
|
||||
device.tier = 1
|
||||
elif device.role == "spine":
|
||||
device.tier = 2
|
||||
elif device.role == "host":
|
||||
device.tier = 0
|
||||
else:
|
||||
device.tier = 3
|
||||
tiers[device.tier].append(device)
|
||||
|
||||
for rack in racks:
|
||||
rack.sort(key=lambda x: x.name)
|
||||
|
||||
racks.sort(key=lambda x: x[0].name)
|
||||
|
||||
for tier in tiers.values():
|
||||
tier.sort(key=lambda x: x.name)
|
||||
|
||||
for device in devices:
|
||||
print device, getattr(device, 'tier', None)
|
||||
if getattr(device, 'tier', None) is None:
|
||||
device.y = 0
|
||||
device.x = 0
|
||||
else:
|
||||
device.y = SPACING * 3 - device.tier * SPACING
|
||||
device.x = 0 - (len(tiers[device.tier]) * SPACING) / 2 + tiers[device.tier].index(device) * SPACING
|
||||
device.save()
|
||||
|
||||
for j, rack in enumerate(racks):
|
||||
x = 0 - (len(racks) * SPACING) / 2 + j * SPACING
|
||||
for i, device in enumerate(rack):
|
||||
device.x = x
|
||||
device.y = SPACING * 3 + i * RACK_SPACING
|
||||
device.save()
|
||||
|
||||
send_snapshot(Group("topology-%s" % topology_id), topology_id)
|
||||
|
||||
|
||||
def parse_topology_id(data):
|
||||
topology_id = data.get('topology_id', ['null'])
|
||||
try:
|
||||
topology_id = int(topology_id[0])
|
||||
except ValueError:
|
||||
topology_id = None
|
||||
if not topology_id:
|
||||
topology_id = None
|
||||
return topology_id
|
||||
|
||||
|
||||
def parse_inventory_id(data):
|
||||
inventory_id = data.get('inventory_id', ['null'])
|
||||
try:
|
||||
@ -276,7 +63,7 @@ class _Persistence(object):
|
||||
assert client_id is not None, "No client_id"
|
||||
data = json.loads(message['text'])
|
||||
if isinstance(data[1], list):
|
||||
print "no sender"
|
||||
logger.error("Message has no sender")
|
||||
return
|
||||
if isinstance(data[1], dict) and client_id != data[1].get('sender'):
|
||||
logger.error("client_id mismatch expected: %s actual %s", client_id, data[1].get('sender'))
|
||||
@ -321,7 +108,6 @@ class _Persistence(object):
|
||||
id='id',
|
||||
host_id='host_id'), device)
|
||||
logger.info("Device %s", device)
|
||||
print ("Device %s" % device)
|
||||
d, _ = Device.objects.get_or_create(topology_id=topology_id, id=device['id'], defaults=device)
|
||||
d.x = device['x']
|
||||
d.y = device['y']
|
||||
@ -346,23 +132,6 @@ class _Persistence(object):
|
||||
|
||||
def onDeviceLabelEdit(self, device, topology_id, client_id):
|
||||
Device.objects.filter(topology_id=topology_id, id=device['id']).update(name=device['name'])
|
||||
for pk in Device.objects.filter(topology_id=topology_id, id=device['id']).values_list('pk', flat=True):
|
||||
for db in DataBinding.objects.filter(primary_key_id=pk,
|
||||
table="Device",
|
||||
field="name").values('sheet__client_id',
|
||||
'sheet__name',
|
||||
'column',
|
||||
'row'):
|
||||
message = ['TableCellEdit', dict(sender=0,
|
||||
msg_type="TableCellEdit",
|
||||
sheet=db['sheet__name'],
|
||||
col=db['column'] + 1,
|
||||
row=db['row'] + 2,
|
||||
new_value=device['name'],
|
||||
old_value=device['previous_name'])]
|
||||
logger.info("Sending message %r", message)
|
||||
Group("topology-%s-client-%s" % (topology_id, db['sheet__client_id'])).send({"text": json.dumps(message)})
|
||||
|
||||
|
||||
def onInterfaceLabelEdit(self, interface, topology_id, client_id):
|
||||
(Interface.objects
|
||||
@ -457,12 +226,6 @@ class _Persistence(object):
|
||||
'Ignore LinkSelected messages'
|
||||
pass
|
||||
|
||||
def onUndo(self, message_value, topology_id, client_id):
|
||||
undo_persistence.handle(message_value['original_message'], topology_id, client_id)
|
||||
|
||||
def onRedo(self, message_value, topology_id, client_id):
|
||||
redo_persistence.handle(message_value['original_message'], topology_id, client_id)
|
||||
|
||||
def onMultipleMessage(self, message_value, topology_id, client_id):
|
||||
for message in message_value['messages']:
|
||||
handler = self.get_handler(message['msg_type'])
|
||||
@ -471,12 +234,6 @@ class _Persistence(object):
|
||||
else:
|
||||
logger.warning("Unsupported message %s", message['msg_type'])
|
||||
|
||||
def onLayout(self, message_value, topology_id, client_id):
|
||||
# circular_layout(topology_id)
|
||||
# grid_layout(topology_id)
|
||||
tier_layout(topology_id)
|
||||
|
||||
|
||||
def onCoverageRequest(self, coverage, topology_id, client_id):
|
||||
pass
|
||||
|
||||
@ -484,23 +241,15 @@ class _Persistence(object):
|
||||
xyz, _, rest = test_result['code_under_test'].partition('-')
|
||||
commits_since, _, commit_hash = rest.partition('-')
|
||||
commit_hash = commit_hash.strip('g')
|
||||
|
||||
print (xyz)
|
||||
print (commits_since)
|
||||
print (commit_hash)
|
||||
|
||||
x, y, z = [int(i) for i in xyz.split('.')]
|
||||
|
||||
print (x, y, z)
|
||||
|
||||
code_under_test, _ = CodeUnderTest.objects.get_or_create(version_x=x,
|
||||
version_y=y,
|
||||
version_z=z,
|
||||
commits_since=int(commits_since),
|
||||
commit_hash=commit_hash)
|
||||
|
||||
print (code_under_test)
|
||||
|
||||
tr = TestResult(id=test_result['id'],
|
||||
result_id=Result.objects.get(name=test_result['result']).pk,
|
||||
test_case_id=TestCase.objects.get(name=test_result['name']).pk,
|
||||
@ -508,7 +257,6 @@ class _Persistence(object):
|
||||
client_id=client_id,
|
||||
time=parse_datetime(test_result['date']))
|
||||
tr.save()
|
||||
print (tr.pk)
|
||||
|
||||
|
||||
def onCoverage(self, coverage, topology_id, client_id):
|
||||
@ -605,249 +353,6 @@ class _Persistence(object):
|
||||
persistence = _Persistence()
|
||||
|
||||
|
||||
class _UndoPersistence(object):
|
||||
|
||||
def handle(self, message, topology_id, client_id):
|
||||
message_type = message[0]
|
||||
message_value = message[1]
|
||||
TopologyHistory.objects.filter(topology_id=topology_id,
|
||||
client_id=message_value['sender'],
|
||||
message_id=message_value['message_id']).update(undone=True)
|
||||
handler = getattr(self, "on{0}".format(message_type), None)
|
||||
if handler is not None:
|
||||
handler(message_value, topology_id, client_id)
|
||||
else:
|
||||
logger.warning("Unsupported undo message %s", message_type)
|
||||
|
||||
def onSnapshot(self, snapshot, topology_id, client_id):
|
||||
pass
|
||||
|
||||
def onDeviceCreate(self, device, topology_id, client_id):
|
||||
persistence.onDeviceDestroy(device, topology_id, client_id)
|
||||
|
||||
def onDeviceDestroy(self, device, topology_id, client_id):
|
||||
inverted = device.copy()
|
||||
inverted['type'] = device['previous_type']
|
||||
inverted['name'] = device['previous_name']
|
||||
inverted['x'] = device['previous_x']
|
||||
inverted['y'] = device['previous_y']
|
||||
persistence.onDeviceCreate(inverted, topology_id, client_id)
|
||||
|
||||
def onDeviceMove(self, device, topology_id, client_id):
|
||||
inverted = device.copy()
|
||||
inverted['x'] = device['previous_x']
|
||||
inverted['y'] = device['previous_y']
|
||||
persistence.onDeviceMove(inverted, topology_id, client_id)
|
||||
|
||||
def onDeviceLabelEdit(self, device, topology_id, client_id):
|
||||
inverted = device.copy()
|
||||
inverted['name'] = device['previous_name']
|
||||
persistence.onDeviceLabelEdit(inverted, topology_id, client_id)
|
||||
|
||||
def onLinkCreate(self, link, topology_id, client_id):
|
||||
persistence.onLinkDestroy(link, topology_id, client_id)
|
||||
|
||||
def onLinkDestroy(self, link, topology_id, client_id):
|
||||
persistence.onLinkCreate(link, topology_id, client_id)
|
||||
|
||||
def onDeviceSelected(self, message_value, topology_id, client_id):
|
||||
'Ignore DeviceSelected messages'
|
||||
pass
|
||||
|
||||
def onDeviceUnSelected(self, message_value, topology_id, client_id):
|
||||
'Ignore DeviceSelected messages'
|
||||
pass
|
||||
|
||||
def onUndo(self, message_value, topology_id, client_id):
|
||||
pass
|
||||
|
||||
|
||||
undo_persistence = _UndoPersistence()
|
||||
|
||||
|
||||
class _RedoPersistence(object):
|
||||
|
||||
def handle(self, message, topology_id, client_id):
|
||||
message_type = message[0]
|
||||
message_value = message[1]
|
||||
TopologyHistory.objects.filter(topology_id=topology_id,
|
||||
client_id=message_value['sender'],
|
||||
message_id=message_value['message_id']).update(undone=False)
|
||||
handler_name = "on{0}".format(message_type)
|
||||
handler = getattr(self, handler_name, getattr(persistence, handler_name, None))
|
||||
if handler is not None:
|
||||
handler(message_value, topology_id, client_id)
|
||||
else:
|
||||
logger.warning("Unsupported redo message %s", message_type)
|
||||
|
||||
def onDeviceSelected(self, message_value, topology_id, client_id):
|
||||
'Ignore DeviceSelected messages'
|
||||
pass
|
||||
|
||||
def onDeviceUnSelected(self, message_value, topology_id, client_id):
|
||||
'Ignore DeviceSelected messages'
|
||||
pass
|
||||
|
||||
def onUndo(self, message_value, topology_id, client_id):
|
||||
'Ignore Undo messages'
|
||||
pass
|
||||
|
||||
def onRedo(self, message_value, topology_id, client_id):
|
||||
'Ignore Redo messages'
|
||||
pass
|
||||
|
||||
|
||||
redo_persistence = _RedoPersistence()
|
||||
|
||||
|
||||
class _Discovery(object):
|
||||
|
||||
def handle(self, message):
|
||||
topology_id = message.get('topology')
|
||||
data = json.loads(message['text'])
|
||||
message_type = data[0]
|
||||
message_value = data[1]
|
||||
handler = self.get_handler(message_type)
|
||||
if handler is not None:
|
||||
handler(message_value, topology_id)
|
||||
else:
|
||||
logger.warning("Unsupported discovery message %s", message_type)
|
||||
|
||||
def get_handler(self, message_type):
|
||||
return getattr(self, "on{0}".format(message_type), None)
|
||||
|
||||
def onFacts(self, message, topology_id):
|
||||
send_updates = False
|
||||
logger.info("onFacts message key %s", message['key'])
|
||||
#logger.info("onFacts message %s", pformat(message))
|
||||
device_name = message['key']
|
||||
updates = MultipleMessage('MultipleMessage', [])
|
||||
try:
|
||||
device = Device.objects.get(topology_id=topology_id, name=device_name)
|
||||
except ObjectDoesNotExist:
|
||||
logger.info("onFacts Could not find %s in topology %s", device_name, topology_id)
|
||||
return
|
||||
|
||||
try:
|
||||
interfaces = dpath.util.get(message, '/value/ansible_net_neighbors')
|
||||
logger.info(pformat(interfaces))
|
||||
except KeyError:
|
||||
interfaces = {}
|
||||
logger.info("onFacts %s: ", pformat(interfaces))
|
||||
"""
|
||||
ansible_net_neighbors example:
|
||||
{u'eth1': [{u'host': u'Spine1', u'port': u'eth3'}],
|
||||
u'eth2': [{u'host': u'Spine2', u'port': u'eth3'}],
|
||||
u'eth3': [{u'host': u'Host2', u'port': u'eth1'}]}
|
||||
"""
|
||||
for interface_name, neighbors in interfaces.iteritems():
|
||||
logger.info("interface_name %s neighbors %s", interface_name, neighbors)
|
||||
interface, created = Interface.objects.get_or_create(device_id=device.pk,
|
||||
name=interface_name,
|
||||
defaults=dict(id=0))
|
||||
if created:
|
||||
interface.id = interface.pk
|
||||
interface.save()
|
||||
updates.messages.append(InterfaceCreate('InterfaceCreate',
|
||||
0,
|
||||
interface.device.id,
|
||||
interface.id,
|
||||
interface.name))
|
||||
send_updates = True
|
||||
logger.info("Created interface %s", interface)
|
||||
|
||||
|
||||
for neighbor in neighbors:
|
||||
logger.info("neighbor %s", neighbor)
|
||||
connected_interface = None
|
||||
connected_device = None
|
||||
neighbor_name = neighbor.get('host')
|
||||
if not neighbor_name:
|
||||
continue
|
||||
try:
|
||||
connected_device = Device.objects.get(topology_id=topology_id, name=neighbor_name)
|
||||
except ObjectDoesNotExist:
|
||||
continue
|
||||
|
||||
logger.info("neighbor %s %s", neighbor_name, connected_device.pk)
|
||||
|
||||
remote_interface_name = neighbor.get('port')
|
||||
|
||||
connected_interface, created = Interface.objects.get_or_create(device_id=connected_device.pk,
|
||||
name=remote_interface_name,
|
||||
defaults=dict(id=0))
|
||||
if created:
|
||||
connected_interface.id = connected_interface.pk
|
||||
connected_interface.save()
|
||||
updates.messages.append(InterfaceCreate('InterfaceCreate',
|
||||
0,
|
||||
connected_interface.device.id,
|
||||
connected_interface.id,
|
||||
connected_interface.name))
|
||||
logger.info("Created interface %s", connected_interface)
|
||||
send_updates = True
|
||||
|
||||
if connected_device and connected_interface:
|
||||
exists = Link.objects.filter(Q(from_device_id=device.pk,
|
||||
to_device_id=connected_device.pk,
|
||||
from_interface_id=interface.pk,
|
||||
to_interface_id=connected_interface.pk) |
|
||||
Q(from_device_id=connected_device.pk,
|
||||
to_device_id=device.pk,
|
||||
from_interface_id=connected_interface.pk,
|
||||
to_interface_id=interface.pk)).count() > 0
|
||||
if not exists:
|
||||
link = Link(from_device_id=device.pk,
|
||||
to_device_id=connected_device.pk,
|
||||
from_interface_id=interface.pk,
|
||||
to_interface_id=connected_interface.pk,
|
||||
id=0)
|
||||
|
||||
link.save()
|
||||
link.id = link.pk
|
||||
link.save()
|
||||
updates.messages.append(LinkCreate('LinkCreate',
|
||||
0,
|
||||
link.id,
|
||||
link.name,
|
||||
link.from_device.id,
|
||||
link.to_device.id,
|
||||
link.from_interface.id,
|
||||
link.to_interface.id))
|
||||
logger.info("Created link %s", link)
|
||||
send_updates = True
|
||||
|
||||
if send_updates:
|
||||
logger.info("onFacts send_updates")
|
||||
channel = Group("topology-%s" % topology_id)
|
||||
channel.send({"text": json.dumps([updates.msg_type, to_dict(updates)])})
|
||||
|
||||
|
||||
discovery = _Discovery()
|
||||
|
||||
# Ansible Connection Events
|
||||
|
||||
|
||||
@channel_session
|
||||
def ansible_connect(message):
|
||||
data = urlparse.parse_qs(message.content['query_string'])
|
||||
topology_id = parse_topology_id(data)
|
||||
message.channel_session['topology_id'] = topology_id
|
||||
|
||||
|
||||
@channel_session
|
||||
def ansible_message(message):
|
||||
# Channel('console_printer').send({"text": message['text']})
|
||||
Group("topology-%s" % message.channel_session['topology_id']).send({"text": message['text']})
|
||||
Channel('discovery').send({"text": message['text'],
|
||||
"topology": message.channel_session['topology_id']})
|
||||
|
||||
|
||||
@channel_session
|
||||
def ansible_disconnect(message):
|
||||
pass
|
||||
|
||||
|
||||
# UI Channel Events
|
||||
|
||||
@channel_session
|
||||
@ -856,11 +361,9 @@ def ws_connect(message):
|
||||
data = urlparse.parse_qs(message.content['query_string'])
|
||||
inventory_id = parse_inventory_id(data)
|
||||
topology_ids = list(TopologyInventory.objects.filter(inventory_id=inventory_id).values_list('topology_id', flat=True))
|
||||
print ("topology_ids", topology_ids)
|
||||
topology_id = 0
|
||||
if len(topology_ids) > 0:
|
||||
topology_id = topology_ids[0]
|
||||
print ("topology_id", topology_id)
|
||||
if topology_id:
|
||||
topology = Topology.objects.get(topology_id=topology_id)
|
||||
else:
|
||||
@ -977,8 +480,6 @@ def send_history(channel, topology_id):
|
||||
|
||||
@channel_session
|
||||
def ws_message(message):
|
||||
# Send to debug printer
|
||||
# Channel('console_printer').send({"text": message['text']})
|
||||
# Send to all clients editing the topology
|
||||
Group("topology-%s" % message.channel_session['topology_id']).send({"text": message['text']})
|
||||
# Send to persistence handler
|
||||
@ -992,208 +493,3 @@ def ws_disconnect(message):
|
||||
if 'topology_id' in message.channel_session:
|
||||
Group("topology-%s" % message.channel_session['topology_id']).discard(message.reply_channel)
|
||||
|
||||
|
||||
def console_printer(message):
|
||||
print message['text'] # pragma: no cover
|
||||
|
||||
# Tester channel events
|
||||
|
||||
|
||||
@channel_session
|
||||
def tester_connect(message):
|
||||
data = urlparse.parse_qs(message.content['query_string'])
|
||||
topology_id = parse_topology_id(data)
|
||||
message.channel_session['topology_id'] = topology_id
|
||||
client = Client()
|
||||
client.save()
|
||||
message.channel_session['client_id'] = client.pk
|
||||
message.reply_channel.send({"text": json.dumps(["id", client.pk])})
|
||||
message.reply_channel.send({"text": json.dumps(["topology_id", topology_id])})
|
||||
|
||||
|
||||
@channel_session
|
||||
def tester_message(message):
|
||||
# Channel('console_printer').send({"text": message['text']})
|
||||
Group("topology-%s" % message.channel_session['topology_id']).send({"text": message['text']})
|
||||
Channel('persistence').send({"text": message['text'],
|
||||
"topology": message.channel_session['topology_id'],
|
||||
"client": message.channel_session['client_id']})
|
||||
|
||||
|
||||
@channel_session
|
||||
def tester_disconnect(message):
|
||||
pass
|
||||
|
||||
# Tables UI channel events
|
||||
|
||||
|
||||
def make_sheet(data, column_headers=[]):
|
||||
|
||||
sheet = []
|
||||
|
||||
if len(data):
|
||||
n_columns = max([len(x) for x in data]) - 1
|
||||
else:
|
||||
n_columns = 0
|
||||
|
||||
row_i = 0
|
||||
sheet.append([dict(value=x, editable=False) for x in list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")[0:n_columns]])
|
||||
row_i += 1
|
||||
if column_headers:
|
||||
sheet.append([dict(value=row_i, editable=False)] + [dict(value=x, editable=False) for x in column_headers])
|
||||
row_i += 1
|
||||
for row in data:
|
||||
sheet_row = [dict(value=row_i, editable=False)]
|
||||
row_i += 1
|
||||
sheet_row.extend([dict(value=x, editable=True, col=i, row=row_i) for i, x in enumerate(row[1:])])
|
||||
sheet.append(sheet_row)
|
||||
return sheet
|
||||
|
||||
|
||||
|
||||
def make_bindings(sheet_id, klass, filter_q, values_list, order_by):
|
||||
|
||||
values_list = ['pk'] + values_list
|
||||
data = list(klass.objects.filter(**filter_q).values_list(*values_list).order_by(*order_by))
|
||||
|
||||
data_types = set()
|
||||
|
||||
for row in data:
|
||||
for cell in row:
|
||||
data_types.add(type(cell).__name__)
|
||||
|
||||
data_type_map = dict()
|
||||
|
||||
logger.info(repr(data_types))
|
||||
|
||||
for dt in list(data_types):
|
||||
data_type_map[dt] = DataType.objects.get_or_create(type_name=dt)[0].pk
|
||||
|
||||
logger.info(repr(data_type_map))
|
||||
|
||||
bindings = []
|
||||
|
||||
for row_i, row in enumerate(data):
|
||||
pk = row[0]
|
||||
for col_i, cell in enumerate(row[1:]):
|
||||
field = values_list[col_i + 1]
|
||||
if '__' in field:
|
||||
continue
|
||||
logger.info("make_bindings %s %s %s %s %s %s %s", sheet_id, klass.__name__, pk, col_i, row_i, field, data_type_map[type(cell).__name__])
|
||||
bindings.append(DataBinding.objects.get_or_create(sheet_id=sheet_id,
|
||||
column=col_i,
|
||||
row=row_i,
|
||||
table=klass.__name__,
|
||||
primary_key_id=pk,
|
||||
field=field,
|
||||
data_type_id=data_type_map[type(cell).__name__])[0])
|
||||
return data
|
||||
|
||||
|
||||
|
||||
@channel_session
|
||||
def tables_connect(message):
|
||||
data = urlparse.parse_qs(message.content['query_string'])
|
||||
topology_id = parse_topology_id(data)
|
||||
message.channel_session['topology_id'] = topology_id
|
||||
client = Client()
|
||||
client.save()
|
||||
Group("topology-%s-client-%s" % (topology_id, client.pk)).add(message.reply_channel)
|
||||
message.channel_session['client_id'] = client.pk
|
||||
message.reply_channel.send({"text": json.dumps(["id", client.pk])})
|
||||
message.reply_channel.send({"text": json.dumps(["topology_id", topology_id])})
|
||||
|
||||
device_sheet, _ = DataSheet.objects.get_or_create(topology_id=topology_id, client_id=client.pk, name="Devices")
|
||||
data = make_bindings(device_sheet.pk, Device, dict(topology_id=topology_id), ['name'], ['name'])
|
||||
message.reply_channel.send({"text": json.dumps(["sheet", dict(name="Devices", data=make_sheet(data, ['Device Name']))])})
|
||||
|
||||
interface_sheet, _ = DataSheet.objects.get_or_create(topology_id=topology_id, client_id=client.pk, name="Interfaces")
|
||||
data = make_bindings(interface_sheet.pk, Interface, dict(device__topology_id=topology_id), ['device__name', 'name'], ['device__name', 'name'])
|
||||
message.reply_channel.send({"text": json.dumps(["sheet", dict(name="Interfaces", data=make_sheet(data, ['Device Name', 'Interface Name']))])})
|
||||
|
||||
group_sheet, _ = DataSheet.objects.get_or_create(topology_id=topology_id, client_id=client.pk, name="Groups")
|
||||
data = make_bindings(group_sheet.pk, DeviceGroup, dict(topology_id=topology_id), ['name'], ['name'])
|
||||
message.reply_channel.send({"text": json.dumps(["sheet", dict(name="Groups", data=make_sheet(data, ['Group Name']))])})
|
||||
|
||||
|
||||
def device_label_edit(o):
|
||||
d = transform_dict(dict(name='name',
|
||||
id='id',
|
||||
old_value='previous_name'), o.__dict__)
|
||||
d['msg_type'] = 'DeviceLabelEdit'
|
||||
return ['DeviceLabelEdit', d]
|
||||
|
||||
|
||||
def group_label_edit(o):
|
||||
d = transform_dict(dict(name='name',
|
||||
id='id',
|
||||
old_value='previous_name'), o.__dict__)
|
||||
d['msg_type'] = 'GroupLabelEdit'
|
||||
return ['GroupLabelEdit', d]
|
||||
|
||||
|
||||
def interface_label_edit(o):
|
||||
d = o.__dict__
|
||||
d['device_id'] = o.device.id
|
||||
d = transform_dict(dict(name='name',
|
||||
id='id',
|
||||
device_id='device_id',
|
||||
old_value='previous_name'), o.__dict__)
|
||||
d['msg_type'] = 'InterfaceLabelEdit'
|
||||
return ['InterfaceLabelEdit', d]
|
||||
|
||||
|
||||
@channel_session
|
||||
def tables_message(message):
|
||||
data = json.loads(message['text'])
|
||||
logger.info(data[0])
|
||||
logger.info(data[1])
|
||||
|
||||
data_type_mapping = {'unicode': unicode,
|
||||
'int': int}
|
||||
|
||||
|
||||
table_mapping = {'Device': Device,
|
||||
'Interface': Interface,
|
||||
'Group': DeviceGroup}
|
||||
|
||||
|
||||
transformation_mapping = {('Device', 'name'): device_label_edit,
|
||||
('Interface', 'name'): interface_label_edit,
|
||||
('Group', 'name'): group_label_edit}
|
||||
|
||||
|
||||
if data[0] == "TableCellEdit":
|
||||
|
||||
topology_id = message.channel_session['topology_id']
|
||||
group_channel = Group("topology-%s" % topology_id)
|
||||
client_id = message.channel_session['client_id']
|
||||
data_sheet = DataSheet.objects.get(topology_id=topology_id, client_id=client_id, name=data[1]['sheet']).pk
|
||||
logger.info("DataSheet %s", data_sheet)
|
||||
|
||||
data_bindings = DataBinding.objects.filter(sheet_id=data_sheet,
|
||||
column=data[1]['col'] - 1,
|
||||
row=data[1]['row'] - 2)
|
||||
|
||||
logger.info("Found %s bindings", data_bindings.count())
|
||||
logger.info(repr(data_bindings.values('table', 'data_type__type_name', 'field', 'primary_key_id')))
|
||||
|
||||
for table, data_type, field, pk in data_bindings.values_list('table', 'data_type__type_name', 'field', 'primary_key_id'):
|
||||
new_value = data_type_mapping[data_type](data[1]['new_value'])
|
||||
old_value = data_type_mapping[data_type](data[1]['old_value'])
|
||||
logger.info("Updating %s", table_mapping[table].objects.filter(pk=pk).values())
|
||||
table_mapping[table].objects.filter(pk=pk).update(**{field: new_value})
|
||||
logger.info("Updated %s", table_mapping[table].objects.filter(pk=pk).count())
|
||||
|
||||
for o in table_mapping[table].objects.filter(pk=pk):
|
||||
o.old_value = old_value
|
||||
message = transformation_mapping[(table, field)](o)
|
||||
message[1]['sender'] = 0
|
||||
logger.info("Sending %r", message)
|
||||
group_channel.send({"text": json.dumps(message)})
|
||||
|
||||
|
||||
|
||||
@channel_session
|
||||
def tables_disconnect(message):
|
||||
pass
|
||||
|
||||
@ -1,526 +0,0 @@
|
||||
app: awx.network_ui
|
||||
external_models: []
|
||||
models:
|
||||
- api: true
|
||||
display: name
|
||||
fields:
|
||||
- name: device_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: topology
|
||||
ref: Topology
|
||||
ref_field: topology_id
|
||||
type: ForeignKey
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
- name: x
|
||||
type: IntegerField
|
||||
- name: y
|
||||
type: IntegerField
|
||||
- name: id
|
||||
type: IntegerField
|
||||
- len: 200
|
||||
name: type
|
||||
type: CharField
|
||||
- default: 0
|
||||
name: interface_id_seq
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: process_id_seq
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: host_id
|
||||
type: IntegerField
|
||||
name: Device
|
||||
topology_id_query: topology_id
|
||||
x: 348
|
||||
y: 124
|
||||
- api: true
|
||||
create_transform:
|
||||
from_device__id: from_device_id
|
||||
from_interface__id: from_interface_id
|
||||
id: id
|
||||
name: name
|
||||
to_device__id: to_device_id
|
||||
to_interface__id: to_interface_id
|
||||
fields:
|
||||
- name: link_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: from_device
|
||||
ref: Device
|
||||
ref_field: device_id
|
||||
related_name: from_link
|
||||
type: ForeignKey
|
||||
- name: to_device
|
||||
ref: Device
|
||||
ref_field: device_id
|
||||
related_name: to_link
|
||||
type: ForeignKey
|
||||
- name: from_interface
|
||||
ref: Interface
|
||||
ref_field: interface_id
|
||||
related_name: from_link
|
||||
type: ForeignKey
|
||||
- name: to_interface
|
||||
ref: Interface
|
||||
ref_field: interface_id
|
||||
related_name: to_link
|
||||
type: ForeignKey
|
||||
- name: id
|
||||
type: IntegerField
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
name: Link
|
||||
topology_id_query: from_device__topology_id
|
||||
x: 837
|
||||
y: 10
|
||||
- api: true
|
||||
display: name
|
||||
fields:
|
||||
- name: topology_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
- name: scale
|
||||
type: FloatField
|
||||
- name: panX
|
||||
type: FloatField
|
||||
- name: panY
|
||||
type: FloatField
|
||||
- default: 0
|
||||
name: device_id_seq
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: link_id_seq
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: group_id_seq
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: stream_id_seq
|
||||
type: IntegerField
|
||||
name: Topology
|
||||
topology_id_query: topology_id
|
||||
x: 111
|
||||
y: 127
|
||||
- fields:
|
||||
- name: client_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
name: Client
|
||||
x: -518
|
||||
y: 138
|
||||
- fields:
|
||||
- name: topology_history_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: topology
|
||||
ref: Topology
|
||||
ref_field: topology_id
|
||||
type: ForeignKey
|
||||
- name: client
|
||||
ref: Client
|
||||
ref_field: client_id
|
||||
type: ForeignKey
|
||||
- name: message_type
|
||||
ref: MessageType
|
||||
ref_field: message_type_id
|
||||
type: ForeignKey
|
||||
- name: message_id
|
||||
type: IntegerField
|
||||
- name: message_data
|
||||
type: TextField
|
||||
- default: false
|
||||
name: undone
|
||||
type: BooleanField
|
||||
name: TopologyHistory
|
||||
x: -205
|
||||
y: 282
|
||||
- display: name
|
||||
fields:
|
||||
- name: message_type_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
name: MessageType
|
||||
x: -501
|
||||
y: 428
|
||||
- api: true
|
||||
create_transform:
|
||||
device__id: device_id
|
||||
id: id
|
||||
name: name
|
||||
display: name
|
||||
fields:
|
||||
- name: interface_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: device
|
||||
ref: Device
|
||||
ref_field: device_id
|
||||
type: ForeignKey
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
- name: id
|
||||
type: IntegerField
|
||||
name: Interface
|
||||
topology_id_query: device__topology_id
|
||||
x: 1157
|
||||
y: 337
|
||||
- api: true
|
||||
fields:
|
||||
- name: group_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: id
|
||||
type: IntegerField
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
- name: x1
|
||||
type: IntegerField
|
||||
- name: y1
|
||||
type: IntegerField
|
||||
- name: x2
|
||||
type: IntegerField
|
||||
- name: y2
|
||||
type: IntegerField
|
||||
- name: topology
|
||||
ref: Topology
|
||||
ref_field: topology_id
|
||||
type: ForeignKey
|
||||
- len: 200
|
||||
name: type
|
||||
type: CharField
|
||||
name: Group
|
||||
topology_id_query: topology_id
|
||||
x: 407
|
||||
y: -379
|
||||
- api: true
|
||||
fields:
|
||||
- name: group_device_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: group
|
||||
ref: Group
|
||||
ref_field: group_id
|
||||
type: ForeignKey
|
||||
- name: device
|
||||
ref: Device
|
||||
ref_field: device_id
|
||||
type: ForeignKey
|
||||
name: GroupDevice
|
||||
topology_id_query: group__topology_id
|
||||
x: 739
|
||||
y: -234
|
||||
- fields:
|
||||
- name: data_binding_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: column
|
||||
type: IntegerField
|
||||
- name: row
|
||||
type: IntegerField
|
||||
- len: 200
|
||||
name: table
|
||||
type: CharField
|
||||
- name: primary_key_id
|
||||
type: IntegerField
|
||||
- len: 200
|
||||
name: field
|
||||
type: CharField
|
||||
- name: data_type
|
||||
ref: DataType
|
||||
ref_field: data_type_id
|
||||
type: ForeignKey
|
||||
- name: sheet
|
||||
ref: DataSheet
|
||||
ref_field: data_sheet_id
|
||||
type: ForeignKey
|
||||
name: DataBinding
|
||||
x: -515
|
||||
y: -370
|
||||
- fields:
|
||||
- name: data_type_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 200
|
||||
name: type_name
|
||||
type: CharField
|
||||
name: DataType
|
||||
x: -782
|
||||
y: -172
|
||||
- fields:
|
||||
- name: data_sheet_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
- name: topology
|
||||
ref: Topology
|
||||
ref_field: topology_id
|
||||
type: ForeignKey
|
||||
- name: client
|
||||
ref: Client
|
||||
ref_field: client_id
|
||||
type: ForeignKey
|
||||
name: DataSheet
|
||||
x: -207
|
||||
y: -282
|
||||
- api: true
|
||||
fields:
|
||||
- name: stream_id
|
||||
pk: true
|
||||
ref: Stream
|
||||
ref_field: stream_id
|
||||
type: AutoField
|
||||
- name: from_device
|
||||
ref: Device
|
||||
ref_field: device_id
|
||||
related_name: from_stream
|
||||
type: ForeignKey
|
||||
- name: to_device
|
||||
ref: Device
|
||||
ref_field: device_id
|
||||
related_name: to_stream
|
||||
type: ForeignKey
|
||||
- len: 200
|
||||
name: label
|
||||
type: CharField
|
||||
- default: 0
|
||||
name: id
|
||||
type: IntegerField
|
||||
name: Stream
|
||||
topology_id_query: from_device__topology_id
|
||||
x: 709
|
||||
y: 527
|
||||
- api: true
|
||||
fields:
|
||||
- name: process_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: device
|
||||
ref: Device
|
||||
ref_field: device_id
|
||||
type: ForeignKey
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
- len: 200
|
||||
name: type
|
||||
type: CharField
|
||||
- default: 0
|
||||
name: id
|
||||
type: IntegerField
|
||||
name: Process
|
||||
topology_id_query: device__topology_id
|
||||
x: 654
|
||||
y: 778
|
||||
- api: true
|
||||
fields:
|
||||
- name: toolbox_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 200
|
||||
name: name
|
||||
type: CharField
|
||||
name: Toolbox
|
||||
x: 179
|
||||
y: 644
|
||||
- api: true
|
||||
fields:
|
||||
- name: toolbox_item_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: toolbox
|
||||
ref: Toolbox
|
||||
ref_field: toolbox_id
|
||||
type: ForeignKey
|
||||
- name: data
|
||||
type: TextField
|
||||
name: ToolboxItem
|
||||
x: 391
|
||||
y: 645
|
||||
- fields:
|
||||
- name: fsm_trace_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 200
|
||||
name: fsm_name
|
||||
type: CharField
|
||||
- len: 200
|
||||
name: from_state
|
||||
type: CharField
|
||||
- len: 200
|
||||
name: to_state
|
||||
type: CharField
|
||||
- len: 200
|
||||
name: message_type
|
||||
type: CharField
|
||||
- name: client
|
||||
ref: Client
|
||||
ref_field: client_id
|
||||
type: ForeignKey
|
||||
- default: 0
|
||||
name: trace_session_id
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: order
|
||||
type: IntegerField
|
||||
name: FSMTrace
|
||||
x: -872
|
||||
y: 507
|
||||
- api: true
|
||||
fields:
|
||||
- name: topology_inventory_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: topology
|
||||
ref: Topology
|
||||
ref_field: topology_id
|
||||
type: ForeignKey
|
||||
- name: inventory_id
|
||||
type: IntegerField
|
||||
name: TopologyInventory
|
||||
topology_id_query: topology_id
|
||||
x: -226
|
||||
y: -19
|
||||
- fields:
|
||||
- name: event_trace_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: client
|
||||
ref: Client
|
||||
ref_field: client_id
|
||||
type: ForeignKey
|
||||
- default: 0
|
||||
name: trace_session_id
|
||||
type: IntegerField
|
||||
- name: event_data
|
||||
type: TextField
|
||||
- name: message_id
|
||||
type: IntegerField
|
||||
name: EventTrace
|
||||
x: -1087
|
||||
y: 202
|
||||
- fields:
|
||||
- name: coverage_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: coverage_data
|
||||
type: TextField
|
||||
- name: test_result
|
||||
ref: TestResult
|
||||
ref_field: test_result_id
|
||||
type: ForeignKey
|
||||
name: Coverage
|
||||
x: -1068
|
||||
y: -4
|
||||
- fields:
|
||||
- name: topology_snapshot_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: client
|
||||
ref: Client
|
||||
ref_field: client_id
|
||||
type: ForeignKey
|
||||
- name: topology_id
|
||||
type: IntegerField
|
||||
- name: trace_session_id
|
||||
type: IntegerField
|
||||
- name: snapshot_data
|
||||
ref: TopologySnapshot
|
||||
ref_field: snapshot_data
|
||||
type: TextField
|
||||
- name: order
|
||||
type: IntegerField
|
||||
name: TopologySnapshot
|
||||
x: -1123
|
||||
y: -277
|
||||
- fields:
|
||||
- name: test_case_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 200
|
||||
name: name
|
||||
ref: TestCase
|
||||
ref_field: name
|
||||
type: CharField
|
||||
- name: test_case_data
|
||||
type: TextField
|
||||
name: TestCase
|
||||
x: -1642
|
||||
y: -38
|
||||
- fields:
|
||||
- name: result_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- len: 20
|
||||
name: name
|
||||
type: CharField
|
||||
name: Result
|
||||
x: -1610
|
||||
y: 120
|
||||
- fields:
|
||||
- name: code_under_test_id
|
||||
pk: true
|
||||
ref: CodeUnderTest
|
||||
ref_field: code_under_test_id
|
||||
type: AutoField
|
||||
- name: version_x
|
||||
type: IntegerField
|
||||
- name: version_y
|
||||
type: IntegerField
|
||||
- name: version_z
|
||||
type: IntegerField
|
||||
- name: commits_since
|
||||
type: IntegerField
|
||||
- len: 40
|
||||
name: commit_hash
|
||||
type: CharField
|
||||
name: CodeUnderTest
|
||||
x: -1612
|
||||
y: 259
|
||||
- fields:
|
||||
- name: test_result_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
- name: test_case
|
||||
ref: TestCase
|
||||
ref_field: test_case_id
|
||||
type: ForeignKey
|
||||
- name: result
|
||||
ref: Result
|
||||
ref_field: result_id
|
||||
type: ForeignKey
|
||||
- name: code_under_test
|
||||
ref: CodeUnderTest
|
||||
ref_field: code_under_test_id
|
||||
type: ForeignKey
|
||||
- name: time
|
||||
type: DateTimeField
|
||||
- default: 0
|
||||
name: id
|
||||
type: IntegerField
|
||||
- name: client
|
||||
ref: Client
|
||||
ref_field: client_id
|
||||
type: ForeignKey
|
||||
name: TestResult
|
||||
x: -1336
|
||||
y: -49
|
||||
modules: []
|
||||
view:
|
||||
panX: 213.729555519212
|
||||
panY: 189.446959094643
|
||||
scaleXY: 0.69
|
||||
|
||||
@ -1 +0,0 @@
|
||||
#---- create_device
|
||||
@ -1 +0,0 @@
|
||||
#---- create_group
|
||||
@ -1 +0,0 @@
|
||||
#---- create_groupdevice
|
||||
@ -1 +0,0 @@
|
||||
#---- create_interface
|
||||
@ -1 +0,0 @@
|
||||
#---- create_link
|
||||
@ -1 +0,0 @@
|
||||
#---- create_process
|
||||
@ -1 +0,0 @@
|
||||
#---- create_stream
|
||||
@ -1 +0,0 @@
|
||||
#---- create_toolbox
|
||||
@ -1 +0,0 @@
|
||||
#---- create_toolboxitem
|
||||
@ -1 +0,0 @@
|
||||
#---- create_topology
|
||||
@ -1 +0,0 @@
|
||||
#---- create_topologyinventory
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_device
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_group
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_groupdevice
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_interface
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_link
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_process
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_stream
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_toolbox
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_toolboxitem
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_topology
|
||||
@ -1 +0,0 @@
|
||||
#---- delete_topologyinventory
|
||||
@ -1 +0,0 @@
|
||||
#---- get_device
|
||||
@ -1 +0,0 @@
|
||||
#---- get_group
|
||||
@ -1 +0,0 @@
|
||||
#---- get_groupdevice
|
||||
@ -1 +0,0 @@
|
||||
#---- get_interface
|
||||
@ -1 +0,0 @@
|
||||
#---- get_link
|
||||
@ -1 +0,0 @@
|
||||
#---- get_process
|
||||
@ -1 +0,0 @@
|
||||
#---- get_stream
|
||||
@ -1 +0,0 @@
|
||||
#---- get_toolbox
|
||||
@ -1 +0,0 @@
|
||||
#---- get_toolboxitem
|
||||
@ -1 +0,0 @@
|
||||
#---- get_topology
|
||||
@ -1 +0,0 @@
|
||||
#---- get_topologyinventory
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user