clusters.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. from django.utils.translation import gettext_lazy as _
  2. import django_tables2 as tables
  3. from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
  4. from virtualization.models import Cluster, ClusterGroup, ClusterType
  5. from netbox.tables import NetBoxTable, columns
  6. __all__ = (
  7. 'ClusterTable',
  8. 'ClusterGroupTable',
  9. 'ClusterTypeTable',
  10. )
  11. class ClusterTypeTable(NetBoxTable):
  12. name = tables.Column(
  13. verbose_name=_('Name'),
  14. linkify=True
  15. )
  16. cluster_count = columns.LinkedCountColumn(
  17. viewname='virtualization:cluster_list',
  18. url_params={'type_id': 'pk'},
  19. verbose_name=_('Clusters')
  20. )
  21. tags = columns.TagColumn(
  22. url_name='virtualization:clustertype_list'
  23. )
  24. class Meta(NetBoxTable.Meta):
  25. model = ClusterType
  26. fields = (
  27. 'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'created', 'last_updated', 'tags', 'actions',
  28. )
  29. default_columns = ('pk', 'name', 'cluster_count', 'description')
  30. class ClusterGroupTable(ContactsColumnMixin, NetBoxTable):
  31. name = tables.Column(
  32. verbose_name=_('Name'),
  33. linkify=True
  34. )
  35. cluster_count = columns.LinkedCountColumn(
  36. viewname='virtualization:cluster_list',
  37. url_params={'group_id': 'pk'},
  38. verbose_name=_('Clusters')
  39. )
  40. tags = columns.TagColumn(
  41. url_name='virtualization:clustergroup_list'
  42. )
  43. class Meta(NetBoxTable.Meta):
  44. model = ClusterGroup
  45. fields = (
  46. 'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'contacts', 'tags', 'created', 'last_updated',
  47. 'actions',
  48. )
  49. default_columns = ('pk', 'name', 'cluster_count', 'description')
  50. class ClusterTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
  51. name = tables.Column(
  52. verbose_name=_('Name'),
  53. linkify=True
  54. )
  55. type = tables.Column(
  56. verbose_name=_('Type'),
  57. linkify=True
  58. )
  59. group = tables.Column(
  60. verbose_name=_('Group'),
  61. linkify=True
  62. )
  63. status = columns.ChoiceFieldColumn(
  64. verbose_name=_('Status'),
  65. )
  66. site = tables.Column(
  67. verbose_name=_('Site'),
  68. linkify=True
  69. )
  70. device_count = columns.LinkedCountColumn(
  71. viewname='dcim:device_list',
  72. url_params={'cluster_id': 'pk'},
  73. verbose_name=_('Devices')
  74. )
  75. vm_count = columns.LinkedCountColumn(
  76. viewname='virtualization:virtualmachine_list',
  77. url_params={'cluster_id': 'pk'},
  78. verbose_name=_('VMs')
  79. )
  80. comments = columns.MarkdownColumn(
  81. verbose_name=_('Comments'),
  82. )
  83. tags = columns.TagColumn(
  84. url_name='virtualization:cluster_list'
  85. )
  86. class Meta(NetBoxTable.Meta):
  87. model = Cluster
  88. fields = (
  89. 'pk', 'id', 'name', 'type', 'group', 'status', 'tenant', 'tenant_group', 'site', 'description', 'comments',
  90. 'device_count', 'vm_count', 'contacts', 'tags', 'created', 'last_updated',
  91. )
  92. default_columns = ('pk', 'name', 'type', 'group', 'status', 'tenant', 'site', 'device_count', 'vm_count')