diff --git a/awx/network_ui/action_plugins/create_device.py b/awx/network_ui/action_plugins/create_device.py index 5e01680f15..c909064053 100644 --- a/awx/network_ui/action_plugins/create_device.py +++ b/awx/network_ui/action_plugins/create_device.py @@ -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, diff --git a/awx/network_ui/action_plugins/create_group.py b/awx/network_ui/action_plugins/create_group.py index 3106309b84..eaef896a02 100644 --- a/awx/network_ui/action_plugins/create_group.py +++ b/awx/network_ui/action_plugins/create_group.py @@ -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), diff --git a/awx/network_ui/action_plugins/create_process.py b/awx/network_ui/action_plugins/create_process.py index ba2aacc5da..8f517f56f3 100644 --- a/awx/network_ui/action_plugins/create_process.py +++ b/awx/network_ui/action_plugins/create_process.py @@ -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, diff --git a/awx/network_ui/action_plugins/list_device.py b/awx/network_ui/action_plugins/list_device.py index 1c371e88c3..e5270ce88b 100644 --- a/awx/network_ui/action_plugins/list_device.py +++ b/awx/network_ui/action_plugins/list_device.py @@ -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, diff --git a/awx/network_ui/action_plugins/list_group.py b/awx/network_ui/action_plugins/list_group.py index b90c837387..ce00957cac 100644 --- a/awx/network_ui/action_plugins/list_group.py +++ b/awx/network_ui/action_plugins/list_group.py @@ -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} diff --git a/awx/network_ui/action_plugins/list_process.py b/awx/network_ui/action_plugins/list_process.py index 27c09870ee..2187cb8a19 100644 --- a/awx/network_ui/action_plugins/list_process.py +++ b/awx/network_ui/action_plugins/list_process.py @@ -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} diff --git a/awx/network_ui/action_plugins/update_device.py b/awx/network_ui/action_plugins/update_device.py index 13c15eaf4e..120f43493d 100644 --- a/awx/network_ui/action_plugins/update_device.py +++ b/awx/network_ui/action_plugins/update_device.py @@ -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, diff --git a/awx/network_ui/action_plugins/update_group.py b/awx/network_ui/action_plugins/update_group.py index f985682366..dc6487d53b 100644 --- a/awx/network_ui/action_plugins/update_group.py +++ b/awx/network_ui/action_plugins/update_group.py @@ -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, diff --git a/awx/network_ui/action_plugins/update_process.py b/awx/network_ui/action_plugins/update_process.py index 577baa29a4..6242e11b9f 100644 --- a/awx/network_ui/action_plugins/update_process.py +++ b/awx/network_ui/action_plugins/update_process.py @@ -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} diff --git a/awx/network_ui/admin.py b/awx/network_ui/admin.py index 2e640e542d..90459da53f 100644 --- a/awx/network_ui/admin.py +++ b/awx/network_ui/admin.py @@ -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',) diff --git a/awx/network_ui/client/v1_api_client.py b/awx/network_ui/client/v1_api_client.py index 35b386543c..a01ad5168f 100644 --- a/awx/network_ui/client/v1_api_client.py +++ b/awx/network_ui/client/v1_api_client.py @@ -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} diff --git a/awx/network_ui/client/v2_api_client.py b/awx/network_ui/client/v2_api_client.py index 0544993afe..a1e3753a6f 100644 --- a/awx/network_ui/client/v2_api_client.py +++ b/awx/network_ui/client/v2_api_client.py @@ -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} diff --git a/awx/network_ui/consumers.py b/awx/network_ui/consumers.py index 6b51847d2c..9f29d2b7ce 100644 --- a/awx/network_ui/consumers.py +++ b/awx/network_ui/consumers.py @@ -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']) diff --git a/awx/network_ui/designs/api.yml b/awx/network_ui/designs/api.yml index 006890a1c6..57f9048585 100644 --- a/awx/network_ui/designs/api.yml +++ b/awx/network_ui/designs/api.yml @@ -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/ diff --git a/awx/network_ui/designs/messages.yml b/awx/network_ui/designs/messages.yml index c0d8c0fa7d..ef1914d6f7 100644 --- a/awx/network_ui/designs/messages.yml +++ b/awx/network_ui/designs/messages.yml @@ -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]} diff --git a/awx/network_ui/designs/models.yml b/awx/network_ui/designs/models.yml index 140d5bdd46..5e0c4c7bb3 100644 --- a/awx/network_ui/designs/models.yml +++ b/awx/network_ui/designs/models.yml @@ -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 diff --git a/awx/network_ui/management/commands/find_duplicates.py b/awx/network_ui/management/commands/find_duplicates.py index aa08c5ef77..379d61afe8 100644 --- a/awx/network_ui/management/commands/find_duplicates.py +++ b/awx/network_ui/management/commands/find_duplicates.py @@ -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())) diff --git a/awx/network_ui/migrations/0001_initial.py b/awx/network_ui/migrations/0001_initial.py deleted file mode 100644 index d3fdfc5a22..0000000000 --- a/awx/network_ui/migrations/0001_initial.py +++ /dev/null @@ -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'), - ), - ] diff --git a/awx/network_ui/migrations/0001_squashed_0036_auto_20180223_0119.py b/awx/network_ui/migrations/0001_squashed_0036_auto_20180223_0119.py new file mode 100644 index 0000000000..8ebcaab68a --- /dev/null +++ b/awx/network_ui/migrations/0001_squashed_0036_auto_20180223_0119.py @@ -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, + ), + ] diff --git a/awx/network_ui/migrations/0002_auto_20180301_2039.py b/awx/network_ui/migrations/0002_auto_20180301_2039.py new file mode 100644 index 0000000000..182af4af90 --- /dev/null +++ b/awx/network_ui/migrations/0002_auto_20180301_2039.py @@ -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'), + ), + ] diff --git a/awx/network_ui/migrations/0002_remove_topology_id.py b/awx/network_ui/migrations/0002_remove_topology_id.py deleted file mode 100644 index 98b44a691b..0000000000 --- a/awx/network_ui/migrations/0002_remove_topology_id.py +++ /dev/null @@ -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', - ), - ] diff --git a/awx/network_ui/migrations/0003_auto_20180302_1401.py b/awx/network_ui/migrations/0003_auto_20180302_1401.py new file mode 100644 index 0000000000..10c9cc20cf --- /dev/null +++ b/awx/network_ui/migrations/0003_auto_20180302_1401.py @@ -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), + ), + ] diff --git a/awx/network_ui/migrations/0003_device_type.py b/awx/network_ui/migrations/0003_device_type.py deleted file mode 100644 index d00840b271..0000000000 --- a/awx/network_ui/migrations/0003_device_type.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0004_client_messagetype_topologyhistory.py b/awx/network_ui/migrations/0004_client_messagetype_topologyhistory.py deleted file mode 100644 index 17dee79d85..0000000000 --- a/awx/network_ui/migrations/0004_client_messagetype_topologyhistory.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/awx/network_ui/migrations/0005_topologyhistory_undone.py b/awx/network_ui/migrations/0005_topologyhistory_undone.py deleted file mode 100644 index 9dd284c209..0000000000 --- a/awx/network_ui/migrations/0005_topologyhistory_undone.py +++ /dev/null @@ -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'), - ), - ] diff --git a/awx/network_ui/migrations/0006_auto_20170321_1236.py b/awx/network_ui/migrations/0006_auto_20170321_1236.py deleted file mode 100644 index 430fdc85ad..0000000000 --- a/awx/network_ui/migrations/0006_auto_20170321_1236.py +++ /dev/null @@ -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), - ), - ] diff --git a/awx/network_ui/migrations/0007_auto_20170328_1655.py b/awx/network_ui/migrations/0007_auto_20170328_1655.py deleted file mode 100644 index 8366bdea3a..0000000000 --- a/awx/network_ui/migrations/0007_auto_20170328_1655.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0008_interface_id.py b/awx/network_ui/migrations/0008_interface_id.py deleted file mode 100644 index 66bb3a29ad..0000000000 --- a/awx/network_ui/migrations/0008_interface_id.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0009_auto_20170403_1912.py b/awx/network_ui/migrations/0009_auto_20170403_1912.py deleted file mode 100644 index a4677e011d..0000000000 --- a/awx/network_ui/migrations/0009_auto_20170403_1912.py +++ /dev/null @@ -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'), - ), - ] diff --git a/awx/network_ui/migrations/0010_link_id.py b/awx/network_ui/migrations/0010_link_id.py deleted file mode 100644 index 3bcc2028c9..0000000000 --- a/awx/network_ui/migrations/0010_link_id.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0011_link_name.py b/awx/network_ui/migrations/0011_link_name.py deleted file mode 100644 index ff6accab52..0000000000 --- a/awx/network_ui/migrations/0011_link_name.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0012_auto_20170706_1526.py b/awx/network_ui/migrations/0012_auto_20170706_1526.py deleted file mode 100644 index 13ef7b27a5..0000000000 --- a/awx/network_ui/migrations/0012_auto_20170706_1526.py +++ /dev/null @@ -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), - ), - ] diff --git a/awx/network_ui/migrations/0013_auto_20170710_1840.py b/awx/network_ui/migrations/0013_auto_20170710_1840.py deleted file mode 100644 index 16ba192aa5..0000000000 --- a/awx/network_ui/migrations/0013_auto_20170710_1840.py +++ /dev/null @@ -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), - ), - ] diff --git a/awx/network_ui/migrations/0014_group_topology.py b/awx/network_ui/migrations/0014_group_topology.py deleted file mode 100644 index e3e0de45ed..0000000000 --- a/awx/network_ui/migrations/0014_group_topology.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0015_auto_20170710_1937.py b/awx/network_ui/migrations/0015_auto_20170710_1937.py deleted file mode 100644 index 21b2d7db03..0000000000 --- a/awx/network_ui/migrations/0015_auto_20170710_1937.py +++ /dev/null @@ -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'), - ), - ] diff --git a/awx/network_ui/migrations/0016_auto_20170717_1520.py b/awx/network_ui/migrations/0016_auto_20170717_1520.py deleted file mode 100644 index 1e4304083e..0000000000 --- a/awx/network_ui/migrations/0016_auto_20170717_1520.py +++ /dev/null @@ -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'), - ), - ] diff --git a/awx/network_ui/migrations/0017_auto_20170717_1813.py b/awx/network_ui/migrations/0017_auto_20170717_1813.py deleted file mode 100644 index ab941ef82f..0000000000 --- a/awx/network_ui/migrations/0017_auto_20170717_1813.py +++ /dev/null @@ -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), - ), - ] diff --git a/awx/network_ui/migrations/0018_auto_20170821_1557.py b/awx/network_ui/migrations/0018_auto_20170821_1557.py deleted file mode 100644 index d937c98b05..0000000000 --- a/awx/network_ui/migrations/0018_auto_20170821_1557.py +++ /dev/null @@ -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'), - ), - ] diff --git a/awx/network_ui/migrations/0019_auto_20170822_1723.py b/awx/network_ui/migrations/0019_auto_20170822_1723.py deleted file mode 100644 index 26832b9791..0000000000 --- a/awx/network_ui/migrations/0019_auto_20170822_1723.py +++ /dev/null @@ -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'), - ), - ] diff --git a/awx/network_ui/migrations/0020_device_process_id_seq.py b/awx/network_ui/migrations/0020_device_process_id_seq.py deleted file mode 100644 index 76a056a62d..0000000000 --- a/awx/network_ui/migrations/0020_device_process_id_seq.py +++ /dev/null @@ -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), - ), - ] diff --git a/awx/network_ui/migrations/0021_toolbox_toolboxitem.py b/awx/network_ui/migrations/0021_toolbox_toolboxitem.py deleted file mode 100644 index 201d511ab5..0000000000 --- a/awx/network_ui/migrations/0021_toolbox_toolboxitem.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/awx/network_ui/migrations/0022_fsmtrace.py b/awx/network_ui/migrations/0022_fsmtrace.py deleted file mode 100644 index 2f72ef79f3..0000000000 --- a/awx/network_ui/migrations/0022_fsmtrace.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/awx/network_ui/migrations/0023_auto_20171213_1623.py b/awx/network_ui/migrations/0023_auto_20171213_1623.py deleted file mode 100644 index 892e1be9ad..0000000000 --- a/awx/network_ui/migrations/0023_auto_20171213_1623.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0024_auto_20171213_1949.py b/awx/network_ui/migrations/0024_auto_20171213_1949.py deleted file mode 100644 index 6b1f08eb65..0000000000 --- a/awx/network_ui/migrations/0024_auto_20171213_1949.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0025_devicehost_topologyinventory.py b/awx/network_ui/migrations/0025_devicehost_topologyinventory.py deleted file mode 100644 index ba167af327..0000000000 --- a/awx/network_ui/migrations/0025_devicehost_topologyinventory.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/awx/network_ui/migrations/0026_auto_20180105_1403.py b/awx/network_ui/migrations/0026_auto_20180105_1403.py deleted file mode 100644 index 052f021c1c..0000000000 --- a/awx/network_ui/migrations/0026_auto_20180105_1403.py +++ /dev/null @@ -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', - ), - ] diff --git a/awx/network_ui/migrations/0027_eventtrace.py b/awx/network_ui/migrations/0027_eventtrace.py deleted file mode 100644 index 05b65c0972..0000000000 --- a/awx/network_ui/migrations/0027_eventtrace.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/awx/network_ui/migrations/0028_coverage.py b/awx/network_ui/migrations/0028_coverage.py deleted file mode 100644 index f799f726c5..0000000000 --- a/awx/network_ui/migrations/0028_coverage.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/awx/network_ui/migrations/0029_topologysnapshot.py b/awx/network_ui/migrations/0029_topologysnapshot.py deleted file mode 100644 index e185927b32..0000000000 --- a/awx/network_ui/migrations/0029_topologysnapshot.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/awx/network_ui/migrations/0030_auto_20180110_1751.py b/awx/network_ui/migrations/0030_auto_20180110_1751.py deleted file mode 100644 index d21ca4d456..0000000000 --- a/awx/network_ui/migrations/0030_auto_20180110_1751.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0031_auto_20180110_1752.py b/awx/network_ui/migrations/0031_auto_20180110_1752.py deleted file mode 100644 index c4474da956..0000000000 --- a/awx/network_ui/migrations/0031_auto_20180110_1752.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0032_auto_20180112_2135.py b/awx/network_ui/migrations/0032_auto_20180112_2135.py deleted file mode 100644 index c43827ef58..0000000000 --- a/awx/network_ui/migrations/0032_auto_20180112_2135.py +++ /dev/null @@ -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), - ), - ] diff --git a/awx/network_ui/migrations/0033_auto_20180112_2202.py b/awx/network_ui/migrations/0033_auto_20180112_2202.py deleted file mode 100644 index c88ebe9cae..0000000000 --- a/awx/network_ui/migrations/0033_auto_20180112_2202.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/migrations/0034_auto_20180113_1725.py b/awx/network_ui/migrations/0034_auto_20180113_1725.py deleted file mode 100644 index 8a062d468d..0000000000 --- a/awx/network_ui/migrations/0034_auto_20180113_1725.py +++ /dev/null @@ -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, - ), - ] diff --git a/awx/network_ui/models.py b/awx/network_ui/models.py index 0f9120ad6c..c17717d874 100644 --- a/awx/network_ui/models.py +++ b/awx/network_ui/models.py @@ -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',) diff --git a/awx/network_ui/serializers.py b/awx/network_ui/serializers.py index 38f88afaa8..5ee72c7ec5 100644 --- a/awx/network_ui/serializers.py +++ b/awx/network_ui/serializers.py @@ -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, diff --git a/awx/network_ui/templates/models.pyt b/awx/network_ui/templates/models.pyt index dbba7c748d..225f1ab805 100644 --- a/awx/network_ui/templates/models.pyt +++ b/awx/network_ui/templates/models.pyt @@ -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%} diff --git a/awx/network_ui/tests.py b/awx/network_ui/tests.py index 6a40ec784a..8aca8ac06c 100644 --- a/awx/network_ui/tests.py +++ b/awx/network_ui/tests.py @@ -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')) diff --git a/awx/network_ui/tools/coverage_report.py b/awx/network_ui/tools/coverage_report.py index c4ad776b55..05b784da1d 100755 --- a/awx/network_ui/tools/coverage_report.py +++ b/awx/network_ui/tools/coverage_report.py @@ -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:])) diff --git a/awx/network_ui/tuples.py b/awx/network_ui/tuples.py index f22801e076..2a0d89be2b 100644 --- a/awx/network_ui/tuples.py +++ b/awx/network_ui/tuples.py @@ -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', ]) diff --git a/awx/network_ui/utils.py b/awx/network_ui/utils.py index 56549d9fb7..9b2eea6c10 100644 --- a/awx/network_ui/utils.py +++ b/awx/network_ui/utils.py @@ -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()} diff --git a/awx/network_ui/v1_api_serializers.py b/awx/network_ui/v1_api_serializers.py index 549b8eaf87..988c9b12c1 100644 --- a/awx/network_ui/v1_api_serializers.py +++ b/awx/network_ui/v1_api_serializers.py @@ -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') diff --git a/awx/network_ui/v2_api_serializers.py b/awx/network_ui/v2_api_serializers.py index 549b8eaf87..988c9b12c1 100644 --- a/awx/network_ui/v2_api_serializers.py +++ b/awx/network_ui/v2_api_serializers.py @@ -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') diff --git a/awx/network_ui/v2_api_views.py b/awx/network_ui/v2_api_views.py index 96922e3484..75cc1c0573 100644 --- a/awx/network_ui/v2_api_views.py +++ b/awx/network_ui/v2_api_views.py @@ -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 diff --git a/awx/ui/client/src/network-ui/animations.js b/awx/ui/client/src/network-ui/animations.js index 4f2b3ec51f..af73c718d5 100644 --- a/awx/ui/client/src/network-ui/animations.js +++ b/awx/ui/client/src/network-ui/animations.js @@ -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, diff --git a/awx/ui/client/src/network-ui/group.fsm.js b/awx/ui/client/src/network-ui/group.fsm.js index 485aebbed4..f9c975bc5f 100644 --- a/awx/ui/client/src/network-ui/group.fsm.js +++ b/awx/ui/client/src/network-ui/group.fsm.js @@ -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; diff --git a/awx/ui/client/src/network-ui/messages.js b/awx/ui/client/src/network-ui/messages.js index fa05a8c914..ed576fc2e3 100644 --- a/awx/ui/client/src/network-ui/messages.js +++ b/awx/ui/client/src/network-ui/messages.js @@ -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; diff --git a/awx/ui/client/src/network-ui/models.js b/awx/ui/client/src/network-ui/models.js index 0e92d990c8..1c20a42476 100644 --- a/awx/ui/client/src/network-ui/models.js +++ b/awx/ui/client/src/network-ui/models.js @@ -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){ diff --git a/awx/ui/client/src/network-ui/move.fsm.js b/awx/ui/client/src/network-ui/move.fsm.js index b8b485af1c..3646ffcb6d 100644 --- a/awx/ui/client/src/network-ui/move.fsm.js +++ b/awx/ui/client/src/network-ui/move.fsm.js @@ -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]); } }; diff --git a/awx/ui/client/src/network-ui/network-details/details.controller.js b/awx/ui/client/src/network-ui/network-details/details.controller.js index c00f407096..ded189c465 100644 --- a/awx/ui/client/src/network-ui/network-details/details.controller.js +++ b/awx/ui/client/src/network-ui/network-details/details.controller.js @@ -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 diff --git a/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js b/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js index 1d3d9547f9..8094ef8be8 100644 --- a/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js +++ b/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js @@ -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); }); diff --git a/awx/ui/client/src/network-ui/network-nav/network.nav.view.html b/awx/ui/client/src/network-ui/network-nav/network.nav.view.html index 0f476d0f6e..487c46a80c 100644 --- a/awx/ui/client/src/network-ui/network-nav/network.nav.view.html +++ b/awx/ui/client/src/network-ui/network-nav/network.nav.view.html @@ -20,6 +20,7 @@ +