class DeviceTypeTable(BaseTable): pk = ToggleColumn() model = tables.LinkColumn(viewname='dcim:devicetype', args=[Accessor('pk')], verbose_name='Device Type') is_full_depth = BooleanColumn(verbose_name='Full Depth') is_console_server = BooleanColumn(verbose_name='CS') is_pdu = BooleanColumn(verbose_name='PDU') is_network_device = BooleanColumn(verbose_name='Net') subdevice_role = tables.TemplateColumn( template_code=SUBDEVICE_ROLE_TEMPLATE, verbose_name='Subdevice Role') instance_count = tables.TemplateColumn( template_code=DEVICETYPE_INSTANCES_TEMPLATE, verbose_name='Instances') class Meta(BaseTable.Meta): model = DeviceType fields = ( 'pk', 'model', 'manufacturer', 'part_number', 'u_height', 'is_full_depth', 'is_console_server', 'is_pdu', 'is_network_device', 'subdevice_role', 'instance_count', )
class WebhookTable(BaseTable): pk = ToggleColumn() name = tables.Column( linkify=True ) content_types = ContentTypesColumn() enabled = BooleanColumn() type_create = BooleanColumn( verbose_name='Create' ) type_update = BooleanColumn( verbose_name='Update' ) type_delete = BooleanColumn( verbose_name='Delete' ) ssl_validation = BooleanColumn( verbose_name='SSL Validation' ) class Meta(BaseTable.Meta): model = Webhook fields = ( 'pk', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'http_method', 'payload_url', 'secret', 'ssl_validation', 'ca_file_path', ) default_columns = ( 'pk', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'http_method', 'payload_url', )
class PrefixTable(BaseTable): pk = ToggleColumn() prefix = tables.TemplateColumn(template_code=PREFIX_LINK, attrs={'td': { 'class': 'text-nowrap' }}) prefix_flat = tables.Column(accessor=Accessor('prefix'), linkify=True, verbose_name='Prefix (Flat)') depth = tables.Column(accessor=Accessor('_depth'), verbose_name='Depth') children = LinkedCountColumn(accessor=Accessor('_children'), viewname='ipam:prefix_list', url_params={ 'vrf_id': 'vrf_id', 'within': 'prefix', }, verbose_name='Children') status = ChoiceFieldColumn(default=AVAILABLE_LABEL) vrf = tables.TemplateColumn(template_code=VRF_LINK, verbose_name='VRF') tenant = TenantColumn() site = tables.Column(linkify=True) vlan = tables.Column(linkify=True, verbose_name='VLAN') role = tables.TemplateColumn(template_code=PREFIX_ROLE_LINK) is_pool = BooleanColumn(verbose_name='Pool') mark_utilized = BooleanColumn(verbose_name='Marked Utilized') class Meta(BaseTable.Meta): model = Prefix fields = ( 'pk', 'prefix', 'prefix_flat', 'status', 'depth', 'children', 'vrf', 'tenant', 'site', 'vlan', 'role', 'is_pool', 'mark_utilized', 'description', ) default_columns = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'vlan', 'role', 'description') row_attrs = { 'class': lambda record: 'success' if not record.pk else '', }
class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable): device = tables.Column( linkify={ 'viewname': 'dcim:device_interfaces', 'args': [Accessor('device_id')], } ) mgmt_only = BooleanColumn() wireless_link = tables.Column( linkify=True ) wireless_lans = TemplateColumn( template_code=INTERFACE_WIRELESS_LANS, orderable=False, verbose_name='Wireless LANs' ) tags = TagColumn( url_name='dcim:interface_list' ) class Meta(DeviceComponentTable.Meta): model = Interface fields = ( 'pk', 'id', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', 'wireless_lans', 'link_peer', 'connection', 'tags', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description')
class VRFTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() rd = tables.Column(verbose_name='RD') tenant = tables.TemplateColumn(template_code=COL_TENANT) enforce_unique = BooleanColumn(verbose_name='Unique') import_targets = tables.TemplateColumn(template_code=VRF_TARGETS, orderable=False) export_targets = tables.TemplateColumn(template_code=VRF_TARGETS, orderable=False) tags = TagColumn(url_name='ipam:vrf_list') class Meta(BaseTable.Meta): model = VRF fields = ( 'pk', 'name', 'rd', 'tenant', 'enforce_unique', 'description', 'import_targets', 'export_targets', 'tags', ) default_columns = ('pk', 'name', 'rd', 'tenant', 'description')
class InventoryItemTable(DeviceComponentTable): device = tables.Column(linkify={ 'viewname': 'dcim:device_inventory', 'args': [Accessor('device_id')], }) manufacturer = tables.Column(linkify=True) discovered = BooleanColumn() tags = TagColumn(url_name='dcim:inventoryitem_list') cable = None # Override DeviceComponentTable class Meta(BaseTable.Meta): model = InventoryItem fields = ( 'pk', 'name', 'device', 'label', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description', 'discovered', 'tags', ) default_columns = ('pk', 'name', 'device', 'label', 'manufacturer', 'part_id', 'serial', 'asset_tag')
class RIRTable(BaseTable): pk = ToggleColumn() name = tables.Column( linkify=True ) is_private = BooleanColumn( verbose_name='Private' ) aggregate_count = LinkedCountColumn( viewname='ipam:aggregate_list', url_params={'rir_id': 'pk'}, verbose_name='Aggregates' ) tags = TagColumn( url_name='ipam:rir_list' ) actions = ButtonsColumn(RIR) class Meta(BaseTable.Meta): model = RIR fields = ( 'pk', 'id', 'name', 'slug', 'is_private', 'aggregate_count', 'description', 'tags', 'actions', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions')
class PrefixTable(BaseTable): pk = ToggleColumn() prefix = tables.TemplateColumn( template_code=PREFIX_LINK, attrs={'th': { 'style': 'padding-left: 17px' }}) status = tables.TemplateColumn(template_code=STATUS_LABEL) 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): model = Prefix 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 = { 'class': lambda record: 'success' if not record.pk else '', }
class DeviceTypeTable(BaseTable): pk = ToggleColumn() model = tables.Column(linkify=True, verbose_name='Device Type') is_full_depth = BooleanColumn(verbose_name='Full Depth') instance_count = tables.TemplateColumn( template_code=DEVICETYPE_INSTANCES_TEMPLATE, verbose_name='Instances') tags = TagColumn(url_name='dcim:devicetype_list') class Meta(BaseTable.Meta): model = DeviceType fields = ( 'pk', 'model', 'manufacturer', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'instance_count', 'tags', ) default_columns = ( 'pk', 'model', 'manufacturer', 'part_number', 'u_height', 'is_full_depth', 'instance_count', )
class InterfaceVLANTable(BaseTable): """ List VLANs assigned to a specific Interface. """ vid = tables.LinkColumn( viewname='ipam:vlan', args=[Accessor('pk')], verbose_name='ID' ) tagged = BooleanColumn() site = tables.Column( linkify=True ) 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): model = VLAN fields = ('vid', 'tagged', 'site', 'group', 'name', 'tenant', 'status', 'role', 'description') def __init__(self, interface, *args, **kwargs): self.interface = interface super().__init__(*args, **kwargs)
class DeviceTypeTable(BaseTable): pk = ToggleColumn() model = tables.Column( linkify=True, verbose_name='Device Type' ) manufacturer = tables.Column( linkify=True ) is_full_depth = BooleanColumn( verbose_name='Full Depth' ) instance_count = LinkedCountColumn( viewname='dcim:device_list', url_params={'device_type_id': 'pk'}, verbose_name='Instances' ) comments = MarkdownColumn() tags = TagColumn( url_name='dcim:devicetype_list' ) class Meta(BaseTable.Meta): model = DeviceType fields = ( 'pk', 'id', 'model', 'manufacturer', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'comments', 'instance_count', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'model', 'manufacturer', 'part_number', 'u_height', 'is_full_depth', 'instance_count', )
class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable): mgmt_only = BooleanColumn() tags = TagColumn(url_name='dcim:interface_list') class Meta(DeviceComponentTable.Meta): model = Interface fields = ( 'pk', 'device', 'name', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'description', 'cable', 'cable_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'device', 'name', 'label', 'enabled', 'type', 'description')
class CustomFieldTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) content_types = ContentTypesColumn() required = BooleanColumn() class Meta(BaseTable.Meta): model = CustomField fields = ( 'pk', 'id', 'name', 'content_types', 'label', 'type', 'required', 'weight', 'default', 'description', 'filter_logic', 'choices', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'content_types', 'label', 'type', 'required', 'description')
class ExportTemplateTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) content_type = ContentTypeColumn() as_attachment = BooleanColumn() class Meta(BaseTable.Meta): model = ExportTemplate fields = ( 'pk', 'id', 'name', 'content_type', 'description', 'mime_type', 'file_extension', 'as_attachment', 'created', 'last_updated', ) default_columns = ( 'pk', 'name', 'content_type', 'description', 'mime_type', 'file_extension', 'as_attachment', )
class ConfigContextTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) is_active = BooleanColumn(verbose_name='Active') class Meta(BaseTable.Meta): model = ConfigContext fields = ( 'pk', 'id', 'name', 'weight', 'is_active', 'description', 'regions', 'sites', 'roles', 'platforms', 'cluster_groups', 'clusters', 'tenant_groups', 'tenants', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'weight', 'is_active', 'description')
class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable): device = tables.Column(linkify={ 'viewname': 'dcim:device_interfaces', 'args': [Accessor('device_id')], }) mgmt_only = BooleanColumn() tags = TagColumn(url_name='dcim:interface_list') class Meta(DeviceComponentTable.Meta): model = Interface fields = ( 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'description', 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description')
class DeviceRoleTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) device_count = LinkedCountColumn(viewname='dcim:device_list', url_params={'role_id': 'pk'}, verbose_name='Devices') vm_count = LinkedCountColumn(viewname='virtualization:virtualmachine_list', url_params={'role_id': 'pk'}, verbose_name='VMs') color = ColorColumn() vm_role = BooleanColumn() tags = TagColumn(url_name='dcim:devicerole_list') actions = ButtonsColumn(DeviceRole) class Meta(BaseTable.Meta): model = DeviceRole fields = ( 'pk', 'id', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'slug', 'tags', 'actions', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'actions')
class IPAddressDetailTable(IPAddressTable): nat_inside = tables.Column(linkify=True, orderable=False, verbose_name='NAT (Inside)') tenant = tables.TemplateColumn(template_code=COL_TENANT) assigned = BooleanColumn(accessor='assigned_object_id', verbose_name='Assigned') tags = TagColumn(url_name='ipam:ipaddress_list') class Meta(IPAddressTable.Meta): fields = ( 'pk', 'address', 'vrf', 'status', 'role', 'tenant', 'nat_inside', 'assigned', 'dns_name', 'description', 'tags', ) default_columns = ( 'pk', 'address', 'vrf', 'status', 'role', 'tenant', 'assigned', 'dns_name', 'description', )
class PrefixTable(BaseTable): pk = ToggleColumn() prefix = tables.TemplateColumn(template_code=PREFIX_LINK, attrs={'td': { 'class': 'text-nowrap' }}) status = ChoiceFieldColumn(default=AVAILABLE_LABEL) vrf = tables.TemplateColumn(template_code=VRF_LINK, verbose_name='VRF') tenant = tables.TemplateColumn(template_code=TENANT_LINK) site = tables.Column(linkify=True) vlan = tables.Column(linkify=True, verbose_name='VLAN') role = tables.TemplateColumn(template_code=PREFIX_ROLE_LINK) is_pool = BooleanColumn(verbose_name='Pool') class Meta(BaseTable.Meta): model = Prefix fields = ( 'pk', 'prefix', 'status', 'children', 'vrf', 'tenant', 'site', 'vlan', 'role', 'is_pool', 'description', ) default_columns = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'vlan', 'role', 'description') row_attrs = { 'class': lambda record: 'success' if not record.pk else '', }
class InterfaceVLANTable(BaseTable): """ List VLANs assigned to a specific Interface. """ vid = tables.Column( linkify=True, verbose_name='ID' ) tagged = BooleanColumn() site = tables.Column( linkify=True ) group = tables.Column( accessor=Accessor('group__name'), verbose_name='Group' ) tenant = TenantColumn() status = ChoiceFieldColumn() role = tables.Column( linkify=True ) class Meta(BaseTable.Meta): model = VLAN fields = ('vid', 'tagged', 'site', 'group', 'name', 'tenant', 'status', 'role', 'description') exclude = ('id', ) def __init__(self, interface, *args, **kwargs): self.interface = interface super().__init__(*args, **kwargs)
class ConfigContextTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() is_active = BooleanColumn(verbose_name='Active') class Meta(BaseTable.Meta): model = ConfigContext fields = ('pk', 'name', 'weight', 'is_active', 'description')
class IPAddressTable(BaseTable): pk = ToggleColumn() address = tables.TemplateColumn(template_code=IPADDRESS_LINK, verbose_name='IP Address') vrf = tables.TemplateColumn(template_code=VRF_LINK, verbose_name='VRF') status = ChoiceFieldColumn(default=AVAILABLE_LABEL) role = ChoiceFieldColumn() tenant = TenantColumn() assigned_object = tables.Column(linkify=True, orderable=False, verbose_name='Interface') assigned_object_parent = tables.Column( accessor='assigned_object.parent_object', linkify=True, orderable=False, verbose_name='Device/VM') nat_inside = tables.Column(linkify=True, orderable=False, verbose_name='NAT (Inside)') assigned = BooleanColumn(accessor='assigned_object_id', linkify=True, verbose_name='Assigned') tags = TagColumn(url_name='ipam:ipaddress_list') class Meta(BaseTable.Meta): model = IPAddress fields = ( 'pk', 'id', 'address', 'vrf', 'status', 'role', 'tenant', 'nat_inside', 'assigned', 'dns_name', 'description', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'address', 'vrf', 'status', 'role', 'tenant', 'assigned', 'dns_name', 'description', ) row_attrs = { 'class': lambda record: 'success' if not isinstance(record, IPAddress) else '', }
class InterfaceDetailTable(DeviceComponentDetailTable): parent = tables.LinkColumn(order_by=('device', 'virtual_machine')) name = tables.LinkColumn() enabled = BooleanColumn() class Meta(InterfaceTable.Meta): order_by = ('parent', 'name') fields = ('pk', 'parent', 'name', 'enabled', 'type', 'description', 'cable') sequence = ('pk', 'parent', 'name', 'enabled', 'type', 'description', 'cable')
class DeviceComponentTable(BaseTable): pk = ToggleColumn() device = tables.Column(linkify=True) name = tables.Column(linkify=True, order_by=('_name', )) cable = tables.Column(linkify=True) mark_connected = BooleanColumn() class Meta(BaseTable.Meta): order_by = ('device', 'name')
class BaseInterfaceTable(BaseTable): enabled = BooleanColumn() ip_addresses = tables.TemplateColumn(template_code=INTERFACE_IPADDRESSES, orderable=False, verbose_name='IP Addresses') untagged_vlan = tables.Column(linkify=True) tagged_vlans = tables.TemplateColumn(template_code=INTERFACE_TAGGED_VLANS, orderable=False, verbose_name='Tagged VLANs')
class CableTerminationTable(BaseTable): cable = tables.Column(linkify=True) cable_color = ColorColumn(accessor='cable.color', orderable=False, verbose_name='Cable Color') cable_peer = tables.TemplateColumn(accessor='_cable_peer', template_code=CABLETERMINATION, orderable=False, verbose_name='Cable Peer') mark_connected = BooleanColumn()
class RIRTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn(verbose_name='Name') is_private = BooleanColumn(verbose_name='Private') 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): model = RIR fields = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions')
class InterfaceTemplateTable(ComponentTemplateTable): mgmt_only = BooleanColumn(verbose_name='Management Only') actions = ButtonsColumn(model=InterfaceTemplate, buttons=('edit', 'delete')) class Meta(BaseTable.Meta): model = InterfaceTemplate fields = ('pk', 'name', 'label', 'mgmt_only', 'type', 'description', 'actions') empty_text = "None"
class SettingsTable(BaseTable): pk = ToggleColumn() hostname = tables.LinkColumn("plugins:ciscodnacnetbox:settings_edit", args=[A("pk")]) username = tables.Column() password = MaskedPassword() version = tables.Column() verify = BooleanColumn() status = BooleanColumn() class Meta(BaseTable.Meta): model = Settings fields = [ "pk", "hostname", "username", "password", "version", "verify", "status", ]
class DiscoveryRequestTable(BaseTable): prefix = tables.LinkColumn() update_existing = BooleanColumn() status = tables.TemplateColumn(template_code=STATUS_LABEL, verbose_name='Status') class Meta(BaseTable.Meta): model = DiscoveryRequest fields = [ 'prefix', 'created', 'update_existing', 'platform', 'status', 'site', 'device_role' ]