vminterface.html 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. {% extends 'generic/object.html' %}
  2. {% load helpers %}
  3. {% load plugins %}
  4. {% load render_table from django_tables2 %}
  5. {% load i18n %}
  6. {% block breadcrumbs %}
  7. {{ block.super }}
  8. <li class="breadcrumb-item">
  9. <a href="{% url 'virtualization:virtualmachine_interfaces' pk=object.virtual_machine.pk %}">{{ object.virtual_machine }}</a>
  10. </li>
  11. {% endblock %}
  12. {% block content %}
  13. <div class="row mb-3">
  14. <div class="col col-md-6">
  15. <div class="card">
  16. <h2 class="card-header">{% trans "Interface" %}</h2>
  17. <table class="table table-hover attr-table">
  18. <tr>
  19. <th scope="row">{% trans "Virtual Machine" %}</th>
  20. <td>{{ object.virtual_machine|linkify }}</td>
  21. </tr>
  22. <tr>
  23. <th scope="row">{% trans "Name" %}</th>
  24. <td>{{ object.name }}</td>
  25. </tr>
  26. <tr>
  27. <th scope="row">{% trans "Enabled" %}</th>
  28. <td>
  29. {% if object.enabled %}
  30. <span class="text-success"><i class="mdi mdi-check-bold"></i></span>
  31. {% else %}
  32. <span class="text-danger"><i class="mdi mdi-close"></i></span>
  33. {% endif %}
  34. </td>
  35. </tr>
  36. <tr>
  37. <th scope="row">{% trans "Parent" %}</th>
  38. <td>{{ object.parent|linkify|placeholder }}</td>
  39. </tr>
  40. <tr>
  41. <th scope="row">{% trans "Bridge" %}</th>
  42. <td>{{ object.bridge|linkify|placeholder }}</td>
  43. </tr>
  44. <tr>
  45. <th scope="row">{% trans "Description" %}</th>
  46. <td>{{ object.description|placeholder }} </td>
  47. </tr>
  48. <tr>
  49. <th scope="row">{% trans "MTU" %}</th>
  50. <td>{{ object.mtu|placeholder }}</td>
  51. </tr>
  52. <tr>
  53. <th scope="row">{% trans "802.1Q Mode" %}</th>
  54. <td>{{ object.get_mode_display|placeholder }}</td>
  55. </tr>
  56. <tr>
  57. <th scope="row">{% trans "Tunnel" %}</th>
  58. <td>{{ object.tunnel_termination.tunnel|linkify|placeholder }}</td>
  59. </tr>
  60. </table>
  61. </div>
  62. {% include 'inc/panels/tags.html' %}
  63. {% plugin_left_page object %}
  64. </div>
  65. <div class="col col-md-6">
  66. {% include 'inc/panels/custom_fields.html' %}
  67. <div class="card">
  68. <h2 class="card-header">{% trans "Addressing" %}</h2>
  69. <table class="table table-hover attr-table">
  70. <tr>
  71. <th scope="row">{% trans "MAC Address" %}</th>
  72. <td>
  73. {% if object.mac_address %}
  74. <span class="font-monospace">{{ object.mac_address }}</span>
  75. <span class="badge text-bg-primary">{% trans "Primary" %}</span>
  76. {% else %}
  77. {{ ''|placeholder }}
  78. {% endif %}
  79. </td>
  80. </tr>
  81. <tr>
  82. <th scope="row">{% trans "VRF" %}</th>
  83. <td>{{ object.vrf|linkify|placeholder }}</td>
  84. </tr>
  85. <tr>
  86. <th scope="row">{% trans "VLAN Translation" %}</th>
  87. <td>{{ object.vlan_translation_policy|linkify|placeholder }}</td>
  88. </tr>
  89. </table>
  90. </div>
  91. {% include 'ipam/inc/panels/fhrp_groups.html' %}
  92. {% plugin_right_page object %}
  93. </div>
  94. </div>
  95. <div class="row mb-3">
  96. <div class="col col-md-12">
  97. <div class="card">
  98. <h2 class="card-header">
  99. {% trans "IP Addresses" %}
  100. {% if perms.ipam.add_ipaddress %}
  101. <div class="card-actions">
  102. <a href="{% url 'ipam:ipaddress_add' %}?virtual_machine={{ object.virtual_machine.pk }}&vminterface={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
  103. <span class="mdi mdi-plus-thick" aria-hidden="true"></span> {% trans "Add IP Address" %}
  104. </a>
  105. </div>
  106. {% endif %}
  107. </h2>
  108. {% htmx_table 'ipam:ipaddress_list' vminterface_id=object.pk %}
  109. </div>
  110. </div>
  111. </div>
  112. <div class="row mb-3">
  113. <div class="col col-md-12">
  114. <div class="card">
  115. <h2 class="card-header">
  116. {% trans "MAC Addresses" %}
  117. {% if perms.ipam.add_macaddress %}
  118. <div class="card-actions">
  119. <a href="{% url 'dcim:macaddress_add' %}?virtual_machine={{ object.device.pk }}&vminterface={{ object.pk }}&return_url={{ object.get_absolute_url }}"
  120. class="btn btn-ghost-primary btn-sm">
  121. <span class="mdi mdi-plus-thick" aria-hidden="true"></span> {% trans "Add MAC Address" %}
  122. </a>
  123. </div>
  124. {% endif %}
  125. </h2>
  126. {% htmx_table 'dcim:macaddress_list' vminterface_id=object.pk %}
  127. </div>
  128. </div>
  129. </div>
  130. <div class="row mb-3">
  131. <div class="col col-md-12">
  132. {% include 'inc/panel_table.html' with table=vlan_table heading="VLANs" %}
  133. </div>
  134. </div>
  135. {% if object.vlan_translation_policy %}
  136. <div class="row mb-3">
  137. <div class="col col-md-12">
  138. {% include 'inc/panel_table.html' with table=vlan_translation_table heading="VLAN Translation" %}
  139. </div>
  140. </div>
  141. {% endif %}
  142. <div class="row mb-3">
  143. <div class="col col-md-12">
  144. {% include 'inc/panel_table.html' with table=child_interfaces_table heading="Child Interfaces" %}
  145. </div>
  146. </div>
  147. <div class="row">
  148. <div class="col col-md-12">
  149. {% plugin_full_width_page object %}
  150. </div>
  151. </div>
  152. {% endblock %}