netbox-docker-plugin 4.5.0__tar.gz → 4.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. {netbox_docker_plugin-4.5.0/netbox_docker_plugin.egg-info → netbox_docker_plugin-4.6.0}/PKG-INFO +14 -5
  2. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/README.md +13 -4
  3. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/__init__.py +2 -2
  4. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/templates/netbox_docker_plugin/container-logs.html +1 -1
  5. netbox_docker_plugin-4.6.0/netbox_docker_plugin/templates/netbox_docker_plugin/container.html +199 -0
  6. netbox_docker_plugin-4.6.0/netbox_docker_plugin/templates/netbox_docker_plugin/host.html +144 -0
  7. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/templates/netbox_docker_plugin/image.html +36 -41
  8. netbox_docker_plugin-4.6.0/netbox_docker_plugin/templates/netbox_docker_plugin/network.html +44 -0
  9. netbox_docker_plugin-4.6.0/netbox_docker_plugin/templates/netbox_docker_plugin/registry.html +61 -0
  10. netbox_docker_plugin-4.6.0/netbox_docker_plugin/templates/netbox_docker_plugin/volume.html +46 -0
  11. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/host.py +8 -26
  12. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/registry.py +8 -9
  13. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0/netbox_docker_plugin.egg-info}/PKG-INFO +14 -5
  14. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/pyproject.toml +1 -1
  15. netbox_docker_plugin-4.5.0/netbox_docker_plugin/templates/netbox_docker_plugin/container.html +0 -212
  16. netbox_docker_plugin-4.5.0/netbox_docker_plugin/templates/netbox_docker_plugin/host.html +0 -142
  17. netbox_docker_plugin-4.5.0/netbox_docker_plugin/templates/netbox_docker_plugin/network.html +0 -49
  18. netbox_docker_plugin-4.5.0/netbox_docker_plugin/templates/netbox_docker_plugin/registry.html +0 -64
  19. netbox_docker_plugin-4.5.0/netbox_docker_plugin/templates/netbox_docker_plugin/volume.html +0 -51
  20. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/LICENSE +0 -0
  21. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/MANIFEST.in +0 -0
  22. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/api/__init__.py +0 -0
  23. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/api/renderers.py +0 -0
  24. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/api/serializers.py +0 -0
  25. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/api/urls.py +0 -0
  26. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/api/views.py +0 -0
  27. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/filtersets.py +0 -0
  28. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/__init__.py +0 -0
  29. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/bind.py +0 -0
  30. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/container.py +0 -0
  31. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/device.py +0 -0
  32. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/env.py +0 -0
  33. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/host.py +0 -0
  34. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/image.py +0 -0
  35. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/label.py +0 -0
  36. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/log_driver_option.py +0 -0
  37. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/mount.py +0 -0
  38. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/network.py +0 -0
  39. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/network_setting.py +0 -0
  40. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/port.py +0 -0
  41. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/registry.py +0 -0
  42. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/forms/volume.py +0 -0
  43. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0001_initial.py +0 -0
  44. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0002_image.py +0 -0
  45. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0003_image_size.py +0 -0
  46. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0004_volume.py +0 -0
  47. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0005_network.py +0 -0
  48. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0006_container_port_mount_label_env_and_more.py +0 -0
  49. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0007_remove_container_netbox_docker_plugin_container_unique_name_host__and_more.py +0 -0
  50. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0008_alter_network_unique_together_network_networkid_and_more.py +0 -0
  51. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0009_remove_container_network_networksettings_and_more.py +0 -0
  52. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0010_container_containerid_and_more.py +0 -0
  53. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0011_host_token.py +0 -0
  54. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0012_host_state.py +0 -0
  55. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0013_host_netbox_url.py +0 -0
  56. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0014_container_operation.py +0 -0
  57. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0015_remove_mount_netbox_docker_plugin_mount_unique_volume_and_more.py +0 -0
  58. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0016_alter_env_value.py +0 -0
  59. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0017_network_state.py +0 -0
  60. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0018_alter_mount_volume_alter_networksetting_network.py +0 -0
  61. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0019_host_agent_version_host_docker_api_version.py +0 -0
  62. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0020_container_hostname.py +0 -0
  63. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0021_registry_and_more.py +0 -0
  64. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0022_bind_bind_netbox_docker_plugin_bind_unique_bind.py +0 -0
  65. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0023_delete_hosts.py +0 -0
  66. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0024_registry_host_alter_registry_name_and_more.py +0 -0
  67. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0025_alter_image_version.py +0 -0
  68. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0026_image_digest.py +0 -0
  69. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0027_container_restart_policy.py +0 -0
  70. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0028_mount_and_bind_read_only.py +0 -0
  71. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0029_alter_container_state.py +0 -0
  72. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0030_alter_container_containerid_alter_container_hostname_and_more.py +0 -0
  73. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0031_container_cap_add.py +0 -0
  74. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0032_device_and_more.py +0 -0
  75. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0033_host_operation.py +0 -0
  76. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0034_volume_max_size.py +0 -0
  77. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0035_container_log_driver_logdriveroption.py +0 -0
  78. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0036_alter_container_log_driver.py +0 -0
  79. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0037_alter_env_value.py +0 -0
  80. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/0038_container_cmd.py +0 -0
  81. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/1039_alter_port_public_port.py +0 -0
  82. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/1040_alter_container_log_driver.py +0 -0
  83. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/migrations/__init__.py +0 -0
  84. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/models/__init__.py +0 -0
  85. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/models/container.py +0 -0
  86. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/models/host.py +0 -0
  87. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/models/image.py +0 -0
  88. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/models/network.py +0 -0
  89. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/models/registry.py +0 -0
  90. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/models/volume.py +0 -0
  91. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/navigation.py +0 -0
  92. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/signals.py +0 -0
  93. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tables.py +0 -0
  94. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/templates/netbox_docker_plugin/container-exec.html +0 -0
  95. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/templates/netbox_docker_plugin/container-layout.html +0 -0
  96. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/templates/netbox_docker_plugin/host-graph.html +0 -0
  97. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/templatetags/__init__.py +0 -0
  98. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/templatetags/host.py +0 -0
  99. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/__init__.py +0 -0
  100. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/base.py +0 -0
  101. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/container/__init__.py +0 -0
  102. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/container/test_container_actions.py +0 -0
  103. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/container/test_container_api.py +0 -0
  104. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/container/test_container_api_exec.py +0 -0
  105. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/container/test_container_operation_view.py +0 -0
  106. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/container/test_container_validation.py +0 -0
  107. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/container/test_container_views.py +0 -0
  108. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/host/__init__.py +0 -0
  109. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/host/test_host_api.py +0 -0
  110. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/host/test_host_views.py +0 -0
  111. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/host/test_replace_password.py +0 -0
  112. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/image/__init__.py +0 -0
  113. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/image/test_image_api.py +0 -0
  114. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/image/test_image_views.py +0 -0
  115. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/network/__init__.py +0 -0
  116. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/network/test_network_api.py +0 -0
  117. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/network/test_network_views.py +0 -0
  118. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/registry/__init__.py +0 -0
  119. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/registry/test_registry_api.py +0 -0
  120. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/registry/test_registry_views.py +0 -0
  121. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/test_init.py +0 -0
  122. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/volume/__init__.py +0 -0
  123. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/volume/test_volume_api.py +0 -0
  124. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/tests/volume/test_volume_views.py +0 -0
  125. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/urls.py +0 -0
  126. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/utilities/__init__.py +0 -0
  127. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/__init__.py +0 -0
  128. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/bind.py +0 -0
  129. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/container.py +0 -0
  130. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/device.py +0 -0
  131. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/env.py +0 -0
  132. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/image.py +0 -0
  133. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/label.py +0 -0
  134. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/log_driver_option.py +0 -0
  135. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/mount.py +0 -0
  136. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/network.py +0 -0
  137. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/network_setting.py +0 -0
  138. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/port.py +0 -0
  139. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin/views/volume.py +0 -0
  140. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin.egg-info/SOURCES.txt +0 -0
  141. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin.egg-info/dependency_links.txt +0 -0
  142. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/netbox_docker_plugin.egg-info/top_level.txt +0 -0
  143. {netbox_docker_plugin-4.5.0 → netbox_docker_plugin-4.6.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netbox-docker-plugin
3
- Version: 4.5.0
3
+ Version: 4.6.0
4
4
  Summary: Manage Docker with Netbox & style.
5
5
  Author-email: Vincent Simonin <vincent@saashup.com>, David Delassus <david.jose.delassus@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/SaaShup/netbox-docker-plugin
@@ -43,10 +43,18 @@ Once the plugin and webhooks are installed, you can:
43
43
  labels, mount volumes, set networks.
44
44
  4. Manage the container status, start, stop, restart.
45
45
 
46
- * adding a host with curl needs a specific **Origin** header to make it working. Example :
47
- ```
48
- curl -X POST -H "Authorization: Token xxxxx" -H "Content-Type: application/json" -H "Origin: https://myhost" https://myhost/api/plugins/docker/hosts/ -d '{"name": "test-add", "endpoint": "[https://xxxx:xxxx@test.com:1990"}](https://xxxx:xxxx@test.com:1990%22%7D)'
49
- ```
46
+
47
+ > [!NOTE]
48
+ > Adding a host with curl needs a specific `Origin` HTTP header to make it working. Example :
49
+ >
50
+ > ```bash
51
+ > curl \
52
+ > -H "Authorization: Token YOUR-NETBOX-APIKEY" \
53
+ > -H "Content-Type: application/json" \
54
+ > -H "Origin: https://YOUR-NETBOX-HOST" \
55
+ > -X POST https://YOUR-NETBOX-HOST/api/plugins/docker/hosts/ \
56
+ > -d '{"name": "YOUR-AGENT-NAME", "endpoint": "https://AGENT-USER:PASSWORD@YOUR-AGENT-HOST:PORT"}'
57
+ > ```
50
58
 
51
59
  ## Installation
52
60
 
@@ -59,6 +67,7 @@ Below the compatibility list of the Netbox Docker PLugin and Netbox. Please chos
59
67
  | 4.1.\* | 3.\* |
60
68
  | 4.2.\* | 4.\* |
61
69
  | 4.3.\* | 4.\* |
70
+ | >=4.3.7 | >=4.5.1 |
62
71
 
63
72
  You can follow [the official plugins installation
64
73
  instructions](https://docs.netbox.dev/en/stable/plugins/#installing-plugins).
@@ -29,10 +29,18 @@ Once the plugin and webhooks are installed, you can:
29
29
  labels, mount volumes, set networks.
30
30
  4. Manage the container status, start, stop, restart.
31
31
 
32
- * adding a host with curl needs a specific **Origin** header to make it working. Example :
33
- ```
34
- curl -X POST -H "Authorization: Token xxxxx" -H "Content-Type: application/json" -H "Origin: https://myhost" https://myhost/api/plugins/docker/hosts/ -d '{"name": "test-add", "endpoint": "[https://xxxx:xxxx@test.com:1990"}](https://xxxx:xxxx@test.com:1990%22%7D)'
35
- ```
32
+
33
+ > [!NOTE]
34
+ > Adding a host with curl needs a specific `Origin` HTTP header to make it working. Example :
35
+ >
36
+ > ```bash
37
+ > curl \
38
+ > -H "Authorization: Token YOUR-NETBOX-APIKEY" \
39
+ > -H "Content-Type: application/json" \
40
+ > -H "Origin: https://YOUR-NETBOX-HOST" \
41
+ > -X POST https://YOUR-NETBOX-HOST/api/plugins/docker/hosts/ \
42
+ > -d '{"name": "YOUR-AGENT-NAME", "endpoint": "https://AGENT-USER:PASSWORD@YOUR-AGENT-HOST:PORT"}'
43
+ > ```
36
44
 
37
45
  ## Installation
38
46
 
@@ -45,6 +53,7 @@ Below the compatibility list of the Netbox Docker PLugin and Netbox. Please chos
45
53
  | 4.1.\* | 3.\* |
46
54
  | 4.2.\* | 4.\* |
47
55
  | 4.3.\* | 4.\* |
56
+ | >=4.3.7 | >=4.5.1 |
48
57
 
49
58
  You can follow [the official plugins installation
50
59
  instructions](https://docs.netbox.dev/en/stable/plugins/#installing-plugins).
@@ -11,9 +11,9 @@ class NetBoxDockerConfig(PluginConfig):
11
11
  name = "netbox_docker_plugin"
12
12
  verbose_name = " NetBox Docker Plugin"
13
13
  description = "Manage Docker"
14
- version = "4.5.0"
14
+ version = "4.6.0"
15
15
  base_url = "docker"
16
- min_version = "4.2.0"
16
+ min_version = "4.3.7"
17
17
  author = "Vincent Simonin <vincent@saashup.com>, David Delassus <david.jose.delassus@gmail.com>"
18
18
  author_email = "vincent@saashup.com, david.jose.delassus@gmail.com"
19
19
 
@@ -7,7 +7,7 @@
7
7
  <div class="col col-md-12">
8
8
  <div class="card">
9
9
  <div class="card-header d-flex">
10
- <h5 class="flex-grow-1">LOGS</h5>
10
+ <h2 class="flex-grow-1">Logs</h2>
11
11
  <div>
12
12
  <button id="container-logs-button" type="button" class="btn btn-primary">
13
13
  <i id="container-logs-cb" class="mdi mdi-checkbox-marked"></i> Follow logs
@@ -0,0 +1,199 @@
1
+ {% extends "netbox_docker_plugin/container-layout.html" %}
2
+
3
+ {% load plugins %}
4
+
5
+ {% block content %}
6
+ <div class="row mb-3">
7
+ <div class="col col-md-6">
8
+ <div class="card">
9
+ <h2 class="card-header">Container</h2>
10
+ <table class="table table-hover attr-table">
11
+ <tr>
12
+ <th scope="row">Host</th>
13
+ <td><a href="{{ object.host.get_absolute_url }}">{{ object.host }}</a></td>
14
+ </tr>
15
+ <tr>
16
+ <th scope="row">Image</th>
17
+ <td><a href="{{ object.image.get_absolute_url }}">{{ object.image }}</a></td>
18
+ </tr>
19
+ <tr>
20
+ <th scope="row">Name</th>
21
+ <td>{{ object.name }}</td>
22
+ </tr>
23
+ <tr>
24
+ <th scope="row">ContainerID</th>
25
+ <td>{{ object.ContainerID|placeholder }}</td>
26
+ </tr>
27
+ <tr>
28
+ <th scope="row">Hostname</th>
29
+ <td>{{ object.hostname|placeholder }}</td>
30
+ </tr>
31
+ <tr>
32
+ <th scope="row">State</th>
33
+ <td>{{ object.get_state_display }}</td>
34
+ </tr>
35
+ <tr>
36
+ <th scope="row">Restart Policy</th>
37
+ <td>{{ object.get_restart_policy_display }}</td>
38
+ </tr>
39
+ <tr>
40
+ <th scope="row">Host Capacities added</th>
41
+ <td>{{ object.cap_add }}</td>
42
+ </tr>
43
+ <tr>
44
+ <th scope="row">Status</th>
45
+ <td>{{ object.status|placeholder }}</td>
46
+ </tr>
47
+ <tr>
48
+ <th scope="row">Operation</th>
49
+ <td>{{ object.get_operation_display }}</td>
50
+ </tr>
51
+ <tr>
52
+ <th scope="row">Logging driver</th>
53
+ <td>{{ object.log_driver }}</td>
54
+ </tr>
55
+ <tr>
56
+ <th scope="row">Command</th>
57
+ <td>{{ object.cmd }}</td>
58
+ </tr>
59
+ </table>
60
+ </div>
61
+ {% include 'inc/panels/custom_fields.html' %}
62
+ {% include 'inc/panels/tags.html' %}
63
+ {% plugin_left_page object %}
64
+ </div>
65
+ <div class="col col-md-6">
66
+ <div class="card">
67
+ <h2 class="card-header">
68
+ Label
69
+ {% if perms.netbox_docker_plugin.add_env %}
70
+ <div class="card-actions">
71
+ <a href="{% url 'plugins:netbox_docker_plugin:label_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
72
+ <span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add a Label
73
+ </a>
74
+ </div>
75
+ {% endif %}
76
+ </h2>
77
+ {% htmx_table 'plugins:netbox_docker_plugin:label_list' container_id=object.pk %}
78
+ </div>
79
+ </div>
80
+ </div>
81
+
82
+ <div class="row mb-3">
83
+ <div class="col col-md-6">
84
+ <div class="card">
85
+ <h2 class="card-header">
86
+ Environment Variables
87
+ {% if perms.netbox_docker_plugin.add_env %}
88
+ <div class="card-actions">
89
+ <a href="{% url 'plugins:netbox_docker_plugin:env_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
90
+ <span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add an Env Variable
91
+ </a>
92
+ </div>
93
+ {% endif %}
94
+ </h2>
95
+ {% htmx_table 'plugins:netbox_docker_plugin:env_list' container_id=object.pk %}
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <div class="row mb-3">
101
+ <div class="col col-md-6">
102
+ <div class="card">
103
+ <h2 class="card-header">
104
+ Port Mappings
105
+ {% if perms.netbox_docker_plugin.add_env %}
106
+ <div class="card-actions">
107
+ <a href="{% url 'plugins:netbox_docker_plugin:port_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
108
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Port Mapping
109
+ </a>
110
+ </div>
111
+ {% endif %}
112
+ </h2>
113
+ {% htmx_table 'plugins:netbox_docker_plugin:port_list' container_id=object.pk %}
114
+ </div>
115
+ </div>
116
+
117
+ <div class="col col-md-6">
118
+ <div class="card">
119
+ <h2 class="card-header">
120
+ Network Settings
121
+ {% if perms.netbox_docker_plugin.add_network_setting %}
122
+ <div class="card-actions">
123
+ <a href="{% url 'plugins:netbox_docker_plugin:networksetting_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
124
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> New Network Setting
125
+ </a>
126
+ </div>
127
+ {% endif %}
128
+ </h2>
129
+ {% htmx_table 'plugins:netbox_docker_plugin:networksetting_list' container_id=object.pk %}
130
+ </div>
131
+ </div>
132
+ </div>
133
+
134
+ <div class="row mb-3">
135
+ <div class="col col-md-6">
136
+ <div class="card">
137
+ <h2 class="card-header">
138
+ Mount
139
+ {% if perms.netbox_docker_plugin.add_env %}
140
+ <div class="card-actions">
141
+ <a href="{% url 'plugins:netbox_docker_plugin:mount_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
142
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> New Mount
143
+ </a>
144
+ </div>
145
+ {% endif %}
146
+ </h2>
147
+ {% htmx_table 'plugins:netbox_docker_plugin:mount_list' container_id=object.pk %}
148
+ </div>
149
+ </div>
150
+ <div class="col col-md-6">
151
+ <div class="card">
152
+ <h2 class="card-header">
153
+ Binds
154
+ {% if perms.netbox_docker_plugin.add_env %}
155
+ <div class="card-actions">
156
+ <a href="{% url 'plugins:netbox_docker_plugin:bind_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
157
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> New Bind
158
+ </a>
159
+ </div>
160
+ {% endif %}
161
+ </h2>
162
+ {% htmx_table 'plugins:netbox_docker_plugin:bind_list' container_id=object.pk %}
163
+ </div>
164
+ </div>
165
+ </div>
166
+
167
+ <div class="row mb-3">
168
+ <div class="col col-md-6">
169
+ <div class="card">
170
+ <h2 class="card-header">
171
+ Devices
172
+ {% if perms.netbox_docker_plugin.add_device %}
173
+ <div class="card-actions">
174
+ <a href="{% url 'plugins:netbox_docker_plugin:device_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
175
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> New Device
176
+ </a>
177
+ </div>
178
+ {% endif %}
179
+ </h2>
180
+ {% htmx_table 'plugins:netbox_docker_plugin:device_list' container_id=object.pk %}
181
+ </div>
182
+ </div>
183
+ <div class="col col-md-6">
184
+ <div class="card">
185
+ <h2 class="card-header">
186
+ Log Driver Options
187
+ {% if perms.netbox_docker_plugin.add_env %}
188
+ <div class="card-actions">
189
+ <a href="{% url 'plugins:netbox_docker_plugin:logdriveroption_add' %}?container={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
190
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Logging driver option
191
+ </a>
192
+ </div>
193
+ {% endif %}
194
+ </h2>
195
+ {% htmx_table 'plugins:netbox_docker_plugin:logdriveroption_list' container_id=object.pk %}
196
+ </div>
197
+ </div>
198
+ </div>
199
+ {% endblock content %}
@@ -0,0 +1,144 @@
1
+ {% extends 'generic/object.html' %}
2
+
3
+ {% load plugins %}
4
+ {% load host %}
5
+
6
+ {% block extra_controls %}
7
+ <form action="{% url 'plugins:netbox_docker_plugin:host_operation' pk=object.id operation='refresh' %}" method="post">
8
+ {% csrf_token %}
9
+ <input type="hidden" name="operation" value="refresh">
10
+ <button type="submit" class="btn btn-warning">
11
+ <i class="mdi mdi-cog-refresh"></i> Refresh
12
+ </button>
13
+ </form>
14
+ {% endblock extra_controls %}
15
+
16
+ {% block content %}
17
+ <div class="row mb-3">
18
+ <div class="col col-md-6">
19
+ <div class="card">
20
+ <h2 class="card-header">Host</h2>
21
+ <table class="table table-hover attr-table">
22
+ <tr>
23
+ <th scope="row">Name</th>
24
+ <td>{{ object.name }}</td>
25
+ </tr>
26
+ <tr>
27
+ <th scope="row">Endpoint</th>
28
+ <td>{{ object.endpoint|remove_password }}</td>
29
+ </tr>
30
+ <tr>
31
+ <th scope="row">State</th>
32
+ <td>{{ object.get_state_display }}</td>
33
+ </tr>
34
+ <tr>
35
+ <th scope="row">Agent Version</th>
36
+ <td>{{ object.agent_version|placeholder }}</td>
37
+ </tr>
38
+ <tr>
39
+ <th scope="row">Docker API Version</th>
40
+ <td>{{ object.docker_api_version|placeholder }}</td>
41
+ </tr>
42
+ <tr>
43
+ <th scope="row">Operation</th>
44
+ <td>{{ object.get_operation_display }}</td>
45
+ </tr>
46
+ </table>
47
+ </div>
48
+ {% include 'inc/panels/custom_fields.html' %}
49
+ {% include 'inc/panels/tags.html' %}
50
+ {% plugin_left_page object %}
51
+ </div>
52
+ <div class="col col-md-6">
53
+ {% include 'inc/panels/related_objects.html' with filter_name='host_id' %}
54
+ {% plugin_right_page object %}
55
+ </div>
56
+ </div>
57
+ <div class="row">
58
+ <div class="col col-md-12">
59
+ <div class="card">
60
+ <h2 class="card-header">
61
+ Registry
62
+ {% if perms.netbox_docker_plugin.add_container %}
63
+ <div class="card-actions">
64
+ <a href="{% url 'plugins:netbox_docker_plugin:registry_add' %}?host={{ object.pk }}&return_url={{ object.get_absolute_url }}"
65
+ class="btn btn-ghost-primary btn-sm">
66
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Registry
67
+ </a>
68
+ </div>
69
+ {% endif %}
70
+ </h2>
71
+ {% htmx_table 'plugins:netbox_docker_plugin:registry_list' host_id=object.pk %}
72
+ </div>
73
+ {% plugin_full_width_page object %}
74
+ </div>
75
+ <div class="col col-md-12">
76
+ <div class="card">
77
+ <h2 class="card-header">
78
+ Container
79
+ {% if perms.netbox_docker_plugin.add_container %}
80
+ <div class="card-actions">
81
+ <a href="{% url 'plugins:netbox_docker_plugin:container_add' %}?host={{ object.pk }}&return_url={{ object.get_absolute_url }}"
82
+ class="btn btn-ghost-primary btn-sm">
83
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Container
84
+ </a>
85
+ </div>
86
+ {% endif %}
87
+ </h2>
88
+ {% htmx_table 'plugins:netbox_docker_plugin:container_list' host_id=object.pk %}
89
+ </div>
90
+ {% plugin_full_width_page object %}
91
+ </div>
92
+ <div class="col col-md-12">
93
+ <div class="card">
94
+ <h2 class="card-header">
95
+ Images
96
+ {% if perms.netbox_docker_plugin.add_image %}
97
+ <div class="card-actions">
98
+ <a href="{% url 'plugins:netbox_docker_plugin:image_add' %}?host={{ object.pk }}&return_url={{ object.get_absolute_url }}"
99
+ class="btn btn-ghost-primary btn-sm">
100
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add an Image
101
+ </a>
102
+ </div>
103
+ {% endif %}
104
+ </h2>
105
+ {% htmx_table 'plugins:netbox_docker_plugin:image_list' host_id=object.pk %}
106
+ </div>
107
+ {% plugin_full_width_page object %}
108
+ </div>
109
+ <div class="col col-md-12">
110
+ <div class="card">
111
+ <h2 class="card-header">
112
+ Volumes
113
+ {% if perms.netbox_docker_plugin.add_volume %}
114
+ <div class="card-actions">
115
+ <a href="{% url 'plugins:netbox_docker_plugin:volume_add' %}?host={{ object.pk }}&return_url={{ object.get_absolute_url }}"
116
+ class="btn btn-ghost-primary btn-sm">
117
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Volume
118
+ </a>
119
+ </div>
120
+ {% endif %}
121
+ </h2>
122
+ {% htmx_table 'plugins:netbox_docker_plugin:volume_list' host_id=object.pk %}
123
+ </div>
124
+ {% plugin_full_width_page object %}
125
+ </div>
126
+ <div class="col col-md-12">
127
+ <div class="card">
128
+ <h2 class="card-header">
129
+ Networks
130
+ {% if perms.netbox_docker_plugin.add_network %}
131
+ <div class="card-actions">
132
+ <a href="{% url 'plugins:netbox_docker_plugin:network_add' %}?host={{ object.pk }}&return_url={{ object.get_absolute_url }}"
133
+ class="btn btn-ghost-primary btn-sm">
134
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Network
135
+ </a>
136
+ </div>
137
+ {% endif %}
138
+ </h2>
139
+ {% htmx_table 'plugins:netbox_docker_plugin:network_list' host_id=object.pk %}
140
+ </div>
141
+ {% plugin_full_width_page object %}
142
+ </div>
143
+ </div>
144
+ {% endblock content %}
@@ -69,53 +69,48 @@
69
69
  <div class="row mb-3">
70
70
  <div class="col col-md-6">
71
71
  <div class="card">
72
- <h5 class="card-header">IMAGE</h5>
73
- <div class="card-body">
74
- <table class="table table-hover attr-table">
75
- <tr>
76
- <th scope="row">Host</th>
77
- <td><a href="{{ object.host.get_absolute_url }}">{{ object.host }}</a></td>
78
- </tr>
79
- <tr>
80
- <th scope="row">Name & Version</th>
81
- <td>{{ object.name }}:{{ object.version }}</td>
82
- </tr>
83
- <tr>
84
- <th scope="row">Registry</th>
85
- <td><a href="{{ object.registry.get_absolute_url }}">{{ object.registry }}</a></td>
86
- </tr>
87
- <tr>
88
- <th scope="row">Size</th>
89
- <td>{{ object.size }}&nbsp;MByte</td>
90
- </tr>
91
- <tr>
92
- <th scope="row">ImageID</th>
93
- <td>{{ object.ImageID|placeholder }}</td>
94
- </tr>
95
- <tr>
96
- <th scope="row">Digest</th>
97
- <td>
98
- {% if object.Digest is None %}
99
- {{ object.Digest|placeholder }}
100
- {% else %}
101
- {{ object.Digest|truncatechars:32 }}
102
- {% endif %}
103
- </td>
104
- </tr>
105
- </table>
106
- </div>
72
+ <h2 class="card-header">Image</h2>
73
+ <table class="table table-hover attr-table">
74
+ <tr>
75
+ <th scope="row">Host</th>
76
+ <td><a href="{{ object.host.get_absolute_url }}">{{ object.host }}</a></td>
77
+ </tr>
78
+ <tr>
79
+ <th scope="row">Name & Version</th>
80
+ <td>{{ object.name }}:{{ object.version }}</td>
81
+ </tr>
82
+ <tr>
83
+ <th scope="row">Registry</th>
84
+ <td><a href="{{ object.registry.get_absolute_url }}">{{ object.registry }}</a></td>
85
+ </tr>
86
+ <tr>
87
+ <th scope="row">Size</th>
88
+ <td>{{ object.size }}&nbsp;MByte</td>
89
+ </tr>
90
+ <tr>
91
+ <th scope="row">ImageID</th>
92
+ <td>{{ object.ImageID|placeholder }}</td>
93
+ </tr>
94
+ <tr>
95
+ <th scope="row">Digest</th>
96
+ <td>
97
+ {% if object.Digest is None %}
98
+ {{ object.Digest|placeholder }}
99
+ {% else %}
100
+ {{ object.Digest|truncatechars:32 }}
101
+ {% endif %}
102
+ </td>
103
+ </tr>
104
+ </table>
107
105
  </div>
108
106
  {% include 'inc/panels/custom_fields.html' %}
109
107
  {% include 'inc/panels/tags.html' %}
110
108
  {% plugin_left_page object %}
111
109
  </div>
112
- <div class="col col-md-6">
110
+ <div class="col col-md-12">
113
111
  <div class="card">
114
- <h5 class="card-header">USED BY</h5>
115
- <div class="card-body htmx-container table-responsive"
116
- hx-get="{% url 'plugins:netbox_docker_plugin:container_list' %}?image_id={{ object.pk }}"
117
- hx-trigger="load"
118
- ></div>
112
+ <h2 class="card-header">Used By</h2>
113
+ {% htmx_table 'plugins:netbox_docker_plugin:container_list' image_id=object.pk %}
119
114
  </div>
120
115
  </div>
121
116
  </div>
@@ -0,0 +1,44 @@
1
+ {% extends 'generic/object.html' %}
2
+
3
+ {% load plugins %}
4
+
5
+ {% block content %}
6
+ <div class="row mb-3">
7
+ <div class="col col-md-6">
8
+ <div class="card">
9
+ <h2 class="card-header">Network</h2>
10
+ <table class="table table-hover attr-table">
11
+ <tr>
12
+ <th scope="row">Host</th>
13
+ <td><a href="{{ object.host.get_absolute_url }}">{{ object.host }}</a></td>
14
+ </tr>
15
+ <tr>
16
+ <th scope="row">Name</th>
17
+ <td>{{ object.name }}</td>
18
+ </tr>
19
+ <tr>
20
+ <th scope="row">Driver</th>
21
+ <td>{{ object.get_driver_display }}</td>
22
+ </tr>
23
+ <tr>
24
+ <th scope="row">NetworkID</th>
25
+ <td>{{ object.NetworkID|placeholder }}</td>
26
+ </tr>
27
+ <tr>
28
+ <th scope="row">State</th>
29
+ <td>{{ object.get_state_display }}</td>
30
+ </tr>
31
+ </table>
32
+ </div>
33
+ {% include 'inc/panels/custom_fields.html' %}
34
+ {% include 'inc/panels/tags.html' %}
35
+ {% plugin_left_page object %}
36
+ </div>
37
+ <div class="col col-md-12">
38
+ <div class="card">
39
+ <h2 class="card-header">Used By</h2>
40
+ {% htmx_table 'plugins:netbox_docker_plugin:networksetting_list' image_id=object.pk %}
41
+ </div>
42
+ </div>
43
+ </div>
44
+ {% endblock content %}
@@ -0,0 +1,61 @@
1
+ {% extends 'generic/object.html' %}
2
+
3
+ {% load plugins %}
4
+ {% load host %}
5
+
6
+ {% block content %}
7
+ <div class="row mb-3">
8
+ <div class="col col-md-6">
9
+ <div class="card">
10
+ <h2 class="card-header">Registry</h2>
11
+ <table class="table table-hover attr-table">
12
+ <tr>
13
+ <th scope="row">Host</th>
14
+ <td><a href="{{ object.host.get_absolute_url }}">{{ object.host }}</a></td>
15
+ </tr>
16
+ <tr>
17
+ <th scope="row">Name</th>
18
+ <td>{{ object.name }}</td>
19
+ </tr>
20
+ <tr>
21
+ <th scope="row">Server Address</th>
22
+ <td>{{ object.serveraddress }}</td>
23
+ </tr>
24
+ <tr>
25
+ <th scope="row">username</th>
26
+ <td>{{ object.username|placeholder }}</td>
27
+ </tr>
28
+ <tr>
29
+ <th scope="row">email</th>
30
+ <td>{{ object.email|placeholder }}</td>
31
+ </tr>
32
+ </table>
33
+ </div>
34
+ {% include 'inc/panels/custom_fields.html' %}
35
+ {% include 'inc/panels/tags.html' %}
36
+ {% plugin_left_page object %}
37
+ </div>
38
+ <div class="col col-md-6">
39
+ {% include 'inc/panels/related_objects.html' with filter_name='registry_id' %}
40
+ {% plugin_right_page object %}
41
+ </div>
42
+ </div>
43
+ <div class="row">
44
+ <div class="col col-md-12">
45
+ <div class="card">
46
+ <h2 class="card-header">
47
+ Images
48
+ {% if perms.netbox_docker_plugin.add_image %}
49
+ <div class="card-actions">
50
+ <a href="{% url 'plugins:netbox_docker_plugin:image_add' %}?registry={{ object.pk }}&host={{ object.host_id }}&return_url={{ object.get_absolute_url }}" class="btn btn-ghost-primary btn-sm">
51
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add an Image
52
+ </a>
53
+ </div>
54
+ {% endif %}
55
+ </h2>
56
+ {% htmx_table 'plugins:netbox_docker_plugin:image_list' registry_id=object.pk %}
57
+ </div>
58
+ {% plugin_full_width_page object %}
59
+ </div>
60
+ </div>
61
+ {% endblock content %}