isar 1.17.0__tar.gz → 1.18.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.
- {isar-1.17.0 → isar-1.18.0}/PKG-INFO +1 -1
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/settings.py +3 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/monitor.py +36 -1
- {isar-1.17.0 → isar-1.18.0}/src/isar.egg-info/PKG-INFO +1 -1
- {isar-1.17.0 → isar-1.18.0}/src/isar.egg-info/SOURCES.txt +0 -1
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/exceptions/robot_exceptions.py +13 -0
- isar-1.17.0/.github/workflows/repository_dispatch_on_merge.yml +0 -20
- {isar-1.17.0 → isar-1.18.0}/.dockerignore +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/release.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/workflows/project_automations.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/workflows/publish_isar_base_image.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/workflows/pythonpackage.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/workflows/pythonpublish.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/.github/workflows/stale.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/.gitignore +0 -0
- {isar-1.17.0 → isar-1.18.0}/.pre-commit-config.yaml +0 -0
- {isar-1.17.0 → isar-1.18.0}/Dockerfile +0 -0
- {isar-1.17.0 → isar-1.18.0}/LICENSE +0 -0
- {isar-1.17.0 → isar-1.18.0}/README.md +0 -0
- {isar-1.17.0 → isar-1.18.0}/SECURITY.md +0 -0
- {isar-1.17.0 → isar-1.18.0}/docker-compose-turtlebot.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/docker-compose.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/docs/Makefile +0 -0
- {isar-1.17.0 → isar-1.18.0}/docs/make.bat +0 -0
- {isar-1.17.0 → isar-1.18.0}/docs/rst_processing.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/docs/source/conf.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/docs/source/index.rst +0 -0
- {isar-1.17.0 → isar-1.18.0}/docs/source/readme_link.md +0 -0
- {isar-1.17.0 → isar-1.18.0}/docs/state_machine_diagram.png +0 -0
- {isar-1.17.0 → isar-1.18.0}/main.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/pyproject.toml +0 -0
- {isar-1.17.0 → isar-1.18.0}/radixconfig.yml +0 -0
- {isar-1.17.0 → isar-1.18.0}/setup.cfg +0 -0
- {isar-1.17.0 → isar-1.18.0}/setup.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/api.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/models/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/models/models.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/models/start_mission_definition.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/schedule/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/schedule/scheduling_controller.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/security/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/apis/security/authentication.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/certs/ca-cert.pem +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/configuration_error.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/keyvault/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/keyvault/keyvault_error.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/keyvault/keyvault_service.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/log.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/logging.conf +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/maps/default_map.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/maps/klab_b.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/maps/klab_compressor.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/maps/klab_turtlebot.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/maps/turtleworld.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_missions/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_missions/default.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_poses/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/config/settings.env +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/mission_planner/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/mission_planner/local_planner.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/mission_planner/mission_planner_interface.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/mission_planner/sequential_task_selector.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/mission_planner/task_selector_interface.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/communication/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/communication/message.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/communication/queues/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/communication/queues/queue_io.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/communication/queues/queues.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/communication/queues/status_queue.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/models/mission_metadata/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/modules.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/auth/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/auth/azure_credentials.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/readers/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/readers/base_reader.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/robot_status_publisher.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/request_handler.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/stid/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/utilities/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/utilities/queue_utilities.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/utilities/scheduling_utilities.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/services/utilities/threaded_request.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/state_machine.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/idle.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/initialize.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/initiate.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/off.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/paused.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states/stop.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/state_machine/states_enum.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/storage/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/storage/blob_storage.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/storage/local_storage.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/storage/slimm_storage.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/storage/storage_interface.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/storage/uploader.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar/storage/utilities.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar.egg-info/dependency_links.txt +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar.egg-info/requires.txt +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/isar.egg-info/top_level.txt +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/exceptions/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/initialize/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/initialize/initialize_params.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/inspection/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/inspection/inspection.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/mission/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/mission/mission.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/mission/status.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/mission/step.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/mission/task.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/robots/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/models/robots/robot_model.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/robot_interface.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/telemetry/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/telemetry/mqtt_client.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/telemetry/payloads.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/test_robot_interface.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/utilities/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/utilities/json_service.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/conftest.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/turtlebot/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/turtlebot/config/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/turtlebot/config/missions/default.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/integration/turtlebot/test_successful_mission.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/apis/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/apis/scheduler/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/apis/security/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/apis/security/test_authentication.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/mission/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/mission/test_mission.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/models/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/models/communication/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/models/communication/test_queues.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/models/example_mission_definition.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/models/test_start_mission_definition.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/readers/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/readers/test_base_reader.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/readers/test_mission_reader.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/service_connections/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/service_connections/echo/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/utilities/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/state_machine/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/state_machine/states/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/state_machine/states/test_monitor.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/state_machine/test_state_machine.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/storage/test_blob_storage.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/isar/storage/test_uploader.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/__init__.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/blob_storage.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/mission_definition.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/mqtt_client.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/pose.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/request.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/robot_interface.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/status.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/step.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/task.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/mocks/token.py +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/test_data/test_json_file.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/test_data/test_map_config/test_map_config.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/test_data/test_mission_not_working.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/test_data/test_mission_working.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/test_data/test_mission_working_no_tasks.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/test_data/test_thermal_image_mission.json +0 -0
- {isar-1.17.0 → isar-1.18.0}/tests/test_modules.py +0 -0
|
@@ -56,6 +56,9 @@ class Settings(BaseSettings):
|
|
|
56
56
|
# Number of attempts to initiate a step or mission before cancelling
|
|
57
57
|
INITIATE_FAILURE_COUNTER_LIMIT: int = Field(default=10)
|
|
58
58
|
|
|
59
|
+
# Number of attempts to request a step status in monitor before cancelling
|
|
60
|
+
REQUEST_STATUS_FAILURE_COUNTER_LIMIT: int = Field(default=3)
|
|
61
|
+
|
|
59
62
|
# Number of attempts to stop the robot before giving up
|
|
60
63
|
STOP_ROBOT_ATTEMPTS_LIMIT: int = Field(default=10)
|
|
61
64
|
|
|
@@ -7,6 +7,7 @@ from injector import inject
|
|
|
7
7
|
from transitions import State
|
|
8
8
|
|
|
9
9
|
from isar.mission_planner.task_selector_interface import TaskSelectorStop
|
|
10
|
+
from isar.config.settings import settings
|
|
10
11
|
from isar.services.utilities.threaded_request import (
|
|
11
12
|
ThreadedRequest,
|
|
12
13
|
ThreadedRequestNotFinishedError,
|
|
@@ -17,6 +18,7 @@ from robot_interface.models.exceptions.robot_exceptions import (
|
|
|
17
18
|
RobotMissionStatusException,
|
|
18
19
|
RobotRetrieveInspectionException,
|
|
19
20
|
RobotStepStatusException,
|
|
21
|
+
RobotCommunicationTimeoutException,
|
|
20
22
|
)
|
|
21
23
|
from robot_interface.models.inspection.inspection import Inspection
|
|
22
24
|
from robot_interface.models.mission.mission import Mission
|
|
@@ -32,6 +34,10 @@ class Monitor(State):
|
|
|
32
34
|
def __init__(self, state_machine: "StateMachine") -> None:
|
|
33
35
|
super().__init__(name="monitor", on_enter=self.start, on_exit=self.stop)
|
|
34
36
|
self.state_machine: "StateMachine" = state_machine
|
|
37
|
+
self.request_status_failure_counter: int = 0
|
|
38
|
+
self.request_status_failure_counter_limit: int = (
|
|
39
|
+
settings.REQUEST_STATUS_FAILURE_COUNTER_LIMIT
|
|
40
|
+
)
|
|
35
41
|
|
|
36
42
|
self.logger = logging.getLogger("state_machine")
|
|
37
43
|
self.step_status_thread: Optional[ThreadedRequest] = None
|
|
@@ -61,7 +67,6 @@ class Monitor(State):
|
|
|
61
67
|
status_function=self.state_machine.robot.step_status,
|
|
62
68
|
thread_name="State Machine Monitor Get Step Status",
|
|
63
69
|
)
|
|
64
|
-
|
|
65
70
|
try:
|
|
66
71
|
status: Union[StepStatus, MissionStatus] = (
|
|
67
72
|
self.step_status_thread.get_output()
|
|
@@ -70,6 +75,34 @@ class Monitor(State):
|
|
|
70
75
|
time.sleep(self.state_machine.sleep_time)
|
|
71
76
|
continue
|
|
72
77
|
|
|
78
|
+
except RobotCommunicationTimeoutException as e:
|
|
79
|
+
self.state_machine.current_mission.error_message = ErrorMessage(
|
|
80
|
+
error_reason=e.error_reason, error_description=e.error_description
|
|
81
|
+
)
|
|
82
|
+
self.step_status_thread = None
|
|
83
|
+
self.request_status_failure_counter += 1
|
|
84
|
+
self.logger.warning(
|
|
85
|
+
f"Monitoring step {self.state_machine.current_step.id} failed #: "
|
|
86
|
+
f"{self.request_status_failure_counter} failed because: {e.error_description}"
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
if (
|
|
90
|
+
self.request_status_failure_counter
|
|
91
|
+
>= self.request_status_failure_counter_limit
|
|
92
|
+
):
|
|
93
|
+
self.state_machine.current_step.error_message = ErrorMessage(
|
|
94
|
+
error_reason=e.error_reason,
|
|
95
|
+
error_description=e.error_description,
|
|
96
|
+
)
|
|
97
|
+
self.logger.error(
|
|
98
|
+
f"Step will be cancelled after failing to get step status "
|
|
99
|
+
f"{self.request_status_failure_counter} times because: "
|
|
100
|
+
f"{e.error_description}"
|
|
101
|
+
)
|
|
102
|
+
status = StepStatus.Failed
|
|
103
|
+
else:
|
|
104
|
+
continue
|
|
105
|
+
|
|
73
106
|
except RobotStepStatusException as e:
|
|
74
107
|
self.state_machine.current_step.error_message = ErrorMessage(
|
|
75
108
|
error_reason=e.error_reason, error_description=e.error_description
|
|
@@ -98,6 +131,8 @@ class Monitor(State):
|
|
|
98
131
|
f"Retrieving the status failed because: {e.error_description}"
|
|
99
132
|
)
|
|
100
133
|
|
|
134
|
+
self.request_status_failure_counter = 0
|
|
135
|
+
|
|
101
136
|
if isinstance(status, StepStatus):
|
|
102
137
|
self.state_machine.current_step.status = status
|
|
103
138
|
elif isinstance(status, MissionStatus):
|
|
@@ -5,6 +5,7 @@ from typing import Optional
|
|
|
5
5
|
|
|
6
6
|
class ErrorReason(str, Enum):
|
|
7
7
|
RobotCommunicationException: str = "robot_communication_exception"
|
|
8
|
+
RobotCommunicationTimeoutException: str = "robot_communication_timeout_exception"
|
|
8
9
|
RobotInfeasibleStepException: str = "robot_infeasible_step_exception"
|
|
9
10
|
RobotInfeasibleMissionException: str = "robot_infeasible_mission_exception"
|
|
10
11
|
RobotMissionStatusException: str = "robot_mission_status_exception"
|
|
@@ -49,6 +50,18 @@ class RobotCommunicationException(RobotException):
|
|
|
49
50
|
pass
|
|
50
51
|
|
|
51
52
|
|
|
53
|
+
# An exception which should be thrown by the robot package if the communication has timed
|
|
54
|
+
# out and ISAR should retry the request.
|
|
55
|
+
class RobotCommunicationTimeoutException(RobotException):
|
|
56
|
+
def __init__(self, error_description: str) -> None:
|
|
57
|
+
super().__init__(
|
|
58
|
+
error_reason=ErrorReason.RobotCommunicationTimeoutException,
|
|
59
|
+
error_description=error_description,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
pass
|
|
63
|
+
|
|
64
|
+
|
|
52
65
|
# An exception which should be thrown by the robot package if it is unable to start the
|
|
53
66
|
# current step.
|
|
54
67
|
class RobotInfeasibleStepException(RobotException):
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
name: Dispatch to repo
|
|
2
|
-
on:
|
|
3
|
-
push:
|
|
4
|
-
branches:
|
|
5
|
-
- main
|
|
6
|
-
workflow_dispatch:
|
|
7
|
-
jobs:
|
|
8
|
-
dispatch:
|
|
9
|
-
runs-on: ubuntu-latest
|
|
10
|
-
strategy:
|
|
11
|
-
matrix:
|
|
12
|
-
repo: ["equinor/robotics-deployment"]
|
|
13
|
-
steps:
|
|
14
|
-
- name: Push to repo
|
|
15
|
-
uses: peter-evans/repository-dispatch@v2.0.0
|
|
16
|
-
with:
|
|
17
|
-
token: ${{ secrets.PAT }}
|
|
18
|
-
repository: ${{ matrix.repo }}
|
|
19
|
-
event-type: update
|
|
20
|
-
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "module": "isar", "branch": "main"}'
|
|
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
|
|
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
|
{isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_mission_definition/default_mission.json
RENAMED
|
File without changes
|
{isar-1.17.0 → isar-1.18.0}/src/isar/config/predefined_mission_definition/default_turtlebot.json
RENAMED
|
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
|
{isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py
RENAMED
|
File without changes
|
{isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/robot_info_publisher.py
RENAMED
|
File without changes
|
{isar-1.17.0 → isar-1.18.0}/src/isar/services/service_connections/mqtt/robot_status_publisher.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
{isar-1.17.0 → isar-1.18.0}/tests/isar/services/service_connections/test_base_request_handler.py
RENAMED
|
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
|