Skip to content

refactor(BA-6004): Move Prometheus client into manager package#11559

Open
seedspirit wants to merge 4 commits into
mainfrom
refactor/BA-6004
Open

refactor(BA-6004): Move Prometheus client into manager package#11559
seedspirit wants to merge 4 commits into
mainfrom
refactor/BA-6004

Conversation

@seedspirit
Copy link
Copy Markdown
Contributor

Summary

  • Move PrometheusClient, queriers, FixedQueryBuilder, and metric/value type modules from common/clients/prometheus/ to manager/clients/prometheus/ — they are only used by the manager.
  • Keep preset.py (LabelMatcher, MetricPreset, validate_query_template, etc.) in common/clients/prometheus/ because two common DTO validators (common/dto/manager/prometheus_query_preset/request.py, common/dto/manager/v2/prometheus_query_preset/request.py) import validate_query_template; moving it would create a common → manager reverse dependency.
  • Mirror the test layout: tests/unit/manager/clients/prometheus/ and tests/component/manager/clients/prometheus/. test_preset.py stays under tests/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 — passes
  • pants test --changed-since=HEAD --changed-dependents=transitive — all affected tests pass
  • CI green

Resolves BA-6004

@github-actions github-actions Bot added size:L 100~500 LoC comp:manager Related to Manager component comp:common Related to Common component labels May 12, 2026
seedspirit added a commit that referenced this pull request May 12, 2026
@seedspirit seedspirit changed the title refactor(BA-6004): move Prometheus client into manager package refactor(BA-6004): Move Prometheus client into manager package May 12, 2026
@seedspirit seedspirit marked this pull request as ready for review May 12, 2026 09:23
Copilot AI review requested due to automatic review settings May 12, 2026 09:23
@seedspirit seedspirit requested a review from a team May 12, 2026 09:26
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 from ai.backend.common.clients.prometheus into ai.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.

seedspirit and others added 3 commits May 12, 2026 19:13
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:common Related to Common component comp:manager Related to Manager component size:L 100~500 LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants