ipaddress.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. {% extends '_base.html' %}
  2. {% load helpers %}
  3. {% block header %}
  4. <div class="row">
  5. <div class="col-sm-8 col-md-9">
  6. <ol class="breadcrumb">
  7. <li><a href="{% url 'ipam:ipaddress_list' %}">IP Addresses</a></li>
  8. {% if ipaddress.vrf %}
  9. <li><a href="{% url 'ipam:vrf' pk=ipaddress.vrf.pk %}">{{ ipaddress.vrf }}</a></li>
  10. {% endif %}
  11. <li>{{ ipaddress }}</li>
  12. </ol>
  13. </div>
  14. <div class="col-sm-4 col-md-3">
  15. <form action="{% url 'ipam:ipaddress_list' %}" method="get">
  16. <div class="input-group">
  17. <input type="text" name="q" class="form-control" placeholder="Search IPs" />
  18. <span class="input-group-btn">
  19. <button type="submit" class="btn btn-primary">
  20. <span class="fa fa-search" aria-hidden="true"></span>
  21. </button>
  22. </span>
  23. </div>
  24. </form>
  25. </div>
  26. </div>
  27. <div class="pull-right">
  28. {% if perms.ipam.change_ipaddress %}
  29. <a href="{% url 'ipam:ipaddress_edit' pk=ipaddress.pk %}" class="btn btn-warning">
  30. <span class="fa fa-pencil" aria-hidden="true"></span>
  31. Edit this IP
  32. </a>
  33. {% endif %}
  34. {% if perms.ipam.delete_ipaddress %}
  35. <a href="{% url 'ipam:ipaddress_delete' pk=ipaddress.pk %}" class="btn btn-danger">
  36. <span class="fa fa-trash" aria-hidden="true"></span>
  37. Delete this IP
  38. </a>
  39. {% endif %}
  40. </div>
  41. <h1>{% block title %}{{ ipaddress }}{% endblock %}</h1>
  42. {% include 'inc/created_updated.html' with obj=ipaddress %}
  43. <ul class="nav nav-tabs">
  44. <li role="presentation"{% if not active_tab %} class="active"{% endif %}>
  45. <a href="{{ ipaddress.get_absolute_url }}">IP Address</a>
  46. </li>
  47. <li role="presentation"{% if active_tab == 'changelog' %} class="active"{% endif %}>
  48. <a href="{% url 'ipam:ipaddress_changelog' pk=ipaddress.pk %}">Changelog</a>
  49. </li>
  50. </ul>
  51. {% endblock %}
  52. {% block content %}
  53. <div class="row">
  54. <div class="col-md-4">
  55. <div class="panel panel-default">
  56. <div class="panel-heading">
  57. <strong>IP Address</strong>
  58. </div>
  59. <table class="table table-hover panel-body attr-table">
  60. <tr>
  61. <td>Family</td>
  62. <td>{{ ipaddress.get_family_display }}</td>
  63. </tr>
  64. <tr>
  65. <td>VRF</td>
  66. <td>
  67. {% if ipaddress.vrf %}
  68. <a href="{% url 'ipam:vrf' pk=ipaddress.vrf.pk %}">{{ ipaddress.vrf }}</a> ({{ ipaddress.vrf.rd }})
  69. {% else %}
  70. <span>Global</span>
  71. {% endif %}
  72. </td>
  73. </tr>
  74. <tr>
  75. <td>Tenant</td>
  76. <td>
  77. {% if ipaddress.tenant %}
  78. <a href="{{ ipaddress.tenant.get_absolute_url }}">{{ ipaddress.tenant }}</a>
  79. {% elif ipaddress.vrf.tenant %}
  80. <a href="{{ ipaddress.vrf.tenant.get_absolute_url }}">{{ ipaddress.vrf.tenant }}</a>
  81. <label class="label label-info">Inherited</label>
  82. {% else %}
  83. <span class="text-muted">None</span>
  84. {% endif %}
  85. </td>
  86. </tr>
  87. <tr>
  88. <td>Status</td>
  89. <td>
  90. <span class="label label-{{ ipaddress.get_status_class }}">{{ ipaddress.get_status_display }}</span>
  91. </td>
  92. </tr>
  93. <tr>
  94. <td>Role</td>
  95. <td>
  96. {% if ipaddress.role %}
  97. <a href="{% url 'ipam:ipaddress_list' %}?role={{ ipaddress.role }}">{{ ipaddress.get_role_display }}</a>
  98. {% else %}
  99. <span class="text-muted">None</span>
  100. {% endif %}
  101. </td>
  102. </tr>
  103. <tr>
  104. <td>Description</td>
  105. <td>
  106. {% if ipaddress.description %}
  107. <span>{{ ipaddress.description }}</span>
  108. {% else %}
  109. <span class="text-muted">N/A</span>
  110. {% endif %}
  111. </td>
  112. </tr>
  113. <tr>
  114. <td>Assignment</td>
  115. <td>
  116. {% if ipaddress.interface %}
  117. <span><a href="{{ ipaddress.interface.parent.get_absolute_url }}">{{ ipaddress.interface.parent }}</a> ({{ ipaddress.interface }})</span>
  118. {% else %}
  119. <span class="text-muted">None</span>
  120. {% endif %}
  121. </td>
  122. </tr>
  123. <tr>
  124. <td>NAT (inside)</td>
  125. <td>
  126. {% if ipaddress.nat_inside %}
  127. <a href="{% url 'ipam:ipaddress' pk=ipaddress.nat_inside.pk %}">{{ ipaddress.nat_inside }}</a>
  128. {% if ipaddress.nat_inside.interface %}
  129. (<a href="{{ ipaddress.nat_inside.interface.parent.get_absolute_url }}">{{ ipaddress.nat_inside.interface.parent }}</a>)
  130. {% endif %}
  131. {% else %}
  132. <span class="text-muted">None</span>
  133. {% endif %}
  134. </td>
  135. </tr>
  136. <tr>
  137. <td>NAT (outside)</td>
  138. <td>
  139. {% if ipaddress.nat_outside %}
  140. <a href="{% url 'ipam:ipaddress' pk=ipaddress.nat_outside.pk %}">{{ ipaddress.nat_outside }}</a>
  141. {% else %}
  142. <span class="text-muted">None</span>
  143. {% endif %}
  144. </td>
  145. </tr>
  146. </table>
  147. </div>
  148. {% with ipaddress.get_custom_fields as custom_fields %}
  149. {% include 'inc/custom_fields_panel.html' %}
  150. {% endwith %}
  151. {% include 'extras/inc/tags_panel.html' with tags=ipaddress.tags.all url='ipam:ipaddress_list' %}
  152. </div>
  153. <div class="col-md-8">
  154. {% include 'panel_table.html' with table=parent_prefixes_table heading='Parent Prefixes' %}
  155. {% if duplicate_ips_table.rows %}
  156. {% include 'panel_table.html' with table=duplicate_ips_table heading='Duplicate IP Addresses' panel_class='danger' %}
  157. {% endif %}
  158. {% include 'panel_table.html' with table=related_ips_table heading='Related IP Addresses' panel_class='default' %}
  159. </div>
  160. </div>
  161. {% endblock %}