|
@@ -3,20 +3,16 @@ from django.utils.safestring import mark_safe
|
|
|
from django_tables2.utils import Accessor
|
|
from django_tables2.utils import Accessor
|
|
|
|
|
|
|
|
from dcim.models import Interface
|
|
from dcim.models import Interface
|
|
|
-from tenancy.tables import COL_TENANT
|
|
|
|
|
|
|
+from tenancy.tables import TenantColumn
|
|
|
from utilities.tables import (
|
|
from utilities.tables import (
|
|
|
BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, TagColumn, ToggleColumn,
|
|
BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, TagColumn, ToggleColumn,
|
|
|
|
|
+ UtilizationColumn,
|
|
|
)
|
|
)
|
|
|
from virtualization.models import VMInterface
|
|
from virtualization.models import VMInterface
|
|
|
from .models import Aggregate, IPAddress, Prefix, RIR, Role, RouteTarget, Service, VLAN, VLANGroup, VRF
|
|
from .models import Aggregate, IPAddress, Prefix, RIR, Role, RouteTarget, Service, VLAN, VLANGroup, VRF
|
|
|
|
|
|
|
|
AVAILABLE_LABEL = mark_safe('<span class="label label-success">Available</span>')
|
|
AVAILABLE_LABEL = mark_safe('<span class="label label-success">Available</span>')
|
|
|
|
|
|
|
|
-UTILIZATION_GRAPH = """
|
|
|
|
|
-{% load helpers %}
|
|
|
|
|
-{% if record.pk %}{% utilization_graph record.get_utilization %}{% else %}—{% endif %}
|
|
|
|
|
-"""
|
|
|
|
|
-
|
|
|
|
|
PREFIX_LINK = """
|
|
PREFIX_LINK = """
|
|
|
{% load helpers %}
|
|
{% load helpers %}
|
|
|
{% for i in record.parents|as_range %}
|
|
{% for i in record.parents|as_range %}
|
|
@@ -109,16 +105,6 @@ VLAN_MEMBER_TAGGED = """
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
"""
|
|
"""
|
|
|
|
|
|
|
|
-TENANT_LINK = """
|
|
|
|
|
-{% if record.tenant %}
|
|
|
|
|
- <a href="{{ record.tenant.get_absolute_url }}" title="{{ record.tenant.description }}">{{ record.tenant }}</a>
|
|
|
|
|
-{% elif record.vrf.tenant %}
|
|
|
|
|
- <a href="{{ record.vrf.tenant.get_absolute_url }}" title="{{ record.vrf.tenant.description }}">{{ record.vrf.tenant }}</a>*
|
|
|
|
|
-{% else %}
|
|
|
|
|
- —
|
|
|
|
|
-{% endif %}
|
|
|
|
|
-"""
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
#
|
|
#
|
|
|
# VRFs
|
|
# VRFs
|
|
@@ -130,9 +116,7 @@ class VRFTable(BaseTable):
|
|
|
rd = tables.Column(
|
|
rd = tables.Column(
|
|
|
verbose_name='RD'
|
|
verbose_name='RD'
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=COL_TENANT
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
enforce_unique = BooleanColumn(
|
|
enforce_unique = BooleanColumn(
|
|
|
verbose_name='Unique'
|
|
verbose_name='Unique'
|
|
|
)
|
|
)
|
|
@@ -163,9 +147,7 @@ class VRFTable(BaseTable):
|
|
|
class RouteTargetTable(BaseTable):
|
|
class RouteTargetTable(BaseTable):
|
|
|
pk = ToggleColumn()
|
|
pk = ToggleColumn()
|
|
|
name = tables.LinkColumn()
|
|
name = tables.LinkColumn()
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=COL_TENANT
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
tags = TagColumn(
|
|
tags = TagColumn(
|
|
|
url_name='ipam:vrf_list'
|
|
url_name='ipam:vrf_list'
|
|
|
)
|
|
)
|
|
@@ -208,9 +190,7 @@ class AggregateTable(BaseTable):
|
|
|
prefix = tables.LinkColumn(
|
|
prefix = tables.LinkColumn(
|
|
|
verbose_name='Aggregate'
|
|
verbose_name='Aggregate'
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=TENANT_LINK
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
date_added = tables.DateColumn(
|
|
date_added = tables.DateColumn(
|
|
|
format="Y-m-d",
|
|
format="Y-m-d",
|
|
|
verbose_name='Added'
|
|
verbose_name='Added'
|
|
@@ -225,8 +205,8 @@ class AggregateDetailTable(AggregateTable):
|
|
|
child_count = tables.Column(
|
|
child_count = tables.Column(
|
|
|
verbose_name='Prefixes'
|
|
verbose_name='Prefixes'
|
|
|
)
|
|
)
|
|
|
- utilization = tables.TemplateColumn(
|
|
|
|
|
- template_code=UTILIZATION_GRAPH,
|
|
|
|
|
|
|
+ utilization = UtilizationColumn(
|
|
|
|
|
+ accessor='get_utilization',
|
|
|
orderable=False
|
|
orderable=False
|
|
|
)
|
|
)
|
|
|
tags = TagColumn(
|
|
tags = TagColumn(
|
|
@@ -279,9 +259,7 @@ class PrefixTable(BaseTable):
|
|
|
template_code=VRF_LINK,
|
|
template_code=VRF_LINK,
|
|
|
verbose_name='VRF'
|
|
verbose_name='VRF'
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=TENANT_LINK
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
site = tables.Column(
|
|
site = tables.Column(
|
|
|
linkify=True
|
|
linkify=True
|
|
|
)
|
|
)
|
|
@@ -308,13 +286,11 @@ class PrefixTable(BaseTable):
|
|
|
|
|
|
|
|
|
|
|
|
|
class PrefixDetailTable(PrefixTable):
|
|
class PrefixDetailTable(PrefixTable):
|
|
|
- utilization = tables.TemplateColumn(
|
|
|
|
|
- template_code=UTILIZATION_GRAPH,
|
|
|
|
|
|
|
+ utilization = UtilizationColumn(
|
|
|
|
|
+ accessor='get_utilization',
|
|
|
orderable=False
|
|
orderable=False
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=COL_TENANT
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
tags = TagColumn(
|
|
tags = TagColumn(
|
|
|
url_name='ipam:prefix_list'
|
|
url_name='ipam:prefix_list'
|
|
|
)
|
|
)
|
|
@@ -347,9 +323,7 @@ class IPAddressTable(BaseTable):
|
|
|
default=AVAILABLE_LABEL
|
|
default=AVAILABLE_LABEL
|
|
|
)
|
|
)
|
|
|
role = ChoiceFieldColumn()
|
|
role = ChoiceFieldColumn()
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=TENANT_LINK
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
assigned_object = tables.Column(
|
|
assigned_object = tables.Column(
|
|
|
linkify=True,
|
|
linkify=True,
|
|
|
orderable=False,
|
|
orderable=False,
|
|
@@ -379,9 +353,7 @@ class IPAddressDetailTable(IPAddressTable):
|
|
|
orderable=False,
|
|
orderable=False,
|
|
|
verbose_name='NAT (Inside)'
|
|
verbose_name='NAT (Inside)'
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=COL_TENANT
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
assigned = BooleanColumn(
|
|
assigned = BooleanColumn(
|
|
|
accessor='assigned_object_id',
|
|
accessor='assigned_object_id',
|
|
|
verbose_name='Assigned'
|
|
verbose_name='Assigned'
|
|
@@ -428,9 +400,7 @@ class InterfaceIPAddressTable(BaseTable):
|
|
|
verbose_name='VRF'
|
|
verbose_name='VRF'
|
|
|
)
|
|
)
|
|
|
status = ChoiceFieldColumn()
|
|
status = ChoiceFieldColumn()
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=TENANT_LINK
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
|
|
|
|
|
class Meta(BaseTable.Meta):
|
|
class Meta(BaseTable.Meta):
|
|
|
model = IPAddress
|
|
model = IPAddress
|
|
@@ -480,9 +450,7 @@ class VLANTable(BaseTable):
|
|
|
viewname='ipam:vlangroup_vlans',
|
|
viewname='ipam:vlangroup_vlans',
|
|
|
args=[Accessor('group__pk')]
|
|
args=[Accessor('group__pk')]
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=COL_TENANT
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
status = ChoiceFieldColumn(
|
|
status = ChoiceFieldColumn(
|
|
|
default=AVAILABLE_LABEL
|
|
default=AVAILABLE_LABEL
|
|
|
)
|
|
)
|
|
@@ -504,9 +472,7 @@ class VLANDetailTable(VLANTable):
|
|
|
orderable=False,
|
|
orderable=False,
|
|
|
verbose_name='Prefixes'
|
|
verbose_name='Prefixes'
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=COL_TENANT
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
tags = TagColumn(
|
|
tags = TagColumn(
|
|
|
url_name='ipam:vlan_list'
|
|
url_name='ipam:vlan_list'
|
|
|
)
|
|
)
|
|
@@ -564,9 +530,7 @@ class InterfaceVLANTable(BaseTable):
|
|
|
accessor=Accessor('group__name'),
|
|
accessor=Accessor('group__name'),
|
|
|
verbose_name='Group'
|
|
verbose_name='Group'
|
|
|
)
|
|
)
|
|
|
- tenant = tables.TemplateColumn(
|
|
|
|
|
- template_code=COL_TENANT
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ tenant = TenantColumn()
|
|
|
status = ChoiceFieldColumn()
|
|
status = ChoiceFieldColumn()
|
|
|
role = tables.TemplateColumn(
|
|
role = tables.TemplateColumn(
|
|
|
template_code=VLAN_ROLE_LINK
|
|
template_code=VLAN_ROLE_LINK
|