isar 1.30.4__tar.gz → 1.31.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.

Potentially problematic release.


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

Files changed (226) hide show
  1. {isar-1.30.4 → isar-1.31.0}/.gitignore +3 -0
  2. {isar-1.30.4 → isar-1.31.0}/PKG-INFO +7 -4
  3. {isar-1.30.4 → isar-1.31.0}/pyproject.toml +6 -3
  4. isar-1.31.0/requirements.txt +312 -0
  5. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/api.py +7 -51
  6. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/models/models.py +5 -4
  7. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/models/start_mission_definition.py +4 -0
  8. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/robot_control/robot_controller.py +0 -2
  9. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/schedule/scheduling_controller.py +12 -4
  10. {isar-1.30.4 → isar-1.31.0}/src/isar/config/log.py +8 -29
  11. isar-1.31.0/src/isar/config/open_telemetry.py +68 -0
  12. {isar-1.30.4 → isar-1.31.0}/src/isar/config/settings.py +12 -0
  13. {isar-1.30.4 → isar-1.31.0}/src/isar/mission_planner/local_planner.py +0 -3
  14. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/queues/events.py +1 -1
  15. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/queues/queue_utils.py +2 -2
  16. {isar-1.30.4 → isar-1.31.0}/src/isar/robot/robot.py +0 -3
  17. {isar-1.30.4 → isar-1.31.0}/src/isar/script.py +2 -0
  18. {isar-1.30.4 → isar-1.31.0}/src/isar/services/utilities/robot_utilities.py +0 -3
  19. {isar-1.30.4 → isar-1.31.0}/src/isar/services/utilities/scheduling_utilities.py +28 -11
  20. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/generic_states/idle.py +1 -1
  21. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/generic_states/ongoing_mission.py +22 -7
  22. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/state_machine.py +7 -12
  23. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/monitor.py +0 -2
  24. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/stopping.py +2 -2
  25. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/unknown_status.py +1 -1
  26. isar-1.31.0/src/isar/state_machine/transitions/functions/pause.py +53 -0
  27. isar-1.31.0/src/isar/state_machine/transitions/functions/resume.py +56 -0
  28. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/functions/stop.py +44 -1
  29. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/mission.py +26 -2
  30. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/return_home.py +1 -1
  31. {isar-1.30.4 → isar-1.31.0}/src/isar/storage/blob_storage.py +0 -2
  32. {isar-1.30.4 → isar-1.31.0}/src/isar/storage/uploader.py +0 -3
  33. {isar-1.30.4 → isar-1.31.0}/src/isar.egg-info/PKG-INFO +7 -4
  34. {isar-1.30.4 → isar-1.31.0}/src/isar.egg-info/SOURCES.txt +1 -0
  35. {isar-1.30.4 → isar-1.31.0}/src/isar.egg-info/requires.txt +6 -3
  36. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/mission/task.py +0 -3
  37. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/robot_interface.py +1 -4
  38. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/scheduler/test_scheduler_router.py +52 -4
  39. {isar-1.30.4 → isar-1.31.0}/tests/isar/state_machine/test_state_machine.py +149 -7
  40. {isar-1.30.4 → isar-1.31.0}/tests/test_double/mission_definition.py +10 -0
  41. {isar-1.30.4 → isar-1.31.0}/tests/test_double/task.py +3 -2
  42. isar-1.30.4/requirements.txt +0 -196
  43. isar-1.30.4/src/isar/state_machine/transitions/functions/pause.py +0 -24
  44. isar-1.30.4/src/isar/state_machine/transitions/functions/resume.py +0 -27
  45. {isar-1.30.4 → isar-1.31.0}/.dockerignore +0 -0
  46. {isar-1.30.4 → isar-1.31.0}/.env.test +0 -0
  47. {isar-1.30.4 → isar-1.31.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  48. {isar-1.30.4 → isar-1.31.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  49. {isar-1.30.4 → isar-1.31.0}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  50. {isar-1.30.4 → isar-1.31.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  51. {isar-1.30.4 → isar-1.31.0}/.github/release.yml +0 -0
  52. {isar-1.30.4 → isar-1.31.0}/.github/workflows/compile_requirements.yml +0 -0
  53. {isar-1.30.4 → isar-1.31.0}/.github/workflows/project_automations.yml +0 -0
  54. {isar-1.30.4 → isar-1.31.0}/.github/workflows/pythonpackage.yml +0 -0
  55. {isar-1.30.4 → isar-1.31.0}/.github/workflows/pythonpublish.yml +0 -0
  56. {isar-1.30.4 → isar-1.31.0}/.github/workflows/stale.yml +0 -0
  57. {isar-1.30.4 → isar-1.31.0}/.pre-commit-config.yaml +0 -0
  58. {isar-1.30.4 → isar-1.31.0}/LICENSE +0 -0
  59. {isar-1.30.4 → isar-1.31.0}/README.md +0 -0
  60. {isar-1.30.4 → isar-1.31.0}/SECURITY.md +0 -0
  61. {isar-1.30.4 → isar-1.31.0}/docs/Makefile +0 -0
  62. {isar-1.30.4 → isar-1.31.0}/docs/full_state_machine_diagram.png +0 -0
  63. {isar-1.30.4 → isar-1.31.0}/docs/make.bat +0 -0
  64. {isar-1.30.4 → isar-1.31.0}/docs/mission_state_machine_diagram.png +0 -0
  65. {isar-1.30.4 → isar-1.31.0}/docs/robot_status_state_machine_diagram.png +0 -0
  66. {isar-1.30.4 → isar-1.31.0}/docs/rst_processing.py +0 -0
  67. {isar-1.30.4 → isar-1.31.0}/docs/source/conf.py +0 -0
  68. {isar-1.30.4 → isar-1.31.0}/docs/source/index.rst +0 -0
  69. {isar-1.30.4 → isar-1.31.0}/docs/source/readme_link.md +0 -0
  70. {isar-1.30.4 → isar-1.31.0}/docs/update_state_diagram.py +0 -0
  71. {isar-1.30.4 → isar-1.31.0}/main.py +0 -0
  72. {isar-1.30.4 → isar-1.31.0}/radixconfig.yml +0 -0
  73. {isar-1.30.4 → isar-1.31.0}/setup.cfg +0 -0
  74. {isar-1.30.4 → isar-1.31.0}/src/isar/__init__.py +0 -0
  75. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/__init__.py +0 -0
  76. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/models/__init__.py +0 -0
  77. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/schedule/__init__.py +0 -0
  78. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/security/__init__.py +0 -0
  79. {isar-1.30.4 → isar-1.31.0}/src/isar/apis/security/authentication.py +0 -0
  80. {isar-1.30.4 → isar-1.31.0}/src/isar/config/__init__.py +0 -0
  81. {isar-1.30.4 → isar-1.31.0}/src/isar/config/certs/ca-cert.pem +0 -0
  82. {isar-1.30.4 → isar-1.31.0}/src/isar/config/configuration_error.py +0 -0
  83. {isar-1.30.4 → isar-1.31.0}/src/isar/config/keyvault/__init__.py +0 -0
  84. {isar-1.30.4 → isar-1.31.0}/src/isar/config/keyvault/keyvault_error.py +0 -0
  85. {isar-1.30.4 → isar-1.31.0}/src/isar/config/keyvault/keyvault_service.py +0 -0
  86. {isar-1.30.4 → isar-1.31.0}/src/isar/config/logging.conf +0 -0
  87. {isar-1.30.4 → isar-1.31.0}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  88. {isar-1.30.4 → isar-1.31.0}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  89. {isar-1.30.4 → isar-1.31.0}/src/isar/config/maps/default_map.json +0 -0
  90. {isar-1.30.4 → isar-1.31.0}/src/isar/config/maps/klab_b.json +0 -0
  91. {isar-1.30.4 → isar-1.31.0}/src/isar/config/maps/klab_compressor.json +0 -0
  92. {isar-1.30.4 → isar-1.31.0}/src/isar/config/maps/klab_turtlebot.json +0 -0
  93. {isar-1.30.4 → isar-1.31.0}/src/isar/config/maps/turtleworld.json +0 -0
  94. {isar-1.30.4 → isar-1.31.0}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
  95. {isar-1.30.4 → isar-1.31.0}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
  96. {isar-1.30.4 → isar-1.31.0}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
  97. {isar-1.30.4 → isar-1.31.0}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
  98. {isar-1.30.4 → isar-1.31.0}/src/isar/config/predefined_missions/__init__.py +0 -0
  99. {isar-1.30.4 → isar-1.31.0}/src/isar/config/predefined_missions/default.json +0 -0
  100. {isar-1.30.4 → isar-1.31.0}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
  101. {isar-1.30.4 → isar-1.31.0}/src/isar/mission_planner/__init__.py +0 -0
  102. {isar-1.30.4 → isar-1.31.0}/src/isar/mission_planner/mission_planner_interface.py +0 -0
  103. {isar-1.30.4 → isar-1.31.0}/src/isar/mission_planner/sequential_task_selector.py +0 -0
  104. {isar-1.30.4 → isar-1.31.0}/src/isar/mission_planner/task_selector_interface.py +0 -0
  105. {isar-1.30.4 → isar-1.31.0}/src/isar/models/__init__.py +0 -0
  106. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/__init__.py +0 -0
  107. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/message.py +0 -0
  108. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/queues/__init__.py +0 -0
  109. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/queues/queue_io.py +0 -0
  110. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
  111. {isar-1.30.4 → isar-1.31.0}/src/isar/models/communication/queues/status_queue.py +0 -0
  112. {isar-1.30.4 → isar-1.31.0}/src/isar/models/mission_metadata/__init__.py +0 -0
  113. {isar-1.30.4 → isar-1.31.0}/src/isar/modules.py +0 -0
  114. {isar-1.30.4 → isar-1.31.0}/src/isar/robot/robot_start_mission.py +0 -0
  115. {isar-1.30.4 → isar-1.31.0}/src/isar/robot/robot_status.py +0 -0
  116. {isar-1.30.4 → isar-1.31.0}/src/isar/robot/robot_stop_mission.py +0 -0
  117. {isar-1.30.4 → isar-1.31.0}/src/isar/robot/robot_task_status.py +0 -0
  118. {isar-1.30.4 → isar-1.31.0}/src/isar/services/__init__.py +0 -0
  119. {isar-1.30.4 → isar-1.31.0}/src/isar/services/auth/__init__.py +0 -0
  120. {isar-1.30.4 → isar-1.31.0}/src/isar/services/auth/azure_credentials.py +0 -0
  121. {isar-1.30.4 → isar-1.31.0}/src/isar/services/service_connections/__init__.py +0 -0
  122. {isar-1.30.4 → isar-1.31.0}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
  123. {isar-1.30.4 → isar-1.31.0}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
  124. {isar-1.30.4 → isar-1.31.0}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
  125. {isar-1.30.4 → isar-1.31.0}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
  126. {isar-1.30.4 → isar-1.31.0}/src/isar/services/service_connections/request_handler.py +0 -0
  127. {isar-1.30.4 → isar-1.31.0}/src/isar/services/service_connections/stid/__init__.py +0 -0
  128. {isar-1.30.4 → isar-1.31.0}/src/isar/services/utilities/__init__.py +0 -0
  129. {isar-1.30.4 → isar-1.31.0}/src/isar/services/utilities/queue_utilities.py +0 -0
  130. {isar-1.30.4 → isar-1.31.0}/src/isar/services/utilities/threaded_request.py +0 -0
  131. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/__init__.py +0 -0
  132. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/generic_states/robot_unavailable.py +0 -0
  133. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/__init__.py +0 -0
  134. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/await_next_mission.py +0 -0
  135. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/blocked_protective_stop.py +0 -0
  136. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/home.py +0 -0
  137. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/offline.py +0 -0
  138. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/paused.py +0 -0
  139. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/returning_home.py +0 -0
  140. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states/robot_standing_still.py +0 -0
  141. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/states_enum.py +0 -0
  142. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/functions/fail_mission.py +0 -0
  143. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/functions/finish_mission.py +0 -0
  144. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/functions/return_home.py +0 -0
  145. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/functions/robot_status.py +0 -0
  146. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/functions/start_mission.py +0 -0
  147. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/functions/utils.py +0 -0
  148. {isar-1.30.4 → isar-1.31.0}/src/isar/state_machine/transitions/robot_status.py +0 -0
  149. {isar-1.30.4 → isar-1.31.0}/src/isar/storage/__init__.py +0 -0
  150. {isar-1.30.4 → isar-1.31.0}/src/isar/storage/local_storage.py +0 -0
  151. {isar-1.30.4 → isar-1.31.0}/src/isar/storage/storage_interface.py +0 -0
  152. {isar-1.30.4 → isar-1.31.0}/src/isar/storage/utilities.py +0 -0
  153. {isar-1.30.4 → isar-1.31.0}/src/isar.egg-info/dependency_links.txt +0 -0
  154. {isar-1.30.4 → isar-1.31.0}/src/isar.egg-info/entry_points.txt +0 -0
  155. {isar-1.30.4 → isar-1.31.0}/src/isar.egg-info/top_level.txt +0 -0
  156. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/__init__.py +0 -0
  157. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/__init__.py +0 -0
  158. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/exceptions/__init__.py +0 -0
  159. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
  160. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/initialize/__init__.py +0 -0
  161. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/inspection/__init__.py +0 -0
  162. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/inspection/inspection.py +0 -0
  163. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/mission/__init__.py +0 -0
  164. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/mission/mission.py +0 -0
  165. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/mission/status.py +0 -0
  166. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/robots/__init__.py +0 -0
  167. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/robots/battery_state.py +0 -0
  168. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/robots/media.py +0 -0
  169. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/models/robots/robot_model.py +0 -0
  170. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/telemetry/__init__.py +0 -0
  171. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/telemetry/mqtt_client.py +0 -0
  172. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/telemetry/payloads.py +0 -0
  173. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/test_robot_interface.py +0 -0
  174. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/utilities/__init__.py +0 -0
  175. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/utilities/json_service.py +0 -0
  176. {isar-1.30.4 → isar-1.31.0}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
  177. {isar-1.30.4 → isar-1.31.0}/tests/__init__.py +0 -0
  178. {isar-1.30.4 → isar-1.31.0}/tests/conftest.py +0 -0
  179. {isar-1.30.4 → isar-1.31.0}/tests/integration/__init__.py +0 -0
  180. {isar-1.30.4 → isar-1.31.0}/tests/integration/turtlebot/__init__.py +0 -0
  181. {isar-1.30.4 → isar-1.31.0}/tests/integration/turtlebot/config/__init__.py +0 -0
  182. {isar-1.30.4 → isar-1.31.0}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
  183. {isar-1.30.4 → isar-1.31.0}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
  184. {isar-1.30.4 → isar-1.31.0}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
  185. {isar-1.30.4 → isar-1.31.0}/tests/integration/turtlebot/config/missions/default.json +0 -0
  186. {isar-1.30.4 → isar-1.31.0}/tests/integration/turtlebot/test_successful_mission.py +0 -0
  187. {isar-1.30.4 → isar-1.31.0}/tests/isar/__init__.py +0 -0
  188. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/__init__.py +0 -0
  189. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/models/__init__.py +0 -0
  190. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/models/example_mission_definition.json +0 -0
  191. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/models/test_start_mission_definition.py +0 -0
  192. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/scheduler/__init__.py +0 -0
  193. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/security/__init__.py +0 -0
  194. {isar-1.30.4 → isar-1.31.0}/tests/isar/apis/security/test_authentication.py +0 -0
  195. {isar-1.30.4 → isar-1.31.0}/tests/isar/mission/__init__.py +0 -0
  196. {isar-1.30.4 → isar-1.31.0}/tests/isar/mission/test_mission.py +0 -0
  197. {isar-1.30.4 → isar-1.31.0}/tests/isar/models/__init__.py +0 -0
  198. {isar-1.30.4 → isar-1.31.0}/tests/isar/models/communication/__init__.py +0 -0
  199. {isar-1.30.4 → isar-1.31.0}/tests/isar/models/communication/test_queues.py +0 -0
  200. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/__init__.py +0 -0
  201. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/readers/__init__.py +0 -0
  202. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/readers/test_mission_reader.py +0 -0
  203. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/service_connections/__init__.py +0 -0
  204. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/service_connections/echo/__init__.py +0 -0
  205. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  206. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/utilities/__init__.py +0 -0
  207. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
  208. {isar-1.30.4 → isar-1.31.0}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
  209. {isar-1.30.4 → isar-1.31.0}/tests/isar/state_machine/__init__.py +0 -0
  210. {isar-1.30.4 → isar-1.31.0}/tests/isar/state_machine/states/__init__.py +0 -0
  211. {isar-1.30.4 → isar-1.31.0}/tests/isar/state_machine/states/test_monitor.py +0 -0
  212. {isar-1.30.4 → isar-1.31.0}/tests/isar/storage/test_blob_storage.py +0 -0
  213. {isar-1.30.4 → isar-1.31.0}/tests/isar/storage/test_uploader.py +0 -0
  214. {isar-1.30.4 → isar-1.31.0}/tests/test_data/test_map_config/test_map_config.json +0 -0
  215. {isar-1.30.4 → isar-1.31.0}/tests/test_data/test_mission_not_working.json +0 -0
  216. {isar-1.30.4 → isar-1.31.0}/tests/test_data/test_mission_working.json +0 -0
  217. {isar-1.30.4 → isar-1.31.0}/tests/test_data/test_mission_working_no_tasks.json +0 -0
  218. {isar-1.30.4 → isar-1.31.0}/tests/test_data/test_thermal_image_mission.json +0 -0
  219. {isar-1.30.4 → isar-1.31.0}/tests/test_double/__init__.py +0 -0
  220. {isar-1.30.4 → isar-1.31.0}/tests/test_double/blob_storage.py +0 -0
  221. {isar-1.30.4 → isar-1.31.0}/tests/test_double/mqtt_client.py +0 -0
  222. {isar-1.30.4 → isar-1.31.0}/tests/test_double/pose.py +0 -0
  223. {isar-1.30.4 → isar-1.31.0}/tests/test_double/request.py +0 -0
  224. {isar-1.30.4 → isar-1.31.0}/tests/test_double/robot_interface.py +0 -0
  225. {isar-1.30.4 → isar-1.31.0}/tests/test_double/status.py +0 -0
  226. {isar-1.30.4 → isar-1.31.0}/tests/test_double/token.py +0 -0
@@ -137,3 +137,6 @@ dmypy.json
137
137
  # Temporary result folders
138
138
  results
139
139
  temp_results
140
+
141
+ # MacOs file system
142
+ .DS_Store
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: isar
3
- Version: 1.30.4
3
+ Version: 1.31.0
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Author-email: Equinor ASA <fg_robots_dev@equinor.com>
6
6
  License: Eclipse Public License version 2.0
@@ -113,9 +113,6 @@ Requires-Dist: fastapi-azure-auth
113
113
  Requires-Dist: fastapi
114
114
  Requires-Dist: dependency-injector
115
115
  Requires-Dist: numpy
116
- Requires-Dist: opencensus-ext-azure
117
- Requires-Dist: opencensus-ext-logging
118
- Requires-Dist: opencensus-ext-requests
119
116
  Requires-Dist: paho-mqtt
120
117
  Requires-Dist: pydantic_settings
121
118
  Requires-Dist: pydantic
@@ -126,6 +123,12 @@ Requires-Dist: requests-toolbelt
126
123
  Requires-Dist: requests
127
124
  Requires-Dist: transitions
128
125
  Requires-Dist: uvicorn
126
+ Requires-Dist: opentelemetry-api
127
+ Requires-Dist: opentelemetry-sdk
128
+ Requires-Dist: opentelemetry-exporter-otlp
129
+ Requires-Dist: opentelemetry-instrumentation-fastapi
130
+ Requires-Dist: azure-monitor-opentelemetry
131
+ Requires-Dist: azure-monitor-opentelemetry-exporter>=1.0.0b38
129
132
  Provides-Extra: dev
130
133
  Requires-Dist: black; extra == "dev"
131
134
  Requires-Dist: isort; extra == "dev"
@@ -36,9 +36,6 @@ dependencies = [
36
36
  "fastapi",
37
37
  "dependency-injector",
38
38
  "numpy",
39
- "opencensus-ext-azure",
40
- "opencensus-ext-logging",
41
- "opencensus-ext-requests",
42
39
  "paho-mqtt",
43
40
  "pydantic_settings",
44
41
  "pydantic",
@@ -49,6 +46,12 @@ dependencies = [
49
46
  "requests",
50
47
  "transitions",
51
48
  "uvicorn",
49
+ "opentelemetry-api",
50
+ "opentelemetry-sdk",
51
+ "opentelemetry-exporter-otlp",
52
+ "opentelemetry-instrumentation-fastapi",
53
+ "azure-monitor-opentelemetry",
54
+ "azure-monitor-opentelemetry-exporter>=1.0.0b38",
52
55
  ]
53
56
  dynamic = ["version"]
54
57
 
@@ -0,0 +1,312 @@
1
+ #
2
+ # This file is autogenerated by pip-compile with Python 3.13
3
+ # by the following command:
4
+ #
5
+ # pip-compile --output-file=requirements.txt pyproject.toml
6
+ #
7
+ alitra==1.1.5
8
+ # via isar (pyproject.toml)
9
+ annotated-types==0.7.0
10
+ # via pydantic
11
+ anyio==4.9.0
12
+ # via
13
+ # httpx
14
+ # starlette
15
+ asgiref==3.9.1
16
+ # via opentelemetry-instrumentation-asgi
17
+ azure-core==1.35.0
18
+ # via
19
+ # azure-core-tracing-opentelemetry
20
+ # azure-identity
21
+ # azure-keyvault-secrets
22
+ # azure-monitor-opentelemetry
23
+ # azure-monitor-opentelemetry-exporter
24
+ # azure-storage-blob
25
+ # msrest
26
+ azure-core-tracing-opentelemetry==1.0.0b12
27
+ # via azure-monitor-opentelemetry
28
+ azure-identity==1.23.1
29
+ # via
30
+ # azure-monitor-opentelemetry-exporter
31
+ # isar (pyproject.toml)
32
+ azure-keyvault-secrets==4.10.0
33
+ # via isar (pyproject.toml)
34
+ azure-monitor-opentelemetry==1.6.7
35
+ # via isar (pyproject.toml)
36
+ azure-monitor-opentelemetry-exporter==1.0.0b40
37
+ # via
38
+ # azure-monitor-opentelemetry
39
+ # isar (pyproject.toml)
40
+ azure-storage-blob==12.26.0
41
+ # via isar (pyproject.toml)
42
+ backoff==2.2.1
43
+ # via isar (pyproject.toml)
44
+ certifi==2025.7.14
45
+ # via
46
+ # httpcore
47
+ # httpx
48
+ # msrest
49
+ # requests
50
+ cffi==1.17.1
51
+ # via cryptography
52
+ charset-normalizer==3.4.2
53
+ # via requests
54
+ click==8.2.1
55
+ # via
56
+ # isar (pyproject.toml)
57
+ # uvicorn
58
+ cryptography==45.0.5
59
+ # via
60
+ # azure-identity
61
+ # azure-storage-blob
62
+ # fastapi-azure-auth
63
+ # msal
64
+ # pyjwt
65
+ dacite==1.9.2
66
+ # via
67
+ # alitra
68
+ # isar (pyproject.toml)
69
+ dependency-injector==4.48.1
70
+ # via isar (pyproject.toml)
71
+ fastapi==0.116.1
72
+ # via
73
+ # fastapi-azure-auth
74
+ # isar (pyproject.toml)
75
+ fastapi-azure-auth==5.2.0
76
+ # via isar (pyproject.toml)
77
+ fixedint==0.1.6
78
+ # via azure-monitor-opentelemetry-exporter
79
+ googleapis-common-protos==1.70.0
80
+ # via
81
+ # opentelemetry-exporter-otlp-proto-grpc
82
+ # opentelemetry-exporter-otlp-proto-http
83
+ grpcio==1.74.0
84
+ # via opentelemetry-exporter-otlp-proto-grpc
85
+ h11==0.16.0
86
+ # via
87
+ # httpcore
88
+ # uvicorn
89
+ httpcore==1.0.9
90
+ # via httpx
91
+ httpx==0.28.1
92
+ # via fastapi-azure-auth
93
+ idna==3.10
94
+ # via
95
+ # anyio
96
+ # httpx
97
+ # requests
98
+ importlib-metadata==8.7.0
99
+ # via opentelemetry-api
100
+ isodate==0.7.2
101
+ # via
102
+ # azure-keyvault-secrets
103
+ # azure-storage-blob
104
+ # msrest
105
+ msal==1.33.0
106
+ # via
107
+ # azure-identity
108
+ # msal-extensions
109
+ msal-extensions==1.3.1
110
+ # via azure-identity
111
+ msrest==0.7.1
112
+ # via azure-monitor-opentelemetry-exporter
113
+ numpy==2.3.2
114
+ # via
115
+ # alitra
116
+ # isar (pyproject.toml)
117
+ # scipy
118
+ oauthlib==3.3.1
119
+ # via requests-oauthlib
120
+ opentelemetry-api==1.35.0
121
+ # via
122
+ # azure-core-tracing-opentelemetry
123
+ # azure-monitor-opentelemetry-exporter
124
+ # isar (pyproject.toml)
125
+ # opentelemetry-exporter-otlp-proto-grpc
126
+ # opentelemetry-exporter-otlp-proto-http
127
+ # opentelemetry-instrumentation
128
+ # opentelemetry-instrumentation-asgi
129
+ # opentelemetry-instrumentation-dbapi
130
+ # opentelemetry-instrumentation-django
131
+ # opentelemetry-instrumentation-fastapi
132
+ # opentelemetry-instrumentation-flask
133
+ # opentelemetry-instrumentation-psycopg2
134
+ # opentelemetry-instrumentation-requests
135
+ # opentelemetry-instrumentation-urllib
136
+ # opentelemetry-instrumentation-urllib3
137
+ # opentelemetry-instrumentation-wsgi
138
+ # opentelemetry-sdk
139
+ # opentelemetry-semantic-conventions
140
+ opentelemetry-exporter-otlp==1.35.0
141
+ # via isar (pyproject.toml)
142
+ opentelemetry-exporter-otlp-proto-common==1.35.0
143
+ # via
144
+ # opentelemetry-exporter-otlp-proto-grpc
145
+ # opentelemetry-exporter-otlp-proto-http
146
+ opentelemetry-exporter-otlp-proto-grpc==1.35.0
147
+ # via opentelemetry-exporter-otlp
148
+ opentelemetry-exporter-otlp-proto-http==1.35.0
149
+ # via opentelemetry-exporter-otlp
150
+ opentelemetry-instrumentation==0.56b0
151
+ # via
152
+ # opentelemetry-instrumentation-asgi
153
+ # opentelemetry-instrumentation-dbapi
154
+ # opentelemetry-instrumentation-django
155
+ # opentelemetry-instrumentation-fastapi
156
+ # opentelemetry-instrumentation-flask
157
+ # opentelemetry-instrumentation-psycopg2
158
+ # opentelemetry-instrumentation-requests
159
+ # opentelemetry-instrumentation-urllib
160
+ # opentelemetry-instrumentation-urllib3
161
+ # opentelemetry-instrumentation-wsgi
162
+ opentelemetry-instrumentation-asgi==0.56b0
163
+ # via opentelemetry-instrumentation-fastapi
164
+ opentelemetry-instrumentation-dbapi==0.56b0
165
+ # via opentelemetry-instrumentation-psycopg2
166
+ opentelemetry-instrumentation-django==0.56b0
167
+ # via azure-monitor-opentelemetry
168
+ opentelemetry-instrumentation-fastapi==0.56b0
169
+ # via
170
+ # azure-monitor-opentelemetry
171
+ # isar (pyproject.toml)
172
+ opentelemetry-instrumentation-flask==0.56b0
173
+ # via azure-monitor-opentelemetry
174
+ opentelemetry-instrumentation-psycopg2==0.56b0
175
+ # via azure-monitor-opentelemetry
176
+ opentelemetry-instrumentation-requests==0.56b0
177
+ # via azure-monitor-opentelemetry
178
+ opentelemetry-instrumentation-urllib==0.56b0
179
+ # via azure-monitor-opentelemetry
180
+ opentelemetry-instrumentation-urllib3==0.56b0
181
+ # via azure-monitor-opentelemetry
182
+ opentelemetry-instrumentation-wsgi==0.56b0
183
+ # via
184
+ # opentelemetry-instrumentation-django
185
+ # opentelemetry-instrumentation-flask
186
+ opentelemetry-proto==1.35.0
187
+ # via
188
+ # opentelemetry-exporter-otlp-proto-common
189
+ # opentelemetry-exporter-otlp-proto-grpc
190
+ # opentelemetry-exporter-otlp-proto-http
191
+ opentelemetry-resource-detector-azure==0.1.5
192
+ # via azure-monitor-opentelemetry
193
+ opentelemetry-sdk==1.35.0
194
+ # via
195
+ # azure-monitor-opentelemetry
196
+ # azure-monitor-opentelemetry-exporter
197
+ # isar (pyproject.toml)
198
+ # opentelemetry-exporter-otlp-proto-grpc
199
+ # opentelemetry-exporter-otlp-proto-http
200
+ # opentelemetry-resource-detector-azure
201
+ opentelemetry-semantic-conventions==0.56b0
202
+ # via
203
+ # opentelemetry-instrumentation
204
+ # opentelemetry-instrumentation-asgi
205
+ # opentelemetry-instrumentation-dbapi
206
+ # opentelemetry-instrumentation-django
207
+ # opentelemetry-instrumentation-fastapi
208
+ # opentelemetry-instrumentation-flask
209
+ # opentelemetry-instrumentation-requests
210
+ # opentelemetry-instrumentation-urllib
211
+ # opentelemetry-instrumentation-urllib3
212
+ # opentelemetry-instrumentation-wsgi
213
+ # opentelemetry-sdk
214
+ opentelemetry-util-http==0.56b0
215
+ # via
216
+ # opentelemetry-instrumentation-asgi
217
+ # opentelemetry-instrumentation-django
218
+ # opentelemetry-instrumentation-fastapi
219
+ # opentelemetry-instrumentation-flask
220
+ # opentelemetry-instrumentation-requests
221
+ # opentelemetry-instrumentation-urllib
222
+ # opentelemetry-instrumentation-urllib3
223
+ # opentelemetry-instrumentation-wsgi
224
+ packaging==25.0
225
+ # via
226
+ # opentelemetry-instrumentation
227
+ # opentelemetry-instrumentation-flask
228
+ paho-mqtt==2.1.0
229
+ # via isar (pyproject.toml)
230
+ protobuf==6.31.1
231
+ # via
232
+ # googleapis-common-protos
233
+ # opentelemetry-proto
234
+ psutil==7.0.0
235
+ # via azure-monitor-opentelemetry-exporter
236
+ pycparser==2.22
237
+ # via cffi
238
+ pydantic==2.11.7
239
+ # via
240
+ # fastapi
241
+ # isar (pyproject.toml)
242
+ # pydantic-settings
243
+ pydantic-core==2.33.2
244
+ # via pydantic
245
+ pydantic-settings==2.10.1
246
+ # via isar (pyproject.toml)
247
+ pyjwt[crypto]==2.10.1
248
+ # via
249
+ # fastapi-azure-auth
250
+ # isar (pyproject.toml)
251
+ # msal
252
+ python-dotenv==1.1.1
253
+ # via
254
+ # isar (pyproject.toml)
255
+ # pydantic-settings
256
+ pyyaml==6.0.2
257
+ # via isar (pyproject.toml)
258
+ requests==2.32.4
259
+ # via
260
+ # azure-core
261
+ # isar (pyproject.toml)
262
+ # msal
263
+ # msrest
264
+ # opentelemetry-exporter-otlp-proto-http
265
+ # requests-oauthlib
266
+ # requests-toolbelt
267
+ requests-oauthlib==2.0.0
268
+ # via msrest
269
+ requests-toolbelt==1.0.0
270
+ # via isar (pyproject.toml)
271
+ scipy==1.16.1
272
+ # via alitra
273
+ six==1.17.0
274
+ # via
275
+ # azure-core
276
+ # transitions
277
+ sniffio==1.3.1
278
+ # via anyio
279
+ starlette==0.47.2
280
+ # via fastapi
281
+ transitions==0.9.3
282
+ # via isar (pyproject.toml)
283
+ typing-extensions==4.14.1
284
+ # via
285
+ # azure-core
286
+ # azure-identity
287
+ # azure-keyvault-secrets
288
+ # azure-storage-blob
289
+ # fastapi
290
+ # opentelemetry-api
291
+ # opentelemetry-exporter-otlp-proto-grpc
292
+ # opentelemetry-exporter-otlp-proto-http
293
+ # opentelemetry-sdk
294
+ # opentelemetry-semantic-conventions
295
+ # pydantic
296
+ # pydantic-core
297
+ # typing-inspection
298
+ typing-inspection==0.4.1
299
+ # via
300
+ # pydantic
301
+ # pydantic-settings
302
+ urllib3==2.5.0
303
+ # via requests
304
+ uvicorn==0.35.0
305
+ # via isar (pyproject.toml)
306
+ wrapt==1.17.2
307
+ # via
308
+ # opentelemetry-instrumentation
309
+ # opentelemetry-instrumentation-dbapi
310
+ # opentelemetry-instrumentation-urllib3
311
+ zipp==3.23.0
312
+ # via importlib-metadata
@@ -8,35 +8,23 @@ from typing import List, Union
8
8
 
9
9
  import click
10
10
  import uvicorn
11
- from dependency_injector.wiring import inject
12
- from fastapi import FastAPI, Request, Security
11
+ from fastapi import FastAPI, Security
13
12
  from fastapi.middleware.cors import CORSMiddleware
14
13
  from fastapi.routing import APIRouter
15
- from opencensus.ext.azure.trace_exporter import AzureExporter
16
- from opencensus.trace.attributes_helper import COMMON_ATTRIBUTES
17
- from opencensus.trace.samplers import ProbabilitySampler
18
- from opencensus.trace.span import SpanKind
19
- from opencensus.trace.tracer import Tracer
20
14
  from pydantic import AnyHttpUrl
21
15
 
22
16
  from isar.apis.models.models import ControlMissionResponse, StartMissionResponse
23
17
  from isar.apis.robot_control.robot_controller import RobotController
24
18
  from isar.apis.schedule.scheduling_controller import SchedulingController
25
19
  from isar.apis.security.authentication import Authenticator
26
- from isar.config.configuration_error import ConfigurationError
27
- from isar.config.keyvault.keyvault_error import KeyvaultError
28
20
  from isar.config.keyvault.keyvault_service import Keyvault
29
21
  from isar.config.settings import settings
30
22
  from robot_interface.telemetry.mqtt_client import MqttClientInterface
31
23
  from robot_interface.telemetry.payloads import StartUpMessagePayload
32
24
  from robot_interface.utilities.json_service import EnhancedJSONEncoder
33
25
 
34
- HTTP_URL = COMMON_ATTRIBUTES["HTTP_URL"]
35
- HTTP_STATUS_CODE = COMMON_ATTRIBUTES["HTTP_STATUS_CODE"]
36
-
37
26
 
38
27
  class API:
39
- @inject
40
28
  def __init__(
41
29
  self,
42
30
  authenticator: Authenticator,
@@ -45,7 +33,6 @@ class API:
45
33
  keyvault: Keyvault,
46
34
  mqtt_publisher: MqttClientInterface,
47
35
  port: int = settings.API_PORT,
48
- azure_ai_logging_enabled: bool = settings.LOG_HANDLER_APPLICATION_INSIGHTS_ENABLED,
49
36
  ) -> None:
50
37
  self.authenticator: Authenticator = authenticator
51
38
  self.scheduling_controller: SchedulingController = scheduling_controller
@@ -53,7 +40,6 @@ class API:
53
40
  self.keyvault: Keyvault = keyvault
54
41
  self.host: str = "0.0.0.0" # Locking uvicorn to use 0.0.0.0
55
42
  self.port: int = port
56
- self.azure_ai_logging_enabled: bool = azure_ai_logging_enabled
57
43
  self.mqtt_publisher: MqttClientInterface = mqtt_publisher
58
44
 
59
45
  self.logger: Logger = logging.getLogger("api")
@@ -113,9 +99,6 @@ class API:
113
99
  allow_headers=["*"],
114
100
  )
115
101
 
116
- if self.azure_ai_logging_enabled:
117
- self._add_request_logging_middleware(app)
118
-
119
102
  app.include_router(router=self._create_scheduler_router())
120
103
 
121
104
  app.include_router(router=self._create_info_router())
@@ -210,9 +193,15 @@ class API:
210
193
  "description": "Mission succesfully stopped",
211
194
  "model": ControlMissionResponse,
212
195
  },
196
+ HTTPStatus.UNPROCESSABLE_ENTITY.value: {
197
+ "description": "Invalid body - The JSON is incorrect",
198
+ },
213
199
  HTTPStatus.CONFLICT.value: {
214
200
  "description": "Conflict - Invalid command in the current state",
215
201
  },
202
+ HTTPStatus.BAD_REQUEST.value: {
203
+ "description": "Bad request - Robot does not have the capabilities to perform the mission",
204
+ },
216
205
  HTTPStatus.INTERNAL_SERVER_ERROR.value: {
217
206
  "description": "Internal Server Error - Current state of state machine unknown",
218
207
  },
@@ -336,39 +325,6 @@ class API:
336
325
  extra={"color_message": color_message},
337
326
  )
338
327
 
339
- def _add_request_logging_middleware(self, app: FastAPI) -> None:
340
- connection_string: str
341
- try:
342
- connection_string = self.keyvault.get_secret(
343
- "application-insights-connection-string"
344
- ).value
345
- except KeyvaultError:
346
- message: str = (
347
- "Missing connection string for Application Insights in key vault. "
348
- )
349
- self.logger.critical(message)
350
- raise ConfigurationError(message)
351
-
352
- @app.middleware("http")
353
- async def middlewareOpencensus(request: Request, call_next):
354
- tracer = Tracer(
355
- exporter=AzureExporter(connection_string=connection_string),
356
- sampler=ProbabilitySampler(1.0),
357
- )
358
- with tracer.span("main") as span:
359
- span.span_kind = SpanKind.SERVER
360
-
361
- response = await call_next(request)
362
-
363
- tracer.add_attribute_to_current_span(
364
- attribute_key=HTTP_STATUS_CODE, attribute_value=response.status_code
365
- )
366
- tracer.add_attribute_to_current_span(
367
- attribute_key=HTTP_URL, attribute_value=str(request.url)
368
- )
369
-
370
- return response
371
-
372
328
  def _publish_startup_message(self) -> None:
373
329
  if not self.mqtt_publisher:
374
330
  return
@@ -19,10 +19,11 @@ class StartMissionResponse(BaseModel):
19
19
 
20
20
 
21
21
  class ControlMissionResponse(BaseModel):
22
- mission_id: str
23
- mission_status: str
24
- task_id: str
25
- task_status: str
22
+ mission_id: Optional[str]
23
+ mission_status: Optional[str]
24
+ mission_not_found: Optional[bool] = False
25
+ task_id: Optional[str]
26
+ task_status: Optional[str]
26
27
 
27
28
 
28
29
  class RobotInfoResponse(BaseModel):
@@ -58,6 +58,10 @@ class StartMissionDefinition(BaseModel):
58
58
  start_pose: Optional[InputPose] = None
59
59
 
60
60
 
61
+ class StopMissionDefinition(BaseModel):
62
+ mission_id: Optional[str] = None
63
+
64
+
61
65
  def to_isar_mission(
62
66
  start_mission_definition: StartMissionDefinition,
63
67
  ) -> Mission:
@@ -1,6 +1,5 @@
1
1
  import logging
2
2
 
3
- from dependency_injector.wiring import inject
4
3
  from fastapi import HTTPException
5
4
 
6
5
  from isar.apis.models.models import RobotInfoResponse
@@ -10,7 +9,6 @@ from robot_interface.models.robots.media import MediaConfig
10
9
 
11
10
 
12
11
  class RobotController:
13
- @inject
14
12
  def __init__(
15
13
  self,
16
14
  robot_utilities: RobotUtilities,
@@ -2,7 +2,6 @@ import logging
2
2
  from http import HTTPStatus
3
3
  from threading import Lock
4
4
 
5
- from dependency_injector.wiring import inject
6
5
  from fastapi import Body, HTTPException, Path
7
6
 
8
7
  from isar.apis.models.models import (
@@ -12,6 +11,7 @@ from isar.apis.models.models import (
12
11
  )
13
12
  from isar.apis.models.start_mission_definition import (
14
13
  StartMissionDefinition,
14
+ StopMissionDefinition,
15
15
  to_isar_mission,
16
16
  )
17
17
  from isar.config.settings import robot_settings, settings
@@ -23,7 +23,6 @@ from robot_interface.models.mission.task import TASKS, InspectionTask, MoveArm
23
23
 
24
24
 
25
25
  class SchedulingController:
26
- @inject
27
26
  def __init__(
28
27
  self,
29
28
  scheduling_utilities: SchedulingUtilities,
@@ -179,7 +178,16 @@ class SchedulingController:
179
178
  )
180
179
  return resume_mission_response
181
180
 
182
- def stop_mission(self) -> ControlMissionResponse:
181
+ def stop_mission(
182
+ self,
183
+ mission_id: StopMissionDefinition = Body(
184
+ default=None,
185
+ embed=True,
186
+ title="Mission ID to stop",
187
+ description="The mission ID of the mission being stopped, in json format",
188
+ ),
189
+ ) -> ControlMissionResponse:
190
+
183
191
  self.logger.info("Received request to stop current mission")
184
192
 
185
193
  state: States = self.scheduling_utilities.get_state()
@@ -198,7 +206,7 @@ class SchedulingController:
198
206
  raise HTTPException(status_code=HTTPStatus.CONFLICT, detail=error_message)
199
207
 
200
208
  stop_mission_response: ControlMissionResponse = (
201
- self.scheduling_utilities.stop_mission()
209
+ self.scheduling_utilities.stop_mission(mission_id.mission_id)
202
210
  )
203
211
  return stop_mission_response
204
212
 
@@ -3,30 +3,21 @@ import logging.config
3
3
  from importlib.resources import as_file, files
4
4
 
5
5
  import yaml
6
- from opencensus.ext.azure.log_exporter import AzureLogHandler
7
6
  from uvicorn.logging import ColourizedFormatter
8
7
 
9
- from isar.config.configuration_error import ConfigurationError
10
- from isar.config.keyvault.keyvault_error import KeyvaultError
11
8
  from isar.config.keyvault.keyvault_service import Keyvault
12
9
  from isar.config.settings import settings
13
10
 
14
11
 
15
12
  def setup_loggers(keyvault: Keyvault) -> None:
16
13
  log_levels: dict = settings.LOG_LEVELS
17
- source = files("isar").joinpath("config").joinpath("logging.conf")
18
- with as_file(source) as f:
19
- log_config = yaml.safe_load(open(f))
14
+ log_config = load_log_config()
20
15
 
21
16
  logging.config.dictConfig(log_config)
22
17
 
23
18
  handlers = []
24
19
  if settings.LOG_HANDLER_LOCAL_ENABLED:
25
20
  handlers.append(configure_console_handler(log_config=log_config))
26
- if settings.LOG_HANDLER_APPLICATION_INSIGHTS_ENABLED:
27
- handlers.append(
28
- configure_azure_handler(log_config=log_config, keyvault=keyvault)
29
- )
30
21
 
31
22
  for log_handler in handlers:
32
23
  for loggers in log_config["loggers"].keys():
@@ -35,6 +26,13 @@ def setup_loggers(keyvault: Keyvault) -> None:
35
26
  logging.getLogger().addHandler(log_handler)
36
27
 
37
28
 
29
+ def load_log_config():
30
+ source = files("isar").joinpath("config").joinpath("logging.conf")
31
+ with as_file(source) as f:
32
+ log_config = yaml.safe_load(open(f))
33
+ return log_config
34
+
35
+
38
36
  def configure_console_handler(log_config: dict) -> logging.Handler:
39
37
  handler = logging.StreamHandler()
40
38
  handler.setLevel(log_config["root"]["level"])
@@ -46,22 +44,3 @@ def configure_console_handler(log_config: dict) -> logging.Handler:
46
44
  )
47
45
  )
48
46
  return handler
49
-
50
-
51
- def configure_azure_handler(log_config: dict, keyvault: Keyvault) -> logging.Handler:
52
- connection_string: str
53
- try:
54
- connection_string = keyvault.get_secret(
55
- "application-insights-connection-string"
56
- ).value
57
- except KeyvaultError:
58
- message: str = (
59
- "CRITICAL ERROR: Missing connection string for"
60
- f" Application Insights in key vault '{keyvault.name}'."
61
- )
62
- print(f"\n{message} \n")
63
- raise ConfigurationError(message)
64
-
65
- handler = AzureLogHandler(connection_string=connection_string)
66
- handler.setLevel(log_config["root"]["level"])
67
- return handler