class SecretTable(BaseTable): """Table for list view of `Secret` objects.""" pk = ToggleColumn() name = tables.LinkColumn() tags = TagColumn(url_name="extras:secret_list") class Meta(BaseTable.Meta): model = Secret fields = ( "pk", "name", "provider", "description", "tags", ) default_columns = ( "pk", "name", "provider", "description", "tags", ) def render_provider(self, value): return registry["secrets_providers"][value].name if value in registry[ "secrets_providers"] else value
class DeviceTypeTable(BaseTable): pk = ToggleColumn() model = tables.Column(linkify=True, verbose_name="Device Type") is_full_depth = BooleanColumn(verbose_name="Full Depth") instance_count = LinkedCountColumn( viewname="dcim:device_list", url_params={"device_type_id": "pk"}, 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 PowerPortTable(DeviceComponentTable, PathEndpointTable): tags = TagColumn(url_name="dcim:powerport_list") class Meta(DeviceComponentTable.Meta): model = PowerPort fields = ( "pk", "device", "name", "label", "type", "description", "maximum_draw", "allocated_draw", "cable", "cable_peer", "connection", "tags", ) default_columns = ( "pk", "device", "name", "label", "type", "maximum_draw", "allocated_draw", "description", )
class InventoryItemTable(DeviceComponentTable): manufacturer = tables.Column(linkify=True) discovered = BooleanColumn() tags = TagColumn(url_name="dcim:inventoryitem_list") cable = None # Override DeviceComponentTable class Meta(DeviceComponentTable.Meta): model = InventoryItem fields = ( "pk", "device", "name", "label", "manufacturer", "part_id", "serial", "asset_tag", "description", "discovered", "tags", ) default_columns = ( "pk", "device", "name", "label", "manufacturer", "part_id", "serial", "asset_tag", )
class DeviceBayTable(DeviceComponentTable): status = tables.TemplateColumn(template_code=DEVICEBAY_STATUS) installed_device = tables.Column(linkify=True) tags = TagColumn(url_name="dcim:devicebay_list") class Meta(DeviceComponentTable.Meta): model = DeviceBay fields = ( "pk", "device", "name", "label", "status", "installed_device", "description", "tags", ) default_columns = ( "pk", "device", "name", "label", "status", "installed_device", "description", )
class AggregateDetailTable(AggregateTable): child_count = tables.Column(verbose_name="Prefixes") utilization = tables.TemplateColumn(template_code=UTILIZATION_GRAPH, orderable=False) tags = TagColumn(url_name="ipam:aggregate_list") class Meta(AggregateTable.Meta): fields = ( "pk", "prefix", "rir", "tenant", "child_count", "utilization", "date_added", "description", "tags", ) default_columns = ( "pk", "prefix", "rir", "tenant", "child_count", "utilization", "date_added", "description", )
class RackReservationTable(BaseTable): pk = ToggleColumn() reservation = tables.Column(accessor="pk", linkify=True) site = tables.Column(accessor=Accessor("rack__site"), linkify=True) tenant = TenantColumn() rack = tables.Column(linkify=True) unit_list = tables.Column(orderable=False, verbose_name="Units") tags = TagColumn(url_name="dcim:rackreservation_list") actions = ButtonsColumn(RackReservation) class Meta(BaseTable.Meta): model = RackReservation fields = ( "pk", "reservation", "site", "rack", "unit_list", "user", "created", "tenant", "description", "tags", "actions", ) default_columns = ( "pk", "reservation", "site", "rack", "unit_list", "user", "description", "actions", )
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 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 PrefixDetailTable(PrefixTable): utilization = tables.TemplateColumn(template_code=UTILIZATION_GRAPH, orderable=False) tenant = tables.TemplateColumn(template_code=COL_TENANT) tags = TagColumn(url_name="ipam:prefix_list") class Meta(PrefixTable.Meta): fields = ( "pk", "prefix", "status", "children", "vrf", "utilization", "tenant", "site", "vlan", "role", "is_pool", "description", "tags", ) default_columns = ( "pk", "prefix", "status", "children", "vrf", "utilization", "tenant", "site", "vlan", "role", "description", )
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 VLANDetailTable(VLANTable): prefixes = tables.TemplateColumn(template_code=VLAN_PREFIXES, orderable=False, verbose_name="Prefixes") tenant = tables.TemplateColumn(template_code=COL_TENANT) tags = TagColumn(url_name="ipam:vlan_list") class Meta(VLANTable.Meta): fields = ( "pk", "vid", "site", "group", "name", "prefixes", "tenant", "status", "role", "description", "tags", ) default_columns = ( "pk", "vid", "site", "group", "name", "prefixes", "tenant", "status", "role", "description", )
class FrontPortTable(DeviceComponentTable, CableTerminationTable): rear_port_position = tables.Column(verbose_name="Position") rear_port = tables.Column(linkify=True) tags = TagColumn(url_name="dcim:frontport_list") class Meta(DeviceComponentTable.Meta): model = FrontPort fields = ( "pk", "device", "name", "label", "type", "rear_port", "rear_port_position", "description", "cable", "cable_peer", "tags", ) default_columns = ( "pk", "device", "name", "label", "type", "rear_port", "rear_port_position", "description", )
class PowerOutletTable(DeviceComponentTable, PathEndpointTable): power_port = tables.Column(linkify=True) tags = TagColumn(url_name="dcim:poweroutlet_list") class Meta(DeviceComponentTable.Meta): model = PowerOutlet fields = ( "pk", "device", "name", "label", "type", "description", "power_port", "feed_leg", "cable", "cable_peer", "connection", "tags", ) default_columns = ( "pk", "device", "name", "label", "type", "power_port", "feed_leg", "description", )
class DeviceTable(StatusTableMixin, BaseTable): pk = ToggleColumn() name = tables.TemplateColumn(order_by=("_name",), template_code=DEVICE_LINK) tenant = tables.TemplateColumn(template_code=COL_TENANT) site = tables.Column(linkify=True) rack = tables.Column(linkify=True) device_role = ColoredLabelColumn(verbose_name="Role") device_type = tables.LinkColumn( viewname="dcim:devicetype", args=[Accessor("device_type__pk")], verbose_name="Type", text=lambda record: record.device_type.display_name, ) primary_ip = tables.Column(linkify=True, order_by=("primary_ip6", "primary_ip4"), verbose_name="IP Address") primary_ip4 = tables.Column(linkify=True, verbose_name="IPv4 Address") primary_ip6 = tables.Column(linkify=True, verbose_name="IPv6 Address") cluster = tables.LinkColumn(viewname="virtualization:cluster", args=[Accessor("cluster__pk")]) virtual_chassis = tables.LinkColumn(viewname="dcim:virtualchassis", args=[Accessor("virtual_chassis__pk")]) vc_position = tables.Column(verbose_name="VC Position") vc_priority = tables.Column(verbose_name="VC Priority") tags = TagColumn(url_name="dcim:device_list") class Meta(BaseTable.Meta): model = Device fields = ( "pk", "name", "status", "tenant", "device_role", "device_type", "platform", "serial", "asset_tag", "site", "rack", "position", "face", "primary_ip", "primary_ip4", "primary_ip6", "cluster", "virtual_chassis", "vc_position", "vc_priority", "tags", ) default_columns = ( "pk", "name", "status", "tenant", "site", "rack", "device_role", "device_type", "primary_ip", )
class TenantTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() tags = TagColumn(url_name="tenancy:tenant_list") class Meta(BaseTable.Meta): model = Tenant fields = ("pk", "name", "slug", "group", "description", "tags") default_columns = ("pk", "name", "group", "description")
class CableTable(StatusTableMixin, BaseTable): pk = ToggleColumn() id = tables.Column(linkify=True, verbose_name="ID") termination_a_parent = tables.TemplateColumn( template_code=CABLE_TERMINATION_PARENT, accessor=Accessor("termination_a"), orderable=False, verbose_name="Side A", ) termination_a = tables.LinkColumn( accessor=Accessor("termination_a"), orderable=False, verbose_name="Termination A", ) termination_b_parent = tables.TemplateColumn( template_code=CABLE_TERMINATION_PARENT, accessor=Accessor("termination_b"), orderable=False, verbose_name="Side B", ) termination_b = tables.LinkColumn( accessor=Accessor("termination_b"), orderable=False, verbose_name="Termination B", ) length = tables.TemplateColumn(template_code=CABLE_LENGTH, order_by="_abs_length") color = ColorColumn() tags = TagColumn(url_name="dcim:cable_list") class Meta(BaseTable.Meta): model = Cable fields = ( "pk", "id", "label", "termination_a_parent", "termination_a", "termination_b_parent", "termination_b", "status", "type", "color", "length", "tags", ) default_columns = ( "pk", "id", "label", "termination_a_parent", "termination_a", "termination_b_parent", "termination_b", "status", "type", )
class RouteTargetTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() tenant = tables.TemplateColumn(template_code=COL_TENANT) tags = TagColumn(url_name="ipam:vrf_list") class Meta(BaseTable.Meta): model = RouteTarget fields = ("pk", "name", "tenant", "description", "tags") default_columns = ("pk", "name", "tenant", "description")
class ProviderNetworkTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) provider = tables.Column(linkify=True) tags = TagColumn(url_name="circuits:providernetwork_list") class Meta(BaseTable.Meta): model = ProviderNetwork fields = ("pk", "name", "provider", "description", "tags") default_columns = ("pk", "name", "provider", "description")
class VirtualChassisTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) master = tables.Column(linkify=True) member_count = LinkedCountColumn( viewname="dcim:device_list", url_params={"virtual_chassis_id": "pk"}, verbose_name="Members", ) tags = TagColumn(url_name="dcim:virtualchassis_list") class Meta(BaseTable.Meta): model = VirtualChassis fields = ("pk", "name", "domain", "master", "member_count", "tags") default_columns = ("pk", "name", "domain", "master", "member_count")
class CircuitTable(StatusTableMixin, BaseTable): pk = ToggleColumn() cid = tables.LinkColumn(verbose_name="ID") provider = tables.LinkColumn(viewname="circuits:provider", args=[Accessor("provider__slug")]) tenant = TenantColumn() tags = TagColumn(url_name="circuits:circuit_list") termination_a = tables.TemplateColumn( template_code=CIRCUIT_TERMINATION_PARENT, accessor=Accessor("termination_a"), orderable=False, verbose_name="Side A", ) termination_z = tables.TemplateColumn( template_code=CIRCUIT_TERMINATION_PARENT, accessor=Accessor("termination_z"), orderable=False, verbose_name="Side Z", ) class Meta(BaseTable.Meta): model = Circuit fields = ( "pk", "cid", "provider", "type", "status", "tenant", "termination_a", "termination_z", "install_date", "commit_rate", "description", "tags", ) default_columns = ( "pk", "cid", "provider", "type", "status", "tenant", "termination_a", "termination_z", "description", )
class RackDetailTable(RackTable): device_count = LinkedCountColumn( viewname="dcim:device_list", url_params={"rack_id": "pk"}, verbose_name="Devices", ) get_utilization = tables.TemplateColumn(template_code=UTILIZATION_GRAPH, orderable=False, verbose_name="Space") get_power_utilization = tables.TemplateColumn( template_code=UTILIZATION_GRAPH, orderable=False, verbose_name="Power") tags = TagColumn(url_name="dcim:rack_list") class Meta(RackTable.Meta): fields = ( "pk", "name", "site", "group", "status", "facility_id", "tenant", "role", "serial", "asset_tag", "type", "width", "u_height", "device_count", "get_utilization", "get_power_utilization", "tags", ) default_columns = ( "pk", "name", "site", "group", "status", "facility_id", "tenant", "role", "u_height", "device_count", "get_utilization", "get_power_utilization", )
class ConsoleServerPortTable(DeviceComponentTable, PathEndpointTable): tags = TagColumn(url_name="dcim:consoleserverport_list") class Meta(DeviceComponentTable.Meta): model = ConsoleServerPort fields = ( "pk", "device", "name", "label", "type", "description", "cable", "cable_peer", "connection", "tags", ) default_columns = ("pk", "device", "name", "label", "type", "description")
class RearPortTable(DeviceComponentTable, CableTerminationTable): tags = TagColumn(url_name="dcim:rearport_list") class Meta(DeviceComponentTable.Meta): model = RearPort fields = ( "pk", "device", "name", "label", "type", "positions", "description", "cable", "cable_peer", "tags", ) default_columns = ("pk", "device", "name", "label", "type", "description")
class PowerPanelTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() site = tables.LinkColumn(viewname="dcim:site", args=[Accessor("site__slug")]) powerfeed_count = LinkedCountColumn( viewname="dcim:powerfeed_list", url_params={"power_panel_id": "pk"}, verbose_name="Feeds", ) tags = TagColumn(url_name="dcim:powerpanel_list") class Meta(BaseTable.Meta): model = PowerPanel fields = ("pk", "name", "site", "rack_group", "powerfeed_count", "tags") default_columns = ("pk", "name", "site", "rack_group", "powerfeed_count")
class PowerFeedTable(StatusTableMixin, CableTerminationTable): pk = ToggleColumn() name = tables.LinkColumn() power_panel = tables.Column(linkify=True) rack = tables.Column(linkify=True) type = ChoiceFieldColumn() max_utilization = tables.TemplateColumn(template_code="{{ value }}%") available_power = tables.Column(verbose_name="Available power (VA)") tags = TagColumn(url_name="dcim:powerfeed_list") class Meta(BaseTable.Meta): model = PowerFeed fields = ( "pk", "name", "power_panel", "rack", "status", "type", "supply", "voltage", "amperage", "phase", "max_utilization", "cable", "cable_peer", "connection", "available_power", "tags", ) default_columns = ( "pk", "name", "power_panel", "rack", "status", "type", "supply", "voltage", "amperage", "phase", "cable", "cable_peer", )
class ClusterTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() tenant = tables.Column(linkify=True) site = tables.Column(linkify=True) type = tables.Column(linkify=True) group = tables.Column(linkify=True) device_count = LinkedCountColumn( viewname="dcim:device_list", url_params={"cluster_id": "pk"}, verbose_name="Devices", ) vm_count = LinkedCountColumn( viewname="virtualization:virtualmachine_list", url_params={"cluster_id": "pk"}, verbose_name="VMs", ) tags = TagColumn(url_name="virtualization:cluster_list") class Meta(BaseTable.Meta): model = Cluster fields = ( "pk", "name", "type", "group", "tenant", "site", "device_count", "vm_count", "tags", ) default_columns = ( "pk", "name", "type", "group", "tenant", "site", "device_count", "vm_count", )
class ProviderTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() circuit_count = tables.Column(accessor=Accessor("count_circuits"), verbose_name="Circuits") tags = TagColumn(url_name="circuits:provider_list") class Meta(BaseTable.Meta): model = Provider fields = ( "pk", "name", "asn", "account", "portal_url", "noc_contact", "admin_contact", "circuit_count", "tags", ) default_columns = ("pk", "name", "asn", "account", "circuit_count")
class ServiceTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) parent = tables.LinkColumn(order_by=("device", "virtual_machine")) ports = tables.TemplateColumn(template_code="{{ record.port_list }}", verbose_name="Ports") tags = TagColumn(url_name="ipam:service_list") class Meta(BaseTable.Meta): model = Service fields = ( "pk", "name", "parent", "protocol", "ports", "ipaddresses", "description", "tags", ) default_columns = ("pk", "name", "parent", "protocol", "ports", "description")
class SiteTable(StatusTableMixin, BaseTable): pk = ToggleColumn() name = tables.LinkColumn(order_by=("_name", )) region = tables.Column(linkify=True) tenant = TenantColumn() tags = TagColumn(url_name="dcim:site_list") class Meta(BaseTable.Meta): model = Site fields = ( "pk", "name", "slug", "status", "facility", "region", "tenant", "asn", "time_zone", "description", "physical_address", "shipping_address", "latitude", "longitude", "contact_name", "contact_phone", "contact_email", "tags", ) default_columns = ( "pk", "name", "status", "facility", "region", "tenant", "asn", "description", )