netbox-docker-plugin 5.2.0__tar.gz → 5.3.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 (153) hide show
  1. {netbox_docker_plugin-5.2.0/netbox_docker_plugin.egg-info → netbox_docker_plugin-5.3.0}/PKG-INFO +1 -1
  2. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/__init__.py +1 -1
  3. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/api/serializers.py +5 -0
  4. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/filtersets.py +11 -0
  5. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/image.py +39 -1
  6. netbox_docker_plugin-5.3.0/netbox_docker_plugin/migrations/1045_image_tenant_image_tenant_group.py +38 -0
  7. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/models/image.py +15 -0
  8. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tables.py +6 -0
  9. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/image.html +25 -0
  10. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/image/test_image_api.py +13 -1
  11. netbox_docker_plugin-5.3.0/netbox_docker_plugin/tests/image/test_image_filtersets.py +89 -0
  12. netbox_docker_plugin-5.3.0/netbox_docker_plugin/tests/image/test_image_tenancy.py +121 -0
  13. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/image/test_image_views.py +13 -2
  14. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0/netbox_docker_plugin.egg-info}/PKG-INFO +1 -1
  15. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin.egg-info/SOURCES.txt +3 -0
  16. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/pyproject.toml +1 -1
  17. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/LICENSE +0 -0
  18. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/MANIFEST.in +0 -0
  19. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/README.md +0 -0
  20. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/api/__init__.py +0 -0
  21. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/api/renderers.py +0 -0
  22. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/api/urls.py +0 -0
  23. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/api/views.py +0 -0
  24. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/__init__.py +0 -0
  25. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/bind.py +0 -0
  26. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/container.py +0 -0
  27. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/device.py +0 -0
  28. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/env.py +0 -0
  29. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/host.py +0 -0
  30. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/label.py +0 -0
  31. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/log_driver_option.py +0 -0
  32. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/mount.py +0 -0
  33. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/network.py +0 -0
  34. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/network_setting.py +0 -0
  35. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/port.py +0 -0
  36. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/registry.py +0 -0
  37. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/sysctl.py +0 -0
  38. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/forms/volume.py +0 -0
  39. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0001_initial.py +0 -0
  40. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0002_image.py +0 -0
  41. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0003_image_size.py +0 -0
  42. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0004_volume.py +0 -0
  43. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0005_network.py +0 -0
  44. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0006_container_port_mount_label_env_and_more.py +0 -0
  45. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0007_remove_container_netbox_docker_plugin_container_unique_name_host__and_more.py +0 -0
  46. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0008_alter_network_unique_together_network_networkid_and_more.py +0 -0
  47. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0009_remove_container_network_networksettings_and_more.py +0 -0
  48. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0010_container_containerid_and_more.py +0 -0
  49. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0011_host_token.py +0 -0
  50. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0012_host_state.py +0 -0
  51. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0013_host_netbox_url.py +0 -0
  52. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0014_container_operation.py +0 -0
  53. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0015_remove_mount_netbox_docker_plugin_mount_unique_volume_and_more.py +0 -0
  54. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0016_alter_env_value.py +0 -0
  55. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0017_network_state.py +0 -0
  56. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0018_alter_mount_volume_alter_networksetting_network.py +0 -0
  57. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0019_host_agent_version_host_docker_api_version.py +0 -0
  58. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0020_container_hostname.py +0 -0
  59. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0021_registry_and_more.py +0 -0
  60. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0022_bind_bind_netbox_docker_plugin_bind_unique_bind.py +0 -0
  61. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0023_delete_hosts.py +0 -0
  62. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0024_registry_host_alter_registry_name_and_more.py +0 -0
  63. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0025_alter_image_version.py +0 -0
  64. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0026_image_digest.py +0 -0
  65. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0027_container_restart_policy.py +0 -0
  66. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0028_mount_and_bind_read_only.py +0 -0
  67. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0029_alter_container_state.py +0 -0
  68. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0030_alter_container_containerid_alter_container_hostname_and_more.py +0 -0
  69. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0031_container_cap_add.py +0 -0
  70. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0032_device_and_more.py +0 -0
  71. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0033_host_operation.py +0 -0
  72. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0034_volume_max_size.py +0 -0
  73. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0035_container_log_driver_logdriveroption.py +0 -0
  74. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0036_alter_container_log_driver.py +0 -0
  75. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0037_alter_env_value.py +0 -0
  76. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/0038_container_cmd.py +0 -0
  77. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/1039_alter_port_public_port.py +0 -0
  78. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/1040_alter_container_log_driver.py +0 -0
  79. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/1041_sysctl.py +0 -0
  80. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/1042_registry_username_max_length.py +0 -0
  81. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/1043_container_cap_drop_container_extra_hosts_and_more.py +0 -0
  82. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/1044_host_virtual_machine.py +0 -0
  83. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/migrations/__init__.py +0 -0
  84. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/models/__init__.py +0 -0
  85. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/models/container.py +0 -0
  86. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/models/host.py +0 -0
  87. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/models/network.py +0 -0
  88. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/models/registry.py +0 -0
  89. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/models/volume.py +0 -0
  90. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/navigation.py +0 -0
  91. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/signals.py +0 -0
  92. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/template_content.py +0 -0
  93. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/container-exec.html +0 -0
  94. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/container-layout.html +0 -0
  95. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/container-logs.html +0 -0
  96. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/container.html +0 -0
  97. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/host-graph.html +0 -0
  98. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/host.html +0 -0
  99. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/network.html +0 -0
  100. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/registry.html +0 -0
  101. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/virtual_machine_host_table.html +0 -0
  102. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templates/netbox_docker_plugin/volume.html +0 -0
  103. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templatetags/__init__.py +0 -0
  104. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/templatetags/host.py +0 -0
  105. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/__init__.py +0 -0
  106. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/base.py +0 -0
  107. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/__init__.py +0 -0
  108. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/test_container_actions.py +0 -0
  109. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/test_container_api.py +0 -0
  110. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/test_container_api_exec.py +0 -0
  111. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/test_container_delete.py +0 -0
  112. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/test_container_operation_view.py +0 -0
  113. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/test_container_validation.py +0 -0
  114. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/container/test_container_views.py +0 -0
  115. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/host/__init__.py +0 -0
  116. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/host/test_host_api.py +0 -0
  117. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/host/test_host_views.py +0 -0
  118. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/host/test_host_virtual_machine.py +0 -0
  119. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/host/test_replace_password.py +0 -0
  120. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/image/__init__.py +0 -0
  121. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/image/test_force_pull_image_with_special_cf.py +0 -0
  122. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/network/__init__.py +0 -0
  123. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/network/test_network_api.py +0 -0
  124. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/network/test_network_views.py +0 -0
  125. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/registry/__init__.py +0 -0
  126. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/registry/test_registry_api.py +0 -0
  127. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/registry/test_registry_views.py +0 -0
  128. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/test_init.py +0 -0
  129. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/volume/__init__.py +0 -0
  130. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/volume/test_volume_api.py +0 -0
  131. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/tests/volume/test_volume_views.py +0 -0
  132. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/urls.py +0 -0
  133. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/utilities/__init__.py +0 -0
  134. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/__init__.py +0 -0
  135. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/bind.py +0 -0
  136. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/container.py +0 -0
  137. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/device.py +0 -0
  138. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/env.py +0 -0
  139. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/host.py +0 -0
  140. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/image.py +0 -0
  141. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/label.py +0 -0
  142. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/log_driver_option.py +0 -0
  143. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/mount.py +0 -0
  144. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/network.py +0 -0
  145. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/network_setting.py +0 -0
  146. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/port.py +0 -0
  147. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/registry.py +0 -0
  148. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/sysctl.py +0 -0
  149. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin/views/volume.py +0 -0
  150. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin.egg-info/dependency_links.txt +0 -0
  151. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin.egg-info/requires.txt +0 -0
  152. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/netbox_docker_plugin.egg-info/top_level.txt +0 -0
  153. {netbox_docker_plugin-5.2.0 → netbox_docker_plugin-5.3.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netbox-docker-plugin
3
- Version: 5.2.0
3
+ Version: 5.3.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
@@ -11,7 +11,7 @@ class NetBoxDockerConfig(PluginConfig):
11
11
  name = "netbox_docker_plugin"
12
12
  verbose_name = " NetBox Docker Plugin"
13
13
  description = "Manage Docker"
14
- version = "5.2.0"
14
+ version = "5.3.0"
15
15
  base_url = "docker"
16
16
  min_version = "4.5.0"
17
17
  author = "Vincent Simonin <vincent@saashup.com>, David Delassus <david.jose.delassus@gmail.com>"
@@ -6,6 +6,7 @@ from rest_framework import serializers
6
6
  from utilities.query import dict_to_filter_params
7
7
  from users.models import Token
8
8
  from virtualization.api.serializers import VirtualMachineSerializer
9
+ from tenancy.api.serializers_.tenants import TenantSerializer, TenantGroupSerializer
9
10
  from netbox.api.serializers import NetBoxModelSerializer, WritableNestedSerializer
10
11
  from ..models.host import Host
11
12
  from ..models.image import Image
@@ -240,6 +241,8 @@ class ImageSerializer(NetBoxModelSerializer):
240
241
  url = serializers.HyperlinkedIdentityField(
241
242
  view_name="plugins-api:netbox_docker_plugin-api:image-detail"
242
243
  )
244
+ tenant_group = TenantGroupSerializer(nested=True, required=False, allow_null=True)
245
+ tenant = TenantSerializer(nested=True, required=False, allow_null=True)
243
246
  host = NestedHostSerializer()
244
247
  containers = NestedContainerSerializer(many=True, read_only=True)
245
248
  registry = NestedRegistrySerializer()
@@ -252,6 +255,8 @@ class ImageSerializer(NetBoxModelSerializer):
252
255
  "id",
253
256
  "url",
254
257
  "display",
258
+ "tenant_group",
259
+ "tenant",
255
260
  "host",
256
261
  "name",
257
262
  "version",
@@ -2,6 +2,7 @@
2
2
 
3
3
  from django_filters import filters, ModelMultipleChoiceFilter
4
4
  from django.db.models import Q
5
+ from tenancy.models import Tenant, TenantGroup
5
6
  from netbox.filtersets import NetBoxModelFilterSet, BaseFilterSet
6
7
  from .models.host import Host
7
8
  from .models.image import Image
@@ -77,6 +78,16 @@ class ImageFilterSet(NetBoxModelFilterSet):
77
78
  """Image filterset definition class"""
78
79
 
79
80
  name = filters.CharFilter(lookup_expr="icontains")
81
+ tenant_group_id = ModelMultipleChoiceFilter(
82
+ field_name="tenant_group_id",
83
+ queryset=TenantGroup.objects.all(),
84
+ label="Tenant Group (ID)",
85
+ )
86
+ tenant_id = ModelMultipleChoiceFilter(
87
+ field_name="tenant_id",
88
+ queryset=Tenant.objects.all(),
89
+ label="Tenant (ID)",
90
+ )
80
91
  host_id = ModelMultipleChoiceFilter(
81
92
  field_name="host_id",
82
93
  queryset=Host.objects.all(),
@@ -7,6 +7,7 @@ from utilities.forms.fields import (
7
7
  DynamicModelMultipleChoiceField,
8
8
  DynamicModelChoiceField,
9
9
  )
10
+ from tenancy.models import Tenant, TenantGroup
10
11
  from netbox.forms import (
11
12
  NetBoxModelForm,
12
13
  NetBoxModelImportForm,
@@ -21,6 +22,13 @@ from ..models.registry import Registry
21
22
  class ImageForm(NetBoxModelForm):
22
23
  """Image form definition class"""
23
24
 
25
+ tenant_group = DynamicModelChoiceField(
26
+ label="Tenant Group", queryset=TenantGroup.objects.all(), required=False
27
+ )
28
+ tenant = DynamicModelChoiceField(
29
+ label="Tenant", queryset=Tenant.objects.all(), required=False,
30
+ query_params={"group_id": "$tenant_group"},
31
+ )
24
32
  host = DynamicModelChoiceField(
25
33
  label="Host", queryset=Host.objects.all(), required=True
26
34
  )
@@ -31,11 +39,18 @@ class ImageForm(NetBoxModelForm):
31
39
  query_params={"host_id": "$host"},
32
40
  )
33
41
 
42
+ fieldsets = (
43
+ FieldSet("host", "registry", "name", "version", "tags", name="General"),
44
+ FieldSet("tenant_group", "tenant", name="Tenancy"),
45
+ )
46
+
34
47
  class Meta:
35
48
  """Image form definition Meta class"""
36
49
 
37
50
  model = Image
38
51
  fields = (
52
+ "tenant_group",
53
+ "tenant",
39
54
  "host",
40
55
  "registry",
41
56
  "name",
@@ -44,6 +59,8 @@ class ImageForm(NetBoxModelForm):
44
59
  )
45
60
  labels = {
46
61
  "name": "Name",
62
+ "tenant_group": "Tenant Group",
63
+ "tenant": "Tenant",
47
64
  "host": "Host",
48
65
  "registry": "Registry",
49
66
  "version": "Version",
@@ -54,6 +71,16 @@ class ImageFilterForm(NetBoxModelFilterSetForm):
54
71
  """Image filter form definition class"""
55
72
 
56
73
  model = Image
74
+ tenant_group_id = DynamicModelMultipleChoiceField(
75
+ queryset=TenantGroup.objects.all(),
76
+ required=False,
77
+ label="Tenant Group",
78
+ )
79
+ tenant_id = DynamicModelMultipleChoiceField(
80
+ queryset=Tenant.objects.all(),
81
+ required=False,
82
+ label="Tenant",
83
+ )
57
84
  name = forms.CharField(label="Name", max_length=256, min_length=1, required=False)
58
85
  version = forms.CharField(
59
86
  label="Version", max_length=256, min_length=1, required=False
@@ -97,9 +124,20 @@ class ImageImportForm(NetBoxModelImportForm):
97
124
  class ImageBulkEditForm(NetBoxModelBulkEditForm):
98
125
  """Image bulk edit form definition class"""
99
126
 
127
+ tenant_group = DynamicModelChoiceField(
128
+ queryset=TenantGroup.objects.all(),
129
+ required=False,
130
+ )
131
+ tenant = DynamicModelChoiceField(
132
+ queryset=Tenant.objects.all(),
133
+ required=False,
134
+ )
100
135
  version = forms.CharField(
101
136
  required=False,
102
137
  )
103
138
 
104
139
  model = Image
105
- fieldsets = (FieldSet("version", name="General"),)
140
+ fieldsets = (
141
+ FieldSet("version", name="General"),
142
+ FieldSet("tenant_group", "tenant", name="Tenancy"),
143
+ )
@@ -0,0 +1,38 @@
1
+ # pylint: disable=C0103
2
+ """Migration file"""
3
+
4
+ import django.db.models.deletion
5
+ from django.db import migrations, models
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+ """Migration file"""
10
+
11
+ dependencies = [
12
+ ("netbox_docker_plugin", "1044_host_virtual_machine"),
13
+ ]
14
+
15
+ operations = [
16
+ migrations.AddField(
17
+ model_name="image",
18
+ name="tenant",
19
+ field=models.ForeignKey(
20
+ blank=True,
21
+ null=True,
22
+ on_delete=django.db.models.deletion.SET_NULL,
23
+ related_name="images",
24
+ to="tenancy.tenant",
25
+ ),
26
+ ),
27
+ migrations.AddField(
28
+ model_name="image",
29
+ name="tenant_group",
30
+ field=models.ForeignKey(
31
+ blank=True,
32
+ null=True,
33
+ on_delete=django.db.models.deletion.SET_NULL,
34
+ related_name="images",
35
+ to="tenancy.tenantgroup",
36
+ ),
37
+ ),
38
+ ]
@@ -8,6 +8,7 @@ from django.core.validators import (
8
8
  MinValueValidator,
9
9
  MaxValueValidator,
10
10
  )
11
+ from tenancy.models import Tenant, TenantGroup
11
12
  from netbox.models import NetBoxModel
12
13
  from .host import Host
13
14
  from .registry import Registry
@@ -16,6 +17,20 @@ from .registry import Registry
16
17
  class Image(NetBoxModel):
17
18
  """Image definition class"""
18
19
 
20
+ tenant_group = models.ForeignKey(
21
+ TenantGroup,
22
+ on_delete=models.SET_NULL,
23
+ related_name="images",
24
+ blank=True,
25
+ null=True,
26
+ )
27
+ tenant = models.ForeignKey(
28
+ Tenant,
29
+ on_delete=models.SET_NULL,
30
+ related_name="images",
31
+ blank=True,
32
+ null=True,
33
+ )
19
34
  host = models.ForeignKey(Host, on_delete=models.CASCADE, related_name="images")
20
35
  registry = models.ForeignKey(
21
36
  Registry,
@@ -141,6 +141,8 @@ class MinRegistryTable(NetBoxTable):
141
141
  class ImageTable(NetBoxTable):
142
142
  """Image Table definition class"""
143
143
 
144
+ tenant_group = tables.Column(linkify=True)
145
+ tenant = tables.Column(linkify=True)
144
146
  host = tables.Column(linkify=True)
145
147
  registry = tables.Column(linkify=True)
146
148
  name = tables.Column(linkify=True)
@@ -162,6 +164,8 @@ class ImageTable(NetBoxTable):
162
164
  fields = (
163
165
  "pk",
164
166
  "id",
167
+ "tenant_group",
168
+ "tenant",
165
169
  "host",
166
170
  "name",
167
171
  "version",
@@ -172,6 +176,8 @@ class ImageTable(NetBoxTable):
172
176
  "tags",
173
177
  )
174
178
  default_columns = (
179
+ "tenant_group",
180
+ "tenant",
175
181
  "host",
176
182
  "name",
177
183
  "version",
@@ -103,6 +103,31 @@
103
103
  </tr>
104
104
  </table>
105
105
  </div>
106
+ <div class="card">
107
+ <h2 class="card-header">Tenancy</h2>
108
+ <table class="table table-hover attr-table">
109
+ <tr>
110
+ <th scope="row">Tenant Group</th>
111
+ <td>
112
+ {% if object.tenant_group %}
113
+ <a href="{{ object.tenant_group.get_absolute_url }}">{{ object.tenant_group }}</a>
114
+ {% else %}
115
+ {{ None|placeholder }}
116
+ {% endif %}
117
+ </td>
118
+ </tr>
119
+ <tr>
120
+ <th scope="row">Tenant</th>
121
+ <td>
122
+ {% if object.tenant %}
123
+ <a href="{{ object.tenant.get_absolute_url }}">{{ object.tenant }}</a>
124
+ {% else %}
125
+ {{ None|placeholder }}
126
+ {% endif %}
127
+ </td>
128
+ </tr>
129
+ </table>
130
+ </div>
106
131
  {% include 'inc/panels/custom_fields.html' %}
107
132
  {% include 'inc/panels/tags.html' %}
108
133
  {% plugin_left_page object %}
@@ -4,6 +4,7 @@ import requests_mock
4
4
  from django.urls import reverse
5
5
  from core.models import ObjectType
6
6
  from rest_framework import status
7
+ from tenancy.models import Tenant, TenantGroup
7
8
  from users.models import ObjectPermission
8
9
  from utilities.testing import APIViewTestCases
9
10
  from netbox_docker_plugin.models.host import Host
@@ -41,8 +42,17 @@ class ImageApiTestCase(
41
42
 
42
43
  registry = Registry.objects.filter(name="dockerhub")[0]
43
44
 
45
+ tenant_group = TenantGroup(name="Group 1", slug="group-1")
46
+ tenant_group.save()
47
+ tenant = Tenant.objects.create(
48
+ name="Tenant 1", slug="tenant-1", group=tenant_group
49
+ )
50
+
44
51
  Image.objects.create(host=host1, name="image1", registry=registry)
45
- Image.objects.create(host=host1, name="image2", registry=registry)
52
+ Image.objects.create(
53
+ host=host1, name="image2", registry=registry,
54
+ tenant=tenant, tenant_group=tenant_group,
55
+ )
46
56
  Image.objects.create(
47
57
  host=host2,
48
58
  name="image3",
@@ -60,6 +70,8 @@ class ImageApiTestCase(
60
70
  "host": host1.pk,
61
71
  "name": "image5",
62
72
  "registry": registry.pk,
73
+ "tenant": tenant.pk,
74
+ "tenant_group": tenant_group.pk,
63
75
  },
64
76
  {
65
77
  "host": host2.pk,
@@ -0,0 +1,89 @@
1
+ """Image filterset tests for tenant and tenant_group filters."""
2
+
3
+ from django.test import TestCase
4
+
5
+ from tenancy.models import Tenant, TenantGroup
6
+
7
+ from netbox_docker_plugin.filtersets import ImageFilterSet
8
+ from netbox_docker_plugin.models.host import Host
9
+ from netbox_docker_plugin.models.image import Image
10
+ from netbox_docker_plugin.models.registry import Registry
11
+
12
+
13
+ class ImageFilterSetTenancyTestCase(TestCase):
14
+ """Test ImageFilterSet filtering by tenant and tenant_group."""
15
+
16
+ queryset = Image.objects.all()
17
+ filterset = ImageFilterSet
18
+
19
+ @classmethod
20
+ def setUpTestData(cls):
21
+ host = Host.objects.create(endpoint="http://localhost:8080", name="host1")
22
+ registry = Registry.objects.filter(name="dockerhub")[0]
23
+
24
+ tenant_groups = (
25
+ TenantGroup(name="Tenant Group 1", slug="tenant-group-1"),
26
+ TenantGroup(name="Tenant Group 2", slug="tenant-group-2"),
27
+ TenantGroup(name="Tenant Group 3", slug="tenant-group-3"),
28
+ )
29
+ for tg in tenant_groups:
30
+ tg.save()
31
+
32
+ tenants = (
33
+ Tenant(name="Tenant 1", slug="tenant-1", group=tenant_groups[0]),
34
+ Tenant(name="Tenant 2", slug="tenant-2", group=tenant_groups[1]),
35
+ Tenant(name="Tenant 3", slug="tenant-3", group=tenant_groups[2]),
36
+ )
37
+ Tenant.objects.bulk_create(tenants)
38
+
39
+ unassigned_group = TenantGroup(name="Unassigned Group", slug="unassigned-group")
40
+ unassigned_group.save()
41
+ cls.unassigned_tenant = Tenant.objects.create(
42
+ name="Unassigned Tenant", slug="unassigned-tenant"
43
+ )
44
+
45
+ Image.objects.create(
46
+ name="image1", host=host, registry=registry,
47
+ tenant=tenants[0], tenant_group=tenant_groups[0],
48
+ )
49
+ Image.objects.create(
50
+ name="image2", host=host, registry=registry,
51
+ tenant=tenants[1], tenant_group=tenant_groups[1],
52
+ )
53
+ Image.objects.create(
54
+ name="image3", host=host, registry=registry,
55
+ tenant=tenants[2], tenant_group=tenant_groups[2],
56
+ )
57
+
58
+ def test_filter_by_tenant_id(self):
59
+ """Filter images by one or more tenant IDs."""
60
+ tenants = Tenant.objects.all()[:2]
61
+ params = {"tenant_id": [tenants[0].pk, tenants[1].pk]}
62
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
63
+
64
+ def test_filter_by_single_tenant_id(self):
65
+ """Filter images by a single tenant ID returns exactly one result."""
66
+ tenant = Tenant.objects.get(slug="tenant-1")
67
+ params = {"tenant_id": [tenant.pk]}
68
+ qs = self.filterset(params, self.queryset).qs
69
+ self.assertEqual(qs.count(), 1)
70
+ self.assertEqual(qs.first().name, "image1")
71
+
72
+ def test_filter_by_tenant_group_id(self):
73
+ """Filter images by one or more tenant group IDs."""
74
+ groups = TenantGroup.objects.all()[:2]
75
+ params = {"tenant_group_id": [groups[0].pk, groups[1].pk]}
76
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
77
+
78
+ def test_filter_by_single_tenant_group_id(self):
79
+ """Filter images by a single tenant group ID returns exactly one result."""
80
+ group = TenantGroup.objects.get(slug="tenant-group-2")
81
+ params = {"tenant_group_id": [group.pk]}
82
+ qs = self.filterset(params, self.queryset).qs
83
+ self.assertEqual(qs.count(), 1)
84
+ self.assertEqual(qs.first().name, "image2")
85
+
86
+ def test_filter_no_match(self):
87
+ """Filtering by a tenant with no images assigned returns an empty queryset."""
88
+ params = {"tenant_id": [self.unassigned_tenant.pk]}
89
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0)
@@ -0,0 +1,121 @@
1
+ """Image ↔ Tenant / TenantGroup relationship tests."""
2
+
3
+ from django.test import TestCase
4
+
5
+ from tenancy.models import Tenant, TenantGroup
6
+
7
+ from netbox_docker_plugin.models.host import Host
8
+ from netbox_docker_plugin.models.image import Image
9
+ from netbox_docker_plugin.models.registry import Registry
10
+
11
+
12
+ class ImageTenancyTestCase(TestCase):
13
+ """Test the optional FK links between Image, Tenant and TenantGroup."""
14
+
15
+ @classmethod
16
+ def setUpTestData(cls):
17
+ cls.host = Host.objects.create(endpoint="http://localhost:8080", name="host1")
18
+ cls.registry = Registry.objects.filter(name="dockerhub")[0]
19
+ cls.tenant_group = TenantGroup(name="Group 1", slug="group-1")
20
+ cls.tenant_group.save()
21
+ cls.tenant = Tenant.objects.create(
22
+ name="Tenant 1", slug="tenant-1", group=cls.tenant_group
23
+ )
24
+
25
+ def test_image_without_tenancy(self):
26
+ """An Image with no tenant or group is valid."""
27
+ image = Image.objects.create(
28
+ name="img-no-tenant", host=self.host, registry=self.registry
29
+ )
30
+ self.assertIsNone(image.tenant)
31
+ self.assertIsNone(image.tenant_group)
32
+
33
+ def test_image_with_tenant(self):
34
+ """An Image can be linked to a Tenant."""
35
+ image = Image.objects.create(
36
+ name="img-tenant",
37
+ host=self.host,
38
+ registry=self.registry,
39
+ tenant=self.tenant,
40
+ )
41
+ image.refresh_from_db()
42
+ self.assertEqual(image.tenant, self.tenant)
43
+
44
+ def test_image_with_tenant_group(self):
45
+ """An Image can be linked to a TenantGroup."""
46
+ image = Image.objects.create(
47
+ name="img-group",
48
+ host=self.host,
49
+ registry=self.registry,
50
+ tenant_group=self.tenant_group,
51
+ )
52
+ image.refresh_from_db()
53
+ self.assertEqual(image.tenant_group, self.tenant_group)
54
+
55
+ def test_image_with_tenant_and_tenant_group(self):
56
+ """An Image can be linked to both a Tenant and a TenantGroup simultaneously."""
57
+ image = Image.objects.create(
58
+ name="img-both",
59
+ host=self.host,
60
+ registry=self.registry,
61
+ tenant=self.tenant,
62
+ tenant_group=self.tenant_group,
63
+ )
64
+ image.refresh_from_db()
65
+ self.assertEqual(image.tenant, self.tenant)
66
+ self.assertEqual(image.tenant_group, self.tenant_group)
67
+
68
+ def test_set_null_on_tenant_delete(self):
69
+ """Deleting a Tenant sets the Image.tenant FK to NULL."""
70
+ tenant = Tenant.objects.create(name="Tenant del", slug="tenant-del")
71
+ image = Image.objects.create(
72
+ name="img-tenant-del",
73
+ host=self.host,
74
+ registry=self.registry,
75
+ tenant=tenant,
76
+ )
77
+ tenant.delete()
78
+ image.refresh_from_db()
79
+ self.assertIsNone(image.tenant)
80
+
81
+ def test_set_null_on_tenant_group_delete(self):
82
+ """Deleting a TenantGroup sets the Image.tenant_group FK to NULL."""
83
+ group = TenantGroup(name="Group del", slug="group-del")
84
+ group.save()
85
+ image = Image.objects.create(
86
+ name="img-group-del",
87
+ host=self.host,
88
+ registry=self.registry,
89
+ tenant_group=group,
90
+ )
91
+ group.delete()
92
+ image.refresh_from_db()
93
+ self.assertIsNone(image.tenant_group)
94
+
95
+ def test_unlink_tenant(self):
96
+ """Setting tenant to None removes the link without deleting the Tenant."""
97
+ image = Image.objects.create(
98
+ name="img-unlink-tenant",
99
+ host=self.host,
100
+ registry=self.registry,
101
+ tenant=self.tenant,
102
+ )
103
+ image.tenant = None
104
+ image.save()
105
+ image.refresh_from_db()
106
+ self.assertIsNone(image.tenant)
107
+ self.assertTrue(Tenant.objects.filter(pk=self.tenant.pk).exists())
108
+
109
+ def test_unlink_tenant_group(self):
110
+ """Setting tenant_group to None removes the link without deleting the TenantGroup."""
111
+ image = Image.objects.create(
112
+ name="img-unlink-group",
113
+ host=self.host,
114
+ registry=self.registry,
115
+ tenant_group=self.tenant_group,
116
+ )
117
+ image.tenant_group = None
118
+ image.save()
119
+ image.refresh_from_db()
120
+ self.assertIsNone(image.tenant_group)
121
+ self.assertTrue(TenantGroup.objects.filter(pk=self.tenant_group.pk).exists())
@@ -1,5 +1,6 @@
1
1
  """Image Views Test Case"""
2
2
 
3
+ from tenancy.models import Tenant, TenantGroup
3
4
  from utilities.testing import ViewTestCases
4
5
  from netbox_docker_plugin.tests.base import BaseModelViewTestCase
5
6
  from netbox_docker_plugin.models.host import Host
@@ -22,6 +23,12 @@ class ImageViewsTestCase(
22
23
 
23
24
  registry = Registry.objects.filter(name="dockerhub")[0]
24
25
 
26
+ tenant_group = TenantGroup(name="Group 1", slug="group-1")
27
+ tenant_group.save()
28
+ tenant = Tenant.objects.create(
29
+ name="Tenant 1", slug="tenant-1", group=tenant_group
30
+ )
31
+
25
32
  image1 = Image.objects.create(name="image1", host=host1, registry=registry)
26
33
  image2 = Image.objects.create(name="image2", host=host2, registry=registry)
27
34
  image3 = Image.objects.create(name="image3", host=host3, registry=registry)
@@ -29,9 +36,10 @@ class ImageViewsTestCase(
29
36
  cls.form_data = {
30
37
  "name": "image1",
31
38
  "version": "v1.2.3",
32
- "provider": "github",
33
39
  "host": host1.pk,
34
40
  "registry": registry.pk,
41
+ "tenant_group": tenant_group.pk,
42
+ "tenant": tenant.pk,
35
43
  }
36
44
 
37
45
  cls.csv_data = (
@@ -41,7 +49,10 @@ class ImageViewsTestCase(
41
49
  f"image6,v1.2.3,{registry.pk},{host3.pk}",
42
50
  )
43
51
 
44
- cls.bulk_edit_data = {"version": "v1.0.0"}
52
+ cls.bulk_edit_data = {
53
+ "version": "v1.0.0",
54
+ "tenant": tenant.pk,
55
+ }
45
56
 
46
57
  cls.csv_update_data = (
47
58
  "id,version,registry",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netbox-docker-plugin
3
- Version: 5.2.0
3
+ Version: 5.3.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
@@ -79,6 +79,7 @@ netbox_docker_plugin/migrations/1041_sysctl.py
79
79
  netbox_docker_plugin/migrations/1042_registry_username_max_length.py
80
80
  netbox_docker_plugin/migrations/1043_container_cap_drop_container_extra_hosts_and_more.py
81
81
  netbox_docker_plugin/migrations/1044_host_virtual_machine.py
82
+ netbox_docker_plugin/migrations/1045_image_tenant_image_tenant_group.py
82
83
  netbox_docker_plugin/migrations/__init__.py
83
84
  netbox_docker_plugin/models/__init__.py
84
85
  netbox_docker_plugin/models/container.py
@@ -119,6 +120,8 @@ netbox_docker_plugin/tests/host/test_replace_password.py
119
120
  netbox_docker_plugin/tests/image/__init__.py
120
121
  netbox_docker_plugin/tests/image/test_force_pull_image_with_special_cf.py
121
122
  netbox_docker_plugin/tests/image/test_image_api.py
123
+ netbox_docker_plugin/tests/image/test_image_filtersets.py
124
+ netbox_docker_plugin/tests/image/test_image_tenancy.py
122
125
  netbox_docker_plugin/tests/image/test_image_views.py
123
126
  netbox_docker_plugin/tests/network/__init__.py
124
127
  netbox_docker_plugin/tests/network/test_network_api.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "netbox-docker-plugin"
7
- version = "5.2.0"
7
+ version = "5.3.0"
8
8
  authors = [
9
9
  { name="Vincent Simonin", email="vincent@saashup.com" },
10
10
  { name="David Delassus", email="david.jose.delassus@gmail.com" }