isar 1.12.4__tar.gz → 1.12.5__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.

Potentially problematic release.


This version of isar might be problematic. Click here for more details.

Files changed (202) hide show
  1. {isar-1.12.4 → isar-1.12.5}/PKG-INFO +1 -1
  2. {isar-1.12.4 → isar-1.12.5}/main.py +8 -3
  3. {isar-1.12.4 → isar-1.12.5}/radixconfig.yml +1 -1
  4. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/api.py +6 -7
  5. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/security/authentication.py +3 -5
  6. {isar-1.12.4 → isar-1.12.5}/src/isar/config/settings.py +9 -5
  7. {isar-1.12.4 → isar-1.12.5}/src/isar.egg-info/PKG-INFO +1 -1
  8. {isar-1.12.4 → isar-1.12.5}/.dockerignore +0 -0
  9. {isar-1.12.4 → isar-1.12.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  10. {isar-1.12.4 → isar-1.12.5}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  11. {isar-1.12.4 → isar-1.12.5}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  12. {isar-1.12.4 → isar-1.12.5}/.github/release.yml +0 -0
  13. {isar-1.12.4 → isar-1.12.5}/.github/workflows/project_automations.yml +0 -0
  14. {isar-1.12.4 → isar-1.12.5}/.github/workflows/publish_isar_base_image.yml +0 -0
  15. {isar-1.12.4 → isar-1.12.5}/.github/workflows/pythonpackage.yml +0 -0
  16. {isar-1.12.4 → isar-1.12.5}/.github/workflows/pythonpublish.yml +0 -0
  17. {isar-1.12.4 → isar-1.12.5}/.github/workflows/repository_dispatch_on_merge.yml +0 -0
  18. {isar-1.12.4 → isar-1.12.5}/.github/workflows/stale.yml +0 -0
  19. {isar-1.12.4 → isar-1.12.5}/.gitignore +0 -0
  20. {isar-1.12.4 → isar-1.12.5}/.pre-commit-config.yaml +0 -0
  21. {isar-1.12.4 → isar-1.12.5}/Dockerfile +0 -0
  22. {isar-1.12.4 → isar-1.12.5}/LICENSE +0 -0
  23. {isar-1.12.4 → isar-1.12.5}/README.md +0 -0
  24. {isar-1.12.4 → isar-1.12.5}/docker-compose-turtlebot.yml +0 -0
  25. {isar-1.12.4 → isar-1.12.5}/docker-compose.yml +0 -0
  26. {isar-1.12.4 → isar-1.12.5}/docs/Makefile +0 -0
  27. {isar-1.12.4 → isar-1.12.5}/docs/make.bat +0 -0
  28. {isar-1.12.4 → isar-1.12.5}/docs/rst_processing.py +0 -0
  29. {isar-1.12.4 → isar-1.12.5}/docs/source/conf.py +0 -0
  30. {isar-1.12.4 → isar-1.12.5}/docs/source/index.rst +0 -0
  31. {isar-1.12.4 → isar-1.12.5}/docs/source/readme_link.md +0 -0
  32. {isar-1.12.4 → isar-1.12.5}/docs/state_machine_diagram.png +0 -0
  33. {isar-1.12.4 → isar-1.12.5}/pyproject.toml +0 -0
  34. {isar-1.12.4 → isar-1.12.5}/setup.cfg +0 -0
  35. {isar-1.12.4 → isar-1.12.5}/setup.py +0 -0
  36. {isar-1.12.4 → isar-1.12.5}/src/isar/__init__.py +0 -0
  37. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/__init__.py +0 -0
  38. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/models/__init__.py +0 -0
  39. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/models/models.py +0 -0
  40. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/models/start_mission_definition.py +0 -0
  41. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/schedule/__init__.py +0 -0
  42. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/schedule/scheduling_controller.py +0 -0
  43. {isar-1.12.4 → isar-1.12.5}/src/isar/apis/security/__init__.py +0 -0
  44. {isar-1.12.4 → isar-1.12.5}/src/isar/config/__init__.py +0 -0
  45. {isar-1.12.4 → isar-1.12.5}/src/isar/config/certs/ca-cert.pem +0 -0
  46. {isar-1.12.4 → isar-1.12.5}/src/isar/config/configuration_error.py +0 -0
  47. {isar-1.12.4 → isar-1.12.5}/src/isar/config/keyvault/__init__.py +0 -0
  48. {isar-1.12.4 → isar-1.12.5}/src/isar/config/keyvault/keyvault_error.py +0 -0
  49. {isar-1.12.4 → isar-1.12.5}/src/isar/config/keyvault/keyvault_service.py +0 -0
  50. {isar-1.12.4 → isar-1.12.5}/src/isar/config/log.py +0 -0
  51. {isar-1.12.4 → isar-1.12.5}/src/isar/config/logging.conf +0 -0
  52. {isar-1.12.4 → isar-1.12.5}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  53. {isar-1.12.4 → isar-1.12.5}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  54. {isar-1.12.4 → isar-1.12.5}/src/isar/config/maps/default_map.json +0 -0
  55. {isar-1.12.4 → isar-1.12.5}/src/isar/config/maps/klab_b.json +0 -0
  56. {isar-1.12.4 → isar-1.12.5}/src/isar/config/maps/klab_compressor.json +0 -0
  57. {isar-1.12.4 → isar-1.12.5}/src/isar/config/maps/klab_turtlebot.json +0 -0
  58. {isar-1.12.4 → isar-1.12.5}/src/isar/config/maps/turtleworld.json +0 -0
  59. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
  60. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
  61. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
  62. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_missions/__init__.py +0 -0
  63. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_missions/default.json +0 -0
  64. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
  65. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_poses/__init__.py +0 -0
  66. {isar-1.12.4 → isar-1.12.5}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
  67. {isar-1.12.4 → isar-1.12.5}/src/isar/config/settings.env +0 -0
  68. {isar-1.12.4 → isar-1.12.5}/src/isar/mission_planner/__init__.py +0 -0
  69. {isar-1.12.4 → isar-1.12.5}/src/isar/mission_planner/echo_planner.py +0 -0
  70. {isar-1.12.4 → isar-1.12.5}/src/isar/mission_planner/local_planner.py +0 -0
  71. {isar-1.12.4 → isar-1.12.5}/src/isar/mission_planner/mission_planner_interface.py +0 -0
  72. {isar-1.12.4 → isar-1.12.5}/src/isar/mission_planner/sequential_task_selector.py +0 -0
  73. {isar-1.12.4 → isar-1.12.5}/src/isar/mission_planner/task_selector_interface.py +0 -0
  74. {isar-1.12.4 → isar-1.12.5}/src/isar/models/__init__.py +0 -0
  75. {isar-1.12.4 → isar-1.12.5}/src/isar/models/communication/__init__.py +0 -0
  76. {isar-1.12.4 → isar-1.12.5}/src/isar/models/communication/message.py +0 -0
  77. {isar-1.12.4 → isar-1.12.5}/src/isar/models/communication/queues/__init__.py +0 -0
  78. {isar-1.12.4 → isar-1.12.5}/src/isar/models/communication/queues/queue_io.py +0 -0
  79. {isar-1.12.4 → isar-1.12.5}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
  80. {isar-1.12.4 → isar-1.12.5}/src/isar/models/communication/queues/queues.py +0 -0
  81. {isar-1.12.4 → isar-1.12.5}/src/isar/models/communication/queues/status_queue.py +0 -0
  82. {isar-1.12.4 → isar-1.12.5}/src/isar/models/mission/__init__.py +0 -0
  83. {isar-1.12.4 → isar-1.12.5}/src/isar/models/mission/mission.py +0 -0
  84. {isar-1.12.4 → isar-1.12.5}/src/isar/models/mission/status.py +0 -0
  85. {isar-1.12.4 → isar-1.12.5}/src/isar/models/mission_metadata/__init__.py +0 -0
  86. {isar-1.12.4 → isar-1.12.5}/src/isar/models/mission_metadata/mission_metadata.py +0 -0
  87. {isar-1.12.4 → isar-1.12.5}/src/isar/modules.py +0 -0
  88. {isar-1.12.4 → isar-1.12.5}/src/isar/services/__init__.py +0 -0
  89. {isar-1.12.4 → isar-1.12.5}/src/isar/services/auth/__init__.py +0 -0
  90. {isar-1.12.4 → isar-1.12.5}/src/isar/services/auth/azure_credentials.py +0 -0
  91. {isar-1.12.4 → isar-1.12.5}/src/isar/services/readers/__init__.py +0 -0
  92. {isar-1.12.4 → isar-1.12.5}/src/isar/services/readers/base_reader.py +0 -0
  93. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/__init__.py +0 -0
  94. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
  95. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
  96. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
  97. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/mqtt/robot_status_publisher.py +0 -0
  98. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/request_handler.py +0 -0
  99. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/stid/__init__.py +0 -0
  100. {isar-1.12.4 → isar-1.12.5}/src/isar/services/service_connections/stid/stid_service.py +0 -0
  101. {isar-1.12.4 → isar-1.12.5}/src/isar/services/utilities/__init__.py +0 -0
  102. {isar-1.12.4 → isar-1.12.5}/src/isar/services/utilities/queue_utilities.py +0 -0
  103. {isar-1.12.4 → isar-1.12.5}/src/isar/services/utilities/scheduling_utilities.py +0 -0
  104. {isar-1.12.4 → isar-1.12.5}/src/isar/services/utilities/threaded_request.py +0 -0
  105. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/__init__.py +0 -0
  106. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/state_machine.py +0 -0
  107. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/__init__.py +0 -0
  108. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/idle.py +0 -0
  109. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/initialize.py +0 -0
  110. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/initiate_step.py +0 -0
  111. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/monitor.py +0 -0
  112. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/off.py +0 -0
  113. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/paused.py +0 -0
  114. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states/stop_step.py +0 -0
  115. {isar-1.12.4 → isar-1.12.5}/src/isar/state_machine/states_enum.py +0 -0
  116. {isar-1.12.4 → isar-1.12.5}/src/isar/storage/__init__.py +0 -0
  117. {isar-1.12.4 → isar-1.12.5}/src/isar/storage/blob_storage.py +0 -0
  118. {isar-1.12.4 → isar-1.12.5}/src/isar/storage/local_storage.py +0 -0
  119. {isar-1.12.4 → isar-1.12.5}/src/isar/storage/slimm_storage.py +0 -0
  120. {isar-1.12.4 → isar-1.12.5}/src/isar/storage/storage_interface.py +0 -0
  121. {isar-1.12.4 → isar-1.12.5}/src/isar/storage/uploader.py +0 -0
  122. {isar-1.12.4 → isar-1.12.5}/src/isar/storage/utilities.py +0 -0
  123. {isar-1.12.4 → isar-1.12.5}/src/isar.egg-info/SOURCES.txt +0 -0
  124. {isar-1.12.4 → isar-1.12.5}/src/isar.egg-info/dependency_links.txt +0 -0
  125. {isar-1.12.4 → isar-1.12.5}/src/isar.egg-info/requires.txt +0 -0
  126. {isar-1.12.4 → isar-1.12.5}/src/isar.egg-info/top_level.txt +0 -0
  127. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/__init__.py +0 -0
  128. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/__init__.py +0 -0
  129. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/exceptions/__init__.py +0 -0
  130. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
  131. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/initialize/__init__.py +0 -0
  132. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/initialize/initialize_params.py +0 -0
  133. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/inspection/__init__.py +0 -0
  134. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/inspection/inspection.py +0 -0
  135. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/mission/__init__.py +0 -0
  136. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/mission/status.py +0 -0
  137. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/mission/step.py +0 -0
  138. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/robots/__init__.py +0 -0
  139. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/models/robots/robot_model.py +0 -0
  140. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/robot_interface.py +0 -0
  141. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/telemetry/__init__.py +0 -0
  142. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/telemetry/mqtt_client.py +0 -0
  143. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/telemetry/payloads.py +0 -0
  144. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/test_robot_interface.py +0 -0
  145. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/utilities/__init__.py +0 -0
  146. {isar-1.12.4 → isar-1.12.5}/src/robot_interface/utilities/json_service.py +0 -0
  147. {isar-1.12.4 → isar-1.12.5}/tests/__init__.py +0 -0
  148. {isar-1.12.4 → isar-1.12.5}/tests/conftest.py +0 -0
  149. {isar-1.12.4 → isar-1.12.5}/tests/integration/__init__.py +0 -0
  150. {isar-1.12.4 → isar-1.12.5}/tests/integration/turtlebot/__init__.py +0 -0
  151. {isar-1.12.4 → isar-1.12.5}/tests/integration/turtlebot/config/__init__.py +0 -0
  152. {isar-1.12.4 → isar-1.12.5}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
  153. {isar-1.12.4 → isar-1.12.5}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
  154. {isar-1.12.4 → isar-1.12.5}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
  155. {isar-1.12.4 → isar-1.12.5}/tests/integration/turtlebot/config/missions/default.json +0 -0
  156. {isar-1.12.4 → isar-1.12.5}/tests/integration/turtlebot/test_successful_mission.py +0 -0
  157. {isar-1.12.4 → isar-1.12.5}/tests/isar/__init__.py +0 -0
  158. {isar-1.12.4 → isar-1.12.5}/tests/isar/apis/__init__.py +0 -0
  159. {isar-1.12.4 → isar-1.12.5}/tests/isar/apis/scheduler/__init__.py +0 -0
  160. {isar-1.12.4 → isar-1.12.5}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
  161. {isar-1.12.4 → isar-1.12.5}/tests/isar/apis/security/__init__.py +0 -0
  162. {isar-1.12.4 → isar-1.12.5}/tests/isar/apis/security/test_authentication.py +0 -0
  163. {isar-1.12.4 → isar-1.12.5}/tests/isar/models/__init__.py +0 -0
  164. {isar-1.12.4 → isar-1.12.5}/tests/isar/models/communication/__init__.py +0 -0
  165. {isar-1.12.4 → isar-1.12.5}/tests/isar/models/communication/test_queues.py +0 -0
  166. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/__init__.py +0 -0
  167. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/readers/__init__.py +0 -0
  168. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/readers/test_base_reader.py +0 -0
  169. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/readers/test_mission_reader.py +0 -0
  170. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/service_connections/__init__.py +0 -0
  171. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/service_connections/echo/__init__.py +0 -0
  172. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/service_connections/echo/test_echo_service.py +0 -0
  173. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/service_connections/stid/__init__.py +0 -0
  174. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/service_connections/stid/test_stid_service.py +0 -0
  175. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  176. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/utilities/__init__.py +0 -0
  177. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
  178. {isar-1.12.4 → isar-1.12.5}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
  179. {isar-1.12.4 → isar-1.12.5}/tests/isar/state_machine/__init__.py +0 -0
  180. {isar-1.12.4 → isar-1.12.5}/tests/isar/state_machine/states/__init__.py +0 -0
  181. {isar-1.12.4 → isar-1.12.5}/tests/isar/state_machine/states/test_monitor.py +0 -0
  182. {isar-1.12.4 → isar-1.12.5}/tests/isar/state_machine/test_state_machine.py +0 -0
  183. {isar-1.12.4 → isar-1.12.5}/tests/isar/storage/test_blob_storage.py +0 -0
  184. {isar-1.12.4 → isar-1.12.5}/tests/isar/storage/test_uploader.py +0 -0
  185. {isar-1.12.4 → isar-1.12.5}/tests/mocks/__init__.py +0 -0
  186. {isar-1.12.4 → isar-1.12.5}/tests/mocks/blob_storage.py +0 -0
  187. {isar-1.12.4 → isar-1.12.5}/tests/mocks/mission_definition.py +0 -0
  188. {isar-1.12.4 → isar-1.12.5}/tests/mocks/mqtt_client.py +0 -0
  189. {isar-1.12.4 → isar-1.12.5}/tests/mocks/pose.py +0 -0
  190. {isar-1.12.4 → isar-1.12.5}/tests/mocks/request.py +0 -0
  191. {isar-1.12.4 → isar-1.12.5}/tests/mocks/robot_interface.py +0 -0
  192. {isar-1.12.4 → isar-1.12.5}/tests/mocks/status.py +0 -0
  193. {isar-1.12.4 → isar-1.12.5}/tests/mocks/step.py +0 -0
  194. {isar-1.12.4 → isar-1.12.5}/tests/mocks/task.py +0 -0
  195. {isar-1.12.4 → isar-1.12.5}/tests/mocks/token.py +0 -0
  196. {isar-1.12.4 → isar-1.12.5}/tests/test_data/test_json_file.json +0 -0
  197. {isar-1.12.4 → isar-1.12.5}/tests/test_data/test_map_config/test_map_config.json +0 -0
  198. {isar-1.12.4 → isar-1.12.5}/tests/test_data/test_mission_not_working.json +0 -0
  199. {isar-1.12.4 → isar-1.12.5}/tests/test_data/test_mission_working.json +0 -0
  200. {isar-1.12.4 → isar-1.12.5}/tests/test_data/test_mission_working_no_tasks.json +0 -0
  201. {isar-1.12.4 → isar-1.12.5}/tests/test_data/test_thermal_image_mission.json +0 -0
  202. {isar-1.12.4 → isar-1.12.5}/tests/test_modules.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.12.4
3
+ Version: 1.12.5
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Home-page: https://github.com/equinor/isar
6
6
  Author: Equinor ASA
@@ -1,4 +1,6 @@
1
1
  import logging
2
+ import os
3
+ import time
2
4
  from logging import Logger
3
5
  from threading import Thread
4
6
  from typing import List
@@ -93,6 +95,9 @@ if __name__ == "__main__":
93
95
  thread.start()
94
96
  logger.info(f"Started thread: {thread.name}")
95
97
 
96
- for thread in threads:
97
- thread.join()
98
- logger.info(f"Joined thread: {thread.name}")
98
+ while True:
99
+ for thread in threads:
100
+ if not thread.is_alive():
101
+ logger.critical("Thread '%s' failed - ISAR shutting down", thread.name)
102
+ exit(1)
103
+ time.sleep(state_machine.sleep_time)
@@ -27,7 +27,7 @@ spec:
27
27
  environmentConfig:
28
28
  - environment: dev
29
29
  variables:
30
- AZURE_CLIENT_ID: b29bed99-7637-4fdc-8809-48c777a9b714
30
+ AZURE_CLIENT_ID: fd384acd-5c1b-4c44-a1ac-d41d720ed0fe
31
31
  runAsNonRoot: true
32
32
  secrets:
33
33
  - AZURE_CLIENT_SECRET
@@ -1,22 +1,21 @@
1
1
  import logging
2
+ import os
2
3
  from http import HTTPStatus
3
4
  from logging import Logger
4
- import os
5
5
  from typing import List, Union
6
6
 
7
7
  import click
8
8
  import uvicorn
9
- from fastapi import FastAPI, Security, Request
9
+ from fastapi import FastAPI, Request, Security
10
10
  from fastapi.middleware.cors import CORSMiddleware
11
11
  from fastapi.routing import APIRouter
12
12
  from injector import inject
13
- from pydantic import AnyHttpUrl
14
-
15
13
  from opencensus.ext.azure.trace_exporter import AzureExporter
14
+ from opencensus.trace.attributes_helper import COMMON_ATTRIBUTES
16
15
  from opencensus.trace.samplers import ProbabilitySampler
17
- from opencensus.trace.tracer import Tracer
18
16
  from opencensus.trace.span import SpanKind
19
- from opencensus.trace.attributes_helper import COMMON_ATTRIBUTES
17
+ from opencensus.trace.tracer import Tracer
18
+ from pydantic import AnyHttpUrl
20
19
 
21
20
  from isar.apis.models.models import ControlMissionResponse, StartMissionResponse
22
21
  from isar.apis.schedule.scheduling_controller import SchedulingController
@@ -76,7 +75,7 @@ class API:
76
75
  swagger_ui_oauth2_redirect_url="/oauth2-redirect",
77
76
  swagger_ui_init_oauth={
78
77
  "usePkceWithAuthorizationCodeGrant": True,
79
- "clientId": self.authenticator.openapi_client_id,
78
+ "clientId": settings.AZURE_CLIENT_ID,
80
79
  },
81
80
  )
82
81
 
@@ -21,10 +21,10 @@ class NoSecurity(SecurityBase):
21
21
 
22
22
 
23
23
  azure_scheme = SingleTenantAzureAuthorizationCodeBearer(
24
- app_client_id=settings.APP_CLIENT_ID,
24
+ app_client_id=settings.AZURE_CLIENT_ID,
25
25
  tenant_id=settings.AZURE_TENANT_ID,
26
26
  scopes={
27
- f"api://{settings.APP_CLIENT_ID}/user_impersonation": "user_impersonation",
27
+ f"api://{settings.AZURE_CLIENT_ID}/user_impersonation": "user_impersonation",
28
28
  },
29
29
  )
30
30
 
@@ -32,7 +32,7 @@ azure_scheme = SingleTenantAzureAuthorizationCodeBearer(
32
32
  async def validate_has_role(user: User = Depends(azure_scheme)) -> None:
33
33
  """
34
34
  Validate if the user has the required role in order to access the API.
35
- Raises a 401 authorization error if not.
35
+ Raises a 403 authorization error if not.
36
36
  """
37
37
  if settings.REQUIRED_ROLE not in user.roles:
38
38
  raise InvalidAuth(
@@ -43,11 +43,9 @@ async def validate_has_role(user: User = Depends(azure_scheme)) -> None:
43
43
  class Authenticator:
44
44
  def __init__(
45
45
  self,
46
- openapi_client_id: str = settings.OPENAPI_CLIENT_ID,
47
46
  authentication_enabled: bool = settings.AUTHENTICATION_ENABLED,
48
47
  ) -> None:
49
48
  self.logger = logging.getLogger("api")
50
- self.openapi_client_id: str = openapi_client_id
51
49
  self.authentication_enabled: bool = authentication_enabled
52
50
  enabled_string = "enabled" if self.authentication_enabled else "disabled"
53
51
  self.logger.info(f"API authentication is {enabled_string}")
@@ -101,11 +101,15 @@ class Settings(BaseSettings):
101
101
  # Tenant ID for the Azure tenant with your Azure Active Directory application
102
102
  AZURE_TENANT_ID: str = Field(default="3aa4a235-b6e2-48d5-9195-7fcf05b459b0")
103
103
 
104
- # Client ID for the API client
105
- APP_CLIENT_ID: str = Field(default="fd384acd-5c1b-4c44-a1ac-d41d720ed0fe")
106
-
107
- # Client ID for the OpenAPI client
108
- OPENAPI_CLIENT_ID: str = Field(default="5f412c20-8c36-4c69-898f-d2b5051f5fb6")
104
+ # Client ID for ISAR
105
+ AZURE_CLIENT_ID: str = Field(default="fd384acd-5c1b-4c44-a1ac-d41d720ed0fe")
106
+ # If AZURE_CLIENT_ID is set as an environment variable, overwrite this despite missing prefix.
107
+ # This is done to avoid double config of ISAR_AZURE_CLIENT_ID and AZURE_CLIENT_ID.
108
+ # We need the latter as an environment variable for the EnvironmentCredential method for AzureAD.
109
+ azure_client_id_name: str = "AZURE_CLIENT_ID"
110
+ if os.environ.get(azure_client_id_name) is not None:
111
+ print("Using environment variable for AZURE_CLIENT_ID")
112
+ AZURE_CLIENT_ID = os.environ[azure_client_id_name]
109
113
 
110
114
  # MQTT username
111
115
  # The username and password is set by the MQTT broker and must be known in advance
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.12.4
3
+ Version: 1.12.5
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Home-page: https://github.com/equinor/isar
6
6
  Author: Equinor ASA
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes