clusters.py 2.7 KB

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