refactor(BA-6004): Move Prometheus client into manager package#11559
Open
seedspirit wants to merge 4 commits into
Open
refactor(BA-6004): Move Prometheus client into manager package#11559seedspirit wants to merge 4 commits into
seedspirit wants to merge 4 commits into
Conversation
seedspirit
added a commit
that referenced
this pull request
May 12, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
Refactors the Prometheus client implementation to live under the manager package (since it’s manager-only), while keeping the query-template validation utilities in common to avoid introducing a common → manager dependency.
Changes:
- Moved
PrometheusClient, queriers,FixedQueryBuilder, and metric/value-type modules fromai.backend.common.clients.prometheusintoai.backend.manager.clients.prometheus. - Updated manager code paths and tests to import Prometheus client modules from the new manager package location.
- Added/adjusted Pants test targets and updated documentation/changelog to reflect the new module layout.
Reviewed changes
Copilot reviewed 41 out of 47 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/unit/manager/services/utilization_metric/test_kernel_live_stat_batch.py | Update imports to manager Prometheus metric DTOs/types. |
| tests/unit/manager/services/utilization_metric/test_container_metric.py | Update Prometheus client/query builder/DTO imports to manager package. |
| tests/unit/manager/services/prometheus_query_preset/test_prometheus_query_preset_service.py | Switch PrometheusClient import to manager package. |
| tests/unit/manager/repositories/prometheus_query_preset/test_prometheus_query_preset_repository.py | Switch PrometheusClient import to manager package. |
| tests/unit/manager/repositories/prometheus_query_preset/test_prometheus_query_preset_options.py | Switch PrometheusClient import to manager package. |
| tests/unit/manager/clients/prometheus/test_querier.py | Split imports between common preset (LabelMatcher) and manager querier/value types. |
| tests/unit/manager/clients/prometheus/test_fixed_query_builder.py | Update FixedQueryBuilder/DTO/value-type import locations after refactor. |
| tests/unit/manager/clients/prometheus/test_client.py | Import PrometheusClient/FixedQueryBuilder from manager while keeping preset types from common. |
| tests/unit/manager/clients/prometheus/test_capacity.py | Update metric DTO/type imports to manager package. |
| tests/unit/manager/clients/prometheus/BUILD | Add Pants test target for the new unit-test subpackage. |
| tests/unit/manager/clients/prometheus/init.py | Package marker for the new unit-test directory. |
| tests/unit/manager/api/gql_legacy/test_stat_converter.py | Update imports for live-stat DTOs/types to manager package. |
| tests/component/prometheus_query_preset/conftest.py | Switch PrometheusClient import to manager package for component tests. |
| tests/component/manager/clients/prometheus/test_sd_relabel.py | Import PrometheusClient/FixedQueryBuilder from manager, preset helpers from common. |
| tests/component/manager/clients/prometheus/test_client_integration.py | Import PrometheusClient/FixedQueryBuilder from manager, preset helpers from common. |
| tests/component/manager/clients/prometheus/BUILD | Add Pants test target for the new component-test subpackage. |
| tests/component/manager/clients/prometheus/init.py | Package marker for new component-test directory. |
| tests/component/manager/clients/init.py | Package marker to support component-test layout. |
| tests/component/manager/init.py | Package marker to support component-test layout. |
| src/ai/backend/manager/sokovan/deployment/executor.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/sokovan/deployment/coordinator.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/services/prometheus_query_preset/service.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/services/processors.py | Update TYPE_CHECKING PrometheusClient import to manager package. |
| src/ai/backend/manager/services/metric/types.py | Update metric DTO/value-type imports to manager package. |
| src/ai/backend/manager/services/metric/actions/live_stat.py | Update KernelLiveStatBatchResult import to manager package. |
| src/ai/backend/manager/services/metric/actions/container.py | Update container metric DTO imports to manager package (and reorder imports). |
| src/ai/backend/manager/repositories/types.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/repositories/prometheus_query_preset/repository.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/repositories/metric/repository.py | Update Prometheus client + metric DTO imports to manager package. |
| src/ai/backend/manager/repositories/metric/README.md | Update documentation to point to new DTO module location. |
| src/ai/backend/manager/dependencies/system/prometheus_client.py | Wire dependency provider to manager PrometheusClient/FixedQueryBuilder modules. |
| src/ai/backend/manager/dependencies/system/composer.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/dependencies/processing/composer.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/dependencies/orchestration/sokovan.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/dependencies/orchestration/composer.py | Update PrometheusClient import to manager package. |
| src/ai/backend/manager/dependencies/domain/repositories.py | Update TYPE_CHECKING PrometheusClient import to manager package. |
| src/ai/backend/manager/dependencies/domain/composer.py | Update TYPE_CHECKING PrometheusClient import to manager package. |
| src/ai/backend/manager/clients/prometheus/types.py | New manager-local ValueType/MetricValue definitions. |
| src/ai/backend/manager/clients/prometheus/querier.py | Update ValueType import to manager-local type module. |
| src/ai/backend/manager/clients/prometheus/metric_types.py | Update ValueType/MetricValue import to manager-local type module. |
| src/ai/backend/manager/clients/prometheus/fixed_query_builder.py | Update imports to manager-local metric/types + common preset utilities. |
| src/ai/backend/manager/clients/prometheus/client.py | Update imports to manager-local modules; keep preset utilities from common. |
| src/ai/backend/manager/clients/prometheus/init.py | New public exports for manager Prometheus client package. |
| src/ai/backend/manager/api/gql_legacy/stat_converter.py | Update metric DTO/value-type imports to manager package. |
| src/ai/backend/manager/api/gql_legacy/metric/user.py | Update ContainerMetricOptionalLabel import to manager package. |
| src/ai/backend/common/clients/prometheus/init.py | Narrow common Prometheus exports to preset/validation utilities only. |
| changes/11559.enhance.md | Add changelog entry for the module move. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
PrometheusClient, queriers, FixedQueryBuilder, metric/value types move from common/clients/prometheus/ to manager/clients/prometheus/. preset.py stays in common because common DTO validators import validate_query_template. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…module - Extract validate_query_template into common/dto/manager/v2/prometheus_query_preset/validators.py, making it self-contained (no longer constructs MetricPreset). - Move preset.py (LabelMatcher, LabelOperator, MetricPreset) into manager/clients/prometheus/, completing the common->manager move. - Remove the now-empty common/clients/prometheus/ package. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1b351be to
67c85cb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PrometheusClient, queriers,FixedQueryBuilder, and metric/value type modules fromcommon/clients/prometheus/tomanager/clients/prometheus/— they are only used by the manager.preset.py(LabelMatcher,MetricPreset,validate_query_template, etc.) incommon/clients/prometheus/because two common DTO validators (common/dto/manager/prometheus_query_preset/request.py,common/dto/manager/v2/prometheus_query_preset/request.py) importvalidate_query_template; moving it would create acommon → managerreverse dependency.tests/unit/manager/clients/prometheus/andtests/component/manager/clients/prometheus/.test_preset.pystays undertests/unit/common/clients/prometheus/alongside the module it covers.Test plan
pants check --changed-since=HEAD --changed-dependents=transitive— passes (2960 files)pants lint --changed-since=HEAD --changed-dependents=transitive— passespants test --changed-since=HEAD --changed-dependents=transitive— all affected tests passResolves BA-6004