ipaddress.html 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. {% extends 'base.html' %}
  2. {% load buttons %}
  3. {% load custom_links %}
  4. {% load helpers %}
  5. {% load plugins %}
  6. {% load render_table from django_tables2 %}
  7. {% block header %}
  8. <div class="row noprint">
  9. <div class="col-sm-8 col-md-9">
  10. <ol class="breadcrumb">
  11. <li><a href="{% url 'ipam:ipaddress_list' %}">IP Addresses</a></li>
  12. {% if object.vrf %}
  13. <li><a href="{% url 'ipam:vrf' pk=object.vrf.pk %}">{{ object.vrf }}</a></li>
  14. {% endif %}
  15. <li>{{ object }}</li>
  16. </ol>
  17. </div>
  18. <div class="col-sm-4 col-md-3">
  19. <form action="{% url 'ipam:ipaddress_list' %}" method="get">
  20. <div class="input-group">
  21. <input type="text" name="q" class="form-control" placeholder="Search IPs" />
  22. <span class="input-group-btn">
  23. <button type="submit" class="btn btn-primary">
  24. <span class="mdi mdi-magnify" aria-hidden="true"></span>
  25. </button>
  26. </span>
  27. </div>
  28. </form>
  29. </div>
  30. </div>
  31. <div class="pull-right noprint">
  32. {% plugin_buttons object %}
  33. {% if perms.ipam.add_ipaddress %}
  34. {% clone_button object %}
  35. {% endif %}
  36. {% if perms.ipam.change_ipaddress %}
  37. {%edit_button object %}
  38. {% endif %}
  39. {% if perms.ipam.delete_ipaddress %}
  40. {% delete_button object %}
  41. {% endif %}
  42. </div>
  43. <h1>{% block title %}{{ object }}{% endblock %}</h1>
  44. {% include 'inc/created_updated.html' %}
  45. <div class="pull-right noprint">
  46. {% custom_links object %}
  47. </div>
  48. <ul class="nav nav-tabs">
  49. <li role="presentation"{% if not active_tab %} class="active"{% endif %}>
  50. <a href="{{ object.get_absolute_url }}">IP Address</a>
  51. </li>
  52. {% if perms.extras.view_objectchange %}
  53. <li role="presentation"{% if active_tab == 'changelog' %} class="active"{% endif %}>
  54. <a href="{% url 'ipam:ipaddress_changelog' pk=object.pk %}">Change Log</a>
  55. </li>
  56. {% endif %}
  57. </ul>
  58. {% endblock %}
  59. {% block content %}
  60. <div class="row">
  61. <div class="col-md-4">
  62. <div class="panel panel-default">
  63. <div class="panel-heading">
  64. <strong>IP Address</strong>
  65. </div>
  66. <table class="table table-hover panel-body attr-table">
  67. <tr>
  68. <td>Family</td>
  69. <td>IPv{{ object.family }}</td>
  70. </tr>
  71. <tr>
  72. <td>VRF</td>
  73. <td>
  74. {% if object.vrf %}
  75. <a href="{% url 'ipam:vrf' pk=object.vrf.pk %}">{{ object.vrf }}</a>
  76. {% else %}
  77. <span>Global</span>
  78. {% endif %}
  79. </td>
  80. </tr>
  81. <tr>
  82. <td>Tenant</td>
  83. <td>
  84. {% if object.tenant %}
  85. {% if object.tenant.group %}
  86. <a href="{{ object.tenant.group.get_absolute_url }}">{{ object.tenant.group }}</a> /
  87. {% endif %}
  88. <a href="{{ object.tenant.get_absolute_url }}">{{ object.tenant }}</a>
  89. {% else %}
  90. <span class="text-muted">None</span>
  91. {% endif %}
  92. </td>
  93. </tr>
  94. <tr>
  95. <td>Status</td>
  96. <td>
  97. <span class="label label-{{ object.get_status_class }}">{{ object.get_status_display }}</span>
  98. </td>
  99. </tr>
  100. <tr>
  101. <td>Role</td>
  102. <td>
  103. {% if object.role %}
  104. <a href="{% url 'ipam:ipaddress_list' %}?role={{ object.role }}">{{ object.get_role_display }}</a>
  105. {% else %}
  106. <span class="text-muted">None</span>
  107. {% endif %}
  108. </td>
  109. </tr>
  110. <tr>
  111. <td>DNS Name</td>
  112. <td>{{ object.dns_name|placeholder }}</td>
  113. </tr>
  114. <tr>
  115. <td>Description</td>
  116. <td>{{ object.description|placeholder }}</td>
  117. </tr>
  118. <tr>
  119. <td>Assignment</td>
  120. <td>
  121. {% if object.assigned_object %}
  122. <span><a href="{{ object.assigned_object.parent.get_absolute_url }}">{{ object.assigned_object.parent }}</a> ({{ object.assigned_object }})</span>
  123. {% else %}
  124. <span class="text-muted">&mdash;</span>
  125. {% endif %}
  126. </td>
  127. </tr>
  128. <tr>
  129. <td>NAT (inside)</td>
  130. <td>
  131. {% if object.nat_inside %}
  132. <a href="{% url 'ipam:ipaddress' pk=object.nat_inside.pk %}">{{ object.nat_inside }}</a>
  133. {% if object.nat_inside.assigned_object %}
  134. (<a href="{{ object.nat_inside.assigned_object.parent.get_absolute_url }}">{{ object.nat_inside.assigned_object.parent }}</a>)
  135. {% endif %}
  136. {% else %}
  137. <span class="text-muted">None</span>
  138. {% endif %}
  139. </td>
  140. </tr>
  141. <tr>
  142. <td>NAT (outside)</td>
  143. <td>
  144. {% if object.nat_outside %}
  145. <a href="{% url 'ipam:ipaddress' pk=object.nat_outside.pk %}">{{ object.nat_outside }}</a>
  146. {% else %}
  147. <span class="text-muted">None</span>
  148. {% endif %}
  149. </td>
  150. </tr>
  151. </table>
  152. </div>
  153. {% include 'inc/custom_fields_panel.html' %}
  154. {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:ipaddress_list' %}
  155. {% plugin_left_page object %}
  156. </div>
  157. <div class="col-md-8">
  158. {% include 'panel_table.html' with table=parent_prefixes_table heading='Parent Prefixes' %}
  159. {% if duplicate_ips_table.rows %}
  160. {# Custom version of panel_table.html #}
  161. <div class="panel panel-danger">
  162. <div class="panel-heading">
  163. <strong>Duplicate IP Addresses</strong>
  164. {% if more_duplicate_ips %}
  165. <div class="pull-right">
  166. <a type="button" class="btn btn-primary btn-xs"
  167. {% if object.vrf %}
  168. href="{% url 'ipam:ipaddress_list' %}?address={{ object.address.ip }}&vrf_id={{ object.vrf.pk }}"
  169. {% else %}
  170. href="{% url 'ipam:ipaddress_list' %}?address={{ object.address.ip }}&vrf_id=null"
  171. {% endif %}
  172. >Show all</a>
  173. </div>
  174. {% endif %}
  175. </div>
  176. {% render_table duplicate_ips_table 'inc/table.html' %}
  177. </div>
  178. {% endif %}
  179. {% include 'utilities/obj_table.html' with table=related_ips_table table_template='panel_table.html' heading='Related IP Addresses' panel_class='default noprint' %}
  180. {% plugin_right_page object %}
  181. </div>
  182. </div>
  183. <div class="row">
  184. <div class="col-md-12">
  185. {% plugin_full_width_page object %}
  186. </div>
  187. </div>
  188. {% endblock %}