clusters.py 3.3 KB

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