Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Cosmos] Remove ephemeral-tenant provisioning from fixed-account live-test lanes

Đang mở
#48,780 0 bình luận 1 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
45/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
azure, powershell, python
Lĩnh vực
cloud, databases, devops

Hướng nghiên cứu

Bắt đầu với PR #48459 và shared live-test stage, sau đó lần theo build-test-resource-config.yml, deploy-test-resources.yml, remove-test-resources.yml và test-resources.bicep. Tách các đường dẫn fixed-account và AAD để fixed jobs sử dụng resolver và shared JSON secret mà không cần ephemeral provisioning, trong khi AAD vẫn giữ tenant-scoped role assignment. Hoàn tất bao gồm scoped stale-database cleanup, ownership documentation và việc xác thực các lần chạy chồng lấp cũng như deployment credentials không khả dụng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Client Cosmos

Is your feature request related to a problem? Please describe.

PR #48459 moves the Python Cosmos key-auth live tests onto fixed, team-owned accounts and proves that the selected accounts work across the live matrix. However, the shared Python live-test stage still deploys and removes a temporary Cosmos account for every matrix leg before the fixed credentials are reapplied.

As a result, the migrated key-auth tests still authenticate through the ephemeral live-test tenant during ARM deployment. A tenant rotation or broken service connection can therefore fail the job before pytest reaches the fixed account. This is the final gap between the current Python implementation and Java's no-provisioning fixed-account model.

Describe the solution you'd like

Separate the live matrix by resource-lifecycle requirements and make the fixed-account lane independent of ephemeral-tenant provisioning.

  • Split the 12 fixed key-auth jobs and the already-fixed GSI job from the 7 AAD jobs that require a tenant-scoped Cosmos data-plane role assignment.
  • Run the fixed-account jobs through a Cosmos-owned stage or job that resolves credentials from the shared versioned JSON secret but does not invoke build-test-resource-config.yml, deploy-test-resources.yml, or remove-test-resources.yml.
  • Ensure the fixed-account jobs do not require the azure-sdk-tests-cosmos service connection or any authentication against the ephemeral tenant.
  • Keep the AAD jobs on the existing provisioned-resource path so test-resources.bicep can create their tenant-specific sqlRoleAssignment.
  • Move values currently supplied only as Bicep outputs into the fixed-account matrix. In particular, set AZURE_COSMOS_ENABLE_CIRCUIT_BREAKER=True on the applicable circuit-breaker jobs.
  • Remove the transitional post-deployment credential reapplication once fixed-account jobs no longer deploy resources; the resolver pre-step should become their sole source of ACCOUNT_HOST and ACCOUNT_KEY.
  • Add best-effort cleanup for databases left by cancelled or aborted runs. Cleanup must be limited to stale PythonSDKTest-* databases owned by Python and must run across each fixed account without affecting Java or concurrent Python runs.
  • Document ownership for Java's shared account provisioning/reconciliation script and the shared JSON secret update procedure, including a smoke test after account or key rotation.
  • Validate overlapping fixed-account runs and prove they remain runnable when ephemeral-tenant deployment credentials are unavailable.

Describe alternatives you've considered

  1. Keep the current transitional deployment followed by credential override. This is already proven by PR #48459, but it does not remove the tenant dependency.
  2. Move AAD tests onto the fixed accounts and refresh their role assignments after every tenant rotation. This preserves one matrix but requires cross-subscription permissions and additional identity lifecycle work.
  3. Add a per-leg deployment condition to shared eng templates. This is generic, but changes monorepo-wide infrastructure for a Cosmos-specific requirement.
  4. Register a separate AAD pipeline while keeping the fixed-account pipeline Cosmos-owned. This is fully service-local but adds another Azure DevOps pipeline definition to maintain.

Additional context

PR #48459 already supplies the prerequisites for this work:

  • A cross-platform PowerShell resolver compatible with Java's shared JSON-secret schema.
  • Stable-account selectors for all 12 key-auth matrix jobs; GSI already uses dedicated fixed credentials.
  • Run-scoped PythonSDKTest-* database naming, bounded control-plane retries, scoped normal cleanup, and test isolation needed for concurrent use.
  • Early resolver validation through PreSteps and a Cosmos-local post-deployment hook used during the transitional rollout.
  • Successful live verification of the fixed-account query, split, multi-region, and circuit-breaker coverage.

Related tracking issue: #48236. Java reference: Azure/azure-sdk-for-java#49735.

Ngôn ngữ chính
Python
Star
5.6k
Fork
3.4k
Merge trung bình
2 ngày 3 giờ
Pull request đã merge (30 ngày)
206

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Azure/azure-sdk-for-python

Tất cả issue của Azure/azure-sdk-for-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.