You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Create grpc/proto/provisioning.proto following the established patterns in service_target.proto and framework_service.proto. This is the foundational schema that defines the gRPC contract between azd core and extension-provided provisioning providers.
Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
The extension framework uses bidirectional streaming gRPC with a MessageBroker pattern for request-response correlation. Each extension capability (service targets, framework services) has its own proto file defining a Stream() RPC and a message envelope with oneof for all request/response/progress message types.
Patterns to Follow
grpc/proto/service_target.proto — Service definition, envelope pattern, progress messages
grpc/proto/framework_service.proto — Another example of the same pattern
Both use ExtensionError from errors.proto for standardized error handling
Summary
Create
grpc/proto/provisioning.protofollowing the established patterns inservice_target.protoandframework_service.proto. This is the foundational schema that defines the gRPC contract between azd core and extension-provided provisioning providers.Parent Epic
Part of #7465 — Provisioning Providers in the AZD Extension Framework
Context
The extension framework uses bidirectional streaming gRPC with a
MessageBrokerpattern for request-response correlation. Each extension capability (service targets, framework services) has its own proto file defining aStream()RPC and a message envelope withoneoffor all request/response/progress message types.Patterns to Follow
grpc/proto/service_target.proto— Service definition, envelope pattern, progress messagesgrpc/proto/framework_service.proto— Another example of the same patternExtensionErrorfromerrors.protofor standardized error handlingDetailed Requirements
Service Definition
Message Envelope (
ProvisioningMessage)Must include:
string request_id— correlation ID for request-response matchingExtensionError error— standardized error fromerrors.protooneof message_typecontaining all 15+ message types belowMessage Types (in the oneof)
Registration:
RegisterProvisioningProviderRequest— fields:string name(provider name for IoC registration)RegisterProvisioningProviderResponse— confirmationInitialize:
ProvisioningInitializeRequest— fields:string project_path,ProvisioningOptions optionsProvisioningInitializeResponse— confirmationState:
ProvisioningStateRequest— (may include state options/hint)ProvisioningStateResponse— fields: outputs map, resources listDeploy:
ProvisioningDeployRequest— trigger deploymentProvisioningDeployResponse— fields: deployment outputs, skipped reasonProvisioningDeployProgressMessage— fields:string message(in-band progress)Preview:
ProvisioningPreviewRequest— trigger previewProvisioningPreviewResponse— fields: preview status, changes listProvisioningPreviewProgressMessage— fields:string messageDestroy:
ProvisioningDestroyRequest— fields: destroy options (force, purge flags)ProvisioningDestroyResponse— fields: invalidated env keysProvisioningDestroyProgressMessage— fields:string messageEnsureEnv:
ProvisioningEnsureEnvRequestProvisioningEnsureEnvResponseParameters:
ProvisioningParametersRequestProvisioningParametersResponse— fields: repeatedProvisioningParameterShared Types
ProvisioningOptions— provider kind, path, module, name, deployment stacks, config (google.protobuf.Struct)ProvisioningParameter— name, secret flag, value, env var mappingsProvisioningInputParameter— type, default value, valueProvisioningOutputParameter— type, valueProvisioningResource— idProvisioningDeployPreviewChange— change type, resource, before/after, deltaProvisioningDestroyOptions— force, purge booleansKey Requirements
ExtensionErrorfromerrors.proto(NOT a custom error type)google.protobuf.Structfor flexible config payloadsgo_packageto match existing convention (azdext)errors.protoforExtensionErrorAcceptance Criteria
protocProvisioningServicewithStream()bidirectional RPC definedProvisioningMessageenvelope hasrequest_id,ExtensionError, and oneof with all message typesRegisterProvisioningProviderRequest(withname),RegisterProvisioningProviderResponseExtensionErrorfromerrors.protogoogle.protobuf.Structfor configgo_packageconsistent with other protosDependencies
Files
grpc/proto/provisioning.proto