mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
#492: Extend IPAM tables
This commit is contained in:
@ -190,12 +190,20 @@ TENANT_LINK = """
|
|||||||
class VRFTable(BaseTable):
|
class VRFTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
name = tables.LinkColumn()
|
name = tables.LinkColumn()
|
||||||
rd = tables.Column(verbose_name='RD')
|
rd = tables.Column(
|
||||||
tenant = tables.TemplateColumn(template_code=COL_TENANT)
|
verbose_name='RD'
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=COL_TENANT
|
||||||
|
)
|
||||||
|
enforce_unique = BooleanColumn(
|
||||||
|
verbose_name='Unique'
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = VRF
|
model = VRF
|
||||||
fields = ('pk', 'name', 'rd', 'tenant', 'description')
|
fields = ('pk', 'name', 'rd', 'tenant', 'enforce_unique', 'description')
|
||||||
|
default_columns = ('pk', 'name', 'rd', 'tenant', 'description')
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -204,14 +212,23 @@ class VRFTable(BaseTable):
|
|||||||
|
|
||||||
class RIRTable(BaseTable):
|
class RIRTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
name = tables.LinkColumn(verbose_name='Name')
|
name = tables.LinkColumn()
|
||||||
is_private = BooleanColumn(verbose_name='Private')
|
is_private = BooleanColumn(
|
||||||
aggregate_count = tables.Column(verbose_name='Aggregates')
|
verbose_name='Private'
|
||||||
actions = tables.TemplateColumn(template_code=RIR_ACTIONS, attrs={'td': {'class': 'text-right noprint'}}, verbose_name='')
|
)
|
||||||
|
aggregate_count = tables.Column(
|
||||||
|
verbose_name='Aggregates'
|
||||||
|
)
|
||||||
|
actions = tables.TemplateColumn(
|
||||||
|
template_code=RIR_ACTIONS,
|
||||||
|
attrs={'td': {'class': 'text-right noprint'}},
|
||||||
|
verbose_name=''
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = RIR
|
model = RIR
|
||||||
fields = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions')
|
fields = ('pk', 'name', 'slug', 'is_private', 'aggregate_count', 'description', 'actions')
|
||||||
|
default_columns = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions')
|
||||||
|
|
||||||
|
|
||||||
class RIRDetailTable(RIRTable):
|
class RIRDetailTable(RIRTable):
|
||||||
@ -247,6 +264,10 @@ class RIRDetailTable(RIRTable):
|
|||||||
|
|
||||||
class Meta(RIRTable.Meta):
|
class Meta(RIRTable.Meta):
|
||||||
fields = (
|
fields = (
|
||||||
|
'pk', 'name', 'slug', 'is_private', 'aggregate_count', 'stats_total', 'stats_active', 'stats_reserved',
|
||||||
|
'stats_deprecated', 'stats_available', 'utilization', 'actions',
|
||||||
|
)
|
||||||
|
default_columns = (
|
||||||
'pk', 'name', 'is_private', 'aggregate_count', 'stats_total', 'stats_active', 'stats_reserved',
|
'pk', 'name', 'is_private', 'aggregate_count', 'stats_total', 'stats_active', 'stats_reserved',
|
||||||
'stats_deprecated', 'stats_available', 'utilization', 'actions',
|
'stats_deprecated', 'stats_available', 'utilization', 'actions',
|
||||||
)
|
)
|
||||||
@ -258,8 +279,13 @@ class RIRDetailTable(RIRTable):
|
|||||||
|
|
||||||
class AggregateTable(BaseTable):
|
class AggregateTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
prefix = tables.LinkColumn(verbose_name='Aggregate')
|
prefix = tables.LinkColumn(
|
||||||
date_added = tables.DateColumn(format="Y-m-d", verbose_name='Added')
|
verbose_name='Aggregate'
|
||||||
|
)
|
||||||
|
date_added = tables.DateColumn(
|
||||||
|
format="Y-m-d",
|
||||||
|
verbose_name='Added'
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Aggregate
|
model = Aggregate
|
||||||
@ -267,8 +293,13 @@ class AggregateTable(BaseTable):
|
|||||||
|
|
||||||
|
|
||||||
class AggregateDetailTable(AggregateTable):
|
class AggregateDetailTable(AggregateTable):
|
||||||
child_count = tables.Column(verbose_name='Prefixes')
|
child_count = tables.Column(
|
||||||
utilization = tables.TemplateColumn(UTILIZATION_GRAPH, orderable=False, verbose_name='Utilization')
|
verbose_name='Prefixes'
|
||||||
|
)
|
||||||
|
utilization = tables.TemplateColumn(
|
||||||
|
template_code=UTILIZATION_GRAPH,
|
||||||
|
orderable=False
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(AggregateTable.Meta):
|
class Meta(AggregateTable.Meta):
|
||||||
fields = ('pk', 'prefix', 'rir', 'child_count', 'utilization', 'date_added', 'description')
|
fields = ('pk', 'prefix', 'rir', 'child_count', 'utilization', 'date_added', 'description')
|
||||||
@ -300,7 +331,8 @@ class RoleTable(BaseTable):
|
|||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Role
|
model = Role
|
||||||
fields = ('pk', 'name', 'prefix_count', 'vlan_count', 'description', 'slug', 'weight', 'actions')
|
fields = ('pk', 'name', 'slug', 'prefix_count', 'vlan_count', 'description', 'weight', 'actions')
|
||||||
|
default_columns = ('pk', 'name', 'prefix_count', 'vlan_count', 'description', 'actions')
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -309,28 +341,61 @@ class RoleTable(BaseTable):
|
|||||||
|
|
||||||
class PrefixTable(BaseTable):
|
class PrefixTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
prefix = tables.TemplateColumn(PREFIX_LINK, attrs={'th': {'style': 'padding-left: 17px'}})
|
prefix = tables.TemplateColumn(
|
||||||
status = tables.TemplateColumn(STATUS_LABEL)
|
template_code=PREFIX_LINK,
|
||||||
vrf = tables.TemplateColumn(VRF_LINK, verbose_name='VRF')
|
attrs={'th': {'style': 'padding-left: 17px'}}
|
||||||
tenant = tables.TemplateColumn(template_code=TENANT_LINK)
|
)
|
||||||
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')])
|
status = tables.TemplateColumn(
|
||||||
vlan = tables.LinkColumn('ipam:vlan', args=[Accessor('vlan.pk')], verbose_name='VLAN')
|
template_code=STATUS_LABEL
|
||||||
role = tables.TemplateColumn(PREFIX_ROLE_LINK)
|
)
|
||||||
|
vrf = tables.TemplateColumn(
|
||||||
|
template_code=VRF_LINK,
|
||||||
|
verbose_name='VRF'
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=TENANT_LINK
|
||||||
|
)
|
||||||
|
site = tables.LinkColumn(
|
||||||
|
viewname='dcim:site',
|
||||||
|
args=[Accessor('site.slug')]
|
||||||
|
)
|
||||||
|
vlan = tables.LinkColumn(
|
||||||
|
viewname='ipam:vlan',
|
||||||
|
args=[Accessor('vlan.pk')],
|
||||||
|
verbose_name='VLAN'
|
||||||
|
)
|
||||||
|
role = tables.TemplateColumn(
|
||||||
|
template_code=PREFIX_ROLE_LINK
|
||||||
|
)
|
||||||
|
is_pool = BooleanColumn(
|
||||||
|
verbose_name='Pool'
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Prefix
|
model = Prefix
|
||||||
fields = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'vlan', 'role', 'description')
|
fields = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'vlan', 'role', 'is_pool', 'description')
|
||||||
|
default_columns = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'vlan', 'role', 'description')
|
||||||
row_attrs = {
|
row_attrs = {
|
||||||
'class': lambda record: 'success' if not record.pk else '',
|
'class': lambda record: 'success' if not record.pk else '',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class PrefixDetailTable(PrefixTable):
|
class PrefixDetailTable(PrefixTable):
|
||||||
utilization = tables.TemplateColumn(UTILIZATION_GRAPH, orderable=False)
|
utilization = tables.TemplateColumn(
|
||||||
tenant = tables.TemplateColumn(template_code=COL_TENANT)
|
template_code=UTILIZATION_GRAPH,
|
||||||
|
orderable=False
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=COL_TENANT
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(PrefixTable.Meta):
|
class Meta(PrefixTable.Meta):
|
||||||
fields = ('pk', 'prefix', 'status', 'vrf', 'utilization', 'tenant', 'site', 'vlan', 'role', 'description')
|
fields = (
|
||||||
|
'pk', 'prefix', 'status', 'vrf', 'utilization', 'tenant', 'site', 'vlan', 'role', 'is_pool', 'description',
|
||||||
|
)
|
||||||
|
default_columns = (
|
||||||
|
'pk', 'prefix', 'status', 'vrf', 'utilization', 'tenant', 'site', 'vlan', 'role', 'description',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -339,12 +404,27 @@ class PrefixDetailTable(PrefixTable):
|
|||||||
|
|
||||||
class IPAddressTable(BaseTable):
|
class IPAddressTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
address = tables.TemplateColumn(IPADDRESS_LINK, verbose_name='IP Address')
|
address = tables.TemplateColumn(
|
||||||
vrf = tables.TemplateColumn(VRF_LINK, verbose_name='VRF')
|
template_code=IPADDRESS_LINK,
|
||||||
status = tables.TemplateColumn(STATUS_LABEL)
|
verbose_name='IP Address'
|
||||||
tenant = tables.TemplateColumn(template_code=TENANT_LINK)
|
)
|
||||||
parent = tables.TemplateColumn(IPADDRESS_PARENT, orderable=False)
|
vrf = tables.TemplateColumn(
|
||||||
interface = tables.Column(orderable=False)
|
template_code=VRF_LINK,
|
||||||
|
verbose_name='VRF'
|
||||||
|
)
|
||||||
|
status = tables.TemplateColumn(
|
||||||
|
template_code=STATUS_LABEL
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=TENANT_LINK
|
||||||
|
)
|
||||||
|
parent = tables.TemplateColumn(
|
||||||
|
template_code=IPADDRESS_PARENT,
|
||||||
|
orderable=False
|
||||||
|
)
|
||||||
|
interface = tables.Column(
|
||||||
|
orderable=False
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = IPAddress
|
model = IPAddress
|
||||||
@ -358,22 +438,40 @@ class IPAddressTable(BaseTable):
|
|||||||
|
|
||||||
class IPAddressDetailTable(IPAddressTable):
|
class IPAddressDetailTable(IPAddressTable):
|
||||||
nat_inside = tables.LinkColumn(
|
nat_inside = tables.LinkColumn(
|
||||||
'ipam:ipaddress', args=[Accessor('nat_inside.pk')], orderable=False, verbose_name='NAT (Inside)'
|
viewname='ipam:ipaddress',
|
||||||
|
args=[Accessor('nat_inside.pk')],
|
||||||
|
orderable=False,
|
||||||
|
verbose_name='NAT (Inside)'
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=COL_TENANT
|
||||||
)
|
)
|
||||||
tenant = tables.TemplateColumn(template_code=COL_TENANT)
|
|
||||||
|
|
||||||
class Meta(IPAddressTable.Meta):
|
class Meta(IPAddressTable.Meta):
|
||||||
fields = (
|
fields = (
|
||||||
'pk', 'address', 'vrf', 'status', 'role', 'tenant', 'nat_inside', 'parent', 'interface', 'dns_name',
|
'pk', 'address', 'vrf', 'status', 'role', 'tenant', 'nat_inside', 'parent', 'interface', 'dns_name',
|
||||||
'description',
|
'description',
|
||||||
)
|
)
|
||||||
|
default_columns = (
|
||||||
|
'pk', 'address', 'vrf', 'status', 'role', 'tenant', 'parent', 'interface', 'dns_name', 'description',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IPAddressAssignTable(BaseTable):
|
class IPAddressAssignTable(BaseTable):
|
||||||
address = tables.TemplateColumn(IPADDRESS_ASSIGN_LINK, verbose_name='IP Address')
|
address = tables.TemplateColumn(
|
||||||
status = tables.TemplateColumn(STATUS_LABEL)
|
template_code=IPADDRESS_ASSIGN_LINK,
|
||||||
parent = tables.TemplateColumn(IPADDRESS_PARENT, orderable=False)
|
verbose_name='IP Address'
|
||||||
interface = tables.Column(orderable=False)
|
)
|
||||||
|
status = tables.TemplateColumn(
|
||||||
|
template_code=STATUS_LABEL
|
||||||
|
)
|
||||||
|
parent = tables.TemplateColumn(
|
||||||
|
template_code=IPADDRESS_PARENT,
|
||||||
|
orderable=False
|
||||||
|
)
|
||||||
|
interface = tables.Column(
|
||||||
|
orderable=False
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = IPAddress
|
model = IPAddress
|
||||||
@ -385,10 +483,19 @@ class InterfaceIPAddressTable(BaseTable):
|
|||||||
"""
|
"""
|
||||||
List IP addresses assigned to a specific Interface.
|
List IP addresses assigned to a specific Interface.
|
||||||
"""
|
"""
|
||||||
address = tables.LinkColumn(verbose_name='IP Address')
|
address = tables.LinkColumn(
|
||||||
vrf = tables.TemplateColumn(VRF_LINK, verbose_name='VRF')
|
verbose_name='IP Address'
|
||||||
status = tables.TemplateColumn(STATUS_LABEL)
|
)
|
||||||
tenant = tables.TemplateColumn(template_code=TENANT_LINK)
|
vrf = tables.TemplateColumn(
|
||||||
|
template_code=VRF_LINK,
|
||||||
|
verbose_name='VRF'
|
||||||
|
)
|
||||||
|
status = tables.TemplateColumn(
|
||||||
|
template_code=STATUS_LABEL
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=TENANT_LINK
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = IPAddress
|
model = IPAddress
|
||||||
@ -401,16 +508,24 @@ class InterfaceIPAddressTable(BaseTable):
|
|||||||
|
|
||||||
class VLANGroupTable(BaseTable):
|
class VLANGroupTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
name = tables.LinkColumn(verbose_name='Name')
|
name = tables.LinkColumn()
|
||||||
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
|
site = tables.LinkColumn(
|
||||||
vlan_count = tables.Column(verbose_name='VLANs')
|
viewname='dcim:site',
|
||||||
slug = tables.Column(verbose_name='Slug')
|
args=[Accessor('site.slug')]
|
||||||
actions = tables.TemplateColumn(template_code=VLANGROUP_ACTIONS, attrs={'td': {'class': 'text-right noprint'}},
|
)
|
||||||
verbose_name='')
|
vlan_count = tables.Column(
|
||||||
|
verbose_name='VLANs'
|
||||||
|
)
|
||||||
|
actions = tables.TemplateColumn(
|
||||||
|
template_code=VLANGROUP_ACTIONS,
|
||||||
|
attrs={'td': {'class': 'text-right noprint'}},
|
||||||
|
verbose_name=''
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = VLANGroup
|
model = VLANGroup
|
||||||
fields = ('pk', 'name', 'site', 'vlan_count', 'slug', 'description', 'actions')
|
fields = ('pk', 'name', 'site', 'vlan_count', 'slug', 'description', 'actions')
|
||||||
|
default_columns = ('pk', 'name', 'site', 'vlan_count', 'description', 'actions')
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -419,12 +534,27 @@ class VLANGroupTable(BaseTable):
|
|||||||
|
|
||||||
class VLANTable(BaseTable):
|
class VLANTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
vid = tables.TemplateColumn(VLAN_LINK, verbose_name='ID')
|
vid = tables.TemplateColumn(
|
||||||
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')])
|
template_code=VLAN_LINK,
|
||||||
group = tables.LinkColumn('ipam:vlangroup_vlans', args=[Accessor('group.pk')], verbose_name='Group')
|
verbose_name='ID'
|
||||||
tenant = tables.TemplateColumn(template_code=COL_TENANT)
|
)
|
||||||
status = tables.TemplateColumn(STATUS_LABEL)
|
site = tables.LinkColumn(
|
||||||
role = tables.TemplateColumn(VLAN_ROLE_LINK)
|
viewname='dcim:site',
|
||||||
|
args=[Accessor('site.slug')]
|
||||||
|
)
|
||||||
|
group = tables.LinkColumn(
|
||||||
|
viewname='ipam:vlangroup_vlans',
|
||||||
|
args=[Accessor('group.pk')]
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=COL_TENANT
|
||||||
|
)
|
||||||
|
status = tables.TemplateColumn(
|
||||||
|
template_code=STATUS_LABEL
|
||||||
|
)
|
||||||
|
role = tables.TemplateColumn(
|
||||||
|
template_code=VLAN_ROLE_LINK
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = VLAN
|
model = VLAN
|
||||||
@ -435,16 +565,26 @@ class VLANTable(BaseTable):
|
|||||||
|
|
||||||
|
|
||||||
class VLANDetailTable(VLANTable):
|
class VLANDetailTable(VLANTable):
|
||||||
prefixes = tables.TemplateColumn(VLAN_PREFIXES, orderable=False, verbose_name='Prefixes')
|
prefixes = tables.TemplateColumn(
|
||||||
tenant = tables.TemplateColumn(template_code=COL_TENANT)
|
template_code=VLAN_PREFIXES,
|
||||||
|
orderable=False,
|
||||||
|
verbose_name='Prefixes'
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=COL_TENANT
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(VLANTable.Meta):
|
class Meta(VLANTable.Meta):
|
||||||
fields = ('pk', 'vid', 'site', 'group', 'name', 'prefixes', 'tenant', 'status', 'role', 'description')
|
fields = ('pk', 'vid', 'site', 'group', 'name', 'prefixes', 'tenant', 'status', 'role', 'description')
|
||||||
|
|
||||||
|
|
||||||
class VLANMemberTable(BaseTable):
|
class VLANMemberTable(BaseTable):
|
||||||
parent = tables.LinkColumn(order_by=['device', 'virtual_machine'])
|
parent = tables.LinkColumn(
|
||||||
name = tables.LinkColumn(verbose_name='Interface')
|
order_by=['device', 'virtual_machine']
|
||||||
|
)
|
||||||
|
name = tables.LinkColumn(
|
||||||
|
verbose_name='Interface'
|
||||||
|
)
|
||||||
untagged = tables.TemplateColumn(
|
untagged = tables.TemplateColumn(
|
||||||
template_code=VLAN_MEMBER_UNTAGGED,
|
template_code=VLAN_MEMBER_UNTAGGED,
|
||||||
orderable=False
|
orderable=False
|
||||||
@ -464,13 +604,29 @@ class InterfaceVLANTable(BaseTable):
|
|||||||
"""
|
"""
|
||||||
List VLANs assigned to a specific Interface.
|
List VLANs assigned to a specific Interface.
|
||||||
"""
|
"""
|
||||||
vid = tables.LinkColumn('ipam:vlan', args=[Accessor('pk')], verbose_name='ID')
|
vid = tables.LinkColumn(
|
||||||
|
viewname='ipam:vlan',
|
||||||
|
args=[Accessor('pk')],
|
||||||
|
verbose_name='ID'
|
||||||
|
)
|
||||||
tagged = BooleanColumn()
|
tagged = BooleanColumn()
|
||||||
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')])
|
site = tables.LinkColumn(
|
||||||
group = tables.Column(accessor=Accessor('group.name'), verbose_name='Group')
|
viewname='dcim:site',
|
||||||
tenant = tables.TemplateColumn(template_code=COL_TENANT)
|
args=[Accessor('site.slug')]
|
||||||
status = tables.TemplateColumn(STATUS_LABEL)
|
)
|
||||||
role = tables.TemplateColumn(VLAN_ROLE_LINK)
|
group = tables.Column(
|
||||||
|
accessor=Accessor('group.name'),
|
||||||
|
verbose_name='Group'
|
||||||
|
)
|
||||||
|
tenant = tables.TemplateColumn(
|
||||||
|
template_code=COL_TENANT
|
||||||
|
)
|
||||||
|
status = tables.TemplateColumn(
|
||||||
|
template_code=STATUS_LABEL
|
||||||
|
)
|
||||||
|
role = tables.TemplateColumn(
|
||||||
|
template_code=VLAN_ROLE_LINK
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = VLAN
|
model = VLAN
|
||||||
@ -494,4 +650,5 @@ class ServiceTable(BaseTable):
|
|||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Service
|
model = Service
|
||||||
fields = ('pk', 'name', 'parent', 'protocol', 'port', 'description')
|
fields = ('pk', 'name', 'parent', 'protocol', 'port', 'ipaddresses', 'description')
|
||||||
|
default_columns = ('pk', 'name', 'parent', 'protocol', 'port', 'description')
|
||||||
|
Reference in New Issue
Block a user