vrfs.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import django_tables2 as tables
  2. from ipam.models import *
  3. from netbox.tables import NetBoxTable, columns
  4. from tenancy.tables import TenancyColumnsMixin
  5. __all__ = (
  6. 'RouteTargetTable',
  7. 'VRFTable',
  8. )
  9. VRF_TARGETS = """
  10. {% for rt in value.all %}
  11. <a href="{{ rt.get_absolute_url }}">{{ rt }}</a>{% if not forloop.last %}<br />{% endif %}
  12. {% endfor %}
  13. """
  14. #
  15. # VRFs
  16. #
  17. class VRFTable(TenancyColumnsMixin, NetBoxTable):
  18. name = tables.Column(
  19. linkify=True
  20. )
  21. rd = tables.Column(
  22. verbose_name='RD'
  23. )
  24. enforce_unique = columns.BooleanColumn(
  25. verbose_name='Unique'
  26. )
  27. import_targets = columns.TemplateColumn(
  28. template_code=VRF_TARGETS,
  29. orderable=False
  30. )
  31. export_targets = columns.TemplateColumn(
  32. template_code=VRF_TARGETS,
  33. orderable=False
  34. )
  35. comments = columns.MarkdownColumn()
  36. tags = columns.TagColumn(
  37. url_name='ipam:vrf_list'
  38. )
  39. class Meta(NetBoxTable.Meta):
  40. model = VRF
  41. fields = (
  42. 'pk', 'id', 'name', 'rd', 'tenant', 'tenant_group', 'enforce_unique', 'import_targets', 'export_targets',
  43. 'description', 'comments', 'tags', 'created', 'last_updated',
  44. )
  45. default_columns = ('pk', 'name', 'rd', 'tenant', 'description')
  46. #
  47. # Route targets
  48. #
  49. class RouteTargetTable(TenancyColumnsMixin, NetBoxTable):
  50. name = tables.Column(
  51. linkify=True
  52. )
  53. comments = columns.MarkdownColumn()
  54. tags = columns.TagColumn(
  55. url_name='ipam:vrf_list'
  56. )
  57. class Meta(NetBoxTable.Meta):
  58. model = RouteTarget
  59. fields = (
  60. 'pk', 'id', 'name', 'tenant', 'tenant_group', 'description', 'comments', 'tags', 'created', 'last_updated',
  61. )
  62. default_columns = ('pk', 'name', 'tenant', 'description')