Adds inventory tracking and templating to network UI groups and hosts.

* Adds group_id to Group table
* Adds inventory_group_id to Group table
* Adds creation of inventory hosts and groups from the network UI
* Changes network UI variables to be under awx key
* Fixes variables initial value
* Adds group membership association/disassociation
* Removes items from the inventory toolbar when loaded by a snaphot
* Adds nunjucks dependency to package.json
* Adds templating to hosts
* Adds templating for racks
* Adds site templating
* Adds group associations for sites
* Squashes migrations for network_ui
* Flake8 migrations
* Changes reserved field type to device_type, group_type, and process_type
* Allows blank values for all CharFields in network_ui models
* Changes reserved field type to device_type, group_type, and process_type
This commit is contained in:
Ben Thomasson
2018-02-22 19:35:06 -05:00
parent b7848ab4f6
commit f8d83638b0
79 changed files with 1471 additions and 1367 deletions

View File

@@ -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,

View File

@@ -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),

View File

@@ -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,

View File

@@ -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,

View File

@@ -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}

View File

@@ -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}

View File

@@ -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,

View File

@@ -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,

View File

@@ -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}

View File

@@ -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',)

View File

@@ -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}

View File

@@ -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}

View File

@@ -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'])

View File

@@ -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/

View File

@@ -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]}

View File

@@ -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

View File

@@ -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()))

View File

@@ -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'),
),
]

View File

@@ -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,
),
]

View File

@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2018-03-01 20:39
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('network_ui', '0001_squashed_0036_auto_20180223_0119'),
]
operations = [
migrations.RenameField(
model_name='device',
old_name='type',
new_name='device_type',
),
migrations.RenameField(
model_name='group',
old_name='type',
new_name='group_type',
),
migrations.RenameField(
model_name='process',
old_name='type',
new_name='process_type',
),
migrations.AlterField(
model_name='datasheet',
name='client',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='network_ui.Client'),
),
]

View File

@@ -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',
),
]

View File

@@ -0,0 +1,130 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2018-03-02 14:01
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('network_ui', '0002_auto_20180301_2039'),
]
operations = [
migrations.AlterField(
model_name='codeundertest',
name='commit_hash',
field=models.CharField(blank=True, max_length=40),
),
migrations.AlterField(
model_name='databinding',
name='field',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='databinding',
name='table',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='datasheet',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='datatype',
name='type_name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='device',
name='device_type',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='device',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='fsmtrace',
name='from_state',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='fsmtrace',
name='fsm_name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='fsmtrace',
name='message_type',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='fsmtrace',
name='to_state',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='group',
name='group_type',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='group',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='interface',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='link',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='messagetype',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='process',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='process',
name='process_type',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='result',
name='name',
field=models.CharField(blank=True, max_length=20),
),
migrations.AlterField(
model_name='stream',
name='label',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='testcase',
name='name',
field=models.CharField(blank=True, max_length=200, verbose_name=b'TestCase'),
),
migrations.AlterField(
model_name='toolbox',
name='name',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='topology',
name='name',
field=models.CharField(blank=True, max_length=200),
),
]

View File

@@ -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,
),
]

View File

@@ -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')),
],
),
]

View File

@@ -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'),
),
]

View File

@@ -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),
),
]

View File

@@ -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,
),
]

View File

@@ -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,
),
]

View File

@@ -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'),
),
]

View File

@@ -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,
),
]

View File

@@ -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,
),
]

View File

@@ -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),
),
]

View File

@@ -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),
),
]

View File

@@ -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,
),
]

View File

@@ -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'),
),
]

View File

@@ -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'),
),
]

View File

@@ -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),
),
]

View File

@@ -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'),
),
]

View File

@@ -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'),
),
]

View File

@@ -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),
),
]

View File

@@ -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')),
],
),
]

View File

@@ -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')),
],
),
]

View File

@@ -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,
),
]

View File

@@ -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,
),
]

View File

@@ -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')),
],
),
]

View File

@@ -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',
),
]

View File

@@ -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')),
],
),
]

View File

@@ -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')),
],
),
]

View File

@@ -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')),
],
),
]

View File

@@ -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,
),
]

View File

@@ -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,
),
]

View File

@@ -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),
),
]

View File

@@ -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,
),
]

View File

@@ -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,
),
]

View File

@@ -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',)

View File

@@ -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,

View File

@@ -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%}

View File

@@ -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'))

View File

@@ -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:]))

View File

@@ -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',
])

View File

@@ -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()}

View File

@@ -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')

View File

@@ -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')

View File

@@ -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