Summary
Create a demo extension that implements a custom provisioning provider to validate the end-to-end flow. This serves as both a smoke test and a reference implementation for extension authors.
Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
The codebase already has demo/test extensions. The provisioning provider demo should:
- Register a custom provider via
WithProvisioningProvider()
- Implement all
ProvisioningProvider interface methods
- Demonstrate progress reporting during Deploy/Preview/Destroy
- Work end-to-end with
azd provision command
Detailed Requirements
Extension Configuration (extension.yaml)
name: microsoft.azd.demo # or microsoft.azd.scripts
version: 0.1.0
capabilities:
- provisioning-provider
Provider Implementation
A simple echo/script-based provider that:
Initialize() — logs project path and options, validates config
State() — returns mock outputs and resources
Deploy() — performs mock deployment with 3-5 progress messages, returns mock outputs
Preview() — returns mock preview with sample change entries
Destroy() — performs mock cleanup with progress, returns invalidated keys
EnsureEnv() — no-op or validates environment
Parameters() — returns sample parameters
ExtensionHost Setup
host.WithProvisioningProvider("demo", func() azdext.ProvisioningProvider {
return NewDemoProvider(client)
}).Run(ctx)
Sample azure.yaml
name: demo-project
infra:
provider: demo
config:
message: "Hello from demo provider"
Acceptance Criteria
Dependencies
Files
- Create: Demo extension directory with extension.yaml, main.go, provider implementation
Summary
Create a demo extension that implements a custom provisioning provider to validate the end-to-end flow. This serves as both a smoke test and a reference implementation for extension authors.
Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
The codebase already has demo/test extensions. The provisioning provider demo should:
WithProvisioningProvider()ProvisioningProviderinterface methodsazd provisioncommandDetailed Requirements
Extension Configuration (
extension.yaml)Provider Implementation
A simple echo/script-based provider that:
Initialize()— logs project path and options, validates configState()— returns mock outputs and resourcesDeploy()— performs mock deployment with 3-5 progress messages, returns mock outputsPreview()— returns mock preview with sample change entriesDestroy()— performs mock cleanup with progress, returns invalidated keysEnsureEnv()— no-op or validates environmentParameters()— returns sample parametersExtensionHost Setup
Sample azure.yaml
Acceptance Criteria
extension.yamldeclaringprovisioning-providerProvisioningProviderinterfaceInitialize()accepts and logs project path and optionsDeploy()sends progress messages and returns mock resultState()returns mock deployment stateDestroy()sends progress and returns invalidated keysParameters()returns sample parametersPreview()returns mock preview changesEnsureEnv()works without errorWithProvisioningProvider("demo", factory)azure.yamlwithinfra: { provider: demo }azd provision→ starts extension → calls provider → returns resultsDependencies
Files