cgse 0.16.5__tar.gz → 0.16.7__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.
- {cgse-0.16.5 → cgse-0.16.7}/PKG-INFO +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/signal.py +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_influxdb_plugin.py +3 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_metrics.py +5 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/__init__.py +4 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/confman_cs.py +12 -11
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/control.py +18 -21
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/dummy.py +3 -8
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/logger/log_cs.py +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/services.py +2 -2
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/__init__.py +12 -2
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman_cs.py +13 -16
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/proxy.py +14 -11
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/client.py +31 -3
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/server.py +14 -9
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/services.py +2 -2
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/__init__.py +13 -3
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/storage_cs.py +13 -15
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_registry_client_server.py +2 -2
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_service_registry_server.py +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +2 -2
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-fits/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-hdf5/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-spw/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/pyproject.toml +1 -1
- {cgse-0.16.5 → cgse-0.16.7}/service_registry.db +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/.github/workflows/ruff-format-check.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/.gitignore +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/buffer_vat.log +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/buffer_vat.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/bump.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/conftest.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/bits.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/calibration.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/command.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/config.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/control.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/counter.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/decorators.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/device.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/dicts.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/dummy.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/env.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/exceptions.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/heartbeat.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/hk.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/listener.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/metrics.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/mixin.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/monitoring.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/observer.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/obsid.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/persistence.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/plugin.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/process.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/reload.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/settings.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/setup.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/api/system.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/custom_theme/main.html +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/coding_style.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/docs.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/installation.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/monitoring.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/monorepo.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/nox.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/plugins.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/project-configuration.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/unit_testing.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/uv.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/versioning.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/getting_started.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/help.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/images/cli-cgse.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/images/github-fork-clone-dark.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/images/github-fork-clone.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/images/grafana-queries.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/images/icons/cgse-logo-blue.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/images/icons/cgse-logo.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/initialize.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/images/load_methods.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/settings.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/setup.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-coordinates/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-core/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-core/notifyhub.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-core/registry.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-gui/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/libs/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/package_list.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/projects/cgse-tools.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/projects/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/projects/symetrie-hexapod.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/roadmap.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/stylesheets/custom.css +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/stylesheets/extra.css +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/tutorial.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/user_guide/cli.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/docs/user_guide/index.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/duckdb_metrics.db +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/duckdb_metrics.db.wal +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/identifier.sqlite +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/justfile +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/justfile +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/noxfile.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/service_registry.db +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/bits.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/calibration.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/config.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/counter.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/decorators.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/device.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/dicts.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/env.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/exceptions.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/heartbeat.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/hk.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/log.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/metrics.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/observer.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/obsid.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/persistence.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugin.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/process.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/py.typed +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/randomwalk.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/ratelimit.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/reload.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/resource.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/response.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/scpi.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/settings.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/setup.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/socketdevice.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/state.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/system.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/task.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/version.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/conftest.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/COPYING +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/IAS/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/INTA/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/command.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/void-0.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/void-1.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_bits.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_config.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_decorators.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_device.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_env.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_fixtures.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_hk.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_log.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_plugin.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_process.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_ratelimit.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_resource.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_response.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_settings.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_setup.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_signal.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_state.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_system.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_task.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_point.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/.envrc.disabled +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/service_registry.db +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/_start.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/_status.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/services.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/_setup_core.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/async_control.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/command.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/connect-todo.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/connect.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/listener.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/mixin.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/monitoring.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/backend.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/service.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/services.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/conftest.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/fixtures/services.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/services.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_async_control.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_cm_cs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_command.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_confman_setups.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_connect.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_control.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_dummy.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_event_notification.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_extensions.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_listener.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_logger.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_mixin.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_notify_hub.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_registry_backend.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_registry_service.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_server_running.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_settings_core.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/led.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/states.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/mkdocs.yml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/noxfile.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/overrides/.icons/custom/dbend-dark.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/overrides/.icons/custom/dbend-light.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/overrides/.icons/custom/gear.svg +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/justfile +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-fits/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-hdf5/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-spw/README.md +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-spw/src/egse/spw.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/ruff.toml +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/scratch/advanced-process-monitoring.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/scratch/live-process-monitoring.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/scratch/match-case.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/scratch/processes.json +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/scratch/simple-process-monitoring.py +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/temperature_readings.log +0 -0
- {cgse-0.16.5 → cgse-0.16.7}/test_service_registry.db +0 -0
|
@@ -158,7 +158,7 @@ class FileBasedSignaling:
|
|
|
158
158
|
"""Terminate the monitoring loop thread."""
|
|
159
159
|
self.running = False
|
|
160
160
|
if self.thread.is_alive():
|
|
161
|
-
self.thread.join(timeout=1)
|
|
161
|
+
self.thread.join(timeout=1.0)
|
|
162
162
|
|
|
163
163
|
|
|
164
164
|
def create_signal_command_file(signal_dir: Path, service_id: str, command: dict) -> None:
|
|
@@ -20,7 +20,9 @@ def test_influxdb_access():
|
|
|
20
20
|
influxdb = get_metrics_repo("influxdb", {"host": "http://localhost:8181", "database": "ARIEL", "token": token})
|
|
21
21
|
influxdb.connect()
|
|
22
22
|
|
|
23
|
-
result = influxdb.query(
|
|
23
|
+
result = influxdb.query(
|
|
24
|
+
"SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20", mode="pandas"
|
|
25
|
+
)
|
|
24
26
|
print(result)
|
|
25
27
|
assert isinstance(result, pd.DataFrame)
|
|
26
28
|
|
|
@@ -9,7 +9,11 @@ def test_get_metrics_repo():
|
|
|
9
9
|
influxdb = get_metrics_repo("influxdb", {"host": "http://localhost:8181", "database": "ARIEL", "token": token})
|
|
10
10
|
influxdb.connect()
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
# Don't use a too large time interval here, or you will get an error like:
|
|
13
|
+
# 'External error: Query would exceed file limit of 432 parquet files'
|
|
14
|
+
result = influxdb.query(
|
|
15
|
+
"SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20", mode="pandas"
|
|
16
|
+
)
|
|
13
17
|
print(result)
|
|
14
18
|
|
|
15
19
|
# result = influxdb.query("SHOW TABLES;")
|
|
@@ -177,11 +177,13 @@ HOSTNAME = settings.get("HOSTNAME", "localhost")
|
|
|
177
177
|
COMMANDING_PORT = settings.get("COMMANDING_PORT", 0)
|
|
178
178
|
SERVICE_PORT = settings.get("SERVICE_PORT", 0)
|
|
179
179
|
MONITORING_PORT = settings.get("MONITORING_PORT", 0)
|
|
180
|
+
STORAGE_MNEMONIC = settings.get("STORAGE_MNEMONIC", "CM")
|
|
181
|
+
SERVICE_TYPE = settings.get("SERVICE_TYPE", "cm_cs")
|
|
180
182
|
|
|
181
183
|
# CM_SETUP_ID = Gauge("CM_SETUP_ID", 'Setup ID')
|
|
182
184
|
# CM_TEST_ID = Gauge("CM_TEST_ID", 'Test ID')
|
|
183
185
|
|
|
184
|
-
PROXY_TIMEOUT =
|
|
186
|
+
PROXY_TIMEOUT = 10.0 # don't wait longer than 10s by default
|
|
185
187
|
|
|
186
188
|
|
|
187
189
|
def _push_setup_to_repo(filename: str, commit_msg: str) -> Failure | Success:
|
|
@@ -982,6 +984,7 @@ class ConfigurationManagerProxy(Proxy, ConfigurationManagerInterface):
|
|
|
982
984
|
from settings file]
|
|
983
985
|
port: TCP port on which the control server is listening for commands
|
|
984
986
|
[default is taken from settings file]
|
|
987
|
+
timeout: number of fractional seconds before a timeout is triggered
|
|
985
988
|
"""
|
|
986
989
|
|
|
987
990
|
def __init__(
|
|
@@ -22,12 +22,16 @@ from rich.console import Console
|
|
|
22
22
|
|
|
23
23
|
from egse.confman import ConfigurationManagerProtocol
|
|
24
24
|
from egse.confman import ConfigurationManagerProxy
|
|
25
|
-
from egse.confman import
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
from egse.confman import (
|
|
26
|
+
PROCESS_NAME,
|
|
27
|
+
PROTOCOL,
|
|
28
|
+
HOSTNAME,
|
|
29
|
+
COMMANDING_PORT,
|
|
30
|
+
SERVICE_PORT,
|
|
31
|
+
MONITORING_PORT,
|
|
32
|
+
STORAGE_MNEMONIC,
|
|
33
|
+
SERVICE_TYPE,
|
|
34
|
+
)
|
|
31
35
|
|
|
32
36
|
from egse.control import ControlServer
|
|
33
37
|
from egse.env import get_conf_data_location
|
|
@@ -66,7 +70,7 @@ class ConfigurationManagerControlServer(ControlServer):
|
|
|
66
70
|
|
|
67
71
|
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
68
72
|
|
|
69
|
-
self.register_service(service_type=
|
|
73
|
+
self.register_service(service_type=SERVICE_TYPE)
|
|
70
74
|
|
|
71
75
|
self.set_hk_delay(10.0)
|
|
72
76
|
|
|
@@ -85,10 +89,7 @@ class ConfigurationManagerControlServer(ControlServer):
|
|
|
85
89
|
return get_port_number(self.dev_ctrl_mon_sock) or MONITORING_PORT
|
|
86
90
|
|
|
87
91
|
def get_storage_mnemonic(self):
|
|
88
|
-
|
|
89
|
-
return settings.STORAGE_MNEMONIC
|
|
90
|
-
except AttributeError:
|
|
91
|
-
return "CM"
|
|
92
|
+
return STORAGE_MNEMONIC
|
|
92
93
|
|
|
93
94
|
def is_storage_manager_active(self):
|
|
94
95
|
from egse.storage import is_storage_manager_active
|
|
@@ -132,8 +132,6 @@ class ControlServer(metaclass=abc.ABCMeta):
|
|
|
132
132
|
self.registry = RegistryClient()
|
|
133
133
|
self.registry.connect()
|
|
134
134
|
|
|
135
|
-
self.service_id = None
|
|
136
|
-
|
|
137
135
|
# These instance variables will probably be overwritten by the subclass __init__
|
|
138
136
|
self.service_type = camel_to_kebab(type(self).__name__)
|
|
139
137
|
self.service_name = camel_to_snake(type(self).__name__)
|
|
@@ -620,27 +618,15 @@ class ControlServer(metaclass=abc.ABCMeta):
|
|
|
620
618
|
def setup_signaling(self):
|
|
621
619
|
self.signaling = FileBasedSignaling(self.service_name)
|
|
622
620
|
self.signaling.start_monitoring()
|
|
623
|
-
self.signaling.register_handler("reregister", self.
|
|
624
|
-
|
|
625
|
-
def _reregister_service(self, force: bool = False):
|
|
626
|
-
self.logger.info(f"Re-registration of service: {self.service_name} ({force=})")
|
|
627
|
-
|
|
628
|
-
if self.registry.get_service(self.service_id):
|
|
629
|
-
if force:
|
|
630
|
-
self.deregister_service()
|
|
631
|
-
else:
|
|
632
|
-
return
|
|
633
|
-
|
|
634
|
-
# FIXME: not sure if the stop heartbeat is necessary here, but I see that after
|
|
635
|
-
# a re-registration signal, the heartbeat socket is None.
|
|
636
|
-
# self.registry.stop_heartbeat()
|
|
637
|
-
|
|
638
|
-
self.register_service(self.service_type)
|
|
621
|
+
self.signaling.register_handler("reregister", self.reregister_service)
|
|
639
622
|
|
|
640
|
-
def register_service(self, service_type: str):
|
|
623
|
+
def register_service(self, service_type: str) -> None:
|
|
641
624
|
self.logger.info(f"Registering service {self.service_name} as type {service_type}")
|
|
625
|
+
|
|
642
626
|
self.service_type = service_type
|
|
643
|
-
|
|
627
|
+
|
|
628
|
+
self.registry.stop_heartbeat()
|
|
629
|
+
self.registry.register(
|
|
644
630
|
name=self.service_name,
|
|
645
631
|
host=get_host_ip() or "127.0.0.1",
|
|
646
632
|
port=get_port_number(self.dev_ctrl_cmd_sock),
|
|
@@ -655,7 +641,18 @@ class ControlServer(metaclass=abc.ABCMeta):
|
|
|
655
641
|
def deregister_service(self):
|
|
656
642
|
if self.registry:
|
|
657
643
|
self.registry.stop_heartbeat()
|
|
658
|
-
self.registry.deregister(
|
|
644
|
+
self.registry.deregister()
|
|
645
|
+
|
|
646
|
+
def reregister_service(self, force: bool = False) -> None:
|
|
647
|
+
self.logger.info(f"Re-registration of service: {self.service_name} ({force=})")
|
|
648
|
+
|
|
649
|
+
if self.registry.get_service():
|
|
650
|
+
if force:
|
|
651
|
+
self.deregister_service()
|
|
652
|
+
else:
|
|
653
|
+
return
|
|
654
|
+
|
|
655
|
+
self.register_service(self.service_type)
|
|
659
656
|
|
|
660
657
|
def store_housekeeping_information(self, data: dict) -> None:
|
|
661
658
|
"""Sends housekeeping information to the Storage Manager.
|
|
@@ -35,15 +35,11 @@ and stopped with:
|
|
|
35
35
|
|
|
36
36
|
from __future__ import annotations
|
|
37
37
|
|
|
38
|
-
import contextlib
|
|
39
38
|
import multiprocessing
|
|
40
39
|
import random
|
|
41
40
|
import select
|
|
42
41
|
import socket
|
|
43
42
|
import sys
|
|
44
|
-
import threading
|
|
45
|
-
import time
|
|
46
|
-
from functools import partial
|
|
47
43
|
|
|
48
44
|
import typer
|
|
49
45
|
import zmq
|
|
@@ -62,7 +58,6 @@ from egse.proxy import Proxy
|
|
|
62
58
|
from egse.system import SignalCatcher
|
|
63
59
|
from egse.system import attrdict
|
|
64
60
|
from egse.system import format_datetime
|
|
65
|
-
from egse.system import type_name
|
|
66
61
|
from egse.zmq_ser import bind_address
|
|
67
62
|
from egse.zmq_ser import connect_address
|
|
68
63
|
|
|
@@ -96,7 +91,7 @@ ctrl_settings = attrdict(
|
|
|
96
91
|
"SERVICE_PORT": 4444,
|
|
97
92
|
"MONITORING_PORT": 4445,
|
|
98
93
|
"PROTOCOL": "tcp",
|
|
99
|
-
"TIMEOUT":
|
|
94
|
+
"TIMEOUT": 10.0,
|
|
100
95
|
"HK_DELAY": 1.0,
|
|
101
96
|
}
|
|
102
97
|
)
|
|
@@ -172,7 +167,7 @@ class DummyProxy(Proxy, DummyInterface):
|
|
|
172
167
|
protocol: the transport protocol [default is taken from settings file]
|
|
173
168
|
hostname: location of the control server (IP address) [default is taken from settings file]
|
|
174
169
|
port: TCP port on which the control server is listening for commands [default is taken from settings file]
|
|
175
|
-
timeout: a socket timeout in
|
|
170
|
+
timeout: a socket timeout in seconds
|
|
176
171
|
"""
|
|
177
172
|
|
|
178
173
|
def __init__(
|
|
@@ -180,7 +175,7 @@ class DummyProxy(Proxy, DummyInterface):
|
|
|
180
175
|
protocol: str = ctrl_settings.PROTOCOL,
|
|
181
176
|
hostname: str = ctrl_settings.HOSTNAME,
|
|
182
177
|
port: int = ctrl_settings.COMMANDING_PORT,
|
|
183
|
-
timeout:
|
|
178
|
+
timeout: float = ctrl_settings.TIMEOUT,
|
|
184
179
|
):
|
|
185
180
|
super().__init__(connect_address(protocol, hostname, port), timeout=timeout)
|
|
186
181
|
|
|
@@ -111,7 +111,7 @@ class AsyncEventSubscriber:
|
|
|
111
111
|
|
|
112
112
|
while self.running:
|
|
113
113
|
try:
|
|
114
|
-
if await self.subscriber.poll(timeout=1000):
|
|
114
|
+
if await self.subscriber.poll(timeout=1000): # timeout in milliseconds
|
|
115
115
|
topic, message_bytes = await self.subscriber.recv_multipart()
|
|
116
116
|
|
|
117
117
|
event_type = topic.decode()
|
|
@@ -269,7 +269,7 @@ class EventSubscriber:
|
|
|
269
269
|
return self.subscriber
|
|
270
270
|
|
|
271
271
|
def poll(self, timeout=1000):
|
|
272
|
-
return self.subscriber.poll(timeout=timeout)
|
|
272
|
+
return self.subscriber.poll(timeout=timeout) # timeout in milliseconds
|
|
273
273
|
|
|
274
274
|
def handle_event(self, return_event_data: bool = False) -> dict:
|
|
275
275
|
topic, message_bytes = self.subscriber.recv_multipart()
|
|
@@ -22,12 +22,17 @@ LOGGER = logging.getLogger("egse.procman")
|
|
|
22
22
|
|
|
23
23
|
settings = Settings.load("Process Manager Control Server")
|
|
24
24
|
COMMAND_SETTINGS = Settings.load(location=HERE, filename="procman.yaml")
|
|
25
|
-
PROXY_TIMEOUT = 10_000
|
|
26
25
|
|
|
26
|
+
PROXY_TIMEOUT = 10.0 # don't wait longer than 10s
|
|
27
|
+
|
|
28
|
+
PROCESS_NAME = settings.get("PROCESS_NAME", "pm_cs")
|
|
27
29
|
SERVICE_TYPE = settings.get("SERVICE_TYPE", "pm_cs")
|
|
28
30
|
PROTOCOL = settings.get("PROTOCOL", "tcp")
|
|
29
31
|
HOSTNAME = settings.get("HOSTNAME", "localhost")
|
|
30
32
|
COMMANDING_PORT = settings.get("COMMANDING_PORT", 0) # dynamically assigned by the system if 0
|
|
33
|
+
SERVICE_PORT = settings.get("SERVICE_PORT", 0)
|
|
34
|
+
MONITORING_PORT = settings.get("MONITORING_PORT", 0)
|
|
35
|
+
STORAGE_MNEMONIC = settings.get("STORAGE_MNEMONIC", "PM")
|
|
31
36
|
|
|
32
37
|
|
|
33
38
|
def is_process_manager_active(timeout: float = 0.5) -> bool:
|
|
@@ -394,7 +399,11 @@ class ProcessManagerProxy(Proxy, ProcessManagerInterface):
|
|
|
394
399
|
"""Proxy for process management, used to connect to the Process Manager Control Server and send commands remotely."""
|
|
395
400
|
|
|
396
401
|
def __init__(
|
|
397
|
-
self,
|
|
402
|
+
self,
|
|
403
|
+
protocol: str = PROTOCOL,
|
|
404
|
+
hostname: str = HOSTNAME,
|
|
405
|
+
port: int = COMMANDING_PORT,
|
|
406
|
+
timeout: float = PROXY_TIMEOUT,
|
|
398
407
|
):
|
|
399
408
|
"""
|
|
400
409
|
Initialisation of a new Proxy for Process Management.
|
|
@@ -406,6 +415,7 @@ class ProcessManagerProxy(Proxy, ProcessManagerInterface):
|
|
|
406
415
|
protocol (str): Transport protocol
|
|
407
416
|
hostname (str): Location of the control server (IP address)
|
|
408
417
|
port (int): TCP port on which the Control Server is listening for commands
|
|
418
|
+
timeout (float): number of fractional seconds before a timeout occurs
|
|
409
419
|
"""
|
|
410
420
|
|
|
411
421
|
endpoint = get_endpoint(settings.SERVICE_TYPE, protocol, hostname, port)
|
|
@@ -21,7 +21,16 @@ from egse.process import SubProcess
|
|
|
21
21
|
from egse.procman.procman_protocol import ProcessManagerProtocol
|
|
22
22
|
from egse.registry.client import RegistryClient
|
|
23
23
|
from egse.services import ServiceProxy
|
|
24
|
-
from egse.
|
|
24
|
+
from egse.procman import (
|
|
25
|
+
PROCESS_NAME,
|
|
26
|
+
SERVICE_TYPE,
|
|
27
|
+
PROTOCOL,
|
|
28
|
+
COMMANDING_PORT,
|
|
29
|
+
SERVICE_PORT,
|
|
30
|
+
MONITORING_PORT,
|
|
31
|
+
HOSTNAME,
|
|
32
|
+
STORAGE_MNEMONIC,
|
|
33
|
+
)
|
|
25
34
|
from egse.storage import store_housekeeping_information
|
|
26
35
|
from egse.zmq_ser import get_port_number
|
|
27
36
|
|
|
@@ -29,15 +38,6 @@ from egse.zmq_ser import get_port_number
|
|
|
29
38
|
|
|
30
39
|
logger = logging.getLogger("egse.procman")
|
|
31
40
|
|
|
32
|
-
settings = Settings.load("Process Manager Control Server")
|
|
33
|
-
|
|
34
|
-
PROCESS_NAME = settings.get("PROCESS_NAME", "cm_cs")
|
|
35
|
-
PROTOCOL = settings.get("PROTOCOL", "tcp")
|
|
36
|
-
HOSTNAME = settings.get("HOSTNAME", "localhost")
|
|
37
|
-
COMMANDING_PORT = settings.get("COMMANDING_PORT", 0)
|
|
38
|
-
SERVICE_PORT = settings.get("SERVICE_PORT", 0)
|
|
39
|
-
MONITORING_PORT = settings.get("MONITORING_PORT", 0)
|
|
40
|
-
|
|
41
41
|
|
|
42
42
|
class ProcessManagerControlServer(ControlServer):
|
|
43
43
|
def __init__(self):
|
|
@@ -47,7 +47,7 @@ class ProcessManagerControlServer(ControlServer):
|
|
|
47
47
|
|
|
48
48
|
self.logger = logger
|
|
49
49
|
self.service_name = PROCESS_NAME
|
|
50
|
-
self.service_type =
|
|
50
|
+
self.service_type = SERVICE_TYPE
|
|
51
51
|
|
|
52
52
|
self.device_protocol = ProcessManagerProtocol(self)
|
|
53
53
|
|
|
@@ -57,7 +57,7 @@ class ProcessManagerControlServer(ControlServer):
|
|
|
57
57
|
|
|
58
58
|
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
59
59
|
|
|
60
|
-
self.register_service(service_type=
|
|
60
|
+
self.register_service(service_type=SERVICE_TYPE)
|
|
61
61
|
|
|
62
62
|
self.set_hk_delay(10.0)
|
|
63
63
|
|
|
@@ -76,10 +76,7 @@ class ProcessManagerControlServer(ControlServer):
|
|
|
76
76
|
return get_port_number(self.dev_ctrl_mon_sock) or MONITORING_PORT
|
|
77
77
|
|
|
78
78
|
def get_storage_mnemonic(self):
|
|
79
|
-
|
|
80
|
-
return settings.STORAGE_MNEMONIC
|
|
81
|
-
except AttributeError:
|
|
82
|
-
return "PM"
|
|
79
|
+
return STORAGE_MNEMONIC
|
|
83
80
|
|
|
84
81
|
def is_storage_manager_active(self):
|
|
85
82
|
from egse.storage import is_storage_manager_active
|
|
@@ -31,7 +31,7 @@ def set_docstring(func, cmd):
|
|
|
31
31
|
return wrap_func
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
REQUEST_TIMEOUT = 30
|
|
34
|
+
REQUEST_TIMEOUT = 30.0 # timeout in seconds
|
|
35
35
|
REQUEST_RETRIES = 0
|
|
36
36
|
|
|
37
37
|
|
|
@@ -93,10 +93,13 @@ class ControlServerConnectionInterface:
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
class BaseProxy(ControlServerConnectionInterface):
|
|
96
|
-
def __init__(self, endpoint: str, timeout:
|
|
96
|
+
def __init__(self, endpoint: str, timeout: float = REQUEST_TIMEOUT):
|
|
97
97
|
"""
|
|
98
|
-
The
|
|
99
|
-
|
|
98
|
+
The endpoint is a string that is constructed from the protocol, hostname
|
|
99
|
+
and port number and has the format: `protocol://hostname:port`.
|
|
100
|
+
|
|
101
|
+
The `timeout` argument specifies the number of fractional seconds to wait
|
|
102
|
+
for a reply from the control server.
|
|
100
103
|
"""
|
|
101
104
|
|
|
102
105
|
self._logger = logging.getLogger(self.__class__.__name__)
|
|
@@ -150,7 +153,7 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
150
153
|
def is_cs_connected(self) -> bool:
|
|
151
154
|
return self.ping()
|
|
152
155
|
|
|
153
|
-
def send(self, data, retries: int = REQUEST_RETRIES, timeout:
|
|
156
|
+
def send(self, data, retries: int = REQUEST_RETRIES, timeout: float | None = None):
|
|
154
157
|
"""
|
|
155
158
|
Sends a command to the control server and waits for a response.
|
|
156
159
|
|
|
@@ -166,14 +169,14 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
166
169
|
Args:
|
|
167
170
|
data (str): the command that is sent to the control server, usually a
|
|
168
171
|
string, but that is not enforced.
|
|
169
|
-
timeout (int): the time to wait for a reply [in
|
|
172
|
+
timeout (int): the time to wait for a reply [in seconds]
|
|
170
173
|
retries (int): the number of time we should retry to send the message
|
|
171
174
|
|
|
172
175
|
Returns:
|
|
173
176
|
response: the response from the control server or ``None`` when there was
|
|
174
177
|
a problem or a timeout.
|
|
175
178
|
"""
|
|
176
|
-
|
|
179
|
+
timeout_ms = int((timeout or self._timeout) * 1000)
|
|
177
180
|
|
|
178
181
|
pickle_string = pickle.dumps(data)
|
|
179
182
|
|
|
@@ -192,7 +195,7 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
192
195
|
self._socket.send(pickle_string)
|
|
193
196
|
|
|
194
197
|
while True:
|
|
195
|
-
socks = dict(self._poller.poll(
|
|
198
|
+
socks = dict(self._poller.poll(timeout_ms))
|
|
196
199
|
|
|
197
200
|
if self._socket in socks and socks[self._socket] == zmq.POLLIN:
|
|
198
201
|
pickle_string = self._socket.recv()
|
|
@@ -223,7 +226,7 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
223
226
|
self._socket.send(pickle_string)
|
|
224
227
|
|
|
225
228
|
def ping(self):
|
|
226
|
-
return_code = self.send("Ping", retries=0, timeout=
|
|
229
|
+
return_code = self.send("Ping", retries=0, timeout=1.0)
|
|
227
230
|
self._logger.log(0, f"Check if control server is available: Ping - {return_code}")
|
|
228
231
|
return return_code == "Pong"
|
|
229
232
|
|
|
@@ -278,7 +281,7 @@ class Proxy(BaseProxy, ControlServerConnectionInterface):
|
|
|
278
281
|
during initialization, a ConnectionError will be raised.
|
|
279
282
|
"""
|
|
280
283
|
|
|
281
|
-
def __init__(self, endpoint, timeout:
|
|
284
|
+
def __init__(self, endpoint, timeout: float = REQUEST_TIMEOUT):
|
|
282
285
|
"""
|
|
283
286
|
During initialization, the Proxy will connect to the control server and send a
|
|
284
287
|
handshaking `Ping` command. When that succeeds the Proxy will request and load the
|
|
@@ -287,7 +290,7 @@ class Proxy(BaseProxy, ControlServerConnectionInterface):
|
|
|
287
290
|
can fix the problem with the control server and call `connect_cs()`, followed by a call to
|
|
288
291
|
`load_commands()`.
|
|
289
292
|
|
|
290
|
-
The `timeout` argument specifies the number of
|
|
293
|
+
The `timeout` argument specifies the number of seconds
|
|
291
294
|
"""
|
|
292
295
|
|
|
293
296
|
super().__init__(endpoint, timeout)
|
|
@@ -310,6 +310,25 @@ class RegistryClient:
|
|
|
310
310
|
self.logger.error(f"Failed to deregister service: {response.get('error')}")
|
|
311
311
|
return False
|
|
312
312
|
|
|
313
|
+
def reregister(self) -> str | None:
|
|
314
|
+
if not self._service_id:
|
|
315
|
+
self.logger.warning("Cannot reregister: no service is registered")
|
|
316
|
+
return None
|
|
317
|
+
|
|
318
|
+
if not self._service_info:
|
|
319
|
+
self.logger.warning(
|
|
320
|
+
"Cannot reregister: no service info was saved by this registry client or service already deregistered."
|
|
321
|
+
)
|
|
322
|
+
return None
|
|
323
|
+
|
|
324
|
+
return self.register(
|
|
325
|
+
name=self._service_info["name"],
|
|
326
|
+
host=self._service_info["host"],
|
|
327
|
+
port=self._service_info["port"],
|
|
328
|
+
service_type=self._service_info["type"],
|
|
329
|
+
metadata=self._service_info["metadata"],
|
|
330
|
+
)
|
|
331
|
+
|
|
313
332
|
def discover_service(self, service_type: str, use_cache: bool = False) -> dict[str, Any] | None:
|
|
314
333
|
"""
|
|
315
334
|
Discover a service of the specified type. The service is guaranteed to be healthy at the time of discovery.
|
|
@@ -344,17 +363,23 @@ class RegistryClient:
|
|
|
344
363
|
self.logger.warning(f"Service discovery failed: {response.get('error')}")
|
|
345
364
|
return None
|
|
346
365
|
|
|
347
|
-
def get_service(self, service_id: str, use_cache: bool = True) -> dict[str, Any] | None:
|
|
366
|
+
def get_service(self, service_id: str | None = None, use_cache: bool = True) -> dict[str, Any] | None:
|
|
348
367
|
"""
|
|
349
|
-
Get information about a specific service.
|
|
368
|
+
Get information about a specific service. When no service_id is given,
|
|
369
|
+
the service_id known to this client will be used.
|
|
350
370
|
|
|
351
371
|
Args:
|
|
352
|
-
service_id: ID of the service to get
|
|
372
|
+
service_id: ID of the service to get [default=None]
|
|
353
373
|
use_cache: Whether to use cached service information
|
|
354
374
|
|
|
355
375
|
Returns:
|
|
356
376
|
Service information if found, None otherwise.
|
|
357
377
|
"""
|
|
378
|
+
service_id = service_id or self._service_id
|
|
379
|
+
|
|
380
|
+
if not service_id:
|
|
381
|
+
self.logger.warning("Cannot get service: no service id is given or known.")
|
|
382
|
+
return None
|
|
358
383
|
|
|
359
384
|
request = {"action": "get", "service_id": service_id}
|
|
360
385
|
|
|
@@ -453,6 +478,9 @@ class RegistryClient:
|
|
|
453
478
|
if not self.health_check():
|
|
454
479
|
self.logger.warning("ServiceRegistry not responding.")
|
|
455
480
|
return
|
|
481
|
+
else:
|
|
482
|
+
self.logger.info("Health check succeeded, reregistering ?")
|
|
483
|
+
self.reregister()
|
|
456
484
|
|
|
457
485
|
else:
|
|
458
486
|
self.logger.debug(response.get("message"))
|
|
@@ -22,6 +22,7 @@ import typer
|
|
|
22
22
|
import zmq
|
|
23
23
|
import zmq.asyncio
|
|
24
24
|
|
|
25
|
+
from egse.env import bool_env
|
|
25
26
|
from egse.logger import remote_logging
|
|
26
27
|
from egse.registry import DEFAULT_RS_DB_PATH
|
|
27
28
|
from egse.registry import DEFAULT_RS_HB_PORT
|
|
@@ -39,6 +40,8 @@ from egse.system import get_logging_level
|
|
|
39
40
|
|
|
40
41
|
settings = Settings.load("Service Registry")
|
|
41
42
|
|
|
43
|
+
VERBOSE_DEBUG = bool_env("VERBOSE_DEBUG")
|
|
44
|
+
|
|
42
45
|
app = typer.Typer(name="rs_cs")
|
|
43
46
|
|
|
44
47
|
|
|
@@ -234,7 +237,9 @@ class AsyncRegistryServer:
|
|
|
234
237
|
message_type = MessageType(message_parts[1])
|
|
235
238
|
message_data = message_parts[2]
|
|
236
239
|
|
|
237
|
-
|
|
240
|
+
if VERBOSE_DEBUG:
|
|
241
|
+
self.logger.debug(f"{client_id = }, {message_type = }, {message_data = }")
|
|
242
|
+
|
|
238
243
|
response = await self._process_request(message_data)
|
|
239
244
|
|
|
240
245
|
await self._send_response(client_id, message_type, response)
|
|
@@ -274,7 +279,7 @@ class AsyncRegistryServer:
|
|
|
274
279
|
"""
|
|
275
280
|
try:
|
|
276
281
|
request = json.loads(msg_data.decode())
|
|
277
|
-
self.logger.
|
|
282
|
+
self.logger.debug(f"Received request: {request}")
|
|
278
283
|
|
|
279
284
|
except json.JSONDecodeError as exc:
|
|
280
285
|
self.logger.error(f"Invalid JSON received: {exc}")
|
|
@@ -377,7 +382,7 @@ class AsyncRegistryServer:
|
|
|
377
382
|
"""Handle a service heartbeat request."""
|
|
378
383
|
service_id = request.get("service_id")
|
|
379
384
|
|
|
380
|
-
self.logger.
|
|
385
|
+
self.logger.debug(f"Handle renew request: {request}")
|
|
381
386
|
|
|
382
387
|
if not service_id:
|
|
383
388
|
return {"success": False, "error": "Missing required field: service_id"}
|
|
@@ -428,7 +433,7 @@ class AsyncRegistryServer:
|
|
|
428
433
|
|
|
429
434
|
service_id = request.get("service_id")
|
|
430
435
|
|
|
431
|
-
self.logger.
|
|
436
|
+
self.logger.debug(f"Handle get request: {request}")
|
|
432
437
|
|
|
433
438
|
if not service_id:
|
|
434
439
|
return {"success": False, "error": "Missing required field: service_id"}
|
|
@@ -445,7 +450,7 @@ class AsyncRegistryServer:
|
|
|
445
450
|
"""Handle a request to list services."""
|
|
446
451
|
service_type = request.get("service_type")
|
|
447
452
|
|
|
448
|
-
self.logger.
|
|
453
|
+
self.logger.debug(f"Handle list request: {request}")
|
|
449
454
|
|
|
450
455
|
# List the services
|
|
451
456
|
services = await self.backend.list_services(service_type)
|
|
@@ -459,7 +464,7 @@ class AsyncRegistryServer:
|
|
|
459
464
|
"""Handle a service discovery request."""
|
|
460
465
|
service_type = request.get("service_type")
|
|
461
466
|
|
|
462
|
-
self.logger.
|
|
467
|
+
self.logger.debug(f"Handle discover request for service type: {service_type}")
|
|
463
468
|
|
|
464
469
|
if not service_type:
|
|
465
470
|
return {"success": False, "error": "Missing required field: service_type"}
|
|
@@ -475,7 +480,7 @@ class AsyncRegistryServer:
|
|
|
475
480
|
async def _handle_info(self, request: dict[str, Any]) -> dict[str, Any]:
|
|
476
481
|
"""Handle the info request and send information about the registry server."""
|
|
477
482
|
|
|
478
|
-
self.logger.
|
|
483
|
+
self.logger.debug(f"Handle info request: {request}")
|
|
479
484
|
|
|
480
485
|
# List the services
|
|
481
486
|
services = await self.backend.list_services()
|
|
@@ -491,14 +496,14 @@ class AsyncRegistryServer:
|
|
|
491
496
|
async def _handle_health(self, request: dict[str, Any]) -> dict[str, Any]:
|
|
492
497
|
"""Handle a health check request."""
|
|
493
498
|
|
|
494
|
-
self.logger.
|
|
499
|
+
self.logger.debug(f"Handle health request: {request}")
|
|
495
500
|
|
|
496
501
|
return {"success": True, "status": "ok", "timestamp": int(time.time())}
|
|
497
502
|
|
|
498
503
|
async def _handle_terminate(self, request: dict[str, Any]) -> dict[str, Any]:
|
|
499
504
|
"""Handle a termination request."""
|
|
500
505
|
|
|
501
|
-
self.logger.
|
|
506
|
+
self.logger.debug(f"Handle termination request: {request}")
|
|
502
507
|
|
|
503
508
|
self.stop()
|
|
504
509
|
|
|
@@ -227,7 +227,7 @@ class ServiceProxy(Proxy, ServiceInterface):
|
|
|
227
227
|
protocol: str = "tcp",
|
|
228
228
|
hostname: str = None,
|
|
229
229
|
port: int = None,
|
|
230
|
-
timeout:
|
|
230
|
+
timeout: float = REQUEST_TIMEOUT,
|
|
231
231
|
):
|
|
232
232
|
"""
|
|
233
233
|
The Service Proxy class is used to send service commands to the control server.
|
|
@@ -237,7 +237,7 @@ class ServiceProxy(Proxy, ServiceInterface):
|
|
|
237
237
|
protocol: the transport protocol [default: tcp]
|
|
238
238
|
hostname: the IP address of the control server
|
|
239
239
|
port: the port on which the control server is listening for service commands
|
|
240
|
-
timeout: number of
|
|
240
|
+
timeout: number of fractional seconds before a timeout is triggered
|
|
241
241
|
"""
|
|
242
242
|
|
|
243
243
|
if hostname is None or port is None:
|