Summary
Add provisioning provider support to ExtensionHost in pkg/azdext/extension_host.go. Implement the WithProvisioningProvider(name, factory) fluent API and integrate the provisioning manager into the Run() lifecycle (init, receive, ready, register phases).
Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
ExtensionHost is the main orchestration point for extensions. It manages the lifecycle of all capability managers (service targets, framework services, events). Adding provisioning provider support requires:
- A new fluent registration method:
WithProvisioningProvider()
- A
ProvisioningManager initialized in initManagers()
- Integration into the
Run() lifecycle: receivers, readiness, and parallel registration
Existing Pattern
func (er *ExtensionHost) WithServiceTarget(host string, factory ServiceTargetFactory) *ExtensionHost {
er.serviceTargets = append(er.serviceTargets, ServiceTargetRegistration{Host: host, Factory: factory})
return er
}
Detailed Requirements
New Types
type ProvisioningProviderRegistration struct {
Name string
Factory ProvisioningProviderFactory
}
New Fields on ExtensionHost
provisioningProviders []ProvisioningProviderRegistration
provisioningManager *ProvisioningManager
WithProvisioningProvider Method
func (er *ExtensionHost) WithProvisioningProvider(
name string, factory ProvisioningProviderFactory,
) *ExtensionHost {
er.provisioningProviders = append(er.provisioningProviders, ProvisioningProviderRegistration{
Name: name, Factory: factory,
})
return er
}
Run() Integration
initManagers(): if len(provisioningProviders) > 0, create ProvisioningManager
- Add provisioning manager to receivers list (for
Receive() and Ready() goroutines)
- Register provisioning providers in the parallel registration phase (alongside service targets and framework services)
hasProvisioningProviders flag for conditional logic
Acceptance Criteria
Dependencies
Files
- Modify:
pkg/azdext/extension_host.go
Summary
Add provisioning provider support to
ExtensionHostinpkg/azdext/extension_host.go. Implement theWithProvisioningProvider(name, factory)fluent API and integrate the provisioning manager into theRun()lifecycle (init, receive, ready, register phases).Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
ExtensionHostis the main orchestration point for extensions. It manages the lifecycle of all capability managers (service targets, framework services, events). Adding provisioning provider support requires:WithProvisioningProvider()ProvisioningManagerinitialized ininitManagers()Run()lifecycle: receivers, readiness, and parallel registrationExisting Pattern
Detailed Requirements
New Types
New Fields on ExtensionHost
provisioningProviders []ProvisioningProviderRegistrationprovisioningManager *ProvisioningManagerWithProvisioningProvider Method
Run() Integration
initManagers(): iflen(provisioningProviders) > 0, createProvisioningManagerReceive()andReady()goroutines)hasProvisioningProvidersflag for conditional logicAcceptance Criteria
ProvisioningProviderRegistrationstruct definedprovisioningProvidersandprovisioningManagerfields onExtensionHostWithProvisioningProvider()fluent method implementedinitManagers()createsProvisioningManagerwhen providers registeredRun()adds manager to receivers forReceive()andReady()Run()registers providers in parallel registration phaseDependencies
Files
pkg/azdext/extension_host.go