power.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import django_tables2 as tables
  2. from django_tables2.utils import Accessor
  3. from dcim.models import PowerFeed, PowerPanel
  4. from utilities.tables import BaseTable, ChoiceFieldColumn, LinkedCountColumn, TagColumn, ToggleColumn
  5. from .devices import CableTerminationTable
  6. from .template_code import POWERFEED_CABLE, POWERFEED_CABLETERMINATION
  7. __all__ = (
  8. 'PowerFeedTable',
  9. 'PowerPanelTable',
  10. )
  11. #
  12. # Power panels
  13. #
  14. class PowerPanelTable(BaseTable):
  15. pk = ToggleColumn()
  16. name = tables.LinkColumn()
  17. site = tables.LinkColumn(
  18. viewname='dcim:site',
  19. args=[Accessor('site__slug')]
  20. )
  21. powerfeed_count = LinkedCountColumn(
  22. viewname='dcim:powerfeed_list',
  23. url_params={'power_panel_id': 'pk'},
  24. verbose_name='Feeds'
  25. )
  26. tags = TagColumn(
  27. url_name='dcim:powerpanel_list'
  28. )
  29. class Meta(BaseTable.Meta):
  30. model = PowerPanel
  31. fields = ('pk', 'name', 'site', 'rack_group', 'powerfeed_count', 'tags')
  32. default_columns = ('pk', 'name', 'site', 'rack_group', 'powerfeed_count')
  33. #
  34. # Power feeds
  35. #
  36. # We're not using PathEndpointTable for PowerFeed because power connections
  37. # cannot traverse pass-through ports.
  38. class PowerFeedTable(CableTerminationTable):
  39. pk = ToggleColumn()
  40. name = tables.LinkColumn()
  41. power_panel = tables.Column(
  42. linkify=True
  43. )
  44. rack = tables.Column(
  45. linkify=True
  46. )
  47. status = ChoiceFieldColumn()
  48. type = ChoiceFieldColumn()
  49. max_utilization = tables.TemplateColumn(
  50. template_code="{{ value }}%"
  51. )
  52. available_power = tables.Column(
  53. verbose_name='Available power (VA)'
  54. )
  55. tags = TagColumn(
  56. url_name='dcim:powerfeed_list'
  57. )
  58. class Meta(BaseTable.Meta):
  59. model = PowerFeed
  60. fields = (
  61. 'pk', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase',
  62. 'max_utilization', 'cable', 'cable_peer', 'connection', 'available_power', 'tags',
  63. )
  64. default_columns = (
  65. 'pk', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase', 'cable',
  66. 'cable_peer',
  67. )