2
0

vlan.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. {% extends 'generic/object.html' %}
  2. {% load helpers %}
  3. {% load plugins %}
  4. {% block title %}VLAN {{ object.display_name }}{% endblock %}
  5. {% block breadcrumbs %}
  6. <li class="breadcrumb-item"><a href="{% url 'ipam:vlan_list' %}">VLANs</a></li>
  7. {% if object.site %}
  8. <li class="breadcrumb-item"><a href="{% url 'ipam:vlan_list' %}?site={{ object.site.slug }}">{{ object.site }}</a></li>
  9. {% endif %}
  10. {% if object.group %}
  11. <li class="breadcrumb-item"><a href="{% url 'ipam:vlan_list' %}?group={{ object.group.slug }}">{{ object.group }}</a></li>
  12. {% endif %}
  13. <li class="breadcrumb-item">{{ object }}</li>
  14. {% endblock %}
  15. {% block tab_items %}
  16. <li class="nav-item" role="presentation">
  17. <a class="nav-link{% if not active_tab %} active{% endif %}" href="{% url 'ipam:vlan' pk=object.pk %}">VLAN</a>
  18. </li>
  19. <li class="nav-item" role="presentation">
  20. <a class="nav-link{% if active_tab == 'interfaces' %} active{% endif %}" href="{% url 'ipam:vlan_interfaces' pk=object.pk %}">
  21. Device Interfaces
  22. {% with count=object.get_interfaces.count %}
  23. {% if count > 0 %}
  24. <span class="badge bg-primary">{{ count }}</span>
  25. {% endif %}
  26. {% endwith %}
  27. </a>
  28. </li>
  29. <li class="nav-item" role="presentation">
  30. <a class="nav-link{% if active_tab == 'vminterfaces' %} active{% endif %}" href="{% url 'ipam:vlan_vminterfaces' pk=object.pk %}">
  31. VM Interfaces
  32. {% comment %} {% with count=object.get_vminterfaces.count %}
  33. {% if count > 0 %}
  34. <span class="badge bg-primary">{{ count }}</span>
  35. {% endif %}
  36. {% endwith %} {% endcomment %}
  37. </a>
  38. </li>
  39. {% endblock %}
  40. {% block content %}
  41. <div class="row">
  42. <div class="col-md-4">
  43. <div class="card">
  44. <h5 class="card-header">
  45. VLAN
  46. </h5>
  47. <div class="card-body">
  48. <table class="table table-hover attr-table">
  49. <tr>
  50. <td colspan="2">
  51. <span class="badge bg-{{ object.get_status_class }}">{{ object.get_status_display }}</span>
  52. </td>
  53. </tr>
  54. <tr>
  55. <th scope="row">Site</th>
  56. <td>
  57. {% if object.site %}
  58. {% if object.site.region %}
  59. <a href="{{ object.site.region.get_absolute_url }}">{{ object.site.region }}</a> /
  60. {% endif %}
  61. <a href="{{ object.site.get_absolute_url }}">{{ object.site }}</a>
  62. {% else %}
  63. <span class="text-muted">None</span>
  64. {% endif %}
  65. </td>
  66. </tr>
  67. <tr>
  68. <th scope="row">Group</th>
  69. <td>
  70. {% if object.group %}
  71. <a href="{{ object.group.get_absolute_url }}">{{ object.group }}</a>
  72. {% else %}
  73. <span class="text-muted">None</span>
  74. {% endif %}
  75. </td>
  76. </tr>
  77. <tr>
  78. <th scope="row">VLAN ID</th>
  79. <td>{{ object.vid }}</td>
  80. </tr>
  81. <tr>
  82. <th scope="row">Name</th>
  83. <td>{{ object.name }}</td>
  84. </tr>
  85. <tr>
  86. <th scope="row">Tenant</th>
  87. <td>
  88. {% if object.tenant %}
  89. {% if object.tenant.group %}
  90. <a href="{{ object.tenant.group.get_absolute_url }}">{{ object.tenant.group }}</a> /
  91. {% endif %}
  92. <a href="{{ object.tenant.get_absolute_url }}">{{ object.tenant }}</a>
  93. {% else %}
  94. <span class="text-muted">None</span>
  95. {% endif %}
  96. </td>
  97. </tr>
  98. <tr>
  99. <th scope="row">Role</th>
  100. <td>
  101. {% if object.role %}
  102. <a href="{% url 'ipam:vlan_list' %}?role={{ object.role.slug }}">{{ object.role }}</a>
  103. {% else %}
  104. <span class="text-muted">None</span>
  105. {% endif %}
  106. </td>
  107. </tr>
  108. <tr>
  109. <th scope="row">Description</th>
  110. <td>{{ object.description|placeholder }}</td>
  111. </tr>
  112. </table>
  113. </div>
  114. </div>
  115. {% include 'inc/custom_fields_panel.html' %}
  116. {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:vlan_list' %}
  117. {% plugin_left_page object %}
  118. </div>
  119. <div class="col-md-8">
  120. <div class="card">
  121. <h5 class="card-header">
  122. Prefixes
  123. </h5>
  124. <div class="card-body">
  125. {% include 'responsive_table.html' with table=prefix_table %}
  126. </div>
  127. {% if perms.ipam.add_prefix %}
  128. <div class="card-footer text-end noprint">
  129. <a href="{% url 'ipam:prefix_add' %}?{% if object.tenant %}tenant={{ object.tenant.pk }}&{% endif %}site={{ object.site.pk }}&vlan={{ object.pk }}" class="btn btn-primary btn-sm">
  130. <span class="bi bi-plus" aria-hidden="true"></span>
  131. Add a prefix
  132. </a>
  133. </div>
  134. {% endif %}
  135. </div>
  136. {% plugin_right_page object %}
  137. </div>
  138. </div>
  139. <div class="row">
  140. <div class="col-md-12">
  141. {% plugin_full_width_page object %}
  142. </div>
  143. </div>
  144. {% endblock %}