class RIRTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn(verbose_name='Name') is_private = tables.BooleanColumn(verbose_name='Private') aggregate_count = tables.Column(verbose_name='Aggregates') stats_total = tables.Column(accessor='stats.total', verbose_name='Total', footer=lambda table: sum(r.stats['total'] for r in table.data)) stats_active = tables.Column(accessor='stats.active', verbose_name='Active', footer=lambda table: sum(r.stats['active'] for r in table.data)) stats_reserved = tables.Column( accessor='stats.reserved', verbose_name='Reserved', footer=lambda table: sum(r.stats['reserved'] for r in table.data)) stats_deprecated = tables.Column( accessor='stats.deprecated', verbose_name='Deprecated', footer=lambda table: sum(r.stats['deprecated'] for r in table.data)) stats_available = tables.Column( accessor='stats.available', verbose_name='Available', footer=lambda table: sum(r.stats['available'] for r in table.data)) utilization = tables.TemplateColumn(template_code=RIR_UTILIZATION, verbose_name='Utilization') actions = tables.TemplateColumn(template_code=RIR_ACTIONS, attrs={'td': { 'class': 'text-right' }}, verbose_name='') class Meta(BaseTable.Meta): model = RIR fields = ('pk', 'name', 'is_private', 'aggregate_count', 'stats_total', 'stats_active', 'stats_reserved', 'stats_deprecated', 'stats_available', 'utilization', 'actions')
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 = tables.TemplateColumn( template_code=TENANT_LINK ) assigned_object = tables.Column( linkify=True, orderable=False, verbose_name='Interface' ) assigned_object_parent = tables.Column( accessor='assigned_object__parent', linkify=True, orderable=False, verbose_name='Interface Parent' ) class Meta(BaseTable.Meta): model = IPAddress fields = ( 'pk', 'address', 'vrf', 'status', 'role', 'tenant', 'assigned_object', 'assigned_object_parent', 'dns_name', 'description', ) row_attrs = { 'class': lambda record: 'success' if not isinstance(record, IPAddress) 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 = 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 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', 'id', '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 ServiceTable(BaseTable): pk = ToggleColumn() clickable = { 'td': { 'onclick': lambda record: "window.location='{0}'".format( reverse('plugins:netbox_netisp:account_selected', kwargs={ 'pk': record.account.pk, 'service_id': record.pk })) } } speed = tables.Column(verbose_name="Speed", accessor=A('billing_package__download_speed'), linkify=False, attrs=clickable) mrc = tables.Column(verbose_name="MRC", accessor=A('billing_package__price'), linkify=False, attrs=clickable) billing_package = tables.Column(attrs=clickable) address = tables.Column(attrs=clickable) def render_speed(self, value, record): return "↓ {0}mbps / ↑ {1}mbps ".format( value, record.billing_package.upload_speed) def render_mrc(self, value): return "${0}/month".format(value) class Meta(BaseTable.Meta): model = Service fields = ("pk", "billing_package", "address", "mrc", "speed")
class CustomFieldTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) content_types = ContentTypesColumn() required = BooleanColumn() class Meta(BaseTable.Meta): model = CustomField fields = ( 'pk', 'name', 'content_types', 'label', 'type', 'required', 'weight', 'default', 'description', 'filter_logic', 'choices', ) default_columns = ('pk', 'name', 'content_types', 'label', 'type', 'required', 'description')
class VMInterfaceTable(BaseInterfaceTable): pk = ToggleColumn() virtual_machine = tables.LinkColumn() name = tables.Column(linkify=True) tags = TagColumn(url_name='virtualization:vminterface_list') class Meta(BaseTable.Meta): model = VMInterface fields = ( 'pk', 'virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'virtual_machine', 'name', 'enabled', 'description')
class PlatformTable(BaseTable): pk = ToggleColumn() device_count = LinkedCountColumn( viewname='dcim:device_list', url_params={'platform': 'slug'}, verbose_name='Devices' ) vm_count = LinkedCountColumn( viewname='virtualization:virtualmachine_list', url_params={'platform': 'slug'}, verbose_name='VMs' ) actions = ButtonsColumn(Platform, pk_field='slug') class Meta(BaseTable.Meta): model = Platform fields = ( 'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'napalm_args', 'description', 'actions', ) default_columns = ( 'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'napalm_driver', 'description', 'actions', )
class VLANTable(BaseTable): pk = ToggleColumn() vid = tables.TemplateColumn(template_code=VLAN_LINK, verbose_name='ID') site = tables.Column(linkify=True) group = tables.Column(linkify=True) tenant = TenantColumn() status = ChoiceFieldColumn(default=AVAILABLE_LABEL) role = tables.Column(linkify=True) prefixes = TemplateColumn(template_code=VLAN_PREFIXES, orderable=False, verbose_name='Prefixes') tags = TagColumn(url_name='ipam:vlan_list') class Meta(BaseTable.Meta): model = VLAN fields = ('pk', 'vid', 'name', 'site', 'group', 'prefixes', 'tenant', 'status', 'role', 'description', 'tags') default_columns = ('pk', 'vid', 'name', 'site', 'group', 'prefixes', 'tenant', 'status', 'role', 'description') row_attrs = { 'class': lambda record: 'success' if not isinstance(record, VLAN) else '', }
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() actions = ButtonsColumn(DeviceRole) class Meta(BaseTable.Meta): model = DeviceRole fields = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'slug', 'actions') default_columns = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'actions')
class ProviderTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) circuit_count = tables.Column(accessor=Accessor('count_circuits'), verbose_name='Circuits') comments = MarkdownColumn() 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', 'comments', 'tags', ) default_columns = ('pk', 'name', 'asn', 'account', 'circuit_count')
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', 'regions', 'sites', 'roles', 'platforms', 'cluster_groups', 'clusters', 'tenant_groups', 'tenants', ) default_columns = ('pk', 'name', 'weight', 'is_active', 'description')
class DeviceRoleTable(BaseTable): pk = ToggleColumn() device_count = tables.TemplateColumn(template_code=DEVICEROLE_DEVICE_COUNT, accessor=Accessor('devices.count'), orderable=False, verbose_name='Devices') vm_count = tables.TemplateColumn( template_code=DEVICEROLE_VM_COUNT, accessor=Accessor('virtual_machines.count'), orderable=False, verbose_name='VMs') color = tables.TemplateColumn(COLOR_LABEL, verbose_name='Label') slug = tables.Column(verbose_name='Slug') actions = tables.TemplateColumn(template_code=DEVICEROLE_ACTIONS, attrs={'td': { 'class': 'text-right' }}, verbose_name='') class Meta(BaseTable.Meta): model = DeviceRole fields = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'slug', 'actions')
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') 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', 'subdevice_role', 'instance_count', )
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', 'id', 'name', 'domain', 'master', 'member_count', 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'domain', 'master', 'member_count')
class DeviceTable(BaseTable): pk = ToggleColumn() status = tables.TemplateColumn(template_code=STATUS_ICON, verbose_name='') name = tables.TemplateColumn(template_code=DEVICE_LINK, verbose_name='Name') tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')], verbose_name='Tenant') site = tables.Column(accessor=Accessor('rack.site'), verbose_name='Site') rack = tables.LinkColumn('dcim:rack', args=[Accessor('rack.pk')], verbose_name='Rack') device_role = tables.TemplateColumn(DEVICE_ROLE, verbose_name='Role') device_type = tables.Column(verbose_name='Type') primary_ip = tables.TemplateColumn( orderable=False, verbose_name='IP Address', template_code="{{ record.primary_ip.address.ip }}") class Meta(BaseTable.Meta): model = Device fields = ('pk', 'name', 'status', 'tenant', 'site', 'rack', 'device_role', 'device_type', 'primary_ip')
class RoleTable(BaseTable): pk = ToggleColumn() prefix_count = tables.TemplateColumn( accessor=Accessor('prefixes.count'), template_code=ROLE_PREFIX_COUNT, orderable=False, verbose_name='Prefixes' ) vlan_count = tables.TemplateColumn( accessor=Accessor('vlans.count'), template_code=ROLE_VLAN_COUNT, orderable=False, verbose_name='VLANs' ) actions = tables.TemplateColumn( template_code=ROLE_ACTIONS, attrs={'td': {'class': 'text-right noprint'}}, verbose_name='' ) class Meta(BaseTable.Meta): model = Role fields = ('pk', 'name', 'prefix_count', 'vlan_count', 'description', 'slug', 'weight', 'actions')
class PlatformTable(BaseTable): pk = ToggleColumn() device_count = tables.TemplateColumn( template_code=PLATFORM_DEVICE_COUNT, accessor=Accessor('devices.count'), orderable=False, verbose_name='Devices' ) vm_count = tables.TemplateColumn( template_code=PLATFORM_VM_COUNT, accessor=Accessor('virtual_machines.count'), orderable=False, verbose_name='VMs' ) actions = tables.TemplateColumn( template_code=PLATFORM_ACTIONS, attrs={'td': {'class': 'text-right'}}, verbose_name='' ) class Meta(BaseTable.Meta): model = Platform fields = ('pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'actions')
class SupervisorTable(BaseTable): pk = ToggleColumn() sid = tables.LinkColumn( viewname='plugins:netbox_supervisor_plugin:supervisor', args=[Accessor('id')]) tenant = tables.LinkColumn(viewname='tenancy:tenant', args=[Accessor('tenant.id')]) class Meta(BaseTable.Meta): model = Supervisor fields = ( 'pk', 'sid', 'name', 'email', 'phone', 'tenant', 'tenants', 'status', 'comments', 'is_active', )
class DeviceTable(BaseTable): pk = ToggleColumn() name = tables.TemplateColumn(template_code=DEVICE_LINK) status = tables.TemplateColumn(template_code=DEVICE_STATUS, verbose_name='Status') tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')]) site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')]) rack = tables.LinkColumn('dcim:rack', args=[Accessor('rack.pk')]) device_role = tables.TemplateColumn(DEVICE_ROLE, verbose_name='Role') device_type = tables.LinkColumn( 'dcim:devicetype', args=[Accessor('device_type.pk')], verbose_name='Type', text=lambda record: record.device_type.full_name) primary_ip = tables.TemplateColumn(orderable=False, verbose_name='IP Address', template_code=DEVICE_PRIMARY_IP) class Meta(BaseTable.Meta): model = Device fields = ('pk', 'name', 'status', 'tenant', 'site', 'rack', 'device_role', 'device_type', 'primary_ip')
class SiteTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() region = tables.TemplateColumn(template_code=SITE_REGION_LINK) tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')]) rack_count = tables.Column(accessor=Accessor('count_racks'), orderable=False, verbose_name='Racks') device_count = tables.Column(accessor=Accessor('count_devices'), orderable=False, verbose_name='Devices') prefix_count = tables.Column(accessor=Accessor('count_prefixes'), orderable=False, verbose_name='Prefixes') vlan_count = tables.Column(accessor=Accessor('count_vlans'), orderable=False, verbose_name='VLANs') circuit_count = tables.Column(accessor=Accessor('count_circuits'), orderable=False, verbose_name='Circuits') class Meta(BaseTable.Meta): model = Site fields = ( 'pk', 'name', 'facility', 'region', 'tenant', 'asn', 'rack_count', 'device_count', 'prefix_count', 'vlan_count', 'circuit_count', )
class PlatformTable(BaseTable): pk = ToggleColumn() device_count = tables.TemplateColumn(template_code=DEVICE_COUNT, verbose_name='Devices') vm_count = tables.TemplateColumn(template_code=VM_COUNT, verbose_name='VMs') actions = tables.TemplateColumn( template_code=PLATFORM_ACTIONS, attrs={'td': { 'class': 'text-right noprint' }}, verbose_name='') class Meta(BaseTable.Meta): model = Platform fields = ( 'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'napalm_args', 'description', 'actions', ) default_columns = ( 'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'napalm_driver', 'description', 'actions', )
class RackReservationTable(BaseTable): pk = ToggleColumn() reservation = tables.LinkColumn( viewname='dcim:rackreservation', args=[Accessor('pk')], accessor='pk' ) site = tables.LinkColumn( viewname='dcim:site', accessor=Accessor('rack.site'), args=[Accessor('rack.site.slug')], ) tenant = tables.TemplateColumn( template_code=COL_TENANT ) rack = tables.LinkColumn( viewname='dcim:rack', args=[Accessor('rack.pk')] ) unit_list = tables.Column( orderable=False, verbose_name='Units' ) actions = tables.TemplateColumn( template_code=RACKRESERVATION_ACTIONS, attrs={'td': {'class': 'text-right noprint'}}, verbose_name='' ) class Meta(BaseTable.Meta): model = RackReservation fields = ( 'pk', 'reservation', 'site', 'rack', 'unit_list', 'user', 'created', 'tenant', 'description', 'actions', ) default_columns = ( 'pk', 'reservation', 'site', 'rack', 'unit_list', 'user', '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.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') add_prefetch = False 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 CustomLinkTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) content_type = ContentTypeColumn() new_window = BooleanColumn() class Meta(BaseTable.Meta): model = CustomLink fields = ( 'pk', 'id', 'name', 'content_type', 'link_text', 'link_url', 'weight', 'group_name', 'button_class', 'new_window', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'content_type', 'group_name', 'button_class', 'new_window')
class FHRPGroupAssignmentTable(BaseTable): pk = ToggleColumn() interface_parent = tables.Column( accessor=tables.A('interface.parent_object'), linkify=True, orderable=False, verbose_name='Parent' ) interface = tables.Column( linkify=True, orderable=False ) group = tables.Column( linkify=True ) actions = ButtonsColumn( model=FHRPGroupAssignment, buttons=('edit', 'delete') ) class Meta(BaseTable.Meta): model = FHRPGroupAssignment fields = ('pk', 'group', 'interface_parent', 'interface', 'priority') exclude = ('id',)
class OnboardingTaskTable(BaseTable): """Table for displaying OnboardingTask instances.""" pk = ToggleColumn() id = tables.LinkColumn() site = tables.LinkColumn() platform = tables.LinkColumn() created_device = tables.LinkColumn() class Meta(BaseTable.Meta ): # noqa: D106 "Missing docstring in public nested class" model = OnboardingTask fields = ( "pk", "id", "created", "ip_address", "site", "platform", "created_device", "status", "failed_reason", "message", )
class VLANTable(BaseTable): pk = ToggleColumn() vid = tables.LinkColumn('ipam:vlan', args=[Accessor('pk')], verbose_name='ID') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') group = tables.Column(accessor=Accessor('group.name'), verbose_name='Group') name = tables.Column(verbose_name='Name') prefixes = tables.TemplateColumn(VLAN_PREFIXES, orderable=False, verbose_name='Prefixes') tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')], verbose_name='Tenant') status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status') role = tables.TemplateColumn(VLAN_ROLE_LINK, verbose_name='Role') class Meta(BaseTable.Meta): model = VLAN fields = ('pk', 'vid', 'site', 'group', 'name', 'prefixes', 'tenant', 'status', 'role')
class IPRangeTable(BaseTable): pk = ToggleColumn() start_address = tables.Column( linkify=True ) vrf = tables.TemplateColumn( template_code=VRF_LINK, verbose_name='VRF' ) status = ChoiceFieldColumn( default=AVAILABLE_LABEL ) role = tables.Column( linkify=True ) tenant = TenantColumn() utilization = UtilizationColumn( accessor='utilization', orderable=False ) tags = TagColumn( url_name='ipam:iprange_list' ) class Meta(BaseTable.Meta): model = IPRange fields = ( 'pk', 'id', 'start_address', 'end_address', 'size', 'vrf', 'status', 'role', 'tenant', 'description', 'utilization', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'start_address', 'end_address', 'size', 'vrf', 'status', 'role', 'tenant', 'description', ) row_attrs = { 'class': lambda record: 'success' if not record.pk else '', }
class ContactGroupTable(BaseTable): pk = ToggleColumn() name = MPTTColumn(linkify=True) contact_count = LinkedCountColumn(viewname='tenancy:contact_list', url_params={'role_id': 'pk'}, verbose_name='Contacts') tags = TagColumn(url_name='tenancy:contactgroup_list') actions = ButtonsColumn(ContactGroup) class Meta(BaseTable.Meta): model = ContactGroup fields = ( 'pk', 'name', 'contact_count', 'description', 'slug', 'tags', 'actions', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'contact_count', 'description', 'actions')