cgse 0.16.6__tar.gz → 0.16.8__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.6 → cgse-0.16.8}/PKG-INFO +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_influxdb_plugin.py +3 -1
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_metrics.py +3 -2
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/__init__.py +2 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/confman_cs.py +12 -11
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/control.py +18 -21
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/logger/log_cs.py +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/__init__.py +9 -5
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman_cs.py +13 -16
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/proxy.py +15 -7
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/client.py +73 -13
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/server.py +16 -9
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/__init__.py +12 -6
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/storage_cs.py +13 -15
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-fits/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-hdf5/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-spw/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/pyproject.toml +1 -1
- {cgse-0.16.6 → cgse-0.16.8}/service_registry.db +0 -0
- cgse-0.16.8/service_registry.db-shm +0 -0
- cgse-0.16.8/service_registry.db-wal +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/.github/workflows/ruff-format-check.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/.gitignore +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/buffer_vat.log +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/buffer_vat.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/bump.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/conftest.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/bits.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/calibration.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/command.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/config.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/control.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/counter.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/decorators.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/device.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/dicts.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/dummy.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/env.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/exceptions.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/heartbeat.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/hk.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/listener.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/metrics.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/mixin.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/monitoring.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/observer.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/obsid.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/persistence.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/plugin.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/process.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/reload.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/settings.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/setup.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/api/system.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/custom_theme/main.html +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/coding_style.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/docs.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/installation.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/monitoring.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/monorepo.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/nox.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/plugins.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/project-configuration.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/unit_testing.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/uv.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/versioning.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/getting_started.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/help.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/images/cli-cgse.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/images/github-fork-clone-dark.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/images/github-fork-clone.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/images/grafana-queries.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/images/icons/cgse-logo-blue.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/images/icons/cgse-logo.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/initialize.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/images/load_methods.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/settings.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/setup.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-coordinates/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-core/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-core/notifyhub.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-core/registry.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-gui/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/libs/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/package_list.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/projects/cgse-tools.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/projects/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/projects/symetrie-hexapod.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/roadmap.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/stylesheets/custom.css +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/stylesheets/extra.css +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/tutorial.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/user_guide/cli.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/docs/user_guide/index.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/duckdb_metrics.db +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/duckdb_metrics.db.wal +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/identifier.sqlite +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/justfile +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/justfile +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/noxfile.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/service_registry.db +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/bits.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/calibration.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/config.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/counter.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/decorators.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/device.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/dicts.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/env.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/exceptions.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/heartbeat.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/hk.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/log.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/metrics.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/observer.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/obsid.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/persistence.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugin.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/process.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/py.typed +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/randomwalk.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/ratelimit.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/reload.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/resource.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/response.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/scpi.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/settings.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/setup.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/signal.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/socketdevice.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/state.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/system.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/task.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/version.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/conftest.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/COPYING +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/IAS/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/INTA/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/command.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/void-0.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/void-1.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_bits.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_config.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_decorators.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_device.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_env.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_fixtures.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_hk.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_log.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_plugin.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_process.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_ratelimit.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_resource.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_response.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_settings.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_setup.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_signal.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_state.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_system.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_task.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_point.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/.envrc.disabled +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/service_registry.db +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/_start.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/_status.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/_setup_core.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/async_control.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/command.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/connect-todo.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/connect.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/dummy.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/listener.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/mixin.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/monitoring.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/backend.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/service.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/services.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/conftest.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/fixtures/services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_async_control.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_cm_cs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_command.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_confman_setups.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_connect.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_control.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_dummy.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_event_notification.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_extensions.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_listener.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_logger.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_mixin.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_notify_hub.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_registry_backend.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_registry_service.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_server_running.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_settings_core.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/led.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/states.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/mkdocs.yml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/noxfile.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/overrides/.icons/custom/dbend-dark.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/overrides/.icons/custom/dbend-light.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/overrides/.icons/custom/gear.svg +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/justfile +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-fits/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-hdf5/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-spw/README.md +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-spw/src/egse/spw.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/ruff.toml +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/scratch/advanced-process-monitoring.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/scratch/live-process-monitoring.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/scratch/match-case.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/scratch/processes.json +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/scratch/simple-process-monitoring.py +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/temperature_readings.log +0 -0
- {cgse-0.16.6 → cgse-0.16.8}/test_service_registry.db +0 -0
|
@@ -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
|
|
|
@@ -11,8 +11,9 @@ def test_get_metrics_repo():
|
|
|
11
11
|
|
|
12
12
|
# Don't use a too large time interval here, or you will get an error like:
|
|
13
13
|
# 'External error: Query would exceed file limit of 432 parquet files'
|
|
14
|
-
result = influxdb.query(
|
|
15
|
-
|
|
14
|
+
result = influxdb.query(
|
|
15
|
+
"SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20", mode="pandas"
|
|
16
|
+
)
|
|
16
17
|
print(result)
|
|
17
18
|
|
|
18
19
|
# result = influxdb.query("SHOW TABLES;")
|
|
@@ -177,6 +177,8 @@ 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')
|
|
@@ -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.
|
|
@@ -25,10 +25,14 @@ COMMAND_SETTINGS = Settings.load(location=HERE, filename="procman.yaml")
|
|
|
25
25
|
|
|
26
26
|
PROXY_TIMEOUT = 10.0 # don't wait longer than 10s
|
|
27
27
|
|
|
28
|
+
PROCESS_NAME = settings.get("PROCESS_NAME", "pm_cs")
|
|
28
29
|
SERVICE_TYPE = settings.get("SERVICE_TYPE", "pm_cs")
|
|
29
30
|
PROTOCOL = settings.get("PROTOCOL", "tcp")
|
|
30
31
|
HOSTNAME = settings.get("HOSTNAME", "localhost")
|
|
31
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")
|
|
32
36
|
|
|
33
37
|
|
|
34
38
|
def is_process_manager_active(timeout: float = 0.5) -> bool:
|
|
@@ -395,11 +399,11 @@ class ProcessManagerProxy(Proxy, ProcessManagerInterface):
|
|
|
395
399
|
"""Proxy for process management, used to connect to the Process Manager Control Server and send commands remotely."""
|
|
396
400
|
|
|
397
401
|
def __init__(
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
402
|
+
self,
|
|
403
|
+
protocol: str = PROTOCOL,
|
|
404
|
+
hostname: str = HOSTNAME,
|
|
405
|
+
port: int = COMMANDING_PORT,
|
|
406
|
+
timeout: float = PROXY_TIMEOUT,
|
|
403
407
|
):
|
|
404
408
|
"""
|
|
405
409
|
Initialisation of a new Proxy for Process Management.
|
|
@@ -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
|
|
@@ -13,6 +13,7 @@ from types import MethodType
|
|
|
13
13
|
|
|
14
14
|
import zmq
|
|
15
15
|
|
|
16
|
+
from egse.connect import VERBOSE_DEBUG
|
|
16
17
|
from egse.decorators import dynamic_interface
|
|
17
18
|
from egse.log import logger
|
|
18
19
|
from egse.mixin import DynamicClientCommandMixin
|
|
@@ -102,7 +103,7 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
102
103
|
for a reply from the control server.
|
|
103
104
|
"""
|
|
104
105
|
|
|
105
|
-
self._logger =
|
|
106
|
+
self._logger = logger
|
|
106
107
|
|
|
107
108
|
self._ctx = zmq.Context.instance()
|
|
108
109
|
self._poller = zmq.Poller()
|
|
@@ -123,7 +124,8 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
123
124
|
self.disconnect_cs()
|
|
124
125
|
|
|
125
126
|
def connect_cs(self):
|
|
126
|
-
|
|
127
|
+
if VERBOSE_DEBUG:
|
|
128
|
+
self._logger.debug(f"Trying to connect {self.__class__.__name__} to {self._endpoint}")
|
|
127
129
|
|
|
128
130
|
self._socket = self._ctx.socket(zmq.REQ)
|
|
129
131
|
self._socket.connect(self._endpoint)
|
|
@@ -135,7 +137,8 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
135
137
|
self._poller.unregister(self._socket)
|
|
136
138
|
|
|
137
139
|
def reconnect_cs(self):
|
|
138
|
-
|
|
140
|
+
if VERBOSE_DEBUG:
|
|
141
|
+
self._logger.debug(f"Trying to reconnect {self.__class__.__name__} to {self._endpoint}")
|
|
139
142
|
|
|
140
143
|
if not self._socket.closed:
|
|
141
144
|
self._socket.close(linger=0)
|
|
@@ -145,7 +148,8 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
145
148
|
self._poller.register(self._socket, zmq.POLLIN)
|
|
146
149
|
|
|
147
150
|
def reset_cs_connection(self):
|
|
148
|
-
|
|
151
|
+
if VERBOSE_DEBUG:
|
|
152
|
+
self._logger.debug(f"Trying to reset the connection from {self.__class__.__name__} to {self._endpoint}")
|
|
149
153
|
|
|
150
154
|
self.disconnect_cs()
|
|
151
155
|
self.connect_cs()
|
|
@@ -191,7 +195,9 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
191
195
|
if self._socket.closed:
|
|
192
196
|
self.reconnect_cs()
|
|
193
197
|
|
|
194
|
-
|
|
198
|
+
if VERBOSE_DEBUG:
|
|
199
|
+
self._logger.debug(f"Sending '{data}'")
|
|
200
|
+
|
|
195
201
|
self._socket.send(pickle_string)
|
|
196
202
|
|
|
197
203
|
while True:
|
|
@@ -202,7 +208,8 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
202
208
|
if not pickle_string:
|
|
203
209
|
break
|
|
204
210
|
response = pickle.loads(pickle_string)
|
|
205
|
-
|
|
211
|
+
if VERBOSE_DEBUG:
|
|
212
|
+
self._logger.debug(f"Receiving response: {response}")
|
|
206
213
|
return response
|
|
207
214
|
else:
|
|
208
215
|
# timeout - server unavailable
|
|
@@ -227,7 +234,8 @@ class BaseProxy(ControlServerConnectionInterface):
|
|
|
227
234
|
|
|
228
235
|
def ping(self):
|
|
229
236
|
return_code = self.send("Ping", retries=0, timeout=1.0)
|
|
230
|
-
|
|
237
|
+
if VERBOSE_DEBUG:
|
|
238
|
+
self._logger.debug(f"Check if control server is available: Ping - {return_code}")
|
|
231
239
|
return return_code == "Pong"
|
|
232
240
|
|
|
233
241
|
def get_endpoint(self) -> str:
|
|
@@ -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
|
|
|
@@ -436,6 +461,9 @@ class RegistryClient:
|
|
|
436
461
|
self.logger.warning("Cannot start heartbeat: no service is registered")
|
|
437
462
|
return None
|
|
438
463
|
|
|
464
|
+
# Cancel an existing heartbeat thread if present
|
|
465
|
+
self.stop_heartbeat()
|
|
466
|
+
|
|
439
467
|
# If interval not specified, use 1/3 of TTL
|
|
440
468
|
if interval is None:
|
|
441
469
|
interval = max(1, self._ttl // 3)
|
|
@@ -453,6 +481,9 @@ class RegistryClient:
|
|
|
453
481
|
if not self.health_check():
|
|
454
482
|
self.logger.warning("ServiceRegistry not responding.")
|
|
455
483
|
return
|
|
484
|
+
else:
|
|
485
|
+
self.logger.info("Health check succeeded, reregistering...")
|
|
486
|
+
self.reregister()
|
|
456
487
|
|
|
457
488
|
else:
|
|
458
489
|
self.logger.debug(response.get("message"))
|
|
@@ -581,8 +612,6 @@ class AsyncRegistryClient:
|
|
|
581
612
|
# Default to receiving all events
|
|
582
613
|
self.sub_socket.setsockopt_string(zmq.SUBSCRIBE, "")
|
|
583
614
|
|
|
584
|
-
self._connect_hb_socket()
|
|
585
|
-
|
|
586
615
|
def _connect_hb_socket(self):
|
|
587
616
|
self.hb_socket = self.context.socket(zmq.REQ)
|
|
588
617
|
self.hb_socket.setsockopt(zmq.LINGER, 0) # Don't wait for unsent messages on close()
|
|
@@ -599,11 +628,10 @@ class AsyncRegistryClient:
|
|
|
599
628
|
self.sub_socket.close(linger=0)
|
|
600
629
|
self.sub_socket = None
|
|
601
630
|
|
|
602
|
-
self._disconnect_hb_socket()
|
|
603
|
-
|
|
604
631
|
def _disconnect_hb_socket(self):
|
|
605
632
|
if self.hb_socket:
|
|
606
|
-
self.hb_socket.
|
|
633
|
+
self.hb_socket.setsockopt(zmq.LINGER, 0)
|
|
634
|
+
self.hb_socket.close()
|
|
607
635
|
self.hb_socket = None
|
|
608
636
|
|
|
609
637
|
def _get_service_cache_lock(self):
|
|
@@ -625,10 +653,10 @@ class AsyncRegistryClient:
|
|
|
625
653
|
Returns:
|
|
626
654
|
The response from the registry as a dictionary.
|
|
627
655
|
"""
|
|
628
|
-
self.logger.debug(f"Sending request: {request}")
|
|
629
656
|
|
|
630
657
|
timeout = timeout or self.timeout
|
|
631
658
|
try:
|
|
659
|
+
self.logger.debug(f"Sending request: {request}")
|
|
632
660
|
await self.req_socket.send_multipart([msg_type.value, json.dumps(request).encode()])
|
|
633
661
|
|
|
634
662
|
try:
|
|
@@ -686,9 +714,9 @@ class AsyncRegistryClient:
|
|
|
686
714
|
except asyncio.TimeoutError:
|
|
687
715
|
self.logger.error(f"Heartbeat request timed out after {HEART_BEAT_TIMEOUT:.2f}s")
|
|
688
716
|
# Reset the socket to avoid invalid state
|
|
689
|
-
self.
|
|
690
|
-
|
|
691
|
-
self.
|
|
717
|
+
self._disconnect_hb_socket()
|
|
718
|
+
await asyncio.sleep(HEART_BEAT_RECONNECT)
|
|
719
|
+
self._connect_hb_socket()
|
|
692
720
|
return {"success": False, "error": "Heartbeat request timed out"}
|
|
693
721
|
except zmq.ZMQError as exc:
|
|
694
722
|
self.logger.error(f"ZMQ error: {exc}", exc_info=True)
|
|
@@ -788,6 +816,25 @@ class AsyncRegistryClient:
|
|
|
788
816
|
self.logger.error(f"Failed to deregister service: {response.get('error')}")
|
|
789
817
|
return False
|
|
790
818
|
|
|
819
|
+
async def reregister(self) -> str | None:
|
|
820
|
+
if not self._service_id:
|
|
821
|
+
self.logger.warning("Cannot reregister: no service is registered")
|
|
822
|
+
return None
|
|
823
|
+
|
|
824
|
+
if not self._service_info:
|
|
825
|
+
self.logger.warning(
|
|
826
|
+
"Cannot reregister: no service info was saved by this registry client or service already deregistered."
|
|
827
|
+
)
|
|
828
|
+
return None
|
|
829
|
+
|
|
830
|
+
return await self.register(
|
|
831
|
+
name=self._service_info["name"],
|
|
832
|
+
host=self._service_info["host"],
|
|
833
|
+
port=self._service_info["port"],
|
|
834
|
+
service_type=self._service_info["type"],
|
|
835
|
+
metadata=self._service_info["metadata"],
|
|
836
|
+
)
|
|
837
|
+
|
|
791
838
|
async def start_heartbeat(self, interval: int | None = None) -> asyncio.Task | None:
|
|
792
839
|
"""
|
|
793
840
|
Start sending heartbeats to the registry.
|
|
@@ -812,6 +859,8 @@ class AsyncRegistryClient:
|
|
|
812
859
|
self._running = True
|
|
813
860
|
|
|
814
861
|
async def heartbeat_loop():
|
|
862
|
+
self._connect_hb_socket()
|
|
863
|
+
|
|
815
864
|
try:
|
|
816
865
|
while self._running and self._service_id:
|
|
817
866
|
try:
|
|
@@ -821,8 +870,17 @@ class AsyncRegistryClient:
|
|
|
821
870
|
|
|
822
871
|
if not response.get("success"):
|
|
823
872
|
self.logger.warning(f"Heartbeat failed: {response.get('error')}")
|
|
873
|
+
|
|
874
|
+
# Do a health check
|
|
875
|
+
if not await self.health_check():
|
|
876
|
+
self.logger.warning("ServiceRegistry not responding.")
|
|
877
|
+
continue
|
|
878
|
+
else:
|
|
879
|
+
self.logger.info("Health check succeeded, reregistering...")
|
|
880
|
+
await self.reregister()
|
|
881
|
+
|
|
824
882
|
else:
|
|
825
|
-
self.logger.
|
|
883
|
+
self.logger.debug(response.get("message"))
|
|
826
884
|
except Exception as exc:
|
|
827
885
|
self.logger.error(f"Error in heartbeat loop: {exc}", exc_info=True)
|
|
828
886
|
|
|
@@ -830,6 +888,8 @@ class AsyncRegistryClient:
|
|
|
830
888
|
await asyncio.sleep(interval)
|
|
831
889
|
except asyncio.CancelledError:
|
|
832
890
|
self.logger.info("Heartbeat task cancelled")
|
|
891
|
+
finally:
|
|
892
|
+
self._disconnect_hb_socket()
|
|
833
893
|
|
|
834
894
|
# Start the heartbeat task
|
|
835
895
|
self._heartbeat_task = task = asyncio.create_task(heartbeat_loop())
|
|
@@ -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()
|
|
@@ -485,20 +490,21 @@ class AsyncRegistryServer:
|
|
|
485
490
|
"status": "ok",
|
|
486
491
|
"req_port": self.req_port,
|
|
487
492
|
"pub_port": self.pub_port,
|
|
493
|
+
"hb_port": self.hb_port,
|
|
488
494
|
"services": services,
|
|
489
495
|
}
|
|
490
496
|
|
|
491
497
|
async def _handle_health(self, request: dict[str, Any]) -> dict[str, Any]:
|
|
492
498
|
"""Handle a health check request."""
|
|
493
499
|
|
|
494
|
-
self.logger.
|
|
500
|
+
self.logger.debug(f"Handle health request: {request}")
|
|
495
501
|
|
|
496
502
|
return {"success": True, "status": "ok", "timestamp": int(time.time())}
|
|
497
503
|
|
|
498
504
|
async def _handle_terminate(self, request: dict[str, Any]) -> dict[str, Any]:
|
|
499
505
|
"""Handle a termination request."""
|
|
500
506
|
|
|
501
|
-
self.logger.
|
|
507
|
+
self.logger.debug(f"Handle termination request: {request}")
|
|
502
508
|
|
|
503
509
|
self.stop()
|
|
504
510
|
|
|
@@ -572,6 +578,7 @@ async def status(
|
|
|
572
578
|
Status: {response["status"]}
|
|
573
579
|
Requests port: {response["req_port"]}
|
|
574
580
|
Notifications port: {response["pub_port"]}
|
|
581
|
+
Heartbeat port: {response["hb_port"]}
|
|
575
582
|
Registrations: {", ".join([f"({x['name']}, {x['health']})" for x in response["services"]])}\
|
|
576
583
|
"""
|
|
577
584
|
)
|