diracx 0.0.7__tar.gz → 0.0.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.
- diracx-0.0.8/.github/scripts/collect-k8s-debug-info.sh +122 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/deployment.yml +2 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/generate_pixi_tasks_doc.py +2 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/integration.yml +2 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/main.yml +12 -25
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/update_chart_version.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/.gitignore +4 -0
- {diracx-0.0.7 → diracx-0.0.8}/.pre-commit-config.yaml +30 -15
- {diracx-0.0.7 → diracx-0.0.8}/CHANGELOG.md +33 -0
- {diracx-0.0.7 → diracx-0.0.8}/PKG-INFO +1 -1
- diracx-0.0.8/diracx-cli/src/diracx/cli/__init__.py +36 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/internal/legacy.py +6 -6
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/jobs.py +5 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/operations/_operations.py +33 -18
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/operations/_operations.py +33 -18
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/auth/aio.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/client/common.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/jobs/common.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/utils.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/tests/test_auth.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/config/schema.py +138 -9
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/config/sources.py +22 -21
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/extensions.py +20 -4
- diracx-0.0.8/diracx-core/src/diracx/core/models/__init__.py +12 -0
- diracx-0.0.8/diracx-core/src/diracx/core/models/auth.py +102 -0
- diracx-0.0.7/diracx-core/src/diracx/core/models.py → diracx-0.0.8/diracx-core/src/diracx/core/models/job.py +15 -197
- diracx-0.0.8/diracx-core/src/diracx/core/models/replica_map.py +211 -0
- diracx-0.0.8/diracx-core/src/diracx/core/models/sandbox.py +37 -0
- diracx-0.0.8/diracx-core/src/diracx/core/models/search.py +61 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/preferences.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/properties.py +1 -3
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/resources.py +2 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/s3.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/settings.py +99 -10
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/utils.py +2 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_config_source.py +28 -4
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_entry_points.py +4 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_extensions.py +3 -2
- diracx-0.0.8/diracx-core/tests/test_replica_map.py +392 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_s3.py +3 -3
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_utils.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/os/utils.py +12 -15
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/auth/db.py +10 -6
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/auth/schema.py +6 -6
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/dummy/db.py +1 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job/db.py +6 -4
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job_logging/db.py +6 -4
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job_logging/schema.py +7 -4
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/sandbox_metadata/db.py +47 -49
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/base.py +7 -6
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/auth/test_refresh_token.py +9 -6
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/jobs/test_job_db.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/jobs/test_job_logging_db.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/jobs/test_sandbox_metadata.py +2 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/opensearch/test_connection.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/opensearch/test_search.py +87 -174
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/authorize_code_flow.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/device_flow.py +3 -5
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/management.py +5 -4
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/token.py +2 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/utils.py +5 -3
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/well_known.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/query.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/sandboxes.py +65 -32
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/status.py +3 -3
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/submission.py +2 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/utils.py +2 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/task_queues/priority.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/tests/jobs/test_sandboxes.py +4 -5
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/tests/jobs/test_status.py +3 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/pyproject.toml +2 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/access_policies.py +15 -13
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/authorize_code_flow.py +1 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/device_flow.py +6 -5
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/management.py +7 -3
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/token.py +2 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/well_known.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/factory.py +15 -14
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/health/probes.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/access_policies.py +4 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/query.py +7 -4
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/sandboxes.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/status.py +2 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/submission.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/otel.py +1 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/utils/users.py +3 -2
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/auth/test_standard.py +18 -6
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/jobs/test_query.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/jobs/test_status.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/test_policy.py +5 -4
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/pyproject.toml +2 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/entrypoints.py +3 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/mock_osdb.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/osdb.py +63 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/utils.py +10 -10
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/explanations/configuration.md +7 -0
- diracx-0.0.8/docs/admin/reference/env-variables.md +173 -0
- diracx-0.0.8/docs/admin/reference/env-variables.md.j2 +11 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/components/api.md +2 -1
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/components/cli.md +3 -2
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/components/routes.md +22 -10
- diracx-0.0.8/docs/dev/explanations/documentation-system.md +115 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/coding-conventions.md +4 -2
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/dependency-injection.md +1 -1
- diracx-0.0.8/docs/dev/reference/env-variables.md +16 -0
- diracx-0.0.8/docs/dev/reference/env-variables.md.j2 +7 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/pixi-tasks.md +4 -0
- diracx-0.0.8/docs/templates/_render_class.jinja +40 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_operations.py +33 -18
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_operations.py +33 -18
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/models.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/pyproject.toml +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/test_gubbins_job_manager.py +1 -1
- {diracx-0.0.7 → diracx-0.0.8}/mkdocs.yml +1 -0
- {diracx-0.0.7 → diracx-0.0.8}/pixi.toml +18 -1
- diracx-0.0.8/pyproject.toml +174 -0
- diracx-0.0.8/scripts/generate_settings_docs.py +440 -0
- {diracx-0.0.7 → diracx-0.0.8}/tests/make_token_local.py +1 -1
- diracx-0.0.7/diracx-cli/src/diracx/cli/__init__.py +0 -31
- diracx-0.0.7/docs/admin/reference/env-variables.md +0 -39
- diracx-0.0.7/docs/dev/reference/env-variables.md +0 -5
- diracx-0.0.7/pyproject.toml +0 -182
- {diracx-0.0.7 → diracx-0.0.8}/.coveragerc +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/.gitattributes +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/dependabot.yml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/release-please.yml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/update_security_txt_expiry.yml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/.github/workflows/vulnerabilities.yml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/.readthedocs.yaml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/LICENSE +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/MANIFEST.in +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/codecov.yml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/containers/client/Dockerfile +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/containers/services/Dockerfile +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/src/diracx/api/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/src/diracx/api/jobs.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/src/diracx/api/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/src/diracx/api/utils.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/tests/test_jobs.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-api/tests/test_utils.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/__main__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/auth.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/config.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/internal/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/internal/config.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/src/diracx/cli/utils.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test.cfg +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test.yaml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test_buggy.cfg +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test_secret.cfg +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/test_cssync.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/legacy/test_legacy.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/test_internal.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/test_jobs.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-cli/tests/test_login.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/_diracx_client_importer.pth +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/_client_importer.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_client.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_configuration.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_serialization.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_utils/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_utils/serialization.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_utils/utils.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_vendor.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_client.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_configuration.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_vendor.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/operations/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/operations/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/_enums.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/_models.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/operations/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/operations/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/aio.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/models.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/auth/common.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/auth/sync.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/client/aio.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/client/sync.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/jobs/aio.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/jobs/sync.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-client/src/diracx/client/sync.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/config/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/exceptions.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/src/diracx/core/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_resources.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_schema_legacy_adaptor.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-core/tests/test_secrets.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/__main__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/exceptions.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/os/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/os/job_parameters.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/auth/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/dummy/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/dummy/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job_logging/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/pilot_agents/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/pilot_agents/db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/pilot_agents/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/sandbox_metadata/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/sandbox_metadata/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/task_queue/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/task_queue/db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/task_queue/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/functions.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/types.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/auth/test_authorization_flow.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/auth/test_device_flow.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/opensearch/test_index_template.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/pilot_agents/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/pilot_agents/test_pilot_agents_db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/test_dummy_db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/test_freeze_time.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-db/tests/utils/test_uuid.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/__main__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-logic/src/diracx/logic/task_queues/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/utils.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/configuration.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/dependencies.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/fastapi_classes.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/health/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/legacy.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/src/diracx/routers/utils/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/auth/test_legacy_exchange.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/health/test_probes.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/jobs/conftest.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/jobs/test_sandboxes.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/jobs/test_wms_access_policy.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/test_config_manager.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-routers/tests/test_generic.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/__main__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/client_generation.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/client_generation_pytest.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/dummy_osdb.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/routers.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/scripts/collect_demo_coverage.sh +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/diracx-testing/src/diracx/testing/time.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/SECURITY.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/explanations/auth-with-diracx.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/explanations/auth-with-external.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/explanations/opentelemetry.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/explanations/sandbox-store.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/explanations/user-management.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/how-to/install/connect.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/how-to/install/convert-cs.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/how-to/install/embracing.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/how-to/install/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/how-to/install/minimal-requirements.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/how-to/install/register-a-vo.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/how-to/install/register-the-admin-vo.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/reference/security_model.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/reference/settings-and-preferences.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/admin/tutorials/authentication.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/css/extra.css +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/css/fontawesome-all.min.css +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/css/images/arrow.svg +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/css/images/overlay.png +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/css/main.css +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/home.html +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/images/diracx-logo-square.svg +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/images/logo.svg +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/styles/extra.css +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/webfonts/fa-brands-400.woff2 +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/assets/webfonts/fa-solid-900.woff +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/components/client.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/components/db.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/components/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/designing-functionality.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/extensions.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/explanations/testing.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/add-a-cli-command.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/add-a-db.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/add-a-route.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/add-a-setting.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/add-a-task.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/add-a-test.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/add-functionality/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/client-customization.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/client-extension.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/client-generation.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/contribute.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/develop-legacy-dirac.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/extend-diracx/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/use-the-demo/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/use-the-demo/swagger.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/how-to/use-the-demo/web.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/application-state.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/client-metapathfinder.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/configuration.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/db-transaction-model.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/entrypoints.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/security-policies.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/security-properties.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/test-recipes.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/reference/writing-tests.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/advanced-tutorial.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/develop-web.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/getting-started.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/larger-developments.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/making-changes.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/play-with-auth.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/run-locally.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/dev/tutorials/write-docs.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/overrides/main.html +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/roadmap.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/reference/client-configuration.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/reference/known-installations.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/reference/programmatic-usage/command-line-interface.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/reference/programmatic-usage/https-interface.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/reference/programmatic-usage/index.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/reference/programmatic-usage/python-interface.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/docs/user/tutorials/getting-started.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/containers/client/Dockerfile +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/containers/services/Dockerfile +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/.github/workflows/main.yml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-api/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-api/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-api/src/gubbins/api/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-api/src/gubbins/api/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-api/tests/test_gubbins_api.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/config.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/lollygag.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/tests/test_gubbins_cli.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_client.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_configuration.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_serialization.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/serialization.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/utils.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_vendor.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_client.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_configuration.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_vendor.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_enums.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_models.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_patch.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/aio.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/models.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/sync.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-client/tests/test_gubbins_client.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/config/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/properties.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/tests/test_config.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-core/tests/test_properties.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/schema.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/tests/test_gubbins_job_db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-db/tests/test_lollygag_db.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/well_known.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/lollygag.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/tests/test_gubbins_logic.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/dependencies.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/access_policy.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/lollygag.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/py.typed +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/well_known.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/test_lollybag.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/test_wellknown.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-testing/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-testing/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/gubbins-testing/src/gubbins/testing/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/pixi.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/pyproject.toml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins/release.notes +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins-charts/.gitignore +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins-charts/Chart.yaml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins-charts/README.md +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins-charts/values.yaml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/extensions/gubbins_values.yaml +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/run_local.sh +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/tests/__init__.py +0 -0
- {diracx-0.0.7 → diracx-0.0.8}/tests/test_generic.py +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Collect Kubernetes debug information with GitHub Actions formatting
|
|
3
|
+
# Usage: collect-k8s-debug-info.sh <demo_dir> [service_prefix]
|
|
4
|
+
# demo_dir: Path to demo directory containing kube.conf
|
|
5
|
+
# service_prefix: Pod name prefix for main services (default: diracx)
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
DEMO_DIR="${1:?Usage: $0 <demo_dir> [service_prefix]}"
|
|
10
|
+
SERVICE_PREFIX="${2:-diracx}"
|
|
11
|
+
|
|
12
|
+
export KUBECONFIG="${DEMO_DIR}/kube.conf"
|
|
13
|
+
export PATH="${DEMO_DIR}:$PATH"
|
|
14
|
+
|
|
15
|
+
INFRA_PODS="(dex|minio|mysql|rabbitmq|opensearch)"
|
|
16
|
+
|
|
17
|
+
# Function to output all info for a single pod
|
|
18
|
+
output_pod_info() {
|
|
19
|
+
local pod_name="$1"
|
|
20
|
+
local tail_arg=("${@:2}")
|
|
21
|
+
|
|
22
|
+
echo "=== Pod Description ==="
|
|
23
|
+
kubectl describe pod/"${pod_name}" 2>&1 || true
|
|
24
|
+
|
|
25
|
+
# Init containers
|
|
26
|
+
init_containers=$(kubectl get pods "$pod_name" -o jsonpath='{.spec.initContainers[*].name}' 2>/dev/null || true)
|
|
27
|
+
if [ -n "$init_containers" ]; then
|
|
28
|
+
echo ""
|
|
29
|
+
echo "=== Init Container Logs ==="
|
|
30
|
+
for container_name in $init_containers; do
|
|
31
|
+
echo "--- $container_name ---"
|
|
32
|
+
kubectl logs "${pod_name}" -c "${container_name}" "${tail_arg[@]}" 2>&1 || true
|
|
33
|
+
done
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Main containers
|
|
37
|
+
echo ""
|
|
38
|
+
echo "=== Container Logs ==="
|
|
39
|
+
for container_name in $(kubectl get pods "$pod_name" -o jsonpath='{.spec.containers[*].name}'); do
|
|
40
|
+
echo "--- $container_name ---"
|
|
41
|
+
kubectl logs "${pod_name}" -c "${container_name}" "${tail_arg[@]}" 2>&1 || true
|
|
42
|
+
done
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
# === JOB SUMMARY ===
|
|
46
|
+
{
|
|
47
|
+
echo "## 🔍 Integration Test Debug Summary"
|
|
48
|
+
echo ""
|
|
49
|
+
echo "### Pod Status"
|
|
50
|
+
echo '```'
|
|
51
|
+
kubectl get pods -o wide
|
|
52
|
+
echo '```'
|
|
53
|
+
echo ""
|
|
54
|
+
} >> "${GITHUB_STEP_SUMMARY:-/dev/null}"
|
|
55
|
+
|
|
56
|
+
# === POD STATUS OVERVIEW ===
|
|
57
|
+
echo "::group::📋 Pod Status Overview"
|
|
58
|
+
kubectl get pods -o wide
|
|
59
|
+
echo "::endgroup::"
|
|
60
|
+
|
|
61
|
+
# === MAIN SERVICE PODS (shown first) ===
|
|
62
|
+
for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -E "^${SERVICE_PREFIX}-" || true); do
|
|
63
|
+
echo "::group::🚀 ${pod_name}"
|
|
64
|
+
output_pod_info "$pod_name"
|
|
65
|
+
echo "::endgroup::"
|
|
66
|
+
done
|
|
67
|
+
|
|
68
|
+
# === OTHER APPLICATION PODS ===
|
|
69
|
+
for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -vE "$INFRA_PODS" | grep -vE "^${SERVICE_PREFIX}-" || true); do
|
|
70
|
+
if [ -n "$pod_name" ]; then
|
|
71
|
+
echo "::group::📦 ${pod_name}"
|
|
72
|
+
output_pod_info "$pod_name"
|
|
73
|
+
echo "::endgroup::"
|
|
74
|
+
fi
|
|
75
|
+
done
|
|
76
|
+
|
|
77
|
+
# === INFRASTRUCTURE PODS ===
|
|
78
|
+
for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -E "$INFRA_PODS" || true); do
|
|
79
|
+
echo "::group::🏗️ ${pod_name}"
|
|
80
|
+
output_pod_info "$pod_name" --tail=100
|
|
81
|
+
echo "::endgroup::"
|
|
82
|
+
done
|
|
83
|
+
|
|
84
|
+
# === ERROR SUMMARY WITH ANNOTATIONS ===
|
|
85
|
+
echo "::group::⚠️ Error Summary"
|
|
86
|
+
error_count=0
|
|
87
|
+
for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -E "^${SERVICE_PREFIX}-" || true); do
|
|
88
|
+
for container_name in $(kubectl get pods "$pod_name" -o jsonpath='{.spec.containers[*].name}'); do
|
|
89
|
+
errors=$(kubectl logs "${pod_name}" -c "${container_name}" 2>&1 | grep -iE "(ERROR|CRITICAL|Exception|Traceback)" | head -5 || true)
|
|
90
|
+
if [ -n "$errors" ]; then
|
|
91
|
+
echo "Errors in ${pod_name}/${container_name}:"
|
|
92
|
+
echo "$errors"
|
|
93
|
+
echo ""
|
|
94
|
+
# Add annotation (limited to avoid exceeding quota)
|
|
95
|
+
if [ $error_count -lt 8 ]; then
|
|
96
|
+
first_error=$(echo "$errors" | head -1 | cut -c1-200)
|
|
97
|
+
echo "::warning title=Error in ${pod_name}/${container_name}::${first_error}"
|
|
98
|
+
((error_count++)) || true
|
|
99
|
+
fi
|
|
100
|
+
fi
|
|
101
|
+
done
|
|
102
|
+
done
|
|
103
|
+
if [ $error_count -eq 0 ]; then
|
|
104
|
+
echo "No errors found in ${SERVICE_PREFIX} service logs"
|
|
105
|
+
fi
|
|
106
|
+
echo "::endgroup::"
|
|
107
|
+
|
|
108
|
+
# === CHECK FOR DEMO SUCCESS ===
|
|
109
|
+
if [ ! -f "${DEMO_DIR}/.success" ]; then
|
|
110
|
+
echo "::error title=Demo Failed::Demo did not complete successfully"
|
|
111
|
+
{
|
|
112
|
+
echo ""
|
|
113
|
+
echo "## ❌ Demo Failed"
|
|
114
|
+
echo '```'
|
|
115
|
+
cat "${DEMO_DIR}/.failed" 2>/dev/null || echo "No failure details available"
|
|
116
|
+
echo '```'
|
|
117
|
+
} >> "${GITHUB_STEP_SUMMARY:-/dev/null}"
|
|
118
|
+
cat "${DEMO_DIR}/.failed" 2>/dev/null || true
|
|
119
|
+
exit 1
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
echo "✅ Demo completed successfully"
|
|
@@ -7,6 +7,8 @@ on:
|
|
|
7
7
|
pull_request:
|
|
8
8
|
branches:
|
|
9
9
|
- main
|
|
10
|
+
paths-ignore:
|
|
11
|
+
- 'CHANGELOG.md'
|
|
10
12
|
|
|
11
13
|
concurrency:
|
|
12
14
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
@@ -18,11 +20,11 @@ jobs:
|
|
|
18
20
|
steps:
|
|
19
21
|
- name: Checkout code
|
|
20
22
|
uses: actions/checkout@v6
|
|
21
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
23
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
22
24
|
with:
|
|
23
25
|
run-install: false
|
|
24
26
|
post-cleanup: false
|
|
25
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
27
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
26
28
|
with:
|
|
27
29
|
cache: false
|
|
28
30
|
environments: shellcheck
|
|
@@ -53,7 +55,7 @@ jobs:
|
|
|
53
55
|
steps:
|
|
54
56
|
- name: Checkout code
|
|
55
57
|
uses: actions/checkout@v6
|
|
56
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
58
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
57
59
|
with:
|
|
58
60
|
run-install: false
|
|
59
61
|
post-cleanup: false
|
|
@@ -64,7 +66,7 @@ jobs:
|
|
|
64
66
|
rm pixi.toml.bak
|
|
65
67
|
# Show any changes
|
|
66
68
|
git diff
|
|
67
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
69
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
68
70
|
with:
|
|
69
71
|
cache: false
|
|
70
72
|
environments: ${{ matrix.package }}
|
|
@@ -104,7 +106,7 @@ jobs:
|
|
|
104
106
|
df -h
|
|
105
107
|
- name: Checkout code
|
|
106
108
|
uses: actions/checkout@v6
|
|
107
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
109
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
108
110
|
with:
|
|
109
111
|
run-install: false
|
|
110
112
|
post-cleanup: false
|
|
@@ -115,7 +117,7 @@ jobs:
|
|
|
115
117
|
rm pixi.toml.bak
|
|
116
118
|
# Show any changes
|
|
117
119
|
git diff
|
|
118
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
120
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
119
121
|
with:
|
|
120
122
|
cache: false
|
|
121
123
|
environments: ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }}
|
|
@@ -205,23 +207,8 @@ jobs:
|
|
|
205
207
|
set -x
|
|
206
208
|
../diracx-charts/run_demo.sh "${demo_args[@]}" "${demo_source_dirs[@]}"
|
|
207
209
|
- name: Debugging information
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
export KUBECONFIG=${DIRACX_DEMO_DIR}/kube.conf
|
|
211
|
-
export PATH=${DIRACX_DEMO_DIR}:$PATH
|
|
212
|
-
kubectl get pods
|
|
213
|
-
for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -vE '(dex|minio|mysql|rabbitmq|opensearch)'); do
|
|
214
|
-
echo "${pod_name}"
|
|
215
|
-
kubectl describe pod/"${pod_name}" || true
|
|
216
|
-
for container_name in $(kubectl get pods $pod_name -o jsonpath='{.spec.initContainers[*].name} {.spec.containers[*].name}'); do
|
|
217
|
-
echo $pod_name $container_name
|
|
218
|
-
kubectl logs "${pod_name}" -c "${container_name}" || true
|
|
219
|
-
done
|
|
220
|
-
done
|
|
221
|
-
if [ ! -f "${DIRACX_DEMO_DIR}/.success" ]; then
|
|
222
|
-
cat "${DIRACX_DEMO_DIR}/.failed"
|
|
223
|
-
exit 1
|
|
224
|
-
fi
|
|
210
|
+
if: always()
|
|
211
|
+
run: .github/scripts/collect-k8s-debug-info.sh "$PWD/../diracx-charts/.demo" "${{ matrix.extension == 'gubbins' && 'gubbins' || 'diracx' }}"
|
|
225
212
|
- name: Run pytest
|
|
226
213
|
run: |
|
|
227
214
|
pixi run pytest-${{ matrix.extension }} --demo-dir="$PWD/../diracx-charts/" --cov-report=xml:coverage-pytest.xml --junitxml=report.xml
|
|
@@ -242,11 +229,11 @@ jobs:
|
|
|
242
229
|
steps:
|
|
243
230
|
- name: Checkout code
|
|
244
231
|
uses: actions/checkout@v6
|
|
245
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
232
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
246
233
|
with:
|
|
247
234
|
run-install: false
|
|
248
235
|
post-cleanup: false
|
|
249
|
-
- uses: prefix-dev/setup-pixi@v0.9.
|
|
236
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
250
237
|
with:
|
|
251
238
|
cache: false
|
|
252
239
|
locked: false
|
|
@@ -8,7 +8,7 @@ default_language_version:
|
|
|
8
8
|
python: python3
|
|
9
9
|
|
|
10
10
|
ci:
|
|
11
|
-
skip: [generate-pixi-docs]
|
|
11
|
+
skip: [generate-pixi-docs, settings-doc-check]
|
|
12
12
|
|
|
13
13
|
default_stages: [pre-commit]
|
|
14
14
|
|
|
@@ -30,9 +30,9 @@ repos:
|
|
|
30
30
|
- id: check-added-large-files
|
|
31
31
|
|
|
32
32
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
33
|
-
rev:
|
|
33
|
+
rev: "v0.14.14"
|
|
34
34
|
hooks:
|
|
35
|
-
- id: ruff
|
|
35
|
+
- id: ruff-check
|
|
36
36
|
args: ["--fix", "--show-fixes"]
|
|
37
37
|
- id: ruff-format
|
|
38
38
|
|
|
@@ -51,29 +51,35 @@ repos:
|
|
|
51
51
|
- boto3-stubs[essential]
|
|
52
52
|
exclude: ^(diracx-client/src/diracx/client/_generated|diracx-[a-z]+/tests/|diracx-testing/|build|extensions/gubbins/gubbins-client/src/gubbins/client/_generated)
|
|
53
53
|
|
|
54
|
-
- repo: https://github.com/
|
|
54
|
+
- repo: https://github.com/hukkin/mdformat
|
|
55
55
|
rev: 1.0.0
|
|
56
56
|
hooks:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- mdformat-black
|
|
57
|
+
- id: mdformat
|
|
58
|
+
args: ["--number"]
|
|
59
|
+
exclude: ^CHANGELOG\.md$
|
|
60
|
+
additional_dependencies:
|
|
61
|
+
- mdformat-mkdocs
|
|
62
|
+
- mdformat-gfm
|
|
64
63
|
|
|
65
64
|
- repo: https://github.com/codespell-project/codespell
|
|
66
65
|
rev: v2.4.1
|
|
67
66
|
hooks:
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
- id: codespell
|
|
68
|
+
args: ["-w"]
|
|
69
|
+
|
|
70
|
+
- repo: https://github.com/adamchainz/blacken-docs
|
|
71
|
+
rev: 1.20.0
|
|
72
|
+
hooks:
|
|
73
|
+
- id: blacken-docs
|
|
74
|
+
additional_dependencies:
|
|
75
|
+
- black==22.12.0
|
|
70
76
|
|
|
71
77
|
- repo: local
|
|
72
78
|
hooks:
|
|
73
79
|
- id: check-lollygag
|
|
74
80
|
name: check for lollygag
|
|
75
81
|
types: [python]
|
|
76
|
-
entry:
|
|
82
|
+
entry: "(?i)lollygag"
|
|
77
83
|
language: pygrep
|
|
78
84
|
files: ^diracx
|
|
79
85
|
|
|
@@ -84,4 +90,13 @@ repos:
|
|
|
84
90
|
entry: pixi run -e default python .github/workflows/generate_pixi_tasks_doc.py
|
|
85
91
|
language: system
|
|
86
92
|
pass_filenames: false
|
|
87
|
-
files: ^pixi\.toml$|^pixi\.lock$
|
|
93
|
+
files: ^pixi\.toml$|^pixi\.lock$ # only run if pixi files change
|
|
94
|
+
|
|
95
|
+
- repo: local
|
|
96
|
+
hooks:
|
|
97
|
+
- id: settings-doc-check
|
|
98
|
+
name: Generate settings documentation
|
|
99
|
+
entry: pixi run -e default python scripts/generate_settings_docs.py
|
|
100
|
+
language: system
|
|
101
|
+
pass_filenames: false
|
|
102
|
+
files: ^(diracx-.*/src/diracx/.*/settings\.py|docs/.*\.j2|docs/templates/.*\.jinja|scripts/generate_settings_docs\.py)$
|
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.8](https://github.com/DIRACGrid/diracx/compare/v0.0.7...v0.0.8) (2026-02-02)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* allow git commit hash usage in config source revision ([#726](https://github.com/DIRACGrid/diracx/issues/726)) ([8b8b687](https://github.com/DIRACGrid/diracx/commit/8b8b687dc7a72a5a3bb904a338969351e64e6173))
|
|
9
|
+
* disallow relative paths with any depth other than zero ([82e7d15](https://github.com/DIRACGrid/diracx/commit/82e7d15effdf3b7d6807b9d287ca7f0549402f6e))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* add ci skip settings-doc-check ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
|
|
15
|
+
* added a StrEnum for Entrypoints to avoid spelling mistakes ([#744](https://github.com/DIRACGrid/diracx/issues/744)) ([19bfadc](https://github.com/DIRACGrid/diracx/commit/19bfadc1c473626dfe9f3a6489248c098056186e))
|
|
16
|
+
* annoying wrapper script ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
|
|
17
|
+
* cleanups ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
|
|
18
|
+
* cs conversion takes into account all the parent classes ([#753](https://github.com/DIRACGrid/diracx/issues/753)) ([b742a34](https://github.com/DIRACGrid/diracx/commit/b742a34150d9d925460de4db2c5eba0cb5eafd49))
|
|
19
|
+
* format ([0440a9c](https://github.com/DIRACGrid/diracx/commit/0440a9cecba1b2302630b5aae707b6162954332d))
|
|
20
|
+
* format settings doc files ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
|
|
21
|
+
* formatting ([0440a9c](https://github.com/DIRACGrid/diracx/commit/0440a9cecba1b2302630b5aae707b6162954332d))
|
|
22
|
+
* formatting and remove caching ([4ed2709](https://github.com/DIRACGrid/diracx/commit/4ed2709980338cb0e423ef5630bdf6796e4c7250))
|
|
23
|
+
* improve pytest-integration debugging output ([#740](https://github.com/DIRACGrid/diracx/issues/740)) ([d691175](https://github.com/DIRACGrid/diracx/commit/d691175438db532bd833ceecf1ad36ea3de29a5d))
|
|
24
|
+
* reorder imports ([4ed2709](https://github.com/DIRACGrid/diracx/commit/4ed2709980338cb0e423ef5630bdf6796e4c7250))
|
|
25
|
+
* set exclude=True on computed field ([4ed2709](https://github.com/DIRACGrid/diracx/commit/4ed2709980338cb0e423ef5630bdf6796e4c7250))
|
|
26
|
+
* skip CI on release-please PRs ([#759](https://github.com/DIRACGrid/diracx/issues/759)) ([f236f61](https://github.com/DIRACGrid/diracx/commit/f236f6185db30c0a7faa7fce7f280697484087eb)), closes [#685](https://github.com/DIRACGrid/diracx/issues/685)
|
|
27
|
+
* update tasks ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
|
|
28
|
+
* use batched DB deletes with SKIP LOCKED for sandbox cleanup ([#739](https://github.com/DIRACGrid/diracx/issues/739)) ([584d4e6](https://github.com/DIRACGrid/diracx/commit/584d4e62a87d1b2ffbf739e80fe44f9c0fb92c9a))
|
|
29
|
+
* well that didn't work ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Miscellaneous Chores
|
|
33
|
+
|
|
34
|
+
* release 0.0.8 ([80f1a37](https://github.com/DIRACGrid/diracx/commit/80f1a376d8e9e51fab4f6b45d1e5bf66e73f8d4e))
|
|
35
|
+
|
|
3
36
|
## [0.0.7](https://github.com/DIRACGrid/diracx/compare/v0.0.6...v0.0.7) (2026-01-20)
|
|
4
37
|
|
|
5
38
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from diracx.core.extensions import DiracEntryPoint, select_from_extension
|
|
4
|
+
|
|
5
|
+
from .auth import app
|
|
6
|
+
|
|
7
|
+
__all__ = ("app",)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Load all the sub commands
|
|
11
|
+
cli_names = set(
|
|
12
|
+
[
|
|
13
|
+
entry_point.name
|
|
14
|
+
for entry_point in select_from_extension(group=DiracEntryPoint.CLI)
|
|
15
|
+
]
|
|
16
|
+
)
|
|
17
|
+
for cli_name in cli_names:
|
|
18
|
+
entry_point = select_from_extension(group=DiracEntryPoint.CLI, name=cli_name)[0]
|
|
19
|
+
app.add_typer(entry_point.load(), name=entry_point.name)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
cli_hidden_names = set(
|
|
23
|
+
[
|
|
24
|
+
entry_point.name
|
|
25
|
+
for entry_point in select_from_extension(group=DiracEntryPoint.HIDDEN_CLI)
|
|
26
|
+
]
|
|
27
|
+
)
|
|
28
|
+
for cli_name in cli_hidden_names:
|
|
29
|
+
entry_point = select_from_extension(
|
|
30
|
+
group=DiracEntryPoint.HIDDEN_CLI, name=cli_name
|
|
31
|
+
)[0]
|
|
32
|
+
app.add_typer(entry_point.load(), name=entry_point.name, hidden=True)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if __name__ == "__main__":
|
|
36
|
+
app()
|
|
@@ -21,7 +21,7 @@ from typer import Option
|
|
|
21
21
|
|
|
22
22
|
from diracx.core.config import Config
|
|
23
23
|
from diracx.core.config.schema import Field, SupportInfo
|
|
24
|
-
from diracx.core.extensions import select_from_extension
|
|
24
|
+
from diracx.core.extensions import DiracEntryPoint, select_from_extension
|
|
25
25
|
|
|
26
26
|
from ..utils import AsyncTyper
|
|
27
27
|
|
|
@@ -77,9 +77,9 @@ def cs_sync(old_file: Path, new_file: Path):
|
|
|
77
77
|
)
|
|
78
78
|
|
|
79
79
|
_apply_fixes(raw)
|
|
80
|
-
config_class: Config = select_from_extension(
|
|
81
|
-
|
|
82
|
-
].load()
|
|
80
|
+
config_class: Config = select_from_extension(
|
|
81
|
+
group=DiracEntryPoint.CORE, name="config"
|
|
82
|
+
)[0].load()
|
|
83
83
|
config = config_class.model_validate(raw)
|
|
84
84
|
new_file.write_text(
|
|
85
85
|
yaml.safe_dump(config.model_dump(exclude_unset=True, mode="json"))
|
|
@@ -264,7 +264,7 @@ def generate_helm_values(
|
|
|
264
264
|
|
|
265
265
|
from diracx.core.extensions import select_from_extension
|
|
266
266
|
|
|
267
|
-
for entry_point in select_from_extension(group=
|
|
267
|
+
for entry_point in select_from_extension(group=DiracEntryPoint.SQL_DB):
|
|
268
268
|
db_name = entry_point.name
|
|
269
269
|
db_config = all_db_configs.get(db_name, {})
|
|
270
270
|
|
|
@@ -310,7 +310,7 @@ def generate_helm_values(
|
|
|
310
310
|
},
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
for entry_point in select_from_extension(group=
|
|
313
|
+
for entry_point in select_from_extension(group=DiracEntryPoint.OS_DB):
|
|
314
314
|
db_name = entry_point.name
|
|
315
315
|
db_config = all_db_configs.get(db_name, {})
|
|
316
316
|
|
|
@@ -13,7 +13,11 @@ from rich.table import Table
|
|
|
13
13
|
from typer import FileText, Option
|
|
14
14
|
|
|
15
15
|
from diracx.client.aio import AsyncDiracClient
|
|
16
|
-
from diracx.core.models import
|
|
16
|
+
from diracx.core.models.search import (
|
|
17
|
+
ScalarSearchOperator,
|
|
18
|
+
SearchSpec,
|
|
19
|
+
VectorSearchOperator,
|
|
20
|
+
)
|
|
17
21
|
from diracx.core.preferences import OutputFormats, get_diracx_preferences
|
|
18
22
|
|
|
19
23
|
from .utils import AsyncTyper
|
|
@@ -378,7 +378,8 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
|
|
|
378
378
|
async def do_device_flow(self, *, user_code: str, **kwargs: Any) -> Any:
|
|
379
379
|
"""Do Device Flow.
|
|
380
380
|
|
|
381
|
-
|
|
381
|
+
Serve as the verification URI for the device flow.
|
|
382
|
+
|
|
382
383
|
It will redirect to the actual OpenID server (IAM, CheckIn) to
|
|
383
384
|
perform a authorization code flow.
|
|
384
385
|
|
|
@@ -435,8 +436,8 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
|
|
|
435
436
|
async def finish_device_flow(self, *, code: str, state: str, **kwargs: Any) -> Any:
|
|
436
437
|
"""Finish Device Flow.
|
|
437
438
|
|
|
438
|
-
|
|
439
|
-
|
|
439
|
+
Handle the URL callbacked by IAM/CheckIn after authorization flow.
|
|
440
|
+
|
|
440
441
|
It gets us the code we need for the authorization flow, and we
|
|
441
442
|
can map it to the corresponding device flow using the user_code
|
|
442
443
|
in the cookie/session.
|
|
@@ -492,7 +493,7 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
|
|
|
492
493
|
async def finished(self, **kwargs: Any) -> Any:
|
|
493
494
|
"""Finished.
|
|
494
495
|
|
|
495
|
-
|
|
496
|
+
Mark the final step of the device flow.
|
|
496
497
|
|
|
497
498
|
:return: any
|
|
498
499
|
:rtype: any
|
|
@@ -539,7 +540,9 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
|
|
|
539
540
|
async def get_refresh_tokens(self, **kwargs: Any) -> List[Any]:
|
|
540
541
|
"""Get Refresh Tokens.
|
|
541
542
|
|
|
542
|
-
Get all refresh tokens for the user.
|
|
543
|
+
Get all refresh tokens for the user.
|
|
544
|
+
|
|
545
|
+
If the user has the ``proxy_management`` property, then
|
|
543
546
|
the subject is not used to filter the refresh tokens.
|
|
544
547
|
|
|
545
548
|
:return: list of any
|
|
@@ -587,7 +590,9 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
|
|
|
587
590
|
async def revoke_refresh_token_by_jti(self, jti: str, **kwargs: Any) -> str:
|
|
588
591
|
"""Revoke Refresh Token By Jti.
|
|
589
592
|
|
|
590
|
-
Revoke a refresh token.
|
|
593
|
+
Revoke a refresh token.
|
|
594
|
+
|
|
595
|
+
If the user has the ``proxy_management`` property, then
|
|
591
596
|
the subject is not used to filter the refresh tokens.
|
|
592
597
|
|
|
593
598
|
:param jti: Required.
|
|
@@ -697,6 +702,7 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
|
|
|
697
702
|
"""Initiate Authorization Flow.
|
|
698
703
|
|
|
699
704
|
Initiate the authorization flow.
|
|
705
|
+
|
|
700
706
|
It will redirect to the actual OpenID server (IAM, CheckIn) to
|
|
701
707
|
perform a authorization code flow.
|
|
702
708
|
|
|
@@ -1831,6 +1837,7 @@ class JobsOperations:
|
|
|
1831
1837
|
"""Patch Metadata.
|
|
1832
1838
|
|
|
1833
1839
|
Update job metadata such as UserPriority, HeartBeatTime, JobType, etc.
|
|
1840
|
+
|
|
1834
1841
|
The argument are all the attributes/parameters of a job (except the ID).
|
|
1835
1842
|
|
|
1836
1843
|
:param body: Required.
|
|
@@ -1848,6 +1855,7 @@ class JobsOperations:
|
|
|
1848
1855
|
"""Patch Metadata.
|
|
1849
1856
|
|
|
1850
1857
|
Update job metadata such as UserPriority, HeartBeatTime, JobType, etc.
|
|
1858
|
+
|
|
1851
1859
|
The argument are all the attributes/parameters of a job (except the ID).
|
|
1852
1860
|
|
|
1853
1861
|
:param body: Required.
|
|
@@ -1865,6 +1873,7 @@ class JobsOperations:
|
|
|
1865
1873
|
"""Patch Metadata.
|
|
1866
1874
|
|
|
1867
1875
|
Update job metadata such as UserPriority, HeartBeatTime, JobType, etc.
|
|
1876
|
+
|
|
1868
1877
|
The argument are all the attributes/parameters of a job (except the ID).
|
|
1869
1878
|
|
|
1870
1879
|
:param body: Is either a {str: JobMetaData} type or a IO[bytes] type. Required.
|
|
@@ -1930,8 +1939,9 @@ class JobsOperations:
|
|
|
1930
1939
|
) -> List[Dict[str, Any]]:
|
|
1931
1940
|
"""Search.
|
|
1932
1941
|
|
|
1933
|
-
|
|
1934
|
-
|
|
1942
|
+
Create a search query to the job database.
|
|
1943
|
+
|
|
1944
|
+
This search can be based on different parameters, such as jobID, status, owner, etc.
|
|
1935
1945
|
|
|
1936
1946
|
**Possibilities**
|
|
1937
1947
|
|
|
@@ -1969,8 +1979,9 @@ class JobsOperations:
|
|
|
1969
1979
|
) -> List[Dict[str, Any]]:
|
|
1970
1980
|
"""Search.
|
|
1971
1981
|
|
|
1972
|
-
|
|
1973
|
-
|
|
1982
|
+
Create a search query to the job database.
|
|
1983
|
+
|
|
1984
|
+
This search can be based on different parameters, such as jobID, status, owner, etc.
|
|
1974
1985
|
|
|
1975
1986
|
**Possibilities**
|
|
1976
1987
|
|
|
@@ -2007,8 +2018,9 @@ class JobsOperations:
|
|
|
2007
2018
|
) -> List[Dict[str, Any]]:
|
|
2008
2019
|
"""Search.
|
|
2009
2020
|
|
|
2010
|
-
|
|
2011
|
-
|
|
2021
|
+
Create a search query to the job database.
|
|
2022
|
+
|
|
2023
|
+
This search can be based on different parameters, such as jobID, status, owner, etc.
|
|
2012
2024
|
|
|
2013
2025
|
**Possibilities**
|
|
2014
2026
|
|
|
@@ -2094,8 +2106,9 @@ class JobsOperations:
|
|
|
2094
2106
|
) -> Any:
|
|
2095
2107
|
"""Summary.
|
|
2096
2108
|
|
|
2097
|
-
Group jobs by a specific list of parameters.
|
|
2098
|
-
|
|
2109
|
+
Group jobs by a specific list of parameters.
|
|
2110
|
+
|
|
2111
|
+
Returns an array of n-uplets, where each n-uplet contains the
|
|
2099
2112
|
values of the grouping parameters and the number of jobs that match those values.
|
|
2100
2113
|
|
|
2101
2114
|
Body parameters:
|
|
@@ -2118,8 +2131,9 @@ class JobsOperations:
|
|
|
2118
2131
|
async def summary(self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any) -> Any:
|
|
2119
2132
|
"""Summary.
|
|
2120
2133
|
|
|
2121
|
-
Group jobs by a specific list of parameters.
|
|
2122
|
-
|
|
2134
|
+
Group jobs by a specific list of parameters.
|
|
2135
|
+
|
|
2136
|
+
Returns an array of n-uplets, where each n-uplet contains the
|
|
2123
2137
|
values of the grouping parameters and the number of jobs that match those values.
|
|
2124
2138
|
|
|
2125
2139
|
Body parameters:
|
|
@@ -2142,8 +2156,9 @@ class JobsOperations:
|
|
|
2142
2156
|
async def summary(self, body: Union[_models.SummaryParams, IO[bytes]], **kwargs: Any) -> Any:
|
|
2143
2157
|
"""Summary.
|
|
2144
2158
|
|
|
2145
|
-
Group jobs by a specific list of parameters.
|
|
2146
|
-
|
|
2159
|
+
Group jobs by a specific list of parameters.
|
|
2160
|
+
|
|
2161
|
+
Returns an array of n-uplets, where each n-uplet contains the
|
|
2147
2162
|
values of the grouping parameters and the number of jobs that match those values.
|
|
2148
2163
|
|
|
2149
2164
|
Body parameters:
|