From 06af05708acea75d248e3820a68ba940ff5a3471 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 26 Jul 2016 15:42:26 -0400 Subject: [PATCH] Applied tenancy to circuits --- netbox/circuits/admin.py | 7 +- netbox/circuits/api/serializers.py | 6 +- netbox/circuits/forms.py | 2 +- .../migrations/0004_circuit_add_tenant.py | 22 +++++ netbox/circuits/models.py | 2 + netbox/circuits/tables.py | 3 +- netbox/circuits/views.py | 2 +- netbox/templates/circuits/circuit.html | 81 ++++++++++++++----- netbox/templates/circuits/circuit_edit.html | 10 ++- 9 files changed, 104 insertions(+), 31 deletions(-) create mode 100644 netbox/circuits/migrations/0004_circuit_add_tenant.py diff --git a/netbox/circuits/admin.py b/netbox/circuits/admin.py index 090ad7d39..31caecdec 100644 --- a/netbox/circuits/admin.py +++ b/netbox/circuits/admin.py @@ -21,10 +21,11 @@ class CircuitTypeAdmin(admin.ModelAdmin): @admin.register(Circuit) class CircuitAdmin(admin.ModelAdmin): - list_display = ['cid', 'provider', 'type', 'site', 'install_date', 'port_speed', 'commit_rate', 'xconnect_id'] - list_filter = ['provider'] + list_display = ['cid', 'provider', 'type', 'tenant', 'site', 'install_date', 'port_speed', 'commit_rate', + 'xconnect_id'] + list_filter = ['provider', 'type', 'tenant'] exclude = ['interface'] def get_queryset(self, request): qs = super(CircuitAdmin, self).get_queryset(request) - return qs.select_related('provider', 'type', 'site') + return qs.select_related('provider', 'type', 'tenant', 'site') diff --git a/netbox/circuits/api/serializers.py b/netbox/circuits/api/serializers.py index ebedda878..0efedd04c 100644 --- a/netbox/circuits/api/serializers.py +++ b/netbox/circuits/api/serializers.py @@ -2,6 +2,7 @@ from rest_framework import serializers from circuits.models import Provider, CircuitType, Circuit from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer +from tenancy.api.serializers import TenantNestedSerializer # @@ -45,13 +46,14 @@ class CircuitTypeNestedSerializer(CircuitTypeSerializer): class CircuitSerializer(serializers.ModelSerializer): provider = ProviderNestedSerializer() type = CircuitTypeNestedSerializer() + tenant = TenantNestedSerializer() site = SiteNestedSerializer() interface = InterfaceNestedSerializer() class Meta: model = Circuit - fields = ['id', 'cid', 'provider', 'type', 'site', 'interface', 'install_date', 'port_speed', 'commit_rate', - 'xconnect_id', 'comments'] + fields = ['id', 'cid', 'provider', 'type', 'tenant', 'site', 'interface', 'install_date', 'port_speed', + 'commit_rate', 'xconnect_id', 'comments'] class CircuitNestedSerializer(CircuitSerializer): diff --git a/netbox/circuits/forms.py b/netbox/circuits/forms.py index 263225aae..7d65ca192 100644 --- a/netbox/circuits/forms.py +++ b/netbox/circuits/forms.py @@ -99,7 +99,7 @@ class CircuitForm(forms.ModelForm, BootstrapMixin): class Meta: model = Circuit fields = [ - 'cid', 'type', 'provider', 'site', 'rack', 'device', 'livesearch', 'interface', 'install_date', + 'cid', 'type', 'provider', 'tenant', 'site', 'rack', 'device', 'livesearch', 'interface', 'install_date', 'port_speed', 'commit_rate', 'xconnect_id', 'pp_info', 'comments' ] help_texts = { diff --git a/netbox/circuits/migrations/0004_circuit_add_tenant.py b/netbox/circuits/migrations/0004_circuit_add_tenant.py new file mode 100644 index 000000000..87988bb43 --- /dev/null +++ b/netbox/circuits/migrations/0004_circuit_add_tenant.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.8 on 2016-07-26 19:29 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('tenancy', '0001_initial'), + ('circuits', '0003_provider_32bit_asn_support'), + ] + + operations = [ + migrations.AddField( + model_name='circuit', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='tenancy.Tenant'), + ), + ] diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index cd5d760b3..b3db5a6ae 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -3,6 +3,7 @@ from django.db import models from dcim.fields import ASNField from dcim.models import Site, Interface +from tenancy.models import Tenant from utilities.models import CreatedUpdatedModel @@ -66,6 +67,7 @@ class Circuit(CreatedUpdatedModel): cid = models.CharField(max_length=50, verbose_name='Circuit ID') provider = models.ForeignKey('Provider', related_name='circuits', on_delete=models.PROTECT) type = models.ForeignKey('CircuitType', related_name='circuits', on_delete=models.PROTECT) + tenant = models.ForeignKey(Tenant, related_name='circuits', blank=True, null=True, on_delete=models.PROTECT) site = models.ForeignKey(Site, related_name='circuits', on_delete=models.PROTECT) interface = models.OneToOneField(Interface, related_name='circuit', blank=True, null=True) install_date = models.DateField(blank=True, null=True, verbose_name='Date installed') diff --git a/netbox/circuits/tables.py b/netbox/circuits/tables.py index c13727cb7..0fa236fac 100644 --- a/netbox/circuits/tables.py +++ b/netbox/circuits/tables.py @@ -53,10 +53,11 @@ class CircuitTable(BaseTable): cid = tables.LinkColumn('circuits:circuit', args=[Accessor('pk')], verbose_name='ID') type = tables.Column(verbose_name='Type') provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')], verbose_name='Provider') + tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')], verbose_name='Tenant') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') port_speed_human = tables.Column(verbose_name='Port Speed') commit_rate_human = tables.Column(verbose_name='Commit Rate') class Meta(BaseTable.Meta): model = Circuit - fields = ('pk', 'cid', 'type', 'provider', 'site', 'port_speed_human', 'commit_rate_human') + fields = ('pk', 'cid', 'type', 'provider', 'tenant', 'site', 'port_speed_human', 'commit_rate_human') diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 283146396..db42a6db9 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -109,7 +109,7 @@ class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): # class CircuitListView(ObjectListView): - queryset = Circuit.objects.select_related('provider', 'type', 'site') + queryset = Circuit.objects.select_related('provider', 'type', 'tenant', 'site') filter = filters.CircuitFilter filter_form = forms.CircuitFilterForm table = tables.CircuitTable diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html index cbae7aeac..c6fcbfd87 100644 --- a/netbox/templates/circuits/circuit.html +++ b/netbox/templates/circuits/circuit.html @@ -57,6 +57,45 @@ Circuit ID {{ circuit.cid }} + + Type + {{ circuit.type }} + + + Tenant + + {% if circuit.tenant %} + {{ circuit.tenant }} + {% else %} + N/A + {% endif %} + + + + Port Speed + {{ circuit.port_speed_human }} + + + Commit Rate + {% if circuit.commit_rate %}{{ circuit.commit_rate_human }}{% else %}N/A{% endif %} + + + Created + {{ circuit.created }} + + + Last Updated + {{ circuit.last_updated }} + + + + +
+
+
+ Termination +
+ - - - - - - - - - + - + - - - - - - - - - +
Site @@ -75,36 +114,36 @@
Install Date{{ circuit.install_date }}
Port Speed{{ circuit.port_speed_human }}
Commit Rate{% if circuit.commit_rate %}{{ circuit.commit_rate_human }}{% else %}N/A{% endif %} + {% if circuit.install_date %} + {{ circuit.install_date }} + {% else %} + N/A + {% endif %} +
Cross-Connect{{ circuit.xconnect_id }} + {% if circuit.xconnect_id %} + {{ circuit.xconnect_id }} + {% else %} + N/A + {% endif %} +
Patch Panel/Port{{ circuit.pp_info }}
Created{{ circuit.created }}
Last Updated{{ circuit.last_updated }} + {% if circuit.pp_info %} + {{ circuit.pp_info }} + {% else %} + N/A + {% endif %} +
-
-
Comments diff --git a/netbox/templates/circuits/circuit_edit.html b/netbox/templates/circuits/circuit_edit.html index 1d5a0318c..c489db332 100644 --- a/netbox/templates/circuits/circuit_edit.html +++ b/netbox/templates/circuits/circuit_edit.html @@ -9,13 +9,19 @@ {% render_field form.provider %} {% render_field form.cid %} {% render_field form.type %} + {% render_field form.tenant %} {% render_field form.install_date %} - {% render_field form.port_speed %} - {% render_field form.commit_rate %} {% render_field form.xconnect_id %} {% render_field form.pp_info %}
+
+
Bandwidth
+
+ {% render_field form.port_speed %} + {% render_field form.commit_rate %} +
+
Termination