prefix.html 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. {% extends '_base.html' %}
  2. {% load helpers %}
  3. {% block title %}{{ prefix }}{% endblock %}
  4. {% block content %}
  5. {% include 'ipam/inc/prefix_header.html' with active_tab='prefix' %}
  6. <div class="row">
  7. <div class="col-md-5">
  8. <div class="panel panel-default">
  9. <div class="panel-heading">
  10. <strong>Prefix</strong>
  11. </div>
  12. <table class="table table-hover panel-body attr-table">
  13. <tr>
  14. <td>Family</td>
  15. <td>{{ prefix.get_family_display }}</td>
  16. </tr>
  17. <tr>
  18. <td>VRF</td>
  19. <td>
  20. {% if prefix.vrf %}
  21. <a href="{% url 'ipam:vrf' pk=prefix.vrf.pk %}">{{ prefix.vrf }}</a> ({{ prefix.vrf.rd }})
  22. {% else %}
  23. <span>Global</span>
  24. {% endif %}
  25. </td>
  26. </tr>
  27. <tr>
  28. <td>Tenant</td>
  29. <td>
  30. {% if prefix.tenant %}
  31. {% if prefix.tenant.group %}
  32. <a href="{{ prefix.tenant.group.get_absolute_url }}">{{ prefix.tenant.group }}</a>
  33. <i class="fa fa-angle-right"></i>
  34. {% endif %}
  35. <a href="{{ prefix.tenant.get_absolute_url }}">{{ prefix.tenant }}</a>
  36. {% elif prefix.vrf.tenant %}
  37. {% if prefix.vrf.tenant.group %}
  38. <a href="{{ prefix.vrf.tenant.group.get_absolute_url }}">{{ prefix.vrf.tenant.group }}</a>
  39. <i class="fa fa-angle-right"></i>
  40. {% endif %}
  41. <a href="{{ prefix.vrf.tenant.get_absolute_url }}">{{ prefix.vrf.tenant }}</a>
  42. <label class="label label-info">Inherited</label>
  43. {% else %}
  44. <span class="text-muted">None</span>
  45. {% endif %}
  46. </td>
  47. </tr>
  48. <tr>
  49. <td>Aggregate</td>
  50. <td>
  51. {% if aggregate %}
  52. <a href="{% url 'ipam:aggregate' pk=aggregate.pk %}">{{ aggregate.prefix }}</a> ({{ aggregate.rir }})
  53. {% else %}
  54. <span class="text-warning">None</span>
  55. {% endif %}
  56. </td>
  57. </tr>
  58. <tr>
  59. <td>Site</td>
  60. <td>
  61. {% if prefix.site %}
  62. {% if prefix.site.region %}
  63. <a href="{{ prefix.site.region.get_absolute_url }}">{{ prefix.site.region }}</a>
  64. <i class="fa fa-angle-right"></i>
  65. {% endif %}
  66. <a href="{% url 'dcim:site' slug=prefix.site.slug %}">{{ prefix.site }}</a>
  67. {% else %}
  68. <span class="text-muted">None</span>
  69. {% endif %}
  70. </td>
  71. </tr>
  72. <tr>
  73. <td>VLAN</td>
  74. <td>
  75. {% if prefix.vlan %}
  76. {% if prefix.vlan.group %}
  77. <a href="{{ prefix.vlan.group.get_absolute_url }}">{{ prefix.vlan.group }}</a>
  78. <i class="fa fa-angle-right"></i>
  79. {% endif %}
  80. <a href="{% url 'ipam:vlan' pk=prefix.vlan.pk %}">{{ prefix.vlan.display_name }}</a>
  81. {% else %}
  82. <span class="text-muted">None</span>
  83. {% endif %}
  84. </td>
  85. </tr>
  86. <tr>
  87. <td>Status</td>
  88. <td>
  89. <span class="label label-{{ prefix.get_status_class }}">{{ prefix.get_status_display }}</span>
  90. </td>
  91. </tr>
  92. <tr>
  93. <td>Role</td>
  94. <td>
  95. {% if prefix.role %}
  96. <a href="{% url 'ipam:prefix_list' %}?role={{ prefix.role.slug }}">{{ prefix.role }}</a>
  97. {% else %}
  98. <span class="text-muted">None</span>
  99. {% endif %}
  100. </td>
  101. </tr>
  102. <tr>
  103. <td>Description</td>
  104. <td>
  105. {% if prefix.description %}
  106. <span>{{ prefix.description }}</span>
  107. {% else %}
  108. <span class="text-muted">N/A</span>
  109. {% endif %}
  110. </td>
  111. </tr>
  112. <tr>
  113. <td>Is a pool</td>
  114. <td>
  115. {% if prefix.is_pool %}
  116. <i class="glyphicon glyphicon-ok text-success" title="Yes"></i>
  117. {% else %}
  118. <i class="glyphicon glyphicon-remove text-danger" title="No"></i>
  119. {% endif %}
  120. </td>
  121. </tr>
  122. <tr>
  123. <td>Utilization</td>
  124. <td>{% utilization_graph prefix.get_utilization %}</td>
  125. </tr>
  126. </table>
  127. </div>
  128. {% with prefix.get_custom_fields as custom_fields %}
  129. {% include 'inc/custom_fields_panel.html' %}
  130. {% endwith %}
  131. <br />
  132. </div>
  133. <div class="col-md-7">
  134. {% if duplicate_prefix_table.rows %}
  135. {% include 'panel_table.html' with table=duplicate_prefix_table heading='Duplicate Prefixes' panel_class='danger' %}
  136. {% endif %}
  137. {% include 'panel_table.html' with table=parent_prefix_table heading='Parent Prefixes' %}
  138. </div>
  139. </div>
  140. <div class="row">
  141. <div class="col-md-12">
  142. {% if child_prefix_table.rows %}
  143. {% include 'utilities/obj_table.html' with table=child_prefix_table table_template='panel_table.html' heading='Child Prefixes' parent=prefix bulk_edit_url='ipam:prefix_bulk_edit' bulk_delete_url='ipam:prefix_bulk_delete' %}
  144. {% elif prefix.new_subnet %}
  145. <a href="{% url 'ipam:prefix_add' %}?prefix={{ prefix.new_subnet }}{% if prefix.vrf %}&vrf={{ prefix.vrf.pk }}{% endif %}{% if prefix.site %}&site={{ prefix.site.pk }}{% endif %}" class="btn btn-success">
  146. <i class="fa fa-plus" aria-hidden="true"></i> Add Child Prefix
  147. </a>
  148. {% endif %}
  149. </div>
  150. </div>
  151. {% endblock %}