Summary
Extend AzdClient in pkg/azdext/azd_client.go to include a ProvisioningServiceClient so extensions can open the provisioning bidirectional stream. Add a lazy-initialized client field and accessor method following the same pattern as ServiceTarget() and FrameworkService().
Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
AzdClient is the extension-side gRPC client wrapper that provides lazy-initialized accessors for each service. The ProvisioningManager needs client.Provisioning() to open the bidirectional stream.
Pattern to Follow
// Existing pattern in azd_client.go:
func (c *AzdClient) ServiceTarget() ServiceTargetServiceClient {
return c.serviceTargetClient // lazy initialized
}
Detailed Requirements
- Add
provisioningClient ProvisioningServiceClient field (or lazy equivalent)
- Add
Provisioning() ProvisioningServiceClient accessor method
- Initialize the client lazily on first access using the shared gRPC connection
- Follow the exact same pattern as other client accessors
Acceptance Criteria
Dependencies
Files
- Modify:
pkg/azdext/azd_client.go
Summary
Extend
AzdClientinpkg/azdext/azd_client.goto include aProvisioningServiceClientso extensions can open the provisioning bidirectional stream. Add a lazy-initialized client field and accessor method following the same pattern asServiceTarget()andFrameworkService().Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
AzdClientis the extension-side gRPC client wrapper that provides lazy-initialized accessors for each service. TheProvisioningManagerneedsclient.Provisioning()to open the bidirectional stream.Pattern to Follow
Detailed Requirements
provisioningClient ProvisioningServiceClientfield (or lazy equivalent)Provisioning() ProvisioningServiceClientaccessor methodAcceptance Criteria
provisioningClient ProvisioningServiceClientfield onAzdClientProvisioning() ProvisioningServiceClientaccessor methodDependencies
ProvisioningServiceClientinterface)Files
pkg/azdext/azd_client.go