mirror of
https://github.com/ansible/awx.git
synced 2026-01-13 02:50:02 -03:30
Adds an API for network UI, action plugins, and API client
* Adds a simple DRF API for network-ui * Moves network_ui api to v1_api * Uses BaseSerializer for networking v1 api * Adds v2 of the network API * Uses standard AWX base classes for the network UI API * Adds canvas prefix to network UI api URL names * Adds ansible action plugins for automating network UI workflows * Adds python client for the networking visualization API
This commit is contained in:
parent
2736aecfb2
commit
00a9283e32
@ -1,8 +1,12 @@
|
||||
|
||||
|
||||
.PHONY: all models admin
|
||||
.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: models admin
|
||||
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
|
||||
@ -11,3 +15,106 @@ models:
|
||||
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
|
||||
|
||||
|
||||
61
awx/network_ui/action_plugins/create_device.py
Normal file
61
awx/network_ui/action_plugins/create_device.py
Normal file
@ -0,0 +1,61 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('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,
|
||||
type=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
|
||||
58
awx/network_ui/action_plugins/create_group.py
Normal file
58
awx/network_ui/action_plugins/create_group.py
Normal file
@ -0,0 +1,58 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('type', None)
|
||||
|
||||
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,
|
||||
type=type,
|
||||
)),
|
||||
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
|
||||
46
awx/network_ui/action_plugins/create_groupdevice.py
Normal file
46
awx/network_ui/action_plugins/create_groupdevice.py
Normal file
@ -0,0 +1,46 @@
|
||||
#---- 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
|
||||
48
awx/network_ui/action_plugins/create_interface.py
Normal file
48
awx/network_ui/action_plugins/create_interface.py
Normal file
@ -0,0 +1,48 @@
|
||||
#---- 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
|
||||
54
awx/network_ui/action_plugins/create_link.py
Normal file
54
awx/network_ui/action_plugins/create_link.py
Normal file
@ -0,0 +1,54 @@
|
||||
#---- 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
|
||||
51
awx/network_ui/action_plugins/create_process.py
Normal file
51
awx/network_ui/action_plugins/create_process.py
Normal file
@ -0,0 +1,51 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('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,
|
||||
type=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
|
||||
51
awx/network_ui/action_plugins/create_stream.py
Normal file
51
awx/network_ui/action_plugins/create_stream.py
Normal file
@ -0,0 +1,51 @@
|
||||
#---- 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
|
||||
44
awx/network_ui/action_plugins/create_toolbox.py
Normal file
44
awx/network_ui/action_plugins/create_toolbox.py
Normal file
@ -0,0 +1,44 @@
|
||||
#---- 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
|
||||
46
awx/network_ui/action_plugins/create_toolboxitem.py
Normal file
46
awx/network_ui/action_plugins/create_toolboxitem.py
Normal file
@ -0,0 +1,46 @@
|
||||
#---- 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
|
||||
59
awx/network_ui/action_plugins/create_topology.py
Normal file
59
awx/network_ui/action_plugins/create_topology.py
Normal file
@ -0,0 +1,59 @@
|
||||
#---- 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
|
||||
46
awx/network_ui/action_plugins/create_topologyinventory.py
Normal file
46
awx/network_ui/action_plugins/create_topologyinventory.py
Normal file
@ -0,0 +1,46 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_device.py
Normal file
29
awx/network_ui/action_plugins/delete_device.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_group.py
Normal file
29
awx/network_ui/action_plugins/delete_group.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_groupdevice.py
Normal file
29
awx/network_ui/action_plugins/delete_groupdevice.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_interface.py
Normal file
29
awx/network_ui/action_plugins/delete_interface.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_link.py
Normal file
29
awx/network_ui/action_plugins/delete_link.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_process.py
Normal file
29
awx/network_ui/action_plugins/delete_process.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_stream.py
Normal file
29
awx/network_ui/action_plugins/delete_stream.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_toolbox.py
Normal file
29
awx/network_ui/action_plugins/delete_toolbox.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_toolboxitem.py
Normal file
29
awx/network_ui/action_plugins/delete_toolboxitem.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_topology.py
Normal file
29
awx/network_ui/action_plugins/delete_topology.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
29
awx/network_ui/action_plugins/delete_topologyinventory.py
Normal file
29
awx/network_ui/action_plugins/delete_topologyinventory.py
Normal file
@ -0,0 +1,29 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_device.py
Normal file
32
awx/network_ui/action_plugins/get_device.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_group.py
Normal file
32
awx/network_ui/action_plugins/get_group.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_groupdevice.py
Normal file
32
awx/network_ui/action_plugins/get_groupdevice.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_interface.py
Normal file
32
awx/network_ui/action_plugins/get_interface.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_link.py
Normal file
32
awx/network_ui/action_plugins/get_link.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_process.py
Normal file
32
awx/network_ui/action_plugins/get_process.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_stream.py
Normal file
32
awx/network_ui/action_plugins/get_stream.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_toolbox.py
Normal file
32
awx/network_ui/action_plugins/get_toolbox.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_toolboxitem.py
Normal file
32
awx/network_ui/action_plugins/get_toolboxitem.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_topology.py
Normal file
32
awx/network_ui/action_plugins/get_topology.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
32
awx/network_ui/action_plugins/get_topologyinventory.py
Normal file
32
awx/network_ui/action_plugins/get_topologyinventory.py
Normal file
@ -0,0 +1,32 @@
|
||||
#---- 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
|
||||
57
awx/network_ui/action_plugins/list_device.py
Normal file
57
awx/network_ui/action_plugins/list_device.py
Normal file
@ -0,0 +1,57 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('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,
|
||||
type=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
|
||||
55
awx/network_ui/action_plugins/list_group.py
Normal file
55
awx/network_ui/action_plugins/list_group.py
Normal file
@ -0,0 +1,55 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('type', None)
|
||||
|
||||
filter_data = dict(group_id=group_id,
|
||||
id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
)
|
||||
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
|
||||
43
awx/network_ui/action_plugins/list_groupdevice.py
Normal file
43
awx/network_ui/action_plugins/list_groupdevice.py
Normal file
@ -0,0 +1,43 @@
|
||||
#---- 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
|
||||
45
awx/network_ui/action_plugins/list_interface.py
Normal file
45
awx/network_ui/action_plugins/list_interface.py
Normal file
@ -0,0 +1,45 @@
|
||||
#---- 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
|
||||
51
awx/network_ui/action_plugins/list_link.py
Normal file
51
awx/network_ui/action_plugins/list_link.py
Normal file
@ -0,0 +1,51 @@
|
||||
#---- 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
|
||||
47
awx/network_ui/action_plugins/list_process.py
Normal file
47
awx/network_ui/action_plugins/list_process.py
Normal file
@ -0,0 +1,47 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('type', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
filter_data = dict(process_id=process_id,
|
||||
device=device,
|
||||
name=name,
|
||||
type=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
|
||||
47
awx/network_ui/action_plugins/list_stream.py
Normal file
47
awx/network_ui/action_plugins/list_stream.py
Normal file
@ -0,0 +1,47 @@
|
||||
#---- 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
|
||||
41
awx/network_ui/action_plugins/list_toolbox.py
Normal file
41
awx/network_ui/action_plugins/list_toolbox.py
Normal file
@ -0,0 +1,41 @@
|
||||
#---- 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
|
||||
43
awx/network_ui/action_plugins/list_toolboxitem.py
Normal file
43
awx/network_ui/action_plugins/list_toolboxitem.py
Normal file
@ -0,0 +1,43 @@
|
||||
#---- 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
|
||||
55
awx/network_ui/action_plugins/list_topology.py
Normal file
55
awx/network_ui/action_plugins/list_topology.py
Normal file
@ -0,0 +1,55 @@
|
||||
#---- 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
|
||||
43
awx/network_ui/action_plugins/list_topologyinventory.py
Normal file
43
awx/network_ui/action_plugins/list_topologyinventory.py
Normal file
@ -0,0 +1,43 @@
|
||||
#---- 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
|
||||
56
awx/network_ui/action_plugins/update_device.py
Normal file
56
awx/network_ui/action_plugins/update_device.py
Normal file
@ -0,0 +1,56 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('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,
|
||||
type=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
|
||||
54
awx/network_ui/action_plugins/update_group.py
Normal file
54
awx/network_ui/action_plugins/update_group.py
Normal file
@ -0,0 +1,54 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('type', 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,
|
||||
type=type,
|
||||
)
|
||||
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
|
||||
42
awx/network_ui/action_plugins/update_groupdevice.py
Normal file
42
awx/network_ui/action_plugins/update_groupdevice.py
Normal file
@ -0,0 +1,42 @@
|
||||
#---- 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
|
||||
44
awx/network_ui/action_plugins/update_interface.py
Normal file
44
awx/network_ui/action_plugins/update_interface.py
Normal file
@ -0,0 +1,44 @@
|
||||
#---- 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
|
||||
50
awx/network_ui/action_plugins/update_link.py
Normal file
50
awx/network_ui/action_plugins/update_link.py
Normal file
@ -0,0 +1,50 @@
|
||||
#---- 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
|
||||
46
awx/network_ui/action_plugins/update_process.py
Normal file
46
awx/network_ui/action_plugins/update_process.py
Normal file
@ -0,0 +1,46 @@
|
||||
#---- 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)
|
||||
type = self._task.args.get('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,
|
||||
type=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
|
||||
46
awx/network_ui/action_plugins/update_stream.py
Normal file
46
awx/network_ui/action_plugins/update_stream.py
Normal file
@ -0,0 +1,46 @@
|
||||
#---- 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
|
||||
40
awx/network_ui/action_plugins/update_toolbox.py
Normal file
40
awx/network_ui/action_plugins/update_toolbox.py
Normal file
@ -0,0 +1,40 @@
|
||||
#---- 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
|
||||
42
awx/network_ui/action_plugins/update_toolboxitem.py
Normal file
42
awx/network_ui/action_plugins/update_toolboxitem.py
Normal file
@ -0,0 +1,42 @@
|
||||
#---- 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
|
||||
54
awx/network_ui/action_plugins/update_topology.py
Normal file
54
awx/network_ui/action_plugins/update_topology.py
Normal file
@ -0,0 +1,54 @@
|
||||
#---- 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
|
||||
42
awx/network_ui/action_plugins/update_topologyinventory.py
Normal file
42
awx/network_ui/action_plugins/update_topologyinventory.py
Normal file
@ -0,0 +1,42 @@
|
||||
#---- 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
|
||||
@ -69,7 +69,7 @@ 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 = ('group_id_seq',)
|
||||
raw_id_fields = ()
|
||||
|
||||
|
||||
admin.site.register(Topology, TopologyAdmin)
|
||||
|
||||
3
awx/network_ui/client/README.md
Normal file
3
awx/network_ui/client/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
API client for the networking visualization.
|
||||
|
||||
|
||||
11
awx/network_ui/client/conf.py
Normal file
11
awx/network_ui/client/conf.py
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
class _Settings(object):
|
||||
|
||||
def __init__(self):
|
||||
self.SERVER = 'https://meganuke:8043'
|
||||
self.SSL_VERIFY = False
|
||||
self.user = None
|
||||
self.password = None
|
||||
|
||||
|
||||
settings = _Settings()
|
||||
94
awx/network_ui/client/networking_visualization_client.py
Executable file
94
awx/network_ui/client/networking_visualization_client.py
Executable file
@ -0,0 +1,94 @@
|
||||
#!/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:]))
|
||||
|
||||
3
awx/network_ui/client/requirements.txt
Normal file
3
awx/network_ui/client/requirements.txt
Normal file
@ -0,0 +1,3 @@
|
||||
docopt
|
||||
requests
|
||||
pyyaml
|
||||
27
awx/network_ui/client/util.py
Normal file
27
awx/network_ui/client/util.py
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
|
||||
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
|
||||
586
awx/network_ui/client/v1_api_client.py
Normal file
586
awx/network_ui/client/v1_api_client.py
Normal file
@ -0,0 +1,586 @@
|
||||
|
||||
import requests
|
||||
|
||||
import util
|
||||
import json
|
||||
from collections import namedtuple
|
||||
|
||||
|
||||
Device = namedtuple('Device', ['device_id',
|
||||
'topology',
|
||||
'name',
|
||||
'x',
|
||||
'y',
|
||||
'id',
|
||||
'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',
|
||||
'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',
|
||||
'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, 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,
|
||||
type=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, 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,
|
||||
type=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, type,):
|
||||
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,
|
||||
type=type,
|
||||
)),
|
||||
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, type=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
)
|
||||
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, 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,
|
||||
type=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, type=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
type=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
|
||||
500
awx/network_ui/client/v2_api_client.py
Normal file
500
awx/network_ui/client/v2_api_client.py
Normal file
@ -0,0 +1,500 @@
|
||||
|
||||
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, 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,
|
||||
type=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, 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,
|
||||
type=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, type,):
|
||||
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,
|
||||
type=type,
|
||||
)),
|
||||
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, type=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(id=id,
|
||||
name=name,
|
||||
x1=x1,
|
||||
y1=y1,
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
)
|
||||
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, 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,
|
||||
type=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, type=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
type=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
|
||||
66
awx/network_ui/designs/api.yml
Normal file
66
awx/network_ui/designs/api.yml
Normal file
@ -0,0 +1,66 @@
|
||||
models:
|
||||
- name: Device
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/device/
|
||||
v2_end_point: /api/v2/canvas/device/
|
||||
topology_id_query: topology_id
|
||||
v2_lookup_field: host_id
|
||||
- name: Link
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/link/
|
||||
v2_end_point: /api/v2/canvas/link/
|
||||
topology_id_query: from_device__topology_id
|
||||
create_transform:
|
||||
id: id
|
||||
name: name
|
||||
from_device__id: from_device_id
|
||||
from_interface__id: from_interface_id
|
||||
to_device__id: to_device_id
|
||||
to_interface__id: to_interface_id
|
||||
- name: Interface
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/interface/
|
||||
v2_end_point: /api/v2/canvas/interface/
|
||||
topology_id_query: device__topology_id
|
||||
create_transform:
|
||||
id: id
|
||||
name: name
|
||||
device__id: device_id
|
||||
- name: Group
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/group/
|
||||
v2_end_point: /api/v2/canvas/group/
|
||||
topology_id_query: topology_id
|
||||
- name: GroupDevice
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/groupdevice/
|
||||
v2_end_point: /api/v2/canvas/groupdevice/
|
||||
topology_id_query: group__topology_id
|
||||
- name: Topology
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/topology/
|
||||
v2_end_point: /api/v2/canvas/topology/
|
||||
topology_id_query: topology_id
|
||||
- name: TopologyInventory
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/topologyinventory/
|
||||
v2_end_point: /api/v2/canvas/topologyinventory/
|
||||
topology_id_query: topology_id
|
||||
- name: Toolbox
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/toolbox/
|
||||
v2_end_point: /api/v2/canvas/toolbox/
|
||||
- name: ToolboxItem
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/toolboxitem/
|
||||
v2_end_point: /api/v2/canvas/toolboxitem/
|
||||
- name: Stream
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/stream/
|
||||
v2_end_point: /api/v2/canvas/stream/
|
||||
topology_id_query: from_device__topology_id
|
||||
- name: Process
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/process/
|
||||
v2_end_point: /api/v2/canvas/process/
|
||||
topology_id_query: device__topology_id
|
||||
49
awx/network_ui/designs/merge_design.py
Executable file
49
awx/network_ui/designs/merge_design.py
Executable file
@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Usage:
|
||||
merge_yaml [options] <a> <b>
|
||||
|
||||
Options:
|
||||
-h, --help Show this page
|
||||
--debug Show debug logging
|
||||
--verbose Show verbose logging
|
||||
"""
|
||||
from docopt import docopt
|
||||
import logging
|
||||
import sys
|
||||
import yaml
|
||||
|
||||
logger = logging.getLogger('merge_yaml')
|
||||
|
||||
|
||||
def main(args=None):
|
||||
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)
|
||||
|
||||
with open(parsed_args['<a>']) as f:
|
||||
a = yaml.load(f.read())
|
||||
with open(parsed_args['<b>']) as f:
|
||||
b = yaml.load(f.read())
|
||||
|
||||
a_models = {x['name']: x for x in a.get('models', [])}
|
||||
for model in b.get('models', []):
|
||||
for key, value in model.iteritems():
|
||||
a_models[model['name']][key] = value
|
||||
|
||||
|
||||
print (yaml.safe_dump(a, default_flow_style=False))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
app: awx.network_ui
|
||||
external_models: []
|
||||
models:
|
||||
- display: name
|
||||
- api: true
|
||||
display: name
|
||||
end_point: /network_ui/api/v1/device/
|
||||
fields:
|
||||
- name: device_id
|
||||
pk: true
|
||||
@ -32,9 +34,21 @@ models:
|
||||
name: host_id
|
||||
type: IntegerField
|
||||
name: Device
|
||||
topology_id_query: topology_id
|
||||
v1_end_point: /network_ui/api/v1/device/
|
||||
v2_end_point: /api/v2/canvas/device/
|
||||
v2_lookup_field: host_id
|
||||
x: 348
|
||||
y: 124
|
||||
- fields:
|
||||
- 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
|
||||
@ -64,9 +78,14 @@ models:
|
||||
name: name
|
||||
type: CharField
|
||||
name: Link
|
||||
topology_id_query: from_device__topology_id
|
||||
v1_end_point: /network_ui/api/v1/link/
|
||||
v2_end_point: /api/v2/canvas/link/
|
||||
x: 837
|
||||
y: 10
|
||||
- display: name
|
||||
- api: true
|
||||
display: name
|
||||
end_point: /network_ui/api/v1/topology/
|
||||
fields:
|
||||
- name: topology_id
|
||||
pk: true
|
||||
@ -88,13 +107,14 @@ models:
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: group_id_seq
|
||||
ref: Topology
|
||||
ref_field: group_id_seq
|
||||
type: IntegerField
|
||||
- default: 0
|
||||
name: stream_id_seq
|
||||
type: IntegerField
|
||||
name: Topology
|
||||
topology_id_query: topology_id
|
||||
v1_end_point: /network_ui/api/v1/topology/
|
||||
v2_end_point: /api/v2/canvas/topology/
|
||||
x: 111
|
||||
y: 127
|
||||
- fields:
|
||||
@ -141,7 +161,13 @@ models:
|
||||
name: MessageType
|
||||
x: -501
|
||||
y: 428
|
||||
- display: name
|
||||
- api: true
|
||||
create_transform:
|
||||
device__id: device_id
|
||||
id: id
|
||||
name: name
|
||||
display: name
|
||||
end_point: /network_ui/api/v1/interface/
|
||||
fields:
|
||||
- name: interface_id
|
||||
pk: true
|
||||
@ -156,9 +182,14 @@ models:
|
||||
- name: id
|
||||
type: IntegerField
|
||||
name: Interface
|
||||
topology_id_query: device__topology_id
|
||||
v1_end_point: /network_ui/api/v1/interface/
|
||||
v2_end_point: /api/v2/canvas/interface/
|
||||
x: 1157
|
||||
y: 337
|
||||
- fields:
|
||||
- api: true
|
||||
end_point: /network_ui/api/v1/group/
|
||||
fields:
|
||||
- name: group_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
@ -183,9 +214,14 @@ models:
|
||||
name: type
|
||||
type: CharField
|
||||
name: Group
|
||||
topology_id_query: topology_id
|
||||
v1_end_point: /network_ui/api/v1/group/
|
||||
v2_end_point: /api/v2/canvas/group/
|
||||
x: 407
|
||||
y: -379
|
||||
- fields:
|
||||
- api: true
|
||||
end_point: /network_ui/api/v1/groupdevice/
|
||||
fields:
|
||||
- name: group_device_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
@ -198,6 +234,9 @@ models:
|
||||
ref_field: device_id
|
||||
type: ForeignKey
|
||||
name: GroupDevice
|
||||
topology_id_query: group__topology_id
|
||||
v1_end_point: /network_ui/api/v1/groupdevice/
|
||||
v2_end_point: /api/v2/canvas/groupdevice/
|
||||
x: 739
|
||||
y: -234
|
||||
- fields:
|
||||
@ -255,7 +294,9 @@ models:
|
||||
name: DataSheet
|
||||
x: -207
|
||||
y: -282
|
||||
- fields:
|
||||
- api: true
|
||||
end_point: /network_ui/api/v1/stream/
|
||||
fields:
|
||||
- name: stream_id
|
||||
pk: true
|
||||
ref: Stream
|
||||
@ -278,9 +319,14 @@ models:
|
||||
name: id
|
||||
type: IntegerField
|
||||
name: Stream
|
||||
topology_id_query: from_device__topology_id
|
||||
v1_end_point: /network_ui/api/v1/stream/
|
||||
v2_end_point: /api/v2/canvas/stream/
|
||||
x: 709
|
||||
y: 527
|
||||
- fields:
|
||||
- api: true
|
||||
end_point: /network_ui/api/v1/process/
|
||||
fields:
|
||||
- name: process_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
@ -298,9 +344,14 @@ models:
|
||||
name: id
|
||||
type: IntegerField
|
||||
name: Process
|
||||
topology_id_query: device__topology_id
|
||||
v1_end_point: /network_ui/api/v1/process/
|
||||
v2_end_point: /api/v2/canvas/process/
|
||||
x: 654
|
||||
y: 778
|
||||
- fields:
|
||||
- api: true
|
||||
end_point: /network_ui/api/v1/toolbox/
|
||||
fields:
|
||||
- name: toolbox_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
@ -308,9 +359,13 @@ models:
|
||||
name: name
|
||||
type: CharField
|
||||
name: Toolbox
|
||||
v1_end_point: /network_ui/api/v1/toolbox/
|
||||
v2_end_point: /api/v2/canvas/toolbox/
|
||||
x: 179
|
||||
y: 644
|
||||
- fields:
|
||||
- api: true
|
||||
end_point: /network_ui/api/v1/toolboxitem/
|
||||
fields:
|
||||
- name: toolbox_item_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
@ -321,6 +376,8 @@ models:
|
||||
- name: data
|
||||
type: TextField
|
||||
name: ToolboxItem
|
||||
v1_end_point: /network_ui/api/v1/toolboxitem/
|
||||
v2_end_point: /api/v2/canvas/toolboxitem/
|
||||
x: 391
|
||||
y: 645
|
||||
- fields:
|
||||
@ -352,7 +409,9 @@ models:
|
||||
name: FSMTrace
|
||||
x: -872
|
||||
y: 507
|
||||
- fields:
|
||||
- api: true
|
||||
end_point: /network_ui/api/v1/topologyinventory/
|
||||
fields:
|
||||
- name: topology_inventory_id
|
||||
pk: true
|
||||
type: AutoField
|
||||
@ -363,6 +422,9 @@ models:
|
||||
- name: inventory_id
|
||||
type: IntegerField
|
||||
name: TopologyInventory
|
||||
topology_id_query: topology_id
|
||||
v1_end_point: /network_ui/api/v1/topologyinventory/
|
||||
v2_end_point: /api/v2/canvas/topologyinventory/
|
||||
x: -226
|
||||
y: -19
|
||||
- fields:
|
||||
@ -494,3 +556,4 @@ view:
|
||||
panX: 213.729555519212
|
||||
panY: 189.446959094643
|
||||
scaleXY: 0.69
|
||||
|
||||
|
||||
526
awx/network_ui/designs/new.yml
Normal file
526
awx/network_ui/designs/new.yml
Normal file
@ -0,0 +1,526 @@
|
||||
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
awx/network_ui/library/create_device.py
Normal file
1
awx/network_ui/library/create_device.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_device
|
||||
1
awx/network_ui/library/create_group.py
Normal file
1
awx/network_ui/library/create_group.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_group
|
||||
1
awx/network_ui/library/create_groupdevice.py
Normal file
1
awx/network_ui/library/create_groupdevice.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_groupdevice
|
||||
1
awx/network_ui/library/create_interface.py
Normal file
1
awx/network_ui/library/create_interface.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_interface
|
||||
1
awx/network_ui/library/create_link.py
Normal file
1
awx/network_ui/library/create_link.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_link
|
||||
1
awx/network_ui/library/create_process.py
Normal file
1
awx/network_ui/library/create_process.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_process
|
||||
1
awx/network_ui/library/create_stream.py
Normal file
1
awx/network_ui/library/create_stream.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_stream
|
||||
1
awx/network_ui/library/create_toolbox.py
Normal file
1
awx/network_ui/library/create_toolbox.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_toolbox
|
||||
1
awx/network_ui/library/create_toolboxitem.py
Normal file
1
awx/network_ui/library/create_toolboxitem.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_toolboxitem
|
||||
1
awx/network_ui/library/create_topology.py
Normal file
1
awx/network_ui/library/create_topology.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_topology
|
||||
1
awx/network_ui/library/create_topologyinventory.py
Normal file
1
awx/network_ui/library/create_topologyinventory.py
Normal file
@ -0,0 +1 @@
|
||||
#---- create_topologyinventory
|
||||
1
awx/network_ui/library/delete_device.py
Normal file
1
awx/network_ui/library/delete_device.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_device
|
||||
1
awx/network_ui/library/delete_group.py
Normal file
1
awx/network_ui/library/delete_group.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_group
|
||||
1
awx/network_ui/library/delete_groupdevice.py
Normal file
1
awx/network_ui/library/delete_groupdevice.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_groupdevice
|
||||
1
awx/network_ui/library/delete_interface.py
Normal file
1
awx/network_ui/library/delete_interface.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_interface
|
||||
1
awx/network_ui/library/delete_link.py
Normal file
1
awx/network_ui/library/delete_link.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_link
|
||||
1
awx/network_ui/library/delete_process.py
Normal file
1
awx/network_ui/library/delete_process.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_process
|
||||
1
awx/network_ui/library/delete_stream.py
Normal file
1
awx/network_ui/library/delete_stream.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_stream
|
||||
1
awx/network_ui/library/delete_toolbox.py
Normal file
1
awx/network_ui/library/delete_toolbox.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_toolbox
|
||||
1
awx/network_ui/library/delete_toolboxitem.py
Normal file
1
awx/network_ui/library/delete_toolboxitem.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_toolboxitem
|
||||
1
awx/network_ui/library/delete_topology.py
Normal file
1
awx/network_ui/library/delete_topology.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_topology
|
||||
1
awx/network_ui/library/delete_topologyinventory.py
Normal file
1
awx/network_ui/library/delete_topologyinventory.py
Normal file
@ -0,0 +1 @@
|
||||
#---- delete_topologyinventory
|
||||
1
awx/network_ui/library/get_device.py
Normal file
1
awx/network_ui/library/get_device.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_device
|
||||
1
awx/network_ui/library/get_group.py
Normal file
1
awx/network_ui/library/get_group.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_group
|
||||
1
awx/network_ui/library/get_groupdevice.py
Normal file
1
awx/network_ui/library/get_groupdevice.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_groupdevice
|
||||
1
awx/network_ui/library/get_interface.py
Normal file
1
awx/network_ui/library/get_interface.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_interface
|
||||
1
awx/network_ui/library/get_link.py
Normal file
1
awx/network_ui/library/get_link.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_link
|
||||
1
awx/network_ui/library/get_process.py
Normal file
1
awx/network_ui/library/get_process.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_process
|
||||
1
awx/network_ui/library/get_stream.py
Normal file
1
awx/network_ui/library/get_stream.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_stream
|
||||
1
awx/network_ui/library/get_toolbox.py
Normal file
1
awx/network_ui/library/get_toolbox.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_toolbox
|
||||
1
awx/network_ui/library/get_toolboxitem.py
Normal file
1
awx/network_ui/library/get_toolboxitem.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_toolboxitem
|
||||
1
awx/network_ui/library/get_topology.py
Normal file
1
awx/network_ui/library/get_topology.py
Normal file
@ -0,0 +1 @@
|
||||
#---- get_topology
|
||||
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