diff --git a/awx/network_ui/admin.py b/awx/network_ui/admin.py index ed3fe8e577..b8befad0ad 100644 --- a/awx/network_ui/admin.py +++ b/awx/network_ui/admin.py @@ -24,6 +24,10 @@ from awx.network_ui.models import DataType from awx.network_ui.models import DataSheet +from awx.network_ui.models import Stream + +from awx.network_ui.models import Process + class DeviceAdmin(admin.ModelAdmin): fields = ('topology', 'name', 'x', 'y', 'id', 'type', 'interface_id_seq',) @@ -42,8 +46,8 @@ admin.site.register(Link, LinkAdmin) class TopologyAdmin(admin.ModelAdmin): - fields = ('name', 'scale', 'panX', 'panY', 'device_id_seq', 'link_id_seq', 'group_id_seq',) - raw_id_fields = () + fields = ('name', 'scale', 'panX', 'panY', 'device_id_seq', 'link_id_seq', 'group_id_seq', 'stream_id_seq',) + raw_id_fields = ('group_id_seq',) admin.site.register(Topology, TopologyAdmin) @@ -82,7 +86,7 @@ admin.site.register(Interface, InterfaceAdmin) class GroupAdmin(admin.ModelAdmin): - fields = ('id', 'name', 'x1', 'y1', 'x2', 'y2', 'topology',) + fields = ('id', 'name', 'x1', 'y1', 'x2', 'y2', 'topology', 'type',) raw_id_fields = ('topology',) @@ -119,3 +123,19 @@ class DataSheetAdmin(admin.ModelAdmin): admin.site.register(DataSheet, DataSheetAdmin) + + +class StreamAdmin(admin.ModelAdmin): + fields = ('from_device', 'to_device', 'label', 'id',) + raw_id_fields = ('stream_id', 'from_device', 'to_device', 'label',) + + +admin.site.register(Stream, StreamAdmin) + + +class ProcessAdmin(admin.ModelAdmin): + fields = ('device', 'name', 'type', 'id',) + raw_id_fields = ('device',) + + +admin.site.register(Process, ProcessAdmin) diff --git a/awx/network_ui/consumers.py b/awx/network_ui/consumers.py index 646a886ec0..6d1e8de309 100644 --- a/awx/network_ui/consumers.py +++ b/awx/network_ui/consumers.py @@ -441,12 +441,14 @@ class _Persistence(object): x2='x2', y2='y2', name='name', - id='id'), group) + id='id', + type='type'), 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.save() (Topology.objects .filter(topology_id=topology_id, group_id_seq__lt=group['id']) diff --git a/awx/network_ui/designs/models.yml b/awx/network_ui/designs/models.yml index 8f1442382e..5eaf1d5f50 100644 --- a/awx/network_ui/designs/models.yml +++ b/awx/network_ui/designs/models.yml @@ -82,6 +82,11 @@ models: type: IntegerField - default: 0 name: group_id_seq + ref: Topology + ref_field: group_id_seq + type: IntegerField + - default: 0 + name: stream_id_seq type: IntegerField name: Topology x: 111 @@ -168,6 +173,9 @@ models: ref: Topology ref_field: topology_id type: ForeignKey + - len: 200 + name: type + type: CharField name: Group x: 407 y: -379 @@ -241,6 +249,53 @@ models: name: DataSheet x: -207 y: -282 +- fields: + - name: stream_id + pk: true + ref: Stream + ref_field: stream_id + type: AutoField + - name: from_device + ref: Stream + ref_field: from_device + related_name: from_stream + type: ForeignKey + - name: to_device + ref: Stream + ref_field: to_device + related_name: to_stream + type: ForeignKey + - len: 200 + name: label + ref: Stream + ref_field: label + type: CharField + - default: 0 + name: id + type: IntegerField + name: Stream + x: 709 + y: 527 +- fields: + - name: process_id + pk: true + type: AutoField + - name: device + ref: Device + ref_field: device_id + type: ForeignKey + - len: 200 + name: name + type: CharField + - len: 200 + name: type + type: CharField + - default: 0 + name: id + type: IntegerField + name: Process + x: 654 + y: 778 modules: [] view: panX: 213.72955551921206 diff --git a/awx/network_ui/migrations/0018_auto_20170821_1557.py b/awx/network_ui/migrations/0018_auto_20170821_1557.py new file mode 100644 index 0000000000..d937c98b05 --- /dev/null +++ b/awx/network_ui/migrations/0018_auto_20170821_1557.py @@ -0,0 +1,50 @@ +# -*- 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/models.py b/awx/network_ui/models.py index 5f91d49358..bc6246518a 100644 --- a/awx/network_ui/models.py +++ b/awx/network_ui/models.py @@ -36,7 +36,8 @@ class Topology(models.Model): panY = models.FloatField() device_id_seq = models.IntegerField(default=0) link_id_seq = models.IntegerField(default=0) - group_id_seq = models.IntegerField(default=0) + group_id_seq = models.IntegerField('Topology', default=0) + stream_id_seq = models.IntegerField(default=0) def __unicode__(self): return self.name @@ -88,6 +89,7 @@ class Group(models.Model): x2 = models.IntegerField() y2 = models.IntegerField() topology = models.ForeignKey('Topology',) + type = models.CharField(max_length=200,) class GroupDevice(models.Model): @@ -121,3 +123,21 @@ class DataSheet(models.Model): name = models.CharField(max_length=200,) topology = models.ForeignKey('Topology',) client = models.ForeignKey('Client',) + + +class Stream(models.Model): + + stream_id = models.AutoField('Stream', primary_key=True,) + from_device = models.ForeignKey('Stream', related_name='from_stream',) + to_device = models.ForeignKey('Stream', related_name='to_stream',) + label = models.CharField('Stream', max_length=200,) + 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)