mirror of
https://github.com/ansible/awx.git
synced 2026-01-13 19:10:07 -03:30
Adds inventory tracking and templating to network UI groups and hosts.
* Adds group_id to Group table * Adds inventory_group_id to Group table * Adds creation of inventory hosts and groups from the network UI * Changes network UI variables to be under awx key * Fixes variables initial value * Adds group membership association/disassociation * Removes items from the inventory toolbar when loaded by a snaphot * Adds nunjucks dependency to package.json * Adds templating to hosts * Adds templating for racks * Adds site templating * Adds group associations for sites * Squashes migrations for network_ui * Flake8 migrations * Changes reserved field type to device_type, group_type, and process_type * Allows blank values for all CharFields in network_ui models * Changes reserved field type to device_type, group_type, and process_type
This commit is contained in:
parent
b7848ab4f6
commit
f8d83638b0
@ -30,7 +30,7 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
device_type = self._task.args.get('device_type', None)
|
||||
|
||||
interface_id_seq = self._task.args.get('interface_id_seq', 0)
|
||||
process_id_seq = self._task.args.get('process_id_seq', 0)
|
||||
@ -43,7 +43,7 @@ class ActionModule(ActionBase):
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
type=type,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
|
||||
@ -32,7 +32,9 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
group_type = self._task.args.get('group_type', None)
|
||||
|
||||
inventory_group_id = self._task.args.get('inventory_group_id', 0)
|
||||
|
||||
url = server + '/api/v2/canvas/group/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
@ -43,7 +45,8 @@ class ActionModule(ActionBase):
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)),
|
||||
verify=False,
|
||||
auth=(user, password),
|
||||
|
||||
@ -27,7 +27,7 @@ class ActionModule(ActionBase):
|
||||
|
||||
device = self._task.args.get('device', None)
|
||||
name = self._task.args.get('name', None)
|
||||
type = self._task.args.get('type', None)
|
||||
process_type = self._task.args.get('process_type', None)
|
||||
|
||||
id = self._task.args.get('id', 0)
|
||||
|
||||
@ -35,7 +35,7 @@ class ActionModule(ActionBase):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(url, data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
type=type,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)),
|
||||
verify=False,
|
||||
|
||||
@ -28,7 +28,7 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
device_type = self._task.args.get('device_type', None)
|
||||
interface_id_seq = self._task.args.get('interface_id_seq', None)
|
||||
process_id_seq = self._task.args.get('process_id_seq', None)
|
||||
host_id = self._task.args.get('host_id', None)
|
||||
@ -39,7 +39,7 @@ class ActionModule(ActionBase):
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
type=type,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
|
||||
@ -30,7 +30,8 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
group_type = self._task.args.get('group_type', None)
|
||||
inventory_group_id = self._task.args.get('inventory_group_id', None)
|
||||
|
||||
filter_data = dict(group_id=group_id,
|
||||
id=id,
|
||||
@ -40,7 +41,8 @@ class ActionModule(ActionBase):
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
|
||||
@ -25,13 +25,13 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
process_type = self._task.args.get('process_type', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
filter_data = dict(process_id=process_id,
|
||||
device=device,
|
||||
name=name,
|
||||
type=type,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
filter_data = {x: y for x, y in filter_data.iteritems() if y is not None}
|
||||
|
||||
@ -29,7 +29,7 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
device_type = self._task.args.get('device_type', None)
|
||||
interface_id_seq = self._task.args.get('interface_id_seq', None)
|
||||
process_id_seq = self._task.args.get('process_id_seq', None)
|
||||
host_id = self._task.args.get('host_id', None)
|
||||
@ -41,7 +41,7 @@ class ActionModule(ActionBase):
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
type=type,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
|
||||
@ -31,7 +31,8 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
group_type = self._task.args.get('group_type', None)
|
||||
inventory_group_id = self._task.args.get('inventory_group_id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/group/' + str(group_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
@ -42,7 +43,8 @@ class ActionModule(ActionBase):
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(url,
|
||||
|
||||
@ -26,14 +26,14 @@ class ActionModule(ActionBase):
|
||||
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)
|
||||
process_type = self._task.args.get('process_type', None)
|
||||
id = self._task.args.get('id', None)
|
||||
|
||||
url = server + '/api/v2/canvas/process/' + str(process_id) + '/'
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
type=type,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
|
||||
@ -52,7 +52,7 @@ from awx.network_ui.models import TestResult
|
||||
|
||||
|
||||
class DeviceAdmin(admin.ModelAdmin):
|
||||
fields = ('topology', 'name', 'x', 'y', 'id', 'type', 'interface_id_seq', 'process_id_seq', 'host_id',)
|
||||
fields = ('topology', 'name', 'x', 'y', 'id', 'device_type', 'interface_id_seq', 'process_id_seq', 'host_id',)
|
||||
raw_id_fields = ('topology',)
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ admin.site.register(Interface, InterfaceAdmin)
|
||||
|
||||
|
||||
class GroupAdmin(admin.ModelAdmin):
|
||||
fields = ('id', 'name', 'x1', 'y1', 'x2', 'y2', 'topology', 'type',)
|
||||
fields = ('id', 'name', 'x1', 'y1', 'x2', 'y2', 'topology', 'group_type', 'inventory_group_id',)
|
||||
raw_id_fields = ('topology',)
|
||||
|
||||
|
||||
@ -156,7 +156,7 @@ admin.site.register(Stream, StreamAdmin)
|
||||
|
||||
|
||||
class ProcessAdmin(admin.ModelAdmin):
|
||||
fields = ('device', 'name', 'type', 'id',)
|
||||
fields = ('device', 'name', 'process_type', 'id',)
|
||||
raw_id_fields = ('device',)
|
||||
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ Device = namedtuple('Device', ['device_id',
|
||||
'x',
|
||||
'y',
|
||||
'id',
|
||||
'type',
|
||||
'device_type',
|
||||
'interface_id_seq',
|
||||
'process_id_seq',
|
||||
'host_id',
|
||||
@ -52,7 +52,7 @@ Group = namedtuple('Group', ['group_id',
|
||||
'x2',
|
||||
'y2',
|
||||
'topology',
|
||||
'type',
|
||||
'group_type',
|
||||
'inventory_group_id',
|
||||
])
|
||||
|
||||
@ -71,7 +71,7 @@ Stream = namedtuple('Stream', ['stream_id',
|
||||
Process = namedtuple('Process', ['process_id',
|
||||
'device',
|
||||
'name',
|
||||
'type',
|
||||
'process_type',
|
||||
'id',
|
||||
])
|
||||
|
||||
@ -100,14 +100,14 @@ def get_device(device_id):
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_device(topology, name, x, y, id, type, interface_id_seq=0, process_id_seq=0, host_id=0,):
|
||||
def create_device(topology, name, x, y, id, device_type, interface_id_seq=0, process_id_seq=0, host_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/device/", data=json.dumps(dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
type=type,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
@ -118,14 +118,14 @@ def create_device(topology, name, x, y, id, type, interface_id_seq=0, process_id
|
||||
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,):
|
||||
def update_device(device_id, topology=None, name=None, x=None, y=None, id=None, device_type=None, interface_id_seq=None, process_id_seq=None, host_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
type=type,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
@ -296,7 +296,7 @@ def get_group(group_id):
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_group(id, name, x1, y1, x2, y2, topology, type,):
|
||||
def create_group(id, name, x1, y1, x2, y2, topology, group_type, inventory_group_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/group/", data=json.dumps(dict(id=id,
|
||||
name=name,
|
||||
@ -305,7 +305,8 @@ def create_group(id, name, x1, y1, x2, y2, topology, type,):
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
@ -313,7 +314,7 @@ def create_group(id, name, x1, y1, x2, y2, topology, type,):
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, type=None,):
|
||||
def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, group_type=None, inventory_group_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(id=id,
|
||||
name=name,
|
||||
@ -322,7 +323,8 @@ def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=Non
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/network_ui/api/v1/group/" + str(group_id) + "/",
|
||||
@ -432,11 +434,11 @@ def get_process(process_id):
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_process(device, name, type, id=0,):
|
||||
def create_process(device, name, process_type, id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/network_ui/api/v1/process/", data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
type=type,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
@ -445,11 +447,11 @@ def create_process(device, name, type, id=0,):
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_process(process_id, device=None, name=None, type=None, id=None,):
|
||||
def update_process(process_id, device=None, name=None, process_type=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
type=type,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
|
||||
@ -15,14 +15,14 @@ def get_device(device_id):
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_device(topology, name, x, y, id, type, interface_id_seq=0, process_id_seq=0, host_id=0,):
|
||||
def create_device(topology, name, x, y, id, device_type, interface_id_seq=0, process_id_seq=0, host_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/device/", data=json.dumps(dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
type=type,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
@ -33,14 +33,14 @@ def create_device(topology, name, x, y, id, type, interface_id_seq=0, process_id
|
||||
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,):
|
||||
def update_device(device_id, topology=None, name=None, x=None, y=None, id=None, device_type=None, interface_id_seq=None, process_id_seq=None, host_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(topology=topology,
|
||||
name=name,
|
||||
x=x,
|
||||
y=y,
|
||||
id=id,
|
||||
type=type,
|
||||
device_type=device_type,
|
||||
interface_id_seq=interface_id_seq,
|
||||
process_id_seq=process_id_seq,
|
||||
host_id=host_id,
|
||||
@ -211,7 +211,7 @@ def get_group(group_id):
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_group(id, name, x1, y1, x2, y2, topology, type,):
|
||||
def create_group(id, name, x1, y1, x2, y2, topology, group_type, inventory_group_id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/group/", data=json.dumps(dict(id=id,
|
||||
name=name,
|
||||
@ -220,7 +220,8 @@ def create_group(id, name, x1, y1, x2, y2, topology, type,):
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
auth=util.get_auth(),
|
||||
@ -228,7 +229,7 @@ def create_group(id, name, x1, y1, x2, y2, topology, type,):
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, type=None,):
|
||||
def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, group_type=None, inventory_group_id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(id=id,
|
||||
name=name,
|
||||
@ -237,7 +238,8 @@ def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=Non
|
||||
x2=x2,
|
||||
y2=y2,
|
||||
topology=topology,
|
||||
type=type,
|
||||
group_type=group_type,
|
||||
inventory_group_id=inventory_group_id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
response = requests.patch(util.get_url() + "/api/v2/canvas/group/" + str(group_id) + "/",
|
||||
@ -347,11 +349,11 @@ def get_process(process_id):
|
||||
return response.json()
|
||||
|
||||
|
||||
def create_process(device, name, type, id=0,):
|
||||
def create_process(device, name, process_type, id=0,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
response = requests.post(util.get_url() + "/api/v2/canvas/process/", data=json.dumps(dict(device=device,
|
||||
name=name,
|
||||
type=type,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)),
|
||||
verify=util.get_verify(),
|
||||
@ -360,11 +362,11 @@ def create_process(device, name, type, id=0,):
|
||||
return response.json()
|
||||
|
||||
|
||||
def update_process(process_id, device=None, name=None, type=None, id=None,):
|
||||
def update_process(process_id, device=None, name=None, process_type=None, id=None,):
|
||||
headers = {'content-type': 'application/json'}
|
||||
data = dict(device=device,
|
||||
name=name,
|
||||
type=type,
|
||||
process_type=process_type,
|
||||
id=id,
|
||||
)
|
||||
data = {x: y for x, y in data.iteritems() if y is not None}
|
||||
|
||||
@ -45,6 +45,7 @@ RACK_SPACING = 50
|
||||
|
||||
logger = logging.getLogger("awx.network_ui.consumers")
|
||||
|
||||
|
||||
class NetworkUIException(Exception):
|
||||
|
||||
pass
|
||||
@ -316,7 +317,7 @@ class _Persistence(object):
|
||||
device = transform_dict(dict(x='x',
|
||||
y='y',
|
||||
name='name',
|
||||
type='type',
|
||||
type='device_type',
|
||||
id='id',
|
||||
host_id='host_id'), device)
|
||||
logger.info("Device %s", device)
|
||||
@ -324,7 +325,7 @@ class _Persistence(object):
|
||||
d, _ = Device.objects.get_or_create(topology_id=topology_id, id=device['id'], defaults=device)
|
||||
d.x = device['x']
|
||||
d.y = device['y']
|
||||
d.type = device['type']
|
||||
d.device_type = device['device_type']
|
||||
d.host_id = device['host_id']
|
||||
d.save()
|
||||
(Topology.objects
|
||||
@ -337,6 +338,12 @@ class _Persistence(object):
|
||||
def onDeviceMove(self, device, topology_id, client_id):
|
||||
Device.objects.filter(topology_id=topology_id, id=device['id']).update(x=device['x'], y=device['y'])
|
||||
|
||||
def onDeviceInventoryUpdate(self, device, topology_id, client_id):
|
||||
Device.objects.filter(topology_id=topology_id, id=device['id']).update(host_id=device['host_id'])
|
||||
|
||||
def onGroupInventoryUpdate(self, group, topology_id, client_id):
|
||||
DeviceGroup.objects.filter(topology_id=topology_id, id=group['id']).update(inventory_group_id=group['group_id'])
|
||||
|
||||
def onDeviceLabelEdit(self, device, topology_id, client_id):
|
||||
Device.objects.filter(topology_id=topology_id, id=device['id']).update(name=device['name'])
|
||||
for pk in Device.objects.filter(topology_id=topology_id, id=device['id']).values_list('pk', flat=True):
|
||||
@ -410,7 +417,7 @@ class _Persistence(object):
|
||||
Process.objects.get_or_create(device_id=Device.objects.get(id=process['device_id'],
|
||||
topology_id=topology_id).pk,
|
||||
id=process['id'],
|
||||
defaults=dict(name=process['name'], type=process['type']))
|
||||
defaults=dict(name=process['name'], process_type=process['type']))
|
||||
(Device.objects
|
||||
.filter(id=process['device_id'],
|
||||
topology_id=topology_id,
|
||||
@ -535,13 +542,14 @@ class _Persistence(object):
|
||||
y2='y2',
|
||||
name='name',
|
||||
id='id',
|
||||
type='type'), group)
|
||||
type='group_type',
|
||||
group_id='inventory_group_id'), group)
|
||||
d, _ = DeviceGroup.objects.get_or_create(topology_id=topology_id, id=group['id'], defaults=group)
|
||||
d.x1 = group['x1']
|
||||
d.y1 = group['y1']
|
||||
d.x2 = group['x2']
|
||||
d.y2 = group['y2']
|
||||
d.type = group['type']
|
||||
d.group_type = group['group_type']
|
||||
d.save()
|
||||
(Topology.objects
|
||||
.filter(topology_id=topology_id, group_id_seq__lt=group['id'])
|
||||
|
||||
@ -5,6 +5,16 @@ models:
|
||||
v2_end_point: /api/v2/canvas/device/
|
||||
topology_id_query: topology_id
|
||||
v2_lookup_field: host_id
|
||||
create_transform:
|
||||
id: id
|
||||
name: name
|
||||
device_type: type
|
||||
x: x
|
||||
y: y
|
||||
interface_id_seq: interface_id_seq
|
||||
process_id_seq: process_id_seq
|
||||
host_id: host_id
|
||||
topology_id: topology_id
|
||||
- name: Link
|
||||
api: true
|
||||
v1_end_point: /network_ui/api/v1/link/
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
messages:
|
||||
- {msg_type: DeviceMove, fields: [msg_type, sender, id, x, y, previous_x, previous_y]}
|
||||
- {msg_type: DeviceInventoryUpdate, fields: [msg_type, sender, id, host_id]}
|
||||
- {msg_type: GroupInventoryUpdate, fields: [msg_type, sender, id, group_id]}
|
||||
- {msg_type: DeviceCreate, fields: [msg_type, sender, id, x, y, name, type, host_id]}
|
||||
- {msg_type: DeviceDestroy, fields: [msg_type, sender, id, previous_x, previous_y, previous_name, previous_type, previous_host_id]}
|
||||
- {msg_type: DeviceLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
@ -22,19 +24,17 @@ messages:
|
||||
- {msg_type: MouseEvent, fields: [msg_type, sender, x, y, type, trace_id]}
|
||||
- {msg_type: MouseWheelEvent, fields: [msg_type, sender, delta, deltaX, deltaY, type, originalEvent, trace_id]}
|
||||
- {msg_type: KeyEvent, fields: [msg_type, sender, key, keyCode, type, altKey, shiftKey, ctrlKey, metaKey, trace_id]}
|
||||
- {msg_type: TouchEvent, fields: [msg_type, sender, type, touches]}
|
||||
- {msg_type: StartRecording, fields: [msg_type, sender, trace_id]}
|
||||
- {msg_type: StopRecording, fields: [msg_type, sender, trace_id]}
|
||||
- {msg_type: ViewPort, fields: [msg_type, sender, scale, panX, panY, trace_id]}
|
||||
- {msg_type: CopySite, fields: [msg_type, site]}
|
||||
- {msg_type: GroupMove, fields: [msg_type, sender, id, x1, y1, x2, y2, previous_x1, previous_y1, previous_x2, previous_y2]}
|
||||
- {msg_type: GroupCreate, fields: [msg_type, sender, id, x1, y1, x2, y2, name, type]}
|
||||
- {msg_type: GroupDestroy, fields: [msg_type, sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type]}
|
||||
- {msg_type: GroupCreate, fields: [msg_type, sender, id, x1, y1, x2, y2, name, type, group_id]}
|
||||
- {msg_type: GroupDestroy, fields: [msg_type, sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type, previous_group_id]}
|
||||
- {msg_type: GroupLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: GroupSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupMembership, fields: [msg_type, sender, id, members]}
|
||||
- {msg_type: TableCellEdit, fields: [msg_type, sender, sheet, col, row, old_value, new_value]}
|
||||
- {msg_type: ProcessCreate, fields: [msg_type, id, name, type, device_id, x, y]}
|
||||
- {msg_type: StreamCreate, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamDestroy, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
|
||||
@ -2,6 +2,16 @@ app: awx.network_ui
|
||||
external_models: []
|
||||
models:
|
||||
- api: true
|
||||
create_transform:
|
||||
device_type: type
|
||||
host_id: host_id
|
||||
id: id
|
||||
interface_id_seq: interface_id_seq
|
||||
name: name
|
||||
process_id_seq: process_id_seq
|
||||
topology_id: topology_id
|
||||
x: x
|
||||
y: y
|
||||
display: name
|
||||
end_point: /network_ui/api/v1/device/
|
||||
fields:
|
||||
@ -22,7 +32,7 @@ models:
|
||||
- name: id
|
||||
type: IntegerField
|
||||
- len: 200
|
||||
name: type
|
||||
name: device_type
|
||||
type: CharField
|
||||
- default: 0
|
||||
name: interface_id_seq
|
||||
@ -211,8 +221,11 @@ models:
|
||||
ref_field: topology_id
|
||||
type: ForeignKey
|
||||
- len: 200
|
||||
name: type
|
||||
name: group_type
|
||||
type: CharField
|
||||
- default: 0
|
||||
name: inventory_group_id
|
||||
type: IntegerField
|
||||
name: Group
|
||||
topology_id_query: topology_id
|
||||
v1_end_point: /network_ui/api/v1/group/
|
||||
@ -338,7 +351,7 @@ models:
|
||||
name: name
|
||||
type: CharField
|
||||
- len: 200
|
||||
name: type
|
||||
name: process_type
|
||||
type: CharField
|
||||
- default: 0
|
||||
name: id
|
||||
|
||||
@ -12,13 +12,13 @@ class Command(BaseCommand):
|
||||
|
||||
def handle(self, *args, **options):
|
||||
dups = list(Device.objects
|
||||
.values('topology_id', 'id')
|
||||
.annotate(Count('pk'))
|
||||
.order_by()
|
||||
.filter(pk__count__gt=1))
|
||||
.values('topology_id', 'id')
|
||||
.annotate(Count('pk'))
|
||||
.order_by()
|
||||
.filter(pk__count__gt=1))
|
||||
pprint(dups)
|
||||
for dup in dups:
|
||||
del dup['pk__count']
|
||||
pprint(list(Device.objects
|
||||
.filter(**dup)
|
||||
.values()))
|
||||
.filter(**dup)
|
||||
.values()))
|
||||
|
||||
@ -1,47 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Device',
|
||||
fields=[
|
||||
('device_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('x', models.IntegerField()),
|
||||
('y', models.IntegerField()),
|
||||
('id', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Link',
|
||||
fields=[
|
||||
('link_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('from_device', models.ForeignKey(related_name='+', to='network_ui.Device')),
|
||||
('to_device', models.ForeignKey(related_name='+', to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Topology',
|
||||
fields=[
|
||||
('topology_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('id', models.IntegerField()),
|
||||
('scale', models.FloatField()),
|
||||
('panX', models.FloatField()),
|
||||
('panY', models.FloatField()),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='topology',
|
||||
field=models.ForeignKey(to='network_ui.Topology'),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,557 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-02-26 17:39
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
import yaml
|
||||
import json
|
||||
|
||||
|
||||
def forwards_func(apps, schema_editor):
|
||||
Topology = apps.get_model("network_ui", "Topology")
|
||||
Topology.objects.get_or_create(name="Unknown", topology_id=-1, panX=0, panY=0, scale=1.0)
|
||||
Device = apps.get_model("network_ui", "Device")
|
||||
Device.objects.get_or_create(name="Unknown", device_id=-1, x=0, y=0, type="unknown", id=-1, topology_id=-1)
|
||||
Interface = apps.get_model("network_ui", "Interface")
|
||||
Interface.objects.get_or_create(name="Unknown", device_id=-1, interface_id=-1)
|
||||
|
||||
|
||||
|
||||
def add_load_test_case(apps, schema_editor):
|
||||
|
||||
TestCase = apps.get_model('network_ui', 'TestCase')
|
||||
TestCase.objects.get_or_create(name="Load", test_case_data=json.dumps(dict(runnable=False)))
|
||||
|
||||
|
||||
messages = yaml.load('''
|
||||
messages:
|
||||
- {msg_type: DeviceMove, fields: [msg_type, sender, id, x, y, previous_x, previous_y]}
|
||||
- {msg_type: DeviceInventoryUpdate, fields: [msg_type, sender, id, host_id]}
|
||||
- {msg_type: GroupInventoryUpdate, fields: [msg_type, sender, id, group_id]}
|
||||
- {msg_type: DeviceCreate, fields: [msg_type, sender, id, x, y, name, type, host_id]}
|
||||
- {msg_type: DeviceDestroy, fields: [msg_type, sender, id, previous_x, previous_y, previous_name, previous_type, previous_host_id]}
|
||||
- {msg_type: DeviceLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: DeviceSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: DeviceUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: InterfaceCreate, fields: [msg_type, sender, device_id, id, name]}
|
||||
- {msg_type: InterfaceLabelEdit, fields: [msg_type, sender, id, device_id, name, previous_name]}
|
||||
- {msg_type: LinkLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: LinkCreate, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkDestroy, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: LinkUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: Undo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Redo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Deploy, fields: [msg_type, sender]}
|
||||
- {msg_type: Destroy, fields: [msg_type, sender]}
|
||||
- {msg_type: Discover, fields: [msg_type, sender]}
|
||||
- {msg_type: Layout, fields: [msg_type, sender]}
|
||||
- {msg_type: MultipleMessage, fields: [msg_type, sender, messages]}
|
||||
- {msg_type: MouseEvent, fields: [msg_type, sender, x, y, type, trace_id]}
|
||||
- {msg_type: MouseWheelEvent, fields: [msg_type, sender, delta, deltaX, deltaY, type, originalEvent, trace_id]}
|
||||
- {msg_type: KeyEvent, fields: [msg_type, sender, key, keyCode, type, altKey, shiftKey, ctrlKey, metaKey, trace_id]}
|
||||
- {msg_type: StartRecording, fields: [msg_type, sender, trace_id]}
|
||||
- {msg_type: StopRecording, fields: [msg_type, sender, trace_id]}
|
||||
- {msg_type: ViewPort, fields: [msg_type, sender, scale, panX, panY, trace_id]}
|
||||
- {msg_type: CopySite, fields: [msg_type, site]}
|
||||
- {msg_type: GroupMove, fields: [msg_type, sender, id, x1, y1, x2, y2, previous_x1, previous_y1, previous_x2, previous_y2]}
|
||||
- {msg_type: GroupCreate, fields: [msg_type, sender, id, x1, y1, x2, y2, name, type, group_id]}
|
||||
- {msg_type: GroupDestroy, fields: [msg_type, sender, id, previous_x1, previous_y1, previous_x2,
|
||||
previous_y2, previous_name, previous_type, previous_group_id]}
|
||||
- {msg_type: GroupLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: GroupSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupMembership, fields: [msg_type, sender, id, members]}
|
||||
- {msg_type: ProcessCreate, fields: [msg_type, id, name, type, device_id, x, y]}
|
||||
- {msg_type: StreamCreate, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamDestroy, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamLabelEdit, fields: [msg_type, sender, id, label, previous_label]}
|
||||
- {msg_type: StreamSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: StreamUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: FSMTrace, fields: [msg_type, order, sender, trace_id, fsm_name, from_state, to_state, recv_message_type]}
|
||||
- {msg_type: ChannelTrace, fields: [msg_type, sender, trace_id, from_fsm, to_fsm, sent_message_type]}
|
||||
- {msg_type: Snapshot, fields: [msg_type, sender, devices, links, groups, streams, order, trace_id]}
|
||||
- {msg_type: EnableTest, fields: [msg_type]}
|
||||
- {msg_type: DisableTest, fields: [msg_type]}
|
||||
- {msg_type: StartTest, fields: [msg_type]}
|
||||
- {msg_type: TestCompleted, fields: [msg_type]}
|
||||
- {msg_type: TestResult, fields: [msg_type, sender, id, name, result, date, code_under_test]}
|
||||
- {msg_type: Coverage, fields: [msg_type, sender, coverage, result_id]}
|
||||
|
||||
''')
|
||||
|
||||
|
||||
def populate_message_types(apps, schema_editor):
|
||||
|
||||
MessageType = apps.get_model('network_ui', 'MessageType')
|
||||
for message in messages['messages']:
|
||||
MessageType.objects.get_or_create(name=message['msg_type'])
|
||||
|
||||
|
||||
results = ['passed',
|
||||
'failed',
|
||||
'errored',
|
||||
'skipped',
|
||||
'aborted',
|
||||
'not run',
|
||||
'blocked']
|
||||
|
||||
|
||||
def populate_result_types(apps, schema_editor):
|
||||
|
||||
Result = apps.get_model('network_ui', 'Result')
|
||||
for result in results:
|
||||
Result.objects.get_or_create(name=result)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
replaces = [(b'network_ui', '0001_initial'),
|
||||
(b'network_ui', '0002_remove_topology_id'),
|
||||
(b'network_ui', '0003_device_type'),
|
||||
(b'network_ui', '0004_client_messagetype_topologyhistory'),
|
||||
(b'network_ui', '0005_topologyhistory_undone'),
|
||||
(b'network_ui', '0006_auto_20170321_1236'),
|
||||
(b'network_ui', '0007_auto_20170328_1655'),
|
||||
(b'network_ui', '0008_interface_id'),
|
||||
(b'network_ui', '0009_auto_20170403_1912'),
|
||||
(b'network_ui', '0010_link_id'),
|
||||
(b'network_ui', '0011_link_name'),
|
||||
(b'network_ui', '0012_auto_20170706_1526'),
|
||||
(b'network_ui', '0013_auto_20170710_1840'),
|
||||
(b'network_ui', '0014_group_topology'),
|
||||
(b'network_ui', '0015_auto_20170710_1937'),
|
||||
(b'network_ui', '0016_auto_20170717_1520'),
|
||||
(b'network_ui', '0017_auto_20170717_1813'),
|
||||
(b'network_ui', '0018_auto_20170821_1557'),
|
||||
(b'network_ui', '0019_auto_20170822_1723'),
|
||||
(b'network_ui', '0020_device_process_id_seq'),
|
||||
(b'network_ui', '0021_toolbox_toolboxitem'),
|
||||
(b'network_ui', '0022_fsmtrace'),
|
||||
(b'network_ui', '0023_auto_20171213_1623'),
|
||||
(b'network_ui', '0024_auto_20171213_1949'),
|
||||
(b'network_ui', '0025_devicehost_topologyinventory'),
|
||||
(b'network_ui', '0026_auto_20180105_1403'),
|
||||
(b'network_ui', '0027_eventtrace'),
|
||||
(b'network_ui', '0028_coverage'),
|
||||
(b'network_ui', '0029_topologysnapshot'),
|
||||
(b'network_ui', '0030_auto_20180110_1751'),
|
||||
(b'network_ui', '0031_auto_20180110_1752'),
|
||||
(b'network_ui', '0032_auto_20180112_2135'),
|
||||
(b'network_ui', '0033_auto_20180112_2202'),
|
||||
(b'network_ui', '0034_auto_20180113_1725'),
|
||||
(b'network_ui', '0035_auto_20180223_0040'),
|
||||
(b'network_ui', '0036_auto_20180223_0119')]
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Device',
|
||||
fields=[
|
||||
('device_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('x', models.IntegerField()),
|
||||
('y', models.IntegerField()),
|
||||
('id', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Link',
|
||||
fields=[
|
||||
('link_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('from_device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='network_ui.Device')),
|
||||
('to_device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Topology',
|
||||
fields=[
|
||||
('topology_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('scale', models.FloatField()),
|
||||
('panX', models.FloatField()),
|
||||
('panY', models.FloatField()),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='topology',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Topology'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='type',
|
||||
field=models.CharField(default='', max_length=200),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Client',
|
||||
fields=[
|
||||
('client_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='MessageType',
|
||||
fields=[
|
||||
('message_type_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TopologyHistory',
|
||||
fields=[
|
||||
('topology_history_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('message_id', models.IntegerField()),
|
||||
('message_data', models.TextField()),
|
||||
('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client')),
|
||||
('message_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.MessageType')),
|
||||
('topology', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Topology')),
|
||||
('undone', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Interface',
|
||||
fields=[
|
||||
('interface_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.RunPython(
|
||||
code=forwards_func,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='from_interface',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='from_link', to='network_ui.Interface'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='to_interface',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='to_link', to='network_ui.Interface'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='interface',
|
||||
name='id',
|
||||
field=models.IntegerField(default=0),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='link',
|
||||
name='from_device',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='from_link', to='network_ui.Device'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='link',
|
||||
name='to_device',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='to_link', to='network_ui.Device'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='id',
|
||||
field=models.IntegerField(default=0),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='name',
|
||||
field=models.CharField(default='', max_length=200),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='interface_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='device_id_seq',
|
||||
field=models.IntegerField(default=0, verbose_name=b'Topology'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='link_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Group',
|
||||
fields=[
|
||||
('group_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('id', models.IntegerField(verbose_name=b'Group')),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('x1', models.IntegerField()),
|
||||
('y1', models.IntegerField(verbose_name=b'Group')),
|
||||
('x2', models.IntegerField(verbose_name=b'Group')),
|
||||
('y2', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='GroupDevice',
|
||||
fields=[
|
||||
('group_device_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Device')),
|
||||
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Group')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='group_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='group',
|
||||
name='topology',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='network_ui.Topology'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DataBinding',
|
||||
fields=[
|
||||
('data_binding_id', models.AutoField(primary_key=True, serialize=False, verbose_name=b'DataBinding')),
|
||||
('column', models.IntegerField()),
|
||||
('row', models.IntegerField()),
|
||||
('table', models.CharField(max_length=200)),
|
||||
('primary_key_id', models.IntegerField()),
|
||||
('field', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DataSheet',
|
||||
fields=[
|
||||
('data_sheet_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('topology', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Topology')),
|
||||
('client', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DataType',
|
||||
fields=[
|
||||
('data_type_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('type_name', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='databinding',
|
||||
name='data_type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.DataType'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='databinding',
|
||||
name='sheet',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.DataSheet'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='databinding',
|
||||
name='data_binding_id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='id',
|
||||
field=models.IntegerField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='x2',
|
||||
field=models.IntegerField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='y1',
|
||||
field=models.IntegerField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='topology',
|
||||
name='device_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Process',
|
||||
fields=[
|
||||
('process_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('type', models.CharField(max_length=200)),
|
||||
('id', models.IntegerField(default=0)),
|
||||
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Stream',
|
||||
fields=[
|
||||
('stream_id', models.AutoField(primary_key=True, serialize=False, verbose_name=b'Stream')),
|
||||
('label', models.CharField(max_length=200)),
|
||||
('id', models.IntegerField(default=0)),
|
||||
('from_device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='from_stream', to='network_ui.Device')),
|
||||
('to_device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='to_stream', to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='group',
|
||||
name='type',
|
||||
field=models.CharField(default='', max_length=200),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='stream_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='topology',
|
||||
name='group_id_seq',
|
||||
field=models.IntegerField(default=0, verbose_name=b'Topology'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='process_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Toolbox',
|
||||
fields=[
|
||||
('toolbox_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ToolboxItem',
|
||||
fields=[
|
||||
('toolbox_item_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('data', models.TextField()),
|
||||
('toolbox', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Toolbox')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='FSMTrace',
|
||||
fields=[
|
||||
('fsm_trace_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('fsm_name', models.CharField(max_length=200)),
|
||||
('from_state', models.CharField(max_length=200)),
|
||||
('to_state', models.CharField(max_length=200)),
|
||||
('message_type', models.CharField(max_length=200)),
|
||||
('trace_session_id', models.IntegerField(default=0)),
|
||||
('order', models.IntegerField(default=0)),
|
||||
('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TopologyInventory',
|
||||
fields=[
|
||||
('topology_inventory_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('inventory_id', models.IntegerField()),
|
||||
('topology', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Topology')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='host_id',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EventTrace',
|
||||
fields=[
|
||||
('event_trace_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('trace_session_id', models.IntegerField(default=0)),
|
||||
('event_data', models.TextField()),
|
||||
('message_id', models.IntegerField()),
|
||||
('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Coverage',
|
||||
fields=[
|
||||
('coverage_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('coverage_data', models.TextField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TopologySnapshot',
|
||||
fields=[
|
||||
('topology_snapshot_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('topology_id', models.IntegerField()),
|
||||
('trace_session_id', models.IntegerField()),
|
||||
('snapshot_data', models.TextField(verbose_name=b'TopologySnapshot')),
|
||||
('order', models.IntegerField()),
|
||||
('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CodeUnderTest',
|
||||
fields=[
|
||||
('code_under_test_id', models.AutoField(primary_key=True, serialize=False, verbose_name=b'CodeUnderTest')),
|
||||
('version_x', models.IntegerField()),
|
||||
('version_y', models.IntegerField()),
|
||||
('version_z', models.IntegerField()),
|
||||
('commits_since', models.IntegerField()),
|
||||
('commit_hash', models.CharField(max_length=40)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Result',
|
||||
fields=[
|
||||
('result_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=20)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TestCase',
|
||||
fields=[
|
||||
('test_case_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200, verbose_name=b'TestCase')),
|
||||
('test_case_data', models.TextField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TestResult',
|
||||
fields=[
|
||||
('test_result_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('time', models.DateTimeField()),
|
||||
('code_under_test', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.CodeUnderTest')),
|
||||
('result', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Result')),
|
||||
('test_case', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.TestCase')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='coverage',
|
||||
name='test_result',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='network_ui.TestResult'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.RunPython(
|
||||
code=populate_result_types,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='testresult',
|
||||
name='client',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='testresult',
|
||||
name='id',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.RunPython(
|
||||
code=add_load_test_case,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='group',
|
||||
name='inventory_group_id',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='topology',
|
||||
name='group_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.RunPython(
|
||||
code=populate_message_types,
|
||||
),
|
||||
]
|
||||
36
awx/network_ui/migrations/0002_auto_20180301_2039.py
Normal file
36
awx/network_ui/migrations/0002_auto_20180301_2039.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-03-01 20:39
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0001_squashed_0036_auto_20180223_0119'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='device',
|
||||
old_name='type',
|
||||
new_name='device_type',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='group',
|
||||
old_name='type',
|
||||
new_name='group_type',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='process',
|
||||
old_name='type',
|
||||
new_name='process_type',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='datasheet',
|
||||
name='client',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client'),
|
||||
),
|
||||
]
|
||||
@ -1,18 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='topology',
|
||||
name='id',
|
||||
),
|
||||
]
|
||||
130
awx/network_ui/migrations/0003_auto_20180302_1401.py
Normal file
130
awx/network_ui/migrations/0003_auto_20180302_1401.py
Normal file
@ -0,0 +1,130 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-03-02 14:01
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0002_auto_20180301_2039'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='codeundertest',
|
||||
name='commit_hash',
|
||||
field=models.CharField(blank=True, max_length=40),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='databinding',
|
||||
name='field',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='databinding',
|
||||
name='table',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='datasheet',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='datatype',
|
||||
name='type_name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='device',
|
||||
name='device_type',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='device',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='fsmtrace',
|
||||
name='from_state',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='fsmtrace',
|
||||
name='fsm_name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='fsmtrace',
|
||||
name='message_type',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='fsmtrace',
|
||||
name='to_state',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='group_type',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='interface',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='link',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='messagetype',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='process',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='process',
|
||||
name='process_type',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='result',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=20),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='stream',
|
||||
name='label',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='testcase',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200, verbose_name=b'TestCase'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='toolbox',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='topology',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
]
|
||||
@ -1,20 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0002_remove_topology_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='type',
|
||||
field=models.CharField(default='', max_length=200),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,38 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0003_device_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Client',
|
||||
fields=[
|
||||
('client_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='MessageType',
|
||||
fields=[
|
||||
('message_type_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TopologyHistory',
|
||||
fields=[
|
||||
('topology_history_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('message_id', models.IntegerField()),
|
||||
('message_data', models.TextField()),
|
||||
('client', models.ForeignKey(to='network_ui.Client')),
|
||||
('message_type', models.ForeignKey(to='network_ui.MessageType')),
|
||||
('topology', models.ForeignKey(to='network_ui.Topology')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0004_client_messagetype_topologyhistory'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='topologyhistory',
|
||||
name='undone',
|
||||
field=models.BooleanField(default=b'False'),
|
||||
),
|
||||
]
|
||||
@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0005_topologyhistory_undone'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='topologyhistory',
|
||||
name='undone',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@ -1,44 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def forwards_func(apps, schema_editor):
|
||||
Topology = apps.get_model("network_ui", "Topology")
|
||||
Topology.objects.get_or_create(name="Unknown", topology_id=-1, panX=0, panY=0, scale=1.0)
|
||||
Device = apps.get_model("network_ui", "Device")
|
||||
Device.objects.get_or_create(name="Unknown", device_id=-1, x=0, y=0, type="unknown", id=-1, topology_id=-1)
|
||||
Interface = apps.get_model("network_ui", "Interface")
|
||||
Interface.objects.get_or_create(name="Unknown", device_id=-1, interface_id=-1)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0006_auto_20170321_1236'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Interface',
|
||||
fields=[
|
||||
('interface_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('device', models.ForeignKey(to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.RunPython(forwards_func),
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='from_interface',
|
||||
field=models.ForeignKey(related_name='+', default=-1, to='network_ui.Interface'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='to_interface',
|
||||
field=models.ForeignKey(related_name='+', default=-1, to='network_ui.Interface'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,20 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0007_auto_20170328_1655'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='interface',
|
||||
name='id',
|
||||
field=models.IntegerField(default=0),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,34 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0008_interface_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='link',
|
||||
name='from_device',
|
||||
field=models.ForeignKey(related_name='from_link', to='network_ui.Device'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='link',
|
||||
name='from_interface',
|
||||
field=models.ForeignKey(related_name='from_link', to='network_ui.Interface'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='link',
|
||||
name='to_device',
|
||||
field=models.ForeignKey(related_name='to_link', to='network_ui.Device'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='link',
|
||||
name='to_interface',
|
||||
field=models.ForeignKey(related_name='to_link', to='network_ui.Interface'),
|
||||
),
|
||||
]
|
||||
@ -1,20 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0009_auto_20170403_1912'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='id',
|
||||
field=models.IntegerField(default=0),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,20 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0010_link_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='name',
|
||||
field=models.CharField(default='', max_length=200),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,29 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0011_link_name'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='interface_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='device_id_seq',
|
||||
field=models.IntegerField(default=0, verbose_name=b'Topology'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='link_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
@ -1,39 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0012_auto_20170706_1526'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Group',
|
||||
fields=[
|
||||
('group_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('id', models.IntegerField(verbose_name=b'Group')),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('x1', models.IntegerField()),
|
||||
('y1', models.IntegerField(verbose_name=b'Group')),
|
||||
('x2', models.IntegerField(verbose_name=b'Group')),
|
||||
('y2', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='GroupDevice',
|
||||
fields=[
|
||||
('group_device_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('device', models.ForeignKey(to='network_ui.Device')),
|
||||
('group', models.ForeignKey(to='network_ui.GroupDevice')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='group_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
@ -1,20 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0013_auto_20170710_1840'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='group',
|
||||
name='topology',
|
||||
field=models.ForeignKey(default=1, to='network_ui.Topology'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0014_group_topology'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='groupdevice',
|
||||
name='group',
|
||||
field=models.ForeignKey(to='network_ui.Group'),
|
||||
),
|
||||
]
|
||||
@ -1,50 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0015_auto_20170710_1937'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DataBinding',
|
||||
fields=[
|
||||
('data_binding_id', models.AutoField(serialize=False, verbose_name=b'DataBinding', primary_key=True)),
|
||||
('column', models.IntegerField()),
|
||||
('row', models.IntegerField()),
|
||||
('table', models.CharField(max_length=200)),
|
||||
('primary_key_id', models.IntegerField()),
|
||||
('field', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DataSheet',
|
||||
fields=[
|
||||
('data_sheet_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('topology', models.ForeignKey(to='network_ui.Topology')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DataType',
|
||||
fields=[
|
||||
('data_type_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('type_name', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='databinding',
|
||||
name='data_type',
|
||||
field=models.ForeignKey(to='network_ui.DataType'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='databinding',
|
||||
name='sheet',
|
||||
field=models.ForeignKey(to='network_ui.DataSheet'),
|
||||
),
|
||||
]
|
||||
@ -1,45 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0016_auto_20170717_1520'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='datasheet',
|
||||
name='client',
|
||||
field=models.ForeignKey(default=1, to='network_ui.Client'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='databinding',
|
||||
name='data_binding_id',
|
||||
field=models.AutoField(serialize=False, primary_key=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='id',
|
||||
field=models.IntegerField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='x2',
|
||||
field=models.IntegerField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='group',
|
||||
name='y1',
|
||||
field=models.IntegerField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='topology',
|
||||
name='device_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
@ -1,50 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0017_auto_20170717_1813'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Process',
|
||||
fields=[
|
||||
('process_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('type', models.CharField(max_length=200)),
|
||||
('id', models.IntegerField(default=0)),
|
||||
('device', models.ForeignKey(to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Stream',
|
||||
fields=[
|
||||
('stream_id', models.AutoField(serialize=False, verbose_name=b'Stream', primary_key=True)),
|
||||
('label', models.CharField(max_length=200, verbose_name=b'Stream')),
|
||||
('id', models.IntegerField(default=0)),
|
||||
('from_device', models.ForeignKey(related_name='from_stream', to='network_ui.Stream')),
|
||||
('to_device', models.ForeignKey(related_name='to_stream', to='network_ui.Stream')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='group',
|
||||
name='type',
|
||||
field=models.CharField(default='', max_length=200),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='topology',
|
||||
name='stream_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='topology',
|
||||
name='group_id_seq',
|
||||
field=models.IntegerField(default=0, verbose_name=b'Topology'),
|
||||
),
|
||||
]
|
||||
@ -1,29 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0018_auto_20170821_1557'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='stream',
|
||||
name='from_device',
|
||||
field=models.ForeignKey(related_name='from_stream', to='network_ui.Device'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='stream',
|
||||
name='label',
|
||||
field=models.CharField(max_length=200),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='stream',
|
||||
name='to_device',
|
||||
field=models.ForeignKey(related_name='to_stream', to='network_ui.Device'),
|
||||
),
|
||||
]
|
||||
@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0019_auto_20170822_1723'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='process_id_seq',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
@ -1,29 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0020_device_process_id_seq'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Toolbox',
|
||||
fields=[
|
||||
('toolbox_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ToolboxItem',
|
||||
fields=[
|
||||
('toolbox_item_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('data', models.TextField()),
|
||||
('toolbox', models.ForeignKey(to='network_ui.Toolbox')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,27 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0021_toolbox_toolboxitem'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='FSMTrace',
|
||||
fields=[
|
||||
('fsm_trace_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('fsm_name', models.CharField(max_length=200)),
|
||||
('from_state', models.CharField(max_length=200)),
|
||||
('to_state', models.CharField(max_length=200)),
|
||||
('message_type', models.CharField(max_length=200)),
|
||||
('trace_session_id', models.IntegerField(default=0)),
|
||||
('order', models.IntegerField(default=0)),
|
||||
('client', models.ForeignKey(to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,73 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
import yaml
|
||||
|
||||
messages = yaml.load('''
|
||||
messages:
|
||||
- {msg_type: DeviceMove, fields: [msg_type, sender, id, x, y, previous_x, previous_y]}
|
||||
- {msg_type: DeviceCreate, fields: [msg_type, sender, id, x, y, name, type]}
|
||||
- {msg_type: DeviceDestroy, fields: [msg_type, sender, id, previous_x, previous_y, previous_name, previous_type]}
|
||||
- {msg_type: DeviceLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: DeviceSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: DeviceUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: InterfaceCreate, fields: [msg_type, sender, device_id, id, name]}
|
||||
- {msg_type: InterfaceLabelEdit, fields: [msg_type, sender, id, device_id, name, previous_name]}
|
||||
- {msg_type: LinkLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: LinkCreate, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkDestroy, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: LinkUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: Undo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Redo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Deploy, fields: [msg_type, sender]}
|
||||
- {msg_type: Destroy, fields: [msg_type, sender]}
|
||||
- {msg_type: Discover, fields: [msg_type, sender]}
|
||||
- {msg_type: Layout, fields: [msg_type, sender]}
|
||||
- {msg_type: MultipleMessage, fields: [msg_type, sender, messages]}
|
||||
- {msg_type: Coverage, fields: [msg_type, sender, coverage]}
|
||||
- {msg_type: MouseEvent, fields: [msg_type, sender, x, y, type]}
|
||||
- {msg_type: MouseWheelEvent, fields: [msg_type, sender, delta, deltaX, deltaY, type, originalEvent]}
|
||||
- {msg_type: KeyEvent, fields: [msg_type, sender, key, keyCode, type, altKey, shiftKey, ctrlKey, metaKey]}
|
||||
- {msg_type: TouchEvent, fields: [msg_type, sender, type, touches]}
|
||||
- {msg_type: StartRecording, fields: [msg_type, sender]}
|
||||
- {msg_type: StopRecording, fields: [msg_type, sender]}
|
||||
- {msg_type: ViewPort, fields: [msg_type, sender, scale, panX, panY]}
|
||||
- {msg_type: CopySite, fields: [msg_type, site]}
|
||||
- {msg_type: GroupMove, fields: [msg_type, sender, id, x1, y1, x2, y2, previous_x1, previous_y1, previous_x2, previous_y2]}
|
||||
- {msg_type: GroupCreate, fields: [msg_type, sender, id, x1, y1, x2, y2, name, type]}
|
||||
- {msg_type: GroupDestroy, fields: [msg_type, sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type]}
|
||||
- {msg_type: GroupLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: GroupSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupMembership, fields: [msg_type, sender, id, members]}
|
||||
- {msg_type: TableCellEdit, fields: [msg_type, sender, sheet, col, row, old_value, new_value]}
|
||||
- {msg_type: ProcessCreate, fields: [msg_type, id, name, type, device_id, x, y]}
|
||||
- {msg_type: StreamCreate, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamDestroy, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamLabelEdit, fields: [msg_type, sender, id, label, previous_label]}
|
||||
- {msg_type: StreamSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: StreamUnSelected, fields: [msg_type, sender, id]}
|
||||
''')
|
||||
|
||||
|
||||
def populate_message_types(apps, schema_editor):
|
||||
|
||||
MessageType = apps.get_model('network_ui', 'MessageType')
|
||||
for message in messages['messages']:
|
||||
MessageType.objects.get_or_create(name=message['msg_type'])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0022_fsmtrace'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
code=populate_message_types,
|
||||
),
|
||||
]
|
||||
@ -1,76 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
import yaml
|
||||
|
||||
messages = yaml.load('''
|
||||
messages:
|
||||
- {msg_type: DeviceMove, fields: [msg_type, sender, id, x, y, previous_x, previous_y]}
|
||||
- {msg_type: DeviceCreate, fields: [msg_type, sender, id, x, y, name, type]}
|
||||
- {msg_type: DeviceDestroy, fields: [msg_type, sender, id, previous_x, previous_y, previous_name, previous_type]}
|
||||
- {msg_type: DeviceLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: DeviceSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: DeviceUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: InterfaceCreate, fields: [msg_type, sender, device_id, id, name]}
|
||||
- {msg_type: InterfaceLabelEdit, fields: [msg_type, sender, id, device_id, name, previous_name]}
|
||||
- {msg_type: LinkLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: LinkCreate, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkDestroy, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: LinkUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: Undo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Redo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Deploy, fields: [msg_type, sender]}
|
||||
- {msg_type: Destroy, fields: [msg_type, sender]}
|
||||
- {msg_type: Discover, fields: [msg_type, sender]}
|
||||
- {msg_type: Layout, fields: [msg_type, sender]}
|
||||
- {msg_type: MultipleMessage, fields: [msg_type, sender, messages]}
|
||||
- {msg_type: Coverage, fields: [msg_type, sender, coverage]}
|
||||
- {msg_type: MouseEvent, fields: [msg_type, sender, x, y, type]}
|
||||
- {msg_type: MouseWheelEvent, fields: [msg_type, sender, delta, deltaX, deltaY, type, originalEvent]}
|
||||
- {msg_type: KeyEvent, fields: [msg_type, sender, key, keyCode, type, altKey, shiftKey, ctrlKey, metaKey]}
|
||||
- {msg_type: TouchEvent, fields: [msg_type, sender, type, touches]}
|
||||
- {msg_type: StartRecording, fields: [msg_type, sender]}
|
||||
- {msg_type: StopRecording, fields: [msg_type, sender]}
|
||||
- {msg_type: ViewPort, fields: [msg_type, sender, scale, panX, panY]}
|
||||
- {msg_type: CopySite, fields: [msg_type, site]}
|
||||
- {msg_type: GroupMove, fields: [msg_type, sender, id, x1, y1, x2, y2, previous_x1, previous_y1, previous_x2, previous_y2]}
|
||||
- {msg_type: GroupCreate, fields: [msg_type, sender, id, x1, y1, x2, y2, name, type]}
|
||||
- {msg_type: GroupDestroy, fields: [msg_type, sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type]}
|
||||
- {msg_type: GroupLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: GroupSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupMembership, fields: [msg_type, sender, id, members]}
|
||||
- {msg_type: TableCellEdit, fields: [msg_type, sender, sheet, col, row, old_value, new_value]}
|
||||
- {msg_type: ProcessCreate, fields: [msg_type, id, name, type, device_id, x, y]}
|
||||
- {msg_type: StreamCreate, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamDestroy, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamLabelEdit, fields: [msg_type, sender, id, label, previous_label]}
|
||||
- {msg_type: StreamSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: StreamUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: FSMTrace, fields: [msg_type, order, sender, trace_id, fsm_name, from_state, to_state, recv_message_type]}
|
||||
- {msg_type: ChannelTrace, fields: [msg_type, sender, trace_id, from_fsm, to_fsm, sent_message_type]}
|
||||
|
||||
''')
|
||||
|
||||
|
||||
def populate_message_types(apps, schema_editor):
|
||||
|
||||
MessageType = apps.get_model('network_ui', 'MessageType')
|
||||
for message in messages['messages']:
|
||||
MessageType.objects.get_or_create(name=message['msg_type'])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0023_auto_20171213_1623'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
code=populate_message_types,
|
||||
),
|
||||
]
|
||||
@ -1,30 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0024_auto_20171213_1949'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DeviceHost',
|
||||
fields=[
|
||||
('device_host_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('host_id', models.IntegerField()),
|
||||
('device', models.ForeignKey(to='network_ui.Device')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TopologyInventory',
|
||||
fields=[
|
||||
('topology_inventory_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('inventory_id', models.IntegerField()),
|
||||
('topology', models.ForeignKey(to='network_ui.Topology')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,26 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0025_devicehost_topologyinventory'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='devicehost',
|
||||
name='device',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='host_id',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='DeviceHost',
|
||||
),
|
||||
]
|
||||
@ -1,24 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0026_auto_20180105_1403'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='EventTrace',
|
||||
fields=[
|
||||
('event_trace_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('trace_session_id', models.IntegerField(default=0)),
|
||||
('event_data', models.TextField()),
|
||||
('message_id', models.IntegerField()),
|
||||
('client', models.ForeignKey(to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,23 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0027_eventtrace'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Coverage',
|
||||
fields=[
|
||||
('coverage_id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('trace_session_id', models.IntegerField()),
|
||||
('coverage_data', models.TextField()),
|
||||
('client', models.ForeignKey(to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,27 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-01-09 17:12
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0028_coverage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TopologySnapshot',
|
||||
fields=[
|
||||
('topology_snapshot_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('topology_id', models.IntegerField()),
|
||||
('trace_session_id', models.IntegerField()),
|
||||
('snapshot_data', models.TextField(verbose_name=b'TopologySnapshot')),
|
||||
('order', models.IntegerField()),
|
||||
('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,66 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-01-10 17:51
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0029_topologysnapshot'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CodeUnderTest',
|
||||
fields=[
|
||||
('code_under_test_id', models.AutoField(primary_key=True, serialize=False, verbose_name=b'CodeUnderTest')),
|
||||
('version_x', models.IntegerField()),
|
||||
('version_y', models.IntegerField()),
|
||||
('version_z', models.IntegerField()),
|
||||
('commits_since', models.IntegerField()),
|
||||
('commit_hash', models.CharField(max_length=40)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Result',
|
||||
fields=[
|
||||
('result_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=20)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TestCase',
|
||||
fields=[
|
||||
('test_case_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200, verbose_name=b'TestCase')),
|
||||
('test_case_data', models.TextField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TestResult',
|
||||
fields=[
|
||||
('test_result_id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('time', models.DateTimeField()),
|
||||
('code_under_test', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.CodeUnderTest')),
|
||||
('result', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Result')),
|
||||
('test_case', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.TestCase')),
|
||||
],
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='coverage',
|
||||
name='client',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='coverage',
|
||||
name='trace_session_id',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='coverage',
|
||||
name='test_result',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='network_ui.TestResult'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,32 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-01-10 17:52
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
results = ['passed',
|
||||
'failed',
|
||||
'errored',
|
||||
'skipped',
|
||||
'aborted',
|
||||
'not run',
|
||||
'blocked']
|
||||
|
||||
def populate_result_types(apps, schema_editor):
|
||||
|
||||
Result = apps.get_model('network_ui', 'Result')
|
||||
for result in results:
|
||||
Result.objects.get_or_create(name=result)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0030_auto_20180110_1751'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
code=populate_result_types,
|
||||
),
|
||||
]
|
||||
@ -1,27 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-01-12 21:35
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0031_auto_20180110_1752'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='testresult',
|
||||
name='client',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='testresult',
|
||||
name='id',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
@ -1,82 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-01-12 22:02
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
import yaml
|
||||
|
||||
messages = yaml.load('''
|
||||
messages:
|
||||
- {msg_type: DeviceMove, fields: [msg_type, sender, id, x, y, previous_x, previous_y]}
|
||||
- {msg_type: DeviceCreate, fields: [msg_type, sender, id, x, y, name, type, host_id]}
|
||||
- {msg_type: DeviceDestroy, fields: [msg_type, sender, id, previous_x, previous_y, previous_name, previous_type, previous_host_id]}
|
||||
- {msg_type: DeviceLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: DeviceSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: DeviceUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: InterfaceCreate, fields: [msg_type, sender, device_id, id, name]}
|
||||
- {msg_type: InterfaceLabelEdit, fields: [msg_type, sender, id, device_id, name, previous_name]}
|
||||
- {msg_type: LinkLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: LinkCreate, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkDestroy, fields: [msg_type, id, sender, name, from_device_id, to_device_id, from_interface_id, to_interface_id]}
|
||||
- {msg_type: LinkSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: LinkUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: Undo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Redo, fields: [msg_type, sender, original_message]}
|
||||
- {msg_type: Deploy, fields: [msg_type, sender]}
|
||||
- {msg_type: Destroy, fields: [msg_type, sender]}
|
||||
- {msg_type: Discover, fields: [msg_type, sender]}
|
||||
- {msg_type: Layout, fields: [msg_type, sender]}
|
||||
- {msg_type: MultipleMessage, fields: [msg_type, sender, messages]}
|
||||
- {msg_type: MouseEvent, fields: [msg_type, sender, x, y, type, trace_id]}
|
||||
- {msg_type: MouseWheelEvent, fields: [msg_type, sender, delta, deltaX, deltaY, type, originalEvent, trace_id]}
|
||||
- {msg_type: KeyEvent, fields: [msg_type, sender, key, keyCode, type, altKey, shiftKey, ctrlKey, metaKey, trace_id]}
|
||||
- {msg_type: TouchEvent, fields: [msg_type, sender, type, touches]}
|
||||
- {msg_type: StartRecording, fields: [msg_type, sender, trace_id]}
|
||||
- {msg_type: StopRecording, fields: [msg_type, sender, trace_id]}
|
||||
- {msg_type: ViewPort, fields: [msg_type, sender, scale, panX, panY, trace_id]}
|
||||
- {msg_type: CopySite, fields: [msg_type, site]}
|
||||
- {msg_type: GroupMove, fields: [msg_type, sender, id, x1, y1, x2, y2, previous_x1, previous_y1, previous_x2, previous_y2]}
|
||||
- {msg_type: GroupCreate, fields: [msg_type, sender, id, x1, y1, x2, y2, name, type]}
|
||||
- {msg_type: GroupDestroy, fields: [msg_type, sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type]}
|
||||
- {msg_type: GroupLabelEdit, fields: [msg_type, sender, id, name, previous_name]}
|
||||
- {msg_type: GroupSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: GroupMembership, fields: [msg_type, sender, id, members]}
|
||||
- {msg_type: TableCellEdit, fields: [msg_type, sender, sheet, col, row, old_value, new_value]}
|
||||
- {msg_type: ProcessCreate, fields: [msg_type, id, name, type, device_id, x, y]}
|
||||
- {msg_type: StreamCreate, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamDestroy, fields: [msg_type, sender, id, from_id, to_id, label]}
|
||||
- {msg_type: StreamLabelEdit, fields: [msg_type, sender, id, label, previous_label]}
|
||||
- {msg_type: StreamSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: StreamUnSelected, fields: [msg_type, sender, id]}
|
||||
- {msg_type: FSMTrace, fields: [msg_type, order, sender, trace_id, fsm_name, from_state, to_state, recv_message_type]}
|
||||
- {msg_type: ChannelTrace, fields: [msg_type, sender, trace_id, from_fsm, to_fsm, sent_message_type]}
|
||||
- {msg_type: Snapshot, fields: [msg_type, sender, devices, links, groups, streams, order, trace_id]}
|
||||
- {msg_type: EnableTest, fields: [msg_type]}
|
||||
- {msg_type: DisableTest, fields: [msg_type]}
|
||||
- {msg_type: StartTest, fields: [msg_type]}
|
||||
- {msg_type: TestCompleted, fields: [msg_type]}
|
||||
- {msg_type: TestResult, fields: [msg_type, sender, id, name, result, date, code_under_test]}
|
||||
- {msg_type: Coverage, fields: [msg_type, sender, coverage, result_id]}
|
||||
''')
|
||||
|
||||
|
||||
def populate_message_types(apps, schema_editor):
|
||||
|
||||
MessageType = apps.get_model('network_ui', 'MessageType')
|
||||
for message in messages['messages']:
|
||||
MessageType.objects.get_or_create(name=message['msg_type'])
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0032_auto_20180112_2135'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
code=populate_message_types,
|
||||
),
|
||||
]
|
||||
@ -1,24 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-01-13 17:25
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
import json
|
||||
|
||||
def add_load_test_case(apps, schema_editor):
|
||||
|
||||
TestCase = apps.get_model('network_ui', 'TestCase')
|
||||
TestCase.objects.get_or_create(name="Load", test_case_data=json.dumps(dict(runnable=False)))
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('network_ui', '0033_auto_20180112_2202'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
code=add_load_test_case,
|
||||
),
|
||||
]
|
||||
@ -5,14 +5,14 @@ class Device(models.Model):
|
||||
|
||||
device_id = models.AutoField(primary_key=True,)
|
||||
topology = models.ForeignKey('Topology',)
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
x = models.IntegerField()
|
||||
y = models.IntegerField()
|
||||
id = models.IntegerField()
|
||||
type = models.CharField(max_length=200,)
|
||||
interface_id_seq = models.IntegerField(default=0)
|
||||
process_id_seq = models.IntegerField(default=0)
|
||||
host_id = models.IntegerField(default=0)
|
||||
device_type = models.CharField(max_length=200, blank=True)
|
||||
interface_id_seq = models.IntegerField(default=0,)
|
||||
process_id_seq = models.IntegerField(default=0,)
|
||||
host_id = models.IntegerField(default=0,)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
@ -26,20 +26,20 @@ class Link(models.Model):
|
||||
from_interface = models.ForeignKey('Interface', related_name='from_link',)
|
||||
to_interface = models.ForeignKey('Interface', related_name='to_link',)
|
||||
id = models.IntegerField()
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
|
||||
|
||||
class Topology(models.Model):
|
||||
|
||||
topology_id = models.AutoField(primary_key=True,)
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
scale = models.FloatField()
|
||||
panX = models.FloatField()
|
||||
panY = models.FloatField()
|
||||
device_id_seq = models.IntegerField(default=0)
|
||||
link_id_seq = models.IntegerField(default=0)
|
||||
group_id_seq = models.IntegerField(default=0)
|
||||
stream_id_seq = models.IntegerField(default=0)
|
||||
device_id_seq = models.IntegerField(default=0,)
|
||||
link_id_seq = models.IntegerField(default=0,)
|
||||
group_id_seq = models.IntegerField(default=0,)
|
||||
stream_id_seq = models.IntegerField(default=0,)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
@ -58,13 +58,13 @@ class TopologyHistory(models.Model):
|
||||
message_type = models.ForeignKey('MessageType',)
|
||||
message_id = models.IntegerField()
|
||||
message_data = models.TextField()
|
||||
undone = models.BooleanField(default=False)
|
||||
undone = models.BooleanField(default=False,)
|
||||
|
||||
|
||||
class MessageType(models.Model):
|
||||
|
||||
message_type_id = models.AutoField(primary_key=True,)
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
@ -74,7 +74,7 @@ class Interface(models.Model):
|
||||
|
||||
interface_id = models.AutoField(primary_key=True,)
|
||||
device = models.ForeignKey('Device',)
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
id = models.IntegerField()
|
||||
|
||||
def __unicode__(self):
|
||||
@ -85,13 +85,14 @@ class Group(models.Model):
|
||||
|
||||
group_id = models.AutoField(primary_key=True,)
|
||||
id = models.IntegerField()
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
x1 = models.IntegerField()
|
||||
y1 = models.IntegerField()
|
||||
x2 = models.IntegerField()
|
||||
y2 = models.IntegerField()
|
||||
topology = models.ForeignKey('Topology',)
|
||||
type = models.CharField(max_length=200,)
|
||||
group_type = models.CharField(max_length=200, blank=True)
|
||||
inventory_group_id = models.IntegerField(default=0,)
|
||||
|
||||
|
||||
class GroupDevice(models.Model):
|
||||
@ -106,9 +107,9 @@ class DataBinding(models.Model):
|
||||
data_binding_id = models.AutoField(primary_key=True,)
|
||||
column = models.IntegerField()
|
||||
row = models.IntegerField()
|
||||
table = models.CharField(max_length=200,)
|
||||
table = models.CharField(max_length=200, blank=True)
|
||||
primary_key_id = models.IntegerField()
|
||||
field = models.CharField(max_length=200,)
|
||||
field = models.CharField(max_length=200, blank=True)
|
||||
data_type = models.ForeignKey('DataType',)
|
||||
sheet = models.ForeignKey('DataSheet',)
|
||||
|
||||
@ -116,13 +117,13 @@ class DataBinding(models.Model):
|
||||
class DataType(models.Model):
|
||||
|
||||
data_type_id = models.AutoField(primary_key=True,)
|
||||
type_name = models.CharField(max_length=200,)
|
||||
type_name = models.CharField(max_length=200, blank=True)
|
||||
|
||||
|
||||
class DataSheet(models.Model):
|
||||
|
||||
data_sheet_id = models.AutoField(primary_key=True,)
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
topology = models.ForeignKey('Topology',)
|
||||
client = models.ForeignKey('Client',)
|
||||
|
||||
@ -132,23 +133,23 @@ class Stream(models.Model):
|
||||
stream_id = models.AutoField('Stream', primary_key=True,)
|
||||
from_device = models.ForeignKey('Device', related_name='from_stream',)
|
||||
to_device = models.ForeignKey('Device', related_name='to_stream',)
|
||||
label = models.CharField(max_length=200,)
|
||||
id = models.IntegerField(default=0)
|
||||
label = models.CharField(max_length=200, blank=True)
|
||||
id = models.IntegerField(default=0,)
|
||||
|
||||
|
||||
class Process(models.Model):
|
||||
|
||||
process_id = models.AutoField(primary_key=True,)
|
||||
device = models.ForeignKey('Device',)
|
||||
name = models.CharField(max_length=200,)
|
||||
type = models.CharField(max_length=200,)
|
||||
id = models.IntegerField(default=0)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
process_type = models.CharField(max_length=200, blank=True)
|
||||
id = models.IntegerField(default=0,)
|
||||
|
||||
|
||||
class Toolbox(models.Model):
|
||||
|
||||
toolbox_id = models.AutoField(primary_key=True,)
|
||||
name = models.CharField(max_length=200,)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
|
||||
|
||||
class ToolboxItem(models.Model):
|
||||
@ -161,13 +162,13 @@ class ToolboxItem(models.Model):
|
||||
class FSMTrace(models.Model):
|
||||
|
||||
fsm_trace_id = models.AutoField(primary_key=True,)
|
||||
fsm_name = models.CharField(max_length=200,)
|
||||
from_state = models.CharField(max_length=200,)
|
||||
to_state = models.CharField(max_length=200,)
|
||||
message_type = models.CharField(max_length=200,)
|
||||
fsm_name = models.CharField(max_length=200, blank=True)
|
||||
from_state = models.CharField(max_length=200, blank=True)
|
||||
to_state = models.CharField(max_length=200, blank=True)
|
||||
message_type = models.CharField(max_length=200, blank=True)
|
||||
client = models.ForeignKey('Client',)
|
||||
trace_session_id = models.IntegerField(default=0)
|
||||
order = models.IntegerField(default=0)
|
||||
trace_session_id = models.IntegerField(default=0,)
|
||||
order = models.IntegerField(default=0,)
|
||||
|
||||
|
||||
class TopologyInventory(models.Model):
|
||||
@ -181,7 +182,7 @@ class EventTrace(models.Model):
|
||||
|
||||
event_trace_id = models.AutoField(primary_key=True,)
|
||||
client = models.ForeignKey('Client',)
|
||||
trace_session_id = models.IntegerField(default=0)
|
||||
trace_session_id = models.IntegerField(default=0,)
|
||||
event_data = models.TextField()
|
||||
message_id = models.IntegerField()
|
||||
|
||||
@ -206,14 +207,14 @@ class TopologySnapshot(models.Model):
|
||||
class TestCase(models.Model):
|
||||
|
||||
test_case_id = models.AutoField(primary_key=True,)
|
||||
name = models.CharField('TestCase', max_length=200,)
|
||||
name = models.CharField('TestCase', max_length=200, blank=True)
|
||||
test_case_data = models.TextField()
|
||||
|
||||
|
||||
class Result(models.Model):
|
||||
|
||||
result_id = models.AutoField(primary_key=True,)
|
||||
name = models.CharField(max_length=20,)
|
||||
name = models.CharField(max_length=20, blank=True)
|
||||
|
||||
|
||||
class CodeUnderTest(models.Model):
|
||||
@ -223,7 +224,7 @@ class CodeUnderTest(models.Model):
|
||||
version_y = models.IntegerField()
|
||||
version_z = models.IntegerField()
|
||||
commits_since = models.IntegerField()
|
||||
commit_hash = models.CharField(max_length=40,)
|
||||
commit_hash = models.CharField(max_length=40, blank=True)
|
||||
|
||||
|
||||
class TestResult(models.Model):
|
||||
@ -233,5 +234,5 @@ class TestResult(models.Model):
|
||||
result = models.ForeignKey('Result',)
|
||||
code_under_test = models.ForeignKey('CodeUnderTest',)
|
||||
time = models.DateTimeField()
|
||||
id = models.IntegerField(default=0)
|
||||
id = models.IntegerField(default=0,)
|
||||
client = models.ForeignKey('Client',)
|
||||
|
||||
@ -60,7 +60,7 @@ def topology_data(topology_id):
|
||||
) for x in interfaces]
|
||||
processes = list(Process.objects.filter(device_id=device.pk).values())
|
||||
data['devices'].append(dict(name=device.name,
|
||||
type=device.type,
|
||||
type=device.device_type,
|
||||
x=device.x,
|
||||
y=device.y,
|
||||
id=device.id,
|
||||
|
||||
@ -4,7 +4,7 @@ from django.db import models
|
||||
{%for model in models%}
|
||||
class {{model.name}}(models.Model):
|
||||
|
||||
{%for field in model.fields%}{{field.name}} = models.{{field.type}}({%if field.ref%}'{{field.ref}}',{%endif%}{%if field.pk%}primary_key=True,{%endif%}{%if field.len%}max_length={{field.len}},{%endif%}{%if field.related_name%}related_name='{{field.related_name}}',{%endif%}{%if field.default is defined%}default={{field.default}}{%endif%})
|
||||
{%for field in model.fields%}{{field.name}} = models.{{field.type}}({%if field.ref%}'{{field.ref}}',{%endif%}{%if field.pk%}primary_key=True,{%endif%}{%if field.len%}max_length={{field.len}},{%endif%}{%if field.related_name%}related_name='{{field.related_name}}',{%endif%}{%if field.default is defined%}default={{field.default}},{%endif%}{%if field.type == 'CharField'%}blank=True{%endif%})
|
||||
{%endfor%}
|
||||
|
||||
{%if model.display%}
|
||||
|
||||
@ -14,3 +14,4 @@ class TestToString(TestCase):
|
||||
print str(Device(name='foo'))
|
||||
print str(Interface(name='foo'))
|
||||
print str(MessageType(name='foo'))
|
||||
print str(Link(name='foo'))
|
||||
|
||||
@ -46,8 +46,8 @@ def main(args=None):
|
||||
f.write(requests.get(server + test['coverage'], verify=False).text)
|
||||
|
||||
|
||||
for test in tests['tests']:
|
||||
subprocess.Popen('istanbul report html', shell=True, cwd=test['name']).wait()
|
||||
#for test in tests['tests']:
|
||||
# subprocess.Popen('istanbul report html', shell=True, cwd=test['name']).wait()
|
||||
|
||||
|
||||
subprocess.Popen('istanbul report html', shell=True).wait()
|
||||
@ -55,7 +55,7 @@ def main(args=None):
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ Device = namedtuple('Device', ['device_id',
|
||||
'x',
|
||||
'y',
|
||||
'id',
|
||||
'type',
|
||||
'device_type',
|
||||
'interface_id_seq',
|
||||
'process_id_seq',
|
||||
'host_id',
|
||||
@ -65,7 +65,7 @@ Group = namedtuple('Group', ['group_id',
|
||||
'x2',
|
||||
'y2',
|
||||
'topology',
|
||||
'type',
|
||||
'group_type',
|
||||
'inventory_group_id',
|
||||
])
|
||||
|
||||
@ -104,7 +104,7 @@ Stream = namedtuple('Stream', ['stream_id',
|
||||
Process = namedtuple('Process', ['process_id',
|
||||
'device',
|
||||
'name',
|
||||
'type',
|
||||
'process_type',
|
||||
'id',
|
||||
])
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
# Copyright (c) 2017 Red Hat, Inc
|
||||
|
||||
|
||||
def transform_dict(dict_map, d):
|
||||
return {to_key: d[from_key] for from_key, to_key in dict_map.iteritems()}
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ class DeviceSerializer(BaseSerializer):
|
||||
'x',
|
||||
'y',
|
||||
'id',
|
||||
'type',
|
||||
'device_type',
|
||||
'interface_id_seq',
|
||||
'process_id_seq',
|
||||
'host_id')
|
||||
@ -74,7 +74,8 @@ class GroupSerializer(BaseSerializer):
|
||||
'x2',
|
||||
'y2',
|
||||
'topology',
|
||||
'type')
|
||||
'group_type',
|
||||
'inventory_group_id')
|
||||
|
||||
|
||||
class GroupDeviceSerializer(BaseSerializer):
|
||||
@ -101,7 +102,7 @@ class ProcessSerializer(BaseSerializer):
|
||||
fields = ('process_id',
|
||||
'device',
|
||||
'name',
|
||||
'type',
|
||||
'process_type',
|
||||
'id')
|
||||
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ class DeviceSerializer(BaseSerializer):
|
||||
'x',
|
||||
'y',
|
||||
'id',
|
||||
'type',
|
||||
'device_type',
|
||||
'interface_id_seq',
|
||||
'process_id_seq',
|
||||
'host_id')
|
||||
@ -74,7 +74,8 @@ class GroupSerializer(BaseSerializer):
|
||||
'x2',
|
||||
'y2',
|
||||
'topology',
|
||||
'type')
|
||||
'group_type',
|
||||
'inventory_group_id')
|
||||
|
||||
|
||||
class GroupDeviceSerializer(BaseSerializer):
|
||||
@ -101,7 +102,7 @@ class ProcessSerializer(BaseSerializer):
|
||||
fields = ('process_id',
|
||||
'device',
|
||||
'name',
|
||||
'type',
|
||||
'process_type',
|
||||
'id')
|
||||
|
||||
|
||||
|
||||
@ -41,7 +41,25 @@ class DeviceList(ListCreateAPIView):
|
||||
pk = response.data['device_id']
|
||||
message = dict()
|
||||
|
||||
message.update(response.data)
|
||||
message.update(transform_dict({'interface_id_seq': 'interface_id_seq',
|
||||
'name': 'name',
|
||||
'process_id_seq': 'process_id_seq',
|
||||
'device_type': 'type',
|
||||
'host_id': 'host_id',
|
||||
'y': 'y',
|
||||
'x': 'x',
|
||||
'topology_id': 'topology_id',
|
||||
'id': 'id',
|
||||
}, Device.objects.filter(pk=pk).values(*['interface_id_seq',
|
||||
'name',
|
||||
'process_id_seq',
|
||||
'device_type',
|
||||
'host_id',
|
||||
'y',
|
||||
'x',
|
||||
'topology_id',
|
||||
'id',
|
||||
])[0]))
|
||||
|
||||
message['msg_type'] = "DeviceCreate"
|
||||
message['device_id'] = pk
|
||||
|
||||
@ -15,7 +15,7 @@ function scale_animation (scope) {
|
||||
if(scope.data.distance > 0) {
|
||||
height = (x + a) * (x - d) * c + scope.data.end_height;
|
||||
} else {
|
||||
height = (scope.data.end_height - initial_height) * (scope.frame_number / scope.steps) + initial_height
|
||||
height = (scope.data.end_height - initial_height) * (scope.frame_number / scope.steps) + initial_height;
|
||||
}
|
||||
//console.log({x: x,
|
||||
// c: c,
|
||||
|
||||
@ -163,6 +163,8 @@ _Resize.prototype.onMouseMove = function (controller) {
|
||||
controller.scope.send_control_message(new messages.GroupMembership(controller.scope.client_id,
|
||||
groups[i].id,
|
||||
membership_old_new[2]));
|
||||
controller.scope.create_group_association(groups[i], membership_old_new[6]);
|
||||
controller.scope.delete_group_association(groups[i], membership_old_new[7]);
|
||||
}
|
||||
controller.scope.pressedScaledX = controller.scope.scaledX;
|
||||
controller.scope.pressedScaledY = controller.scope.scaledY;
|
||||
@ -310,6 +312,8 @@ _Move.prototype.onMouseMove = function (controller) {
|
||||
controller.scope.send_control_message(new messages.GroupMembership(controller.scope.client_id,
|
||||
groups[i].id,
|
||||
membership_old_new[2]));
|
||||
controller.scope.create_group_association(groups[i], membership_old_new[6]);
|
||||
controller.scope.delete_group_association(groups[i], membership_old_new[7]);
|
||||
}
|
||||
controller.scope.pressedScaledX = controller.scope.scaledX;
|
||||
controller.scope.pressedScaledY = controller.scope.scaledY;
|
||||
@ -551,6 +555,7 @@ _Placing.prototype.onMouseDown = function (controller) {
|
||||
scope.scaledX,
|
||||
scope.scaledY,
|
||||
false);
|
||||
|
||||
scope.send_control_message(new messages.GroupCreate(scope.client_id,
|
||||
group.id,
|
||||
group.x1,
|
||||
@ -558,8 +563,10 @@ _Placing.prototype.onMouseDown = function (controller) {
|
||||
group.x2,
|
||||
group.y2,
|
||||
group.name,
|
||||
group.type));
|
||||
group.type,
|
||||
group.group_id));
|
||||
|
||||
scope.create_inventory_group(group);
|
||||
scope.groups.push(group);
|
||||
scope.selected_groups.push(group);
|
||||
group.selected = true;
|
||||
|
||||
@ -17,6 +17,22 @@ function DeviceMove(sender, id, x, y, previous_x, previous_y) {
|
||||
}
|
||||
exports.DeviceMove = DeviceMove;
|
||||
|
||||
function DeviceInventoryUpdate(sender, id, host_id) {
|
||||
this.msg_type = "DeviceInventoryUpdate";
|
||||
this.sender = sender;
|
||||
this.id = id;
|
||||
this.host_id = host_id;
|
||||
}
|
||||
exports.DeviceInventoryUpdate = DeviceInventoryUpdate;
|
||||
|
||||
function GroupInventoryUpdate(sender, id, group_id) {
|
||||
this.msg_type = "GroupInventoryUpdate";
|
||||
this.sender = sender;
|
||||
this.id = id;
|
||||
this.group_id = group_id;
|
||||
}
|
||||
exports.GroupInventoryUpdate = GroupInventoryUpdate;
|
||||
|
||||
function DeviceCreate(sender, id, x, y, name, type, host_id) {
|
||||
this.msg_type = "DeviceCreate";
|
||||
this.sender = sender;
|
||||
@ -290,7 +306,7 @@ function GroupMove(sender, id, x1, y1, x2, y2, previous_x1, previous_y1, previou
|
||||
}
|
||||
exports.GroupMove = GroupMove;
|
||||
|
||||
function GroupCreate(sender, id, x1, y1, x2, y2, name, type) {
|
||||
function GroupCreate(sender, id, x1, y1, x2, y2, name, type, group_id) {
|
||||
this.msg_type = "GroupCreate";
|
||||
this.sender = sender;
|
||||
this.id = id;
|
||||
@ -300,10 +316,11 @@ function GroupCreate(sender, id, x1, y1, x2, y2, name, type) {
|
||||
this.y2 = y2;
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.group_id = group_id;
|
||||
}
|
||||
exports.GroupCreate = GroupCreate;
|
||||
|
||||
function GroupDestroy(sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type) {
|
||||
function GroupDestroy(sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type, previous_group_id) {
|
||||
this.msg_type = "GroupDestroy";
|
||||
this.sender = sender;
|
||||
this.id = id;
|
||||
@ -313,6 +330,7 @@ function GroupDestroy(sender, id, previous_x1, previous_y1, previous_x2, previou
|
||||
this.previous_y2 = previous_y2;
|
||||
this.previous_name = previous_name;
|
||||
this.previous_type = previous_type;
|
||||
this.previous_group_id = previous_group_id;
|
||||
}
|
||||
exports.GroupDestroy = GroupDestroy;
|
||||
|
||||
|
||||
@ -29,6 +29,8 @@ function Device(id, name, x, y, type, host_id) {
|
||||
this.process_id_seq = util.natural_numbers(0);
|
||||
this.processes = [];
|
||||
this.in_group = false;
|
||||
this.template = false;
|
||||
this.variables = {};
|
||||
}
|
||||
exports.Device = Device;
|
||||
|
||||
@ -58,6 +60,29 @@ Device.prototype.is_selected = function (x, y) {
|
||||
Device.prototype.describeArc = util.describeArc;
|
||||
|
||||
|
||||
Device.prototype.compile_variables = function () {
|
||||
var variables = JSON.parse(JSON.stringify(this.variables));
|
||||
var awx_variables = {};
|
||||
variables.awx = awx_variables;
|
||||
awx_variables.name = this.name;
|
||||
awx_variables.type = this.type;
|
||||
awx_variables.interfaces = [];
|
||||
var i = 0;
|
||||
var intf = null;
|
||||
for (i = 0; i < this.interfaces.length; i++) {
|
||||
intf = {name: this.interfaces[i].name,
|
||||
id: this.interfaces[i].id};
|
||||
if (this.interfaces[i].link !== null) {
|
||||
intf.link_id = this.interfaces[i].link.id;
|
||||
intf.link_name = this.interfaces[i].link.name;
|
||||
intf.remote_interface_name = this.interfaces[i].remote_interface().name;
|
||||
intf.remote_device_name = this.interfaces[i].remote_interface().device.name;
|
||||
}
|
||||
awx_variables.interfaces.push(intf);
|
||||
}
|
||||
return variables;
|
||||
};
|
||||
|
||||
function Interface(id, name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
@ -439,10 +464,20 @@ function Group(id, name, type, x1, y1, x2, y2, selected) {
|
||||
this.links = [];
|
||||
this.groups = [];
|
||||
this.streams = [];
|
||||
this.group_id = 0;
|
||||
this.icon_size = type === 'site' ? 500 : 100;
|
||||
this.template = false;
|
||||
this.variables = {};
|
||||
this.sequences = {};
|
||||
}
|
||||
exports.Group = Group;
|
||||
|
||||
Group.prototype.compile_variables = function () {
|
||||
|
||||
var variables = JSON.parse(JSON.stringify(this.variables));
|
||||
return variables;
|
||||
};
|
||||
|
||||
Group.prototype.toJSON = function () {
|
||||
|
||||
return {id: this.id,
|
||||
@ -634,7 +669,10 @@ Group.prototype.update_membership = function (devices, groups) {
|
||||
var y2 = this.bottom_extent();
|
||||
var x2 = this.right_extent();
|
||||
var old_devices = this.devices;
|
||||
var new_devices = [];
|
||||
var removed_devices = old_devices.slice();
|
||||
var device_ids = [];
|
||||
var index = -1;
|
||||
this.devices = [];
|
||||
for (i = 0; i < devices.length; i++) {
|
||||
if (devices[i].x > x1 &&
|
||||
@ -644,6 +682,12 @@ Group.prototype.update_membership = function (devices, groups) {
|
||||
devices[i].in_group = true;
|
||||
this.devices.push(devices[i]);
|
||||
device_ids.push(devices[i].id);
|
||||
index = removed_devices.indexOf(devices[i]);
|
||||
if (index !== -1) {
|
||||
removed_devices.splice(index, 1);
|
||||
} else {
|
||||
new_devices.push(devices[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
var old_groups = this.groups;
|
||||
@ -658,7 +702,7 @@ Group.prototype.update_membership = function (devices, groups) {
|
||||
group_ids.push(groups[i].id);
|
||||
}
|
||||
}
|
||||
return [old_devices, this.devices, device_ids, old_groups, this.groups, group_ids];
|
||||
return [old_devices, this.devices, device_ids, old_groups, this.groups, group_ids, new_devices, removed_devices];
|
||||
};
|
||||
|
||||
Group.prototype.is_in_breadcrumb = function(viewport){
|
||||
|
||||
@ -4,6 +4,7 @@ var fsm = require('./fsm.js');
|
||||
var models = require('./models.js');
|
||||
var messages = require('./messages.js');
|
||||
var util = require('./util.js');
|
||||
var nunjucks = require('nunjucks');
|
||||
|
||||
function _State () {
|
||||
}
|
||||
@ -137,6 +138,10 @@ _Ready.prototype.onNewDevice = function (controller, msg_type, message) {
|
||||
device.name,
|
||||
device.type,
|
||||
device.host_id));
|
||||
if (scope.template_building) {
|
||||
device.template = true;
|
||||
}
|
||||
scope.create_inventory_host(device);
|
||||
scope.selected_devices.push(device);
|
||||
device.selected = true;
|
||||
scope.$emit('addSearchOption', device);
|
||||
@ -153,6 +158,7 @@ _Ready.prototype.onPasteDevice = function (controller, msg_type, message) {
|
||||
var process = null;
|
||||
var i = 0;
|
||||
var c_messages = [];
|
||||
var template_context = null;
|
||||
|
||||
scope.pressedX = scope.mouseX;
|
||||
scope.pressedY = scope.mouseY;
|
||||
@ -165,6 +171,20 @@ _Ready.prototype.onPasteDevice = function (controller, msg_type, message) {
|
||||
scope.scaledY,
|
||||
message.device.type,
|
||||
message.device.host_id);
|
||||
if (!controller.scope.template_building && message.device.template) {
|
||||
try {
|
||||
template_context = {};
|
||||
template_context.id = device.id;
|
||||
controller.scope.create_template_sequences(controller.scope.sequences, device.name, template_context);
|
||||
device.name = nunjucks.renderString(device.name, template_context);
|
||||
scope.create_inventory_host(device);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
} else {
|
||||
device.template = true;
|
||||
}
|
||||
device.variables = JSON.parse(message.device.variables);
|
||||
scope.devices.push(device);
|
||||
c_messages.push(new messages.DeviceCreate(scope.client_id,
|
||||
device.id,
|
||||
@ -242,7 +262,7 @@ _Selected2.prototype.onCopySelected = function (controller) {
|
||||
var i = 0;
|
||||
var j = 0;
|
||||
for(i=0; i < devices.length; i++) {
|
||||
device_copy = new models.Device(0, devices[i].name, 0, 0, devices[i].type);
|
||||
device_copy = new models.Device(0, devices[i].name, 0, 0, devices[i].type, 0);
|
||||
device_copy.icon = true;
|
||||
for(j=0; j < devices[i].processes.length; j++) {
|
||||
process_copy = new models.Process(0, devices[i].processes[j].name, devices[i].processes[j].name, 0, 0);
|
||||
@ -252,6 +272,8 @@ _Selected2.prototype.onCopySelected = function (controller) {
|
||||
interface_copy = new models.Interface(devices[i].interfaces[j].id, devices[i].interfaces[j].name);
|
||||
device_copy.interfaces.push(interface_copy);
|
||||
}
|
||||
device_copy.variables = JSON.stringify(devices[i]);
|
||||
device_copy.template = true;
|
||||
controller.scope.inventory_toolbox.items.push(device_copy);
|
||||
}
|
||||
};
|
||||
@ -387,6 +409,8 @@ _Move.prototype.onMouseMove = function (controller) {
|
||||
controller.scope.send_control_message(new messages.GroupMembership(controller.scope.client_id,
|
||||
groups[i].id,
|
||||
membership_old_new[2]));
|
||||
controller.scope.create_group_association(groups[i], membership_old_new[6]);
|
||||
controller.scope.delete_group_association(groups[i], membership_old_new[7]);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
*************************************************/
|
||||
|
||||
export default
|
||||
['$scope', '$state', '$stateParams', 'GenerateForm', 'ParseTypeChange', 'HostsService', '$rootScope',
|
||||
function($scope, $state, $stateParams, GenerateForm, ParseTypeChange, HostsService, $rootScope){
|
||||
['$scope', '$state', '$stateParams', 'GenerateForm', 'ParseTypeChange', 'HostsService',
|
||||
function($scope, $state, $stateParams, GenerateForm, ParseTypeChange, HostsService){
|
||||
|
||||
$scope.parseType = 'yaml';
|
||||
$scope.formCancel = function(){
|
||||
@ -42,10 +42,6 @@
|
||||
}
|
||||
});
|
||||
|
||||
$scope.$watch('item', function(){
|
||||
init();
|
||||
});
|
||||
|
||||
var init = function(){
|
||||
if($scope.item && $scope.item.host_id){
|
||||
$scope.variables = getVars($scope.item.variables);
|
||||
@ -58,6 +54,10 @@
|
||||
|
||||
};
|
||||
|
||||
$scope.$watch('item', function(){
|
||||
init();
|
||||
});
|
||||
|
||||
// Adding this function b/c sometimes extra vars are returned to the
|
||||
// UI as a string (ex: "foo: bar"), and other times as a
|
||||
// json-object-string (ex: "{"foo": "bar"}"). CodeMirror wouldn't know
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/* eslint-disable */
|
||||
function NetworkingController (models, $state, $scope, strings, CreateSelect2) {
|
||||
function NetworkingController (models, $state, $scope, strings) {
|
||||
const vm = this || {};
|
||||
|
||||
const {
|
||||
@ -93,7 +93,7 @@ function NetworkingController (models, $state, $scope, strings, CreateSelect2) {
|
||||
}
|
||||
});
|
||||
|
||||
$('#networking-search').on('select2:select', (e) => {
|
||||
$('#networking-search').on('select2:select', () => {
|
||||
$scope.$broadcast('search', $scope.device);
|
||||
});
|
||||
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
<button class="Networking-toolbarButton" ng-click="vm.redirectButtonHandler('DownloadRecording')">DOWNLOAD RECORDING</button>
|
||||
<button class="Networking-toolbarButton" ng-click="vm.redirectButtonHandler('UploadTest')">UPLOAD TEST</button>
|
||||
<button class="Networking-toolbarButton" ng-click="vm.redirectButtonHandler('RunTests')">RUN TESTS</button>
|
||||
<button class="Networking-toolbarButton" ng-click="vm.redirectButtonHandler('CompileVariables')">COMPILE VARIABLES</button>
|
||||
</div>
|
||||
<div class="Networking-toolbarRightSide">
|
||||
<div class="Networking-searchBarContainer">
|
||||
|
||||
@ -24,13 +24,26 @@ var keybindings = require('./keybindings.fsm.js');
|
||||
var details_panel_fsm = require('./details.panel.fsm.js');
|
||||
var svg_crowbar = require('./svg-crowbar.js');
|
||||
var ReconnectingWebSocket = require('reconnectingwebsocket');
|
||||
var nunjucks = require('nunjucks');
|
||||
|
||||
var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
$q, $state, ProcessErrors, ConfigService, rbacUiControlService) {
|
||||
var NetworkUIController = function($scope,
|
||||
$document,
|
||||
$location,
|
||||
$window,
|
||||
$http,
|
||||
$q,
|
||||
$state,
|
||||
ProcessErrors,
|
||||
ConfigService,
|
||||
rbacUiControlService,
|
||||
HostsService,
|
||||
GroupsService) {
|
||||
|
||||
window.scope = $scope;
|
||||
var i = 0;
|
||||
|
||||
$scope.nunjucks = nunjucks;
|
||||
|
||||
$scope.http = $http;
|
||||
|
||||
$scope.api_token = '';
|
||||
@ -123,12 +136,14 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
$scope.current_tests = [];
|
||||
$scope.current_test = null;
|
||||
$scope.testing = false;
|
||||
$scope.template_building = false;
|
||||
$scope.version = null;
|
||||
$scope.test_events = [];
|
||||
$scope.test_results = [];
|
||||
$scope.test_errors = [];
|
||||
$scope.streams = [];
|
||||
$scope.animations = [];
|
||||
$scope.sequences = {};
|
||||
$scope.view_port = {'x': 0,
|
||||
'y': 0,
|
||||
'width': 0,
|
||||
@ -260,25 +275,44 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
//Inventory Toolbox Setup
|
||||
$scope.inventory_toolbox = new models.ToolBox(0, 'Inventory', 'device', 0, toolboxTopMargin, 200, toolboxHeight);
|
||||
if (!$scope.disconnected) {
|
||||
console.log($location.protocol() + "://" + $location.host() + ':' + $location.port());
|
||||
console.log($scope.my_location);
|
||||
$http.get('/api/v2/inventories/' + $scope.inventory_id + '/hosts/')
|
||||
.then(function(response) {
|
||||
var devices_by_name = {};
|
||||
var i = 0;
|
||||
for (i = 0; i < $scope.devices.length; i++) {
|
||||
devices_by_name[$scope.devices[i].name] = $scope.devices[i];
|
||||
}
|
||||
let hosts = response.data.results;
|
||||
for(var i = 0; i<hosts.length; i++){
|
||||
for(i = 0; i<hosts.length; i++) {
|
||||
try {
|
||||
var device_type = null;
|
||||
var device_name = null;
|
||||
var device = null;
|
||||
let host = hosts[i];
|
||||
console.log(host);
|
||||
if (host.variables !== "") {
|
||||
host.data = jsyaml.safeLoad(host.variables);
|
||||
if (host.data.type === undefined) {
|
||||
host.data.type = 'unknown';
|
||||
} else {
|
||||
host.data = {};
|
||||
}
|
||||
if (host.data.awx === undefined) {
|
||||
device_type = 'unknown';
|
||||
device_name = host.name;
|
||||
} else {
|
||||
if (host.data.awx.type === undefined) {
|
||||
device_type = 'unknown';
|
||||
} else {
|
||||
device_type = host.data.awx.type;
|
||||
}
|
||||
if (host.data.name === undefined) {
|
||||
host.data.name = host.name;
|
||||
if (host.data.awx.name === undefined) {
|
||||
device_name = host.name;
|
||||
} else {
|
||||
device_name = host.data.awx.name;
|
||||
}
|
||||
var device = new models.Device(0, host.data.name, 0, 0, host.data.type, host.id, host.variables);
|
||||
}
|
||||
if (devices_by_name[device_name] === undefined) {
|
||||
device = new models.Device(0, device_name, 0, 0, device_type, host.id);
|
||||
device.icon = true;
|
||||
device.variables = JSON.stringify(host.data);
|
||||
$scope.inventory_toolbox.items.push(device);
|
||||
}
|
||||
} catch (error) {
|
||||
@ -287,7 +321,6 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
}
|
||||
})
|
||||
.catch(({data, status}) => {
|
||||
console.log([data, status]);
|
||||
ProcessErrors($scope, data, status, null, { hdr: 'Error!', msg: 'Failed to get host data: ' + status });
|
||||
});
|
||||
}
|
||||
@ -744,7 +777,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
|
||||
};
|
||||
|
||||
$scope.onRenameContextButton = function (button) {
|
||||
$scope.onRenameContextButton = function () {
|
||||
$scope.removeContextMenu();
|
||||
$scope.first_channel.send("LabelEdit", {});
|
||||
};
|
||||
@ -819,7 +852,8 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
group.y1,
|
||||
group.x2,
|
||||
group.y2,
|
||||
group.name));
|
||||
group.name,
|
||||
group.group_id));
|
||||
}
|
||||
|
||||
if($scope.current_scale <= 0.5){
|
||||
@ -849,7 +883,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
}
|
||||
};
|
||||
|
||||
$scope.onDeleteContextMenu = function($event){
|
||||
$scope.onDeleteContextMenu = function(){
|
||||
$scope.removeContextMenu();
|
||||
if($scope.selected_devices.length === 1){
|
||||
$scope.deleteDevice();
|
||||
@ -860,7 +894,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
};
|
||||
|
||||
// Button Event Handlers
|
||||
$scope.onToggleToolboxButtonLeft = function (button) {
|
||||
$scope.onToggleToolboxButtonLeft = function () {
|
||||
$scope.first_channel.send("ToggleToolbox", {});
|
||||
$scope.action_icons[0].fsm.handle_message("Disable", {});
|
||||
$scope.action_icons[1].fsm.handle_message("Enable", {});
|
||||
@ -868,7 +902,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
$scope.$emit('overall_toolbox_collapsed');
|
||||
};
|
||||
|
||||
$scope.onToggleToolboxButtonRight = function (button) {
|
||||
$scope.onToggleToolboxButtonRight = function () {
|
||||
$scope.first_channel.send("ToggleToolbox", {});
|
||||
$scope.action_icons[0].fsm.handle_message("Enable", {});
|
||||
$scope.action_icons[1].fsm.handle_message("Disable", {});
|
||||
@ -890,7 +924,6 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
|
||||
$scope.$on('search', function(e, device){
|
||||
|
||||
var num_frames = 30;
|
||||
var searched;
|
||||
for(var i = 0; i < $scope.devices.length; i++){
|
||||
if(Number(device.id) === $scope.devices[i].id){
|
||||
@ -899,22 +932,18 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
}
|
||||
searched.selected = true;
|
||||
$scope.selected_devices.push(searched);
|
||||
//console.log(searched);
|
||||
$scope.jump_to_animation(searched.x, searched.y, 1.0);
|
||||
});
|
||||
|
||||
$scope.jump_to_animation = function(jump_to_x, jump_to_y, jump_to_scale, updateZoom) {
|
||||
$scope.cancel_animations();
|
||||
var v_center = $scope.to_virtual_coordinates($scope.graph.width/2, $scope.graph.height/2);
|
||||
//console.log({v_center: v_center});
|
||||
$scope.jump.from_x = v_center.x;
|
||||
$scope.jump.from_y = v_center.y;
|
||||
$scope.jump.to_x = jump_to_x;
|
||||
$scope.jump.to_y = jump_to_y;
|
||||
var distance = util.distance(v_center.x, v_center.y, jump_to_x, jump_to_y);
|
||||
//console.log({distance: distance});
|
||||
var num_frames = 30 * Math.floor((1 + 4 * distance / (distance + 3000)));
|
||||
//console.log({num_frames: num_frames});
|
||||
var scale_animation = new models.Animation($scope.animation_id_seq(),
|
||||
num_frames,
|
||||
{
|
||||
@ -964,19 +993,19 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
|
||||
$scope.$on('zoom', (e, zoomPercent) => {
|
||||
let v_center = $scope.to_virtual_coordinates($scope.graph.width/2, $scope.graph.height/2);
|
||||
let scale = Math.pow(10, (zoomPercent - 120) / 40)
|
||||
let scale = Math.pow(10, (zoomPercent - 120) / 40);
|
||||
$scope.jump_to_animation(v_center.x, v_center.y, scale, false);
|
||||
});
|
||||
|
||||
$scope.onDeployButton = function (button) {
|
||||
$scope.onDeployButton = function () {
|
||||
$scope.send_control_message(new messages.Deploy($scope.client_id));
|
||||
};
|
||||
|
||||
$scope.onDestroyButton = function (button) {
|
||||
$scope.onDestroyButton = function () {
|
||||
$scope.send_control_message(new messages.Destroy($scope.client_id));
|
||||
};
|
||||
|
||||
$scope.onRecordButton = function (button) {
|
||||
$scope.onRecordButton = function () {
|
||||
$scope.recording = ! $scope.recording;
|
||||
if ($scope.recording) {
|
||||
$scope.trace_id = $scope.trace_id_seq();
|
||||
@ -1007,7 +1036,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
}
|
||||
};
|
||||
|
||||
$scope.onExportButton = function (button) {
|
||||
$scope.onExportButton = function () {
|
||||
$scope.cursor.hidden = true;
|
||||
$scope.debug.hidden = true;
|
||||
$scope.hide_buttons = true;
|
||||
@ -1019,34 +1048,10 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
$scope.onLayoutButton = function (button) {
|
||||
$scope.onLayoutButton = function () {
|
||||
$scope.send_control_message(new messages.Layout($scope.client_id));
|
||||
};
|
||||
|
||||
$scope.onDiscoverButton = function (button) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("POST", "http://" + window.location.host + "/api/v1/job_templates/7/launch/", true);
|
||||
xhr.onload = function () {
|
||||
console.log(xhr.readyState);
|
||||
};
|
||||
xhr.onerror = function () {
|
||||
console.error(xhr.statusText);
|
||||
};
|
||||
xhr.send();
|
||||
};
|
||||
|
||||
$scope.onConfigureButton = function (button) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("POST", "http://" + window.location.host + "/api/v1/job_templates/9/launch/", true);
|
||||
xhr.onload = function () {
|
||||
console.log(xhr.readyState);
|
||||
};
|
||||
xhr.onerror = function () {
|
||||
console.error(xhr.statusText);
|
||||
};
|
||||
xhr.send();
|
||||
};
|
||||
|
||||
$scope.onTogglePhysical = function () {
|
||||
$scope.hide_links = false;
|
||||
};
|
||||
@ -1065,7 +1070,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
};
|
||||
|
||||
|
||||
$scope.onExportYamlButton = function (button) {
|
||||
$scope.onExportYamlButton = function () {
|
||||
$window.open('/network_ui/topology.yaml?topology_id=' + $scope.topology_id , '_blank');
|
||||
};
|
||||
|
||||
@ -1088,27 +1093,55 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
new models.ActionIcon("chevron-right", 15, actionIconVerticalOffset, 16, $scope.onToggleToolboxButtonRight, false, $scope)
|
||||
];
|
||||
|
||||
$scope.onDownloadTraceButton = function (button) {
|
||||
$scope.onDownloadTraceButton = function () {
|
||||
window.open("/network_ui/download_trace?topology_id=" + $scope.topology_id + "&trace_id=" + $scope.trace_id + "&client_id=" + $scope.client_id);
|
||||
};
|
||||
|
||||
$scope.onDownloadRecordingButton = function (button) {
|
||||
$scope.onDownloadRecordingButton = function () {
|
||||
window.open("/network_ui/download_recording?topology_id=" + $scope.topology_id + "&trace_id=" + $scope.trace_id + "&client_id=" + $scope.client_id);
|
||||
};
|
||||
|
||||
$scope.onUploadTestButton = function (button) {
|
||||
$scope.onUploadTestButton = function () {
|
||||
window.open("/network_ui/upload_test", "_top");
|
||||
};
|
||||
|
||||
$scope.onRunTestsButton = function (button) {
|
||||
$scope.onRunTestsButton = function () {
|
||||
|
||||
$scope.test_results = [];
|
||||
$scope.current_tests = $scope.tests.slice();
|
||||
$scope.first_channel.send("EnableTest", new messages.EnableTest());
|
||||
};
|
||||
|
||||
// Buttons
|
||||
var button_offset = 200;
|
||||
$scope.onCompileVariablesButton = function () {
|
||||
|
||||
|
||||
function noop (response) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
function error_handler (response) {
|
||||
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
var i = 0;
|
||||
var variables = null;
|
||||
for(i = 0; i < $scope.devices.length; i++) {
|
||||
variables = $scope.devices[i].compile_variables();
|
||||
if ($scope.devices[i].host_id !== 0) {
|
||||
$http.put('/api/v2/hosts/' + $scope.devices[i].host_id + '/variable_data/', JSON.stringify(variables)).then(noop).catch(error_handler);
|
||||
}
|
||||
}
|
||||
|
||||
for(i = 0; i < $scope.groups.length; i++) {
|
||||
variables = $scope.groups[i].compile_variables();
|
||||
if ($scope.groups[i].group_id !== 0) {
|
||||
$http.put('/api/v2/groups/' + $scope.groups[i].group_id + '/variable_data/', JSON.stringify(variables)).then(noop).catch(error_handler);
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$scope.buttons = [
|
||||
// new models.Button("DEPLOY", button_offset + 10, 48, 70, 30, $scope.onDeployButton, $scope),
|
||||
@ -1193,6 +1226,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
return null;
|
||||
};
|
||||
|
||||
|
||||
$scope.getDeviceInterface = function(device_name, interface_name) {
|
||||
|
||||
var i = 0;
|
||||
@ -1209,11 +1243,157 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
return null;
|
||||
};
|
||||
|
||||
$scope.create_template_sequences = function (sequences, template, template_context) {
|
||||
var i = 0;
|
||||
var template_variables = util.nunjucks_find_variables(template);
|
||||
for (i = 0; i < template_variables.length; i++) {
|
||||
if (template_context[template_variables[i]] === undefined) {
|
||||
if (sequences[template_variables[i]] === undefined) {
|
||||
sequences[template_variables[i]] = util.natural_numbers(0);
|
||||
}
|
||||
template_context[template_variables[i]] = sequences[template_variables[i]]();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$scope.create_inventory_host = function (device) {
|
||||
if ($scope.template_building || device.template) {
|
||||
return;
|
||||
}
|
||||
console.log(device);
|
||||
|
||||
function update_inventory () {
|
||||
HostsService.post({inventory: $scope.inventory_id,
|
||||
name: device.name,
|
||||
variables: JSON.stringify({awx: {name: device.name,
|
||||
type: device.type}})})
|
||||
.then(function (res) {
|
||||
console.log(res);
|
||||
device.host_id = res.data.id;
|
||||
device.variables = util.parse_variables(res.data.variables);
|
||||
$scope.send_control_message(new messages.DeviceInventoryUpdate($scope.client_id,
|
||||
device.id,
|
||||
device.host_id));
|
||||
})
|
||||
.catch(function (res) {
|
||||
console.log(res);
|
||||
});
|
||||
}
|
||||
|
||||
return HostsService.get({inventory: $scope.inventory_id,
|
||||
name: device.name})
|
||||
.then(function (res) {
|
||||
console.log(res);
|
||||
if (res.data.count === 0) {
|
||||
update_inventory();
|
||||
} else if (res.data.count === 1) {
|
||||
device.host_id = res.data.results[0].id;
|
||||
device.variables = util.parse_variables(res.data.results[0].variables);
|
||||
$scope.send_control_message(new messages.DeviceInventoryUpdate($scope.client_id,
|
||||
device.id,
|
||||
device.host_id));
|
||||
}
|
||||
})
|
||||
.catch(function (res) {
|
||||
console.log(res);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$scope.create_inventory_group = function (group) {
|
||||
if ($scope.template_building || group.template) {
|
||||
return;
|
||||
}
|
||||
console.log(group);
|
||||
function update_inventory () {
|
||||
GroupsService.post({inventory: $scope.inventory_id,
|
||||
name: group.name,
|
||||
variables: JSON.stringify({awx: {name: group.name,
|
||||
type: group.type}})})
|
||||
.then(function (res) {
|
||||
console.log(res);
|
||||
group.group_id = res.data.id;
|
||||
group.variables = util.parse_variables(res.data.variables);
|
||||
$scope.send_control_message(new messages.GroupInventoryUpdate($scope.client_id,
|
||||
group.id,
|
||||
group.group_id));
|
||||
})
|
||||
.catch(function (res) {
|
||||
console.log(res);
|
||||
});
|
||||
}
|
||||
return GroupsService.get({inventory: $scope.inventory_id,
|
||||
name: group.name})
|
||||
.then(function (res) {
|
||||
console.log(res);
|
||||
if (res.data.count === 0) {
|
||||
update_inventory();
|
||||
} else if (res.data.count === 1) {
|
||||
group.group_id = res.data.results[0].id;
|
||||
group.variables = util.parse_variables(res.data.results[0].variables);
|
||||
$scope.send_control_message(new messages.GroupInventoryUpdate($scope.client_id,
|
||||
group.id,
|
||||
group.group_id));
|
||||
}
|
||||
})
|
||||
.catch(function (res) {
|
||||
console.log(res);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$scope.create_group_association = function (group, devices) {
|
||||
if ($scope.template_building || group.template) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(['create_group_association', group, devices]);
|
||||
|
||||
function noop (response) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
function error_handler (response) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
var i = 0;
|
||||
for (i = 0; i < devices.length; i ++) {
|
||||
if (!devices[i].template) {
|
||||
$http.post('/api/v2/groups/' + group.group_id + '/hosts/', JSON.stringify({name: devices[i].name})).then(noop).catch(error_handler);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$scope.delete_group_association = function (group, devices) {
|
||||
if ($scope.template_building || group.template) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(['delete_group_association', group, devices]);
|
||||
|
||||
function noop (response) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
function error_handler (response) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
var i = 0;
|
||||
for (i = 0; i < devices.length; i ++) {
|
||||
if (!devices[i].template) {
|
||||
GroupsService.disassociateHost(devices[i].host_id, group.group_id).then(noop).catch(error_handler);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$scope.onDeviceCreate = function(data) {
|
||||
$scope.create_device(data);
|
||||
};
|
||||
|
||||
$scope.create_device = function(data) {
|
||||
console.log(data);
|
||||
var device = new models.Device(data.id,
|
||||
data.name,
|
||||
data.x,
|
||||
@ -1591,7 +1771,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
|
||||
$scope.onToolboxItem = function (data) {
|
||||
if (data.toolbox_name === "Site") {
|
||||
var site = JSON.parse(data.data);
|
||||
var site = util.parse_variables(data.data);
|
||||
var i = 0;
|
||||
var j = 0;
|
||||
var site_copy = new models.Group(site.id,
|
||||
@ -1727,8 +1907,15 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
device.name,
|
||||
device.x,
|
||||
device.y,
|
||||
device.type,
|
||||
device.device_type,
|
||||
device.host_id);
|
||||
|
||||
for (j=0; j < $scope.inventory_toolbox.items.length; j++) {
|
||||
if($scope.inventory_toolbox.items[j].name === device.name) {
|
||||
$scope.inventory_toolbox.items.splice(j, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
new_device.interface_seq = util.natural_numbers(device.interface_id_seq);
|
||||
new_device.process_id_seq = util.natural_numbers(device.process_id_seq);
|
||||
$scope.devices.push(new_device);
|
||||
@ -1738,7 +1925,7 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
process = device.processes[j];
|
||||
new_process = (new models.Process(process.id,
|
||||
process.name,
|
||||
process.type,
|
||||
process.process_type,
|
||||
0,
|
||||
0));
|
||||
new_process.device = new_device;
|
||||
@ -1795,12 +1982,13 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
}
|
||||
new_group = new models.Group(group.id,
|
||||
group.name,
|
||||
group.type,
|
||||
group.group_type,
|
||||
group.x1,
|
||||
group.y1,
|
||||
group.x2,
|
||||
group.y2,
|
||||
false);
|
||||
new_group.group_id = group.inventory_group_id;
|
||||
if (group.members !== undefined) {
|
||||
for (j=0; j < group.members.length; j++) {
|
||||
new_group.devices.push(device_map[group.members[j]]);
|
||||
@ -1859,6 +2047,36 @@ var NetworkUIController = function($scope, $document, $location, $window, $http,
|
||||
$scope.updateInterfaceDots();
|
||||
$scope.$emit('instatiateSelect', $scope.devices);
|
||||
$scope.$emit('awxNet-breadcrumbGroups', $scope.breadcrumbGroups());
|
||||
$scope.update_device_variables();
|
||||
};
|
||||
|
||||
$scope.update_device_variables = function () {
|
||||
|
||||
var hosts_by_id = {};
|
||||
var i = 0;
|
||||
for (i = 0; i < $scope.devices.length; i++) {
|
||||
hosts_by_id[$scope.devices[i].host_id] = $scope.devices[i];
|
||||
}
|
||||
|
||||
$http.get('/api/v2/inventories/' + $scope.inventory_id + '/hosts/')
|
||||
.then(function(response) {
|
||||
let hosts = response.data.results;
|
||||
for(var i = 0; i<hosts.length; i++){
|
||||
try {
|
||||
let host = hosts[i];
|
||||
if (hosts_by_id[host.id] !== undefined) {
|
||||
hosts_by_id[host.id].variables = util.parse_variables(host.variables);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(({data, status}) => {
|
||||
console.log([data, status]);
|
||||
ProcessErrors($scope, data, status, null, { hdr: 'Error!', msg: 'Failed to get host data: ' + status });
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$scope.updateInterfaceDots = function() {
|
||||
|
||||
@ -106,5 +106,6 @@
|
||||
<g awx-net-debug></g>
|
||||
<g awx-net-test-results></g>
|
||||
<g awx-net-cursor></g>
|
||||
<g ng-if="template_building"><text stroke="none" fill="red" font-size="48" ng-attr-x="{{graph.width/2}}" ng-attr-y="200">TEMPLATE BUILDING</text></g>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
@ -3,6 +3,7 @@ var inherits = require('inherits');
|
||||
var fsm = require('./fsm.js');
|
||||
var models = require('./models.js');
|
||||
var messages = require('./messages.js');
|
||||
var nunjucks = require('nunjucks');
|
||||
|
||||
function _State () {
|
||||
}
|
||||
@ -95,6 +96,9 @@ _Ready.prototype.onPasteRack = function (controller, msg_type, message) {
|
||||
var top_left_x, top_left_y;
|
||||
var device_map = {};
|
||||
var c_messages = [];
|
||||
var rack_template_context = null;
|
||||
var device_template_context = null;
|
||||
var promises = [];
|
||||
scope.hide_groups = false;
|
||||
|
||||
scope.pressedX = scope.mouseX;
|
||||
@ -113,6 +117,18 @@ _Ready.prototype.onPasteRack = function (controller, msg_type, message) {
|
||||
top_left_y + message.group.y2,
|
||||
false);
|
||||
|
||||
if (!controller.scope.template_building && message.group.template) {
|
||||
try {
|
||||
rack_template_context = {};
|
||||
rack_template_context.id = group.id;
|
||||
controller.scope.create_template_sequences(controller.scope.sequences, group.name, rack_template_context);
|
||||
group.name = nunjucks.renderString(group.name, rack_template_context);
|
||||
promises.push(scope.create_inventory_group(group));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
|
||||
c_messages.push(new messages.GroupCreate(scope.client_id,
|
||||
group.id,
|
||||
group.x1,
|
||||
@ -120,10 +136,19 @@ _Ready.prototype.onPasteRack = function (controller, msg_type, message) {
|
||||
group.x2,
|
||||
group.y2,
|
||||
group.name,
|
||||
group.type));
|
||||
group.type,
|
||||
0));
|
||||
|
||||
scope.groups.push(group);
|
||||
|
||||
if (!controller.scope.template_building && message.group.template) {
|
||||
device_template_context = Object.assign({}, rack_template_context);
|
||||
device_template_context.rack_id = group.id;
|
||||
for(i=0; i<message.group.devices.length;i++) {
|
||||
controller.scope.create_template_sequences(group.sequences, message.group.devices[i].name, device_template_context);
|
||||
}
|
||||
}
|
||||
|
||||
for(i=0; i<message.group.devices.length;i++) {
|
||||
|
||||
device = new models.Device(controller.scope.device_id_seq(),
|
||||
@ -133,8 +158,19 @@ _Ready.prototype.onPasteRack = function (controller, msg_type, message) {
|
||||
message.group.devices[i].type);
|
||||
device_map[message.group.devices[i].id] = device;
|
||||
device.interface_map = {};
|
||||
device.in_group = true;
|
||||
scope.devices.push(device);
|
||||
group.devices.push(device);
|
||||
|
||||
if (!controller.scope.template_building && message.group.template) {
|
||||
try {
|
||||
device_template_context.id = device.id;
|
||||
device.name = nunjucks.renderString(device.name, device_template_context);
|
||||
promises.push(scope.create_inventory_host(device));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
c_messages.push(new messages.DeviceCreate(scope.client_id,
|
||||
device.id,
|
||||
device.x,
|
||||
@ -189,6 +225,14 @@ _Ready.prototype.onPasteRack = function (controller, msg_type, message) {
|
||||
}
|
||||
|
||||
scope.send_control_message(new messages.MultipleMessage(controller.scope.client_id, c_messages));
|
||||
|
||||
Promise.all(promises)
|
||||
.then(function () {
|
||||
controller.scope.create_group_association(group, group.devices);
|
||||
})
|
||||
.catch(function(res) {
|
||||
console.log(res);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@ -262,6 +306,8 @@ _Selected2.prototype.onCopySelected = function (controller) {
|
||||
device_copy.interfaces.push(interface_copy);
|
||||
device_copy.interface_map[interface_copy.id] = interface_copy;
|
||||
}
|
||||
device_copy.variables = JSON.stringify(devices[j].variables);
|
||||
device_copy.template = true;
|
||||
group_copy.devices.push(device_copy);
|
||||
}
|
||||
|
||||
@ -286,6 +332,8 @@ _Selected2.prototype.onCopySelected = function (controller) {
|
||||
}
|
||||
}
|
||||
|
||||
group_copy.variables = JSON.stringify(group.variables);
|
||||
group_copy.template = true;
|
||||
controller.scope.rack_toolbox.items.push(group_copy);
|
||||
}
|
||||
};
|
||||
|
||||
@ -3,6 +3,7 @@ var inherits = require('inherits');
|
||||
var fsm = require('./fsm.js');
|
||||
var models = require('./models.js');
|
||||
var messages = require('./messages.js');
|
||||
var nunjucks = require('nunjucks');
|
||||
|
||||
function _State () {
|
||||
}
|
||||
@ -100,6 +101,10 @@ _Ready.prototype.onPasteSite = function (controller, msg_type, message) {
|
||||
var inner_group = null;
|
||||
var c_messages = [];
|
||||
var membership_old_new = null;
|
||||
var site_template_context = null;
|
||||
var rack_template_context = null;
|
||||
var device_template_context = null;
|
||||
var promises = [];
|
||||
scope.hide_groups = false;
|
||||
|
||||
scope.pressedX = scope.mouseX;
|
||||
@ -125,7 +130,8 @@ _Ready.prototype.onPasteSite = function (controller, msg_type, message) {
|
||||
group.x2,
|
||||
group.y2,
|
||||
group.name,
|
||||
group.type));
|
||||
group.type,
|
||||
0));
|
||||
|
||||
scope.groups.push(group);
|
||||
|
||||
@ -225,7 +231,8 @@ _Ready.prototype.onPasteSite = function (controller, msg_type, message) {
|
||||
inner_group.x2,
|
||||
inner_group.y2,
|
||||
inner_group.name,
|
||||
inner_group.type));
|
||||
inner_group.type,
|
||||
0));
|
||||
}
|
||||
for(i=0; i< group.groups.length; i++) {
|
||||
membership_old_new = group.groups[i].update_membership(scope.devices, scope.groups);
|
||||
@ -239,7 +246,73 @@ _Ready.prototype.onPasteSite = function (controller, msg_type, message) {
|
||||
group.id,
|
||||
membership_old_new[2]));
|
||||
|
||||
if (!controller.scope.template_building && message.group.template) {
|
||||
try {
|
||||
site_template_context = {};
|
||||
site_template_context.id = group.id;
|
||||
controller.scope.create_template_sequences(controller.scope.sequences, group.name, site_template_context);
|
||||
group.name = nunjucks.renderString(group.name, site_template_context);
|
||||
promises.push(scope.create_inventory_group(group));
|
||||
c_messages.push(new messages.GroupLabelEdit(controller.scope.client_id,
|
||||
group.id,
|
||||
group.name,
|
||||
group.name));
|
||||
|
||||
rack_template_context = Object.assign({}, site_template_context);
|
||||
rack_template_context.site_id = group.id;
|
||||
|
||||
for (i = 0; i < group.groups.length; i++) {
|
||||
controller.scope.create_template_sequences(group.sequences,
|
||||
group.groups[i].name,
|
||||
rack_template_context);
|
||||
}
|
||||
for (i = 0; i < group.groups.length; i++) {
|
||||
rack_template_context.id = group.groups[i].id;
|
||||
group.groups[i].name = nunjucks.renderString(group.groups[i].name, rack_template_context);
|
||||
promises.push(scope.create_inventory_group(group.groups[i]));
|
||||
c_messages.push(new messages.GroupLabelEdit(controller.scope.client_id,
|
||||
group.groups[i].id,
|
||||
group.groups[i].name,
|
||||
group.groups[i].name));
|
||||
|
||||
if (group.groups[i].type !== "rack") {
|
||||
continue;
|
||||
}
|
||||
device_template_context = Object.assign({}, rack_template_context);
|
||||
device_template_context.rack_id = group.groups[i].id;
|
||||
for(j=0; j<group.groups[i].devices.length;j++) {
|
||||
controller.scope.create_template_sequences(group.groups[i].sequences,
|
||||
group.groups[i].devices[j].name,
|
||||
device_template_context);
|
||||
}
|
||||
for (j=0; j < group.groups[i].devices.length; j++) {
|
||||
device_template_context.id = group.groups[i].devices[j].id;
|
||||
group.groups[i].devices[j].name = nunjucks.renderString(group.groups[i].devices[j].name, device_template_context);
|
||||
console.log(group.groups[i].devices[j].name);
|
||||
promises.push(scope.create_inventory_host(group.groups[i].devices[j]));
|
||||
c_messages.push(new messages.DeviceLabelEdit(controller.scope.client_id,
|
||||
group.groups[i].devices[j].id,
|
||||
group.groups[i].devices[j].name,
|
||||
group.groups[i].devices[j].name));
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
|
||||
scope.send_control_message(new messages.MultipleMessage(controller.scope.client_id, c_messages));
|
||||
|
||||
Promise.all(promises)
|
||||
.then(function () {
|
||||
controller.scope.create_group_association(group, group.devices);
|
||||
for (i = 0; i < group.groups.length; i++) {
|
||||
controller.scope.create_group_association(group.groups[i], group.groups[i].devices);
|
||||
}
|
||||
})
|
||||
.catch(function(res) {
|
||||
console.log(res);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@ -297,6 +370,7 @@ _Selected2.prototype.onCopySelected = function (controller) {
|
||||
group.bottom_extent() - group.top_extent(),
|
||||
false);
|
||||
group_copy.icon = true;
|
||||
group_copy.template = true;
|
||||
|
||||
devices = group.devices;
|
||||
|
||||
|
||||
@ -83,14 +83,13 @@ _Dropping.prototype.start = function (controller) {
|
||||
|
||||
var i = 0;
|
||||
var toolbox = controller.toolbox;
|
||||
console.log(["Dropping", toolbox.selected_item]);
|
||||
for(i = 0; i < toolbox.items.length; i++) {
|
||||
toolbox.items[i].selected = false;
|
||||
}
|
||||
|
||||
controller.dropped_action(toolbox.selected_item);
|
||||
|
||||
if (controller.remove_on_drop) {
|
||||
if (controller.remove_on_drop && !toolbox.selected_item.template) {
|
||||
var dindex = toolbox.items.indexOf(toolbox.selected_item);
|
||||
if (dindex !== -1) {
|
||||
toolbox.items.splice(dindex, 1);
|
||||
@ -213,7 +212,8 @@ _Scrolling.prototype.onMouseWheel = function (controller, msg_type, $event) {
|
||||
var delta = $event[1];
|
||||
controller.toolbox.scroll_offset += -1 * delta;
|
||||
controller.toolbox.scroll_offset = Math.min(controller.toolbox.scroll_offset, 0);
|
||||
controller.toolbox.scroll_offset = Math.max(controller.toolbox.scroll_offset, -1 * controller.toolbox.spacing * controller.toolbox.items.length + controller.toolbox.height);
|
||||
controller.toolbox.scroll_offset = Math.max(controller.toolbox.scroll_offset,
|
||||
-1 * controller.toolbox.spacing * (controller.toolbox.items.length + 1) + controller.toolbox.height);
|
||||
|
||||
|
||||
controller.changeState(Ready);
|
||||
|
||||
@ -7,8 +7,53 @@ Array.prototype.extend = function (other_array) {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var math = require('mathjs');
|
||||
var yaml = require('js-yaml');
|
||||
var nunjucks = require('nunjucks');
|
||||
|
||||
function nunjucks_find_variables (text) {
|
||||
|
||||
var variables = [];
|
||||
var tokenizer = nunjucks.lexer.lex(text, {});
|
||||
var token = tokenizer.nextToken();
|
||||
while (token !== null) {
|
||||
if (token.type === 'variable-start') {
|
||||
token = tokenizer.nextToken();
|
||||
while (token !== null) {
|
||||
if (token.type === 'symbol') {
|
||||
variables.push(token.value);
|
||||
}
|
||||
if (token.type === 'variable-end') {
|
||||
break;
|
||||
}
|
||||
token = tokenizer.nextToken();
|
||||
}
|
||||
}
|
||||
token = tokenizer.nextToken();
|
||||
}
|
||||
|
||||
return variables;
|
||||
}
|
||||
exports.nunjucks_find_variables = nunjucks_find_variables;
|
||||
|
||||
function parse_variables (variables) {
|
||||
var parsed_variables = {};
|
||||
try {
|
||||
parsed_variables = JSON.parse(variables);
|
||||
} catch (err) {
|
||||
try {
|
||||
parsed_variables = yaml.safeLoad(variables);
|
||||
} catch (err) {
|
||||
parsed_variables = {};
|
||||
}
|
||||
}
|
||||
if (parsed_variables === undefined) {
|
||||
return {};
|
||||
}
|
||||
return parsed_variables;
|
||||
}
|
||||
exports.parse_variables = parse_variables;
|
||||
|
||||
|
||||
function noop () {
|
||||
}
|
||||
|
||||
@ -84,6 +84,7 @@
|
||||
"ngtemplate-loader": "^2.0.1",
|
||||
"nightwatch": "^0.9.19",
|
||||
"node-object-hash": "^1.3.0",
|
||||
"nunjucks": "^3.1.2",
|
||||
"phantomjs-prebuilt": "^2.1.12",
|
||||
"time-grunt": "^1.4.0",
|
||||
"uglifyjs-webpack-plugin": "^0.4.6",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user