Documentation ¶
Overview ¶
Package provider works as a shared high-level interface for rpc.ResourceProviderServer.
It is the lowest level that the rest of this repo should target, and servers as an interoperability layer between middle-wares.
Index ¶
- func ConfigMissingKeys(missing map[string]string) error
- func GetSchema(ctx context.Context, name, version string, provider Provider) (schema.PackageSpec, error)
- func InternalErrorf(msg string, a ...any) error
- func RawServer(name, version string, provider Provider) func(*pprovider.HostClient) (rpc.ResourceProviderServer, error)
- func RunProvider(name, version string, provider Provider) error
- type CallRequest
- type CallResponse
- type CheckFailure
- type CheckRequest
- type CheckResponse
- type ConfigureRequest
- type ConstructFunc
- type ConstructRequest
- type ConstructResponse
- type CreateRequest
- type CreateResponse
- type DeleteRequest
- type DiffKind
- type DiffRequest
- type DiffResponse
- type GetSchemaRequest
- type GetSchemaResponse
- type InitializationFailed
- type InvokeRequest
- type InvokeResponse
- type Logger
- func (l Logger) Debug(msg string)
- func (l Logger) DebugStatus(msg string)
- func (l Logger) DebugStatusf(msg string, a ...any)
- func (l Logger) Debugf(msg string, a ...any)
- func (l Logger) Error(msg string)
- func (l Logger) ErrorStatus(msg string)
- func (l Logger) ErrorStatusf(msg string, a ...any)
- func (l Logger) Errorf(msg string, a ...any)
- func (l Logger) Info(msg string)
- func (l Logger) InfoStatus(msg string)
- func (l Logger) InfoStatusf(msg string, a ...any)
- func (l Logger) Infof(msg string, a ...any)
- func (l Logger) Warning(msg string)
- func (l Logger) WarningStatus(msg string)
- func (l Logger) WarningStatusf(msg string, a ...any)
- func (l Logger) Warningf(msg string, a ...any)
- type PropertyDiff
- type Provider
- type ReadRequest
- type ReadResponse
- type RunInfo
- type UpdateRequest
- type UpdateResponse
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConfigMissingKeys ¶ added in v0.5.0
ConfigMissingKeys creates a structured error for missing provider keys.
func GetSchema ¶ added in v0.7.0
func GetSchema(ctx context.Context, name, version string, provider Provider) (schema.PackageSpec, error)
GetSchema retrieves the schema from the provider by invoking GetSchema on the provider.
This is a helper method to retrieve the schema from a provider without running the provider in a separate process. It should not be necessary for most providers.
To retrieve the schema from a provider binary, use
pulumi package get-schema ./pulumi-resource-MYPROVIDER
func InternalErrorf ¶ added in v0.22.0
InternalErrorf indicates that the provider encountered an internal error.
This will tell the user that the provider had a bug, and the bug should be reported to the provider author.
This is different then internal.Error, which indicates that pulumi-go-provider has a bug.
func RawServer ¶ added in v0.12.0
func RawServer( name, version string, provider Provider, ) func(*pprovider.HostClient) (rpc.ResourceProviderServer, error)
RawServer converts the Provider into a factory for gRPC servers.
If you are trying to set up a standard main function, see RunProvider.
func RunProvider ¶ added in v0.4.0
RunProvider runs a provider with the given name and version.
Types ¶
type CallRequest ¶ added in v0.22.0
type CallRequest struct { Tok tokens.ModuleMember Args presource.PropertyMap Context *pulumi.Context }
CallRequest represents a requested resource method invocation.
It corresponds to rpc.CallRequest on the wire.
type CallResponse ¶ added in v0.22.0
type CallResponse struct { // The returned values, if the call was successful. Return presource.PropertyMap // The failures if any arguments didn't pass verification. Failures []CheckFailure }
CallResponse represents a completed resource method invocation.
It corresponds to rpc.CallResponse on the wire.
type CheckFailure ¶ added in v0.4.0
type CheckRequest ¶ added in v0.4.0
type CheckRequest struct { Urn presource.URN Olds presource.PropertyMap News presource.PropertyMap RandomSeed []byte }
type CheckResponse ¶ added in v0.4.0
type CheckResponse struct { Inputs presource.PropertyMap Failures []CheckFailure }
type ConfigureRequest ¶ added in v0.4.0
type ConfigureRequest struct { Variables map[string]string Args presource.PropertyMap }
type ConstructFunc ¶ added in v0.8.0
type ConstructFunc = func( *pulumi.Context, comProvider.ConstructInputs, pulumi.ResourceOption, ) (pulumi.ComponentResource, error)
type ConstructRequest ¶ added in v0.8.0
type ConstructRequest struct { URN presource.URN Preview bool Construct func(context.Context, ConstructFunc) (ConstructResponse, error) }
type ConstructResponse ¶ added in v0.8.0
type ConstructResponse struct {
// contains filtered or unexported fields
}
type CreateRequest ¶ added in v0.4.0
type CreateRequest struct { Urn presource.URN // the Pulumi URN for this resource. Properties presource.PropertyMap // the provider inputs to set during creation. Timeout float64 // the create request timeout represented in seconds. Preview bool // true if this is a preview and the provider should not actually create the resource. }
type CreateResponse ¶ added in v0.4.0
type CreateResponse struct { ID string // the ID of the created resource. Properties presource.PropertyMap // any properties that were computed during creation. // non-nil to indicate that the create failed and left the resource in a partial // state. // // If PartialState is non-nil, then an error will be returned, annotated with // [pulumirpc.ErrorResourceInitFailed]. PartialState *InitializationFailed }
type DeleteRequest ¶ added in v0.4.0
type DiffKind ¶ added in v0.4.0
type DiffKind string
const ( Add DiffKind = "add" // this property was added AddReplace DiffKind = "add&replace" // this property was added, and this change requires a replace Delete DiffKind = "delete" // this property was removed DeleteReplace DiffKind = "delete&replace" // this property was removed, and this change requires a replace Update DiffKind = "update" // this property's value was changed UpdateReplace DiffKind = "update&replace" // this property's value was changed, and this change requires a replace Stable DiffKind = "stable" // this property's value will not change )
type DiffRequest ¶ added in v0.4.0
type DiffRequest struct { ID string Urn presource.URN Olds presource.PropertyMap News presource.PropertyMap IgnoreChanges []presource.PropertyKey }
type DiffResponse ¶ added in v0.4.0
type DiffResponse struct { DeleteBeforeReplace bool // if true, this resource must be deleted before replacing it. HasChanges bool // if true, this diff represents an actual difference and thus requires an update. // detailedDiff is an optional field that contains map from each changed property to the type of the change. // // The keys of this map are property paths. These paths are essentially Javascript property access expressions // in which all elements are literals, and obey the following EBNF-ish grammar: // // propertyName := [a-zA-Z_$] { [a-zA-Z0-9_$] } // quotedPropertyName := '"' ( '\' '"' | [^"] ) { ( '\' '"' | [^"] ) } '"' // arrayIndex := { [0-9] } // // propertyIndex := '[' ( quotedPropertyName | arrayIndex ) ']' // rootProperty := ( propertyName | propertyIndex ) // propertyAccessor := ( ( '.' propertyName ) | propertyIndex ) // path := rootProperty { propertyAccessor } // // Examples of valid keys: // - root // - root.nested // - root["nested"] // - root.double.nest // - root["double"].nest // - root["double"]["nest"] // - root.array[0] // - root.array[100] // - root.array[0].nested // - root.array[0][1].nested // - root.nested.array[0].double[1] // - root["key with \"escaped\" quotes"] // - root["key with a ."] // - ["root key with \"escaped\" quotes"].nested // - ["root key with a ."][100] DetailedDiff map[string]PropertyDiff }
type GetSchemaRequest ¶ added in v0.4.0
type GetSchemaRequest struct {
Version int
}
type GetSchemaResponse ¶ added in v0.4.0
type GetSchemaResponse struct {
Schema string
}
type InitializationFailed ¶ added in v0.16.0
type InitializationFailed struct { // Reasons why the resource did not fully initialize. Reasons []string }
InitializationFailed indicates that a resource exists but failed to initialize, and is thus in a partial state.
type InvokeRequest ¶ added in v0.4.0
type InvokeRequest struct { Token tokens.Type // the function token to invoke. Args presource.PropertyMap // the arguments for the function invocation. }
type InvokeResponse ¶ added in v0.4.0
type InvokeResponse struct { Return presource.PropertyMap // the returned values, if invoke was successful. Failures []CheckFailure // the failures if any arguments didn't pass verification. }
type Logger ¶ added in v0.17.0
type Logger struct {
// contains filtered or unexported fields
}
Logger provides methods for user visible logging.
Log info will be associated with the URN passed if any.
func (Logger) DebugStatus ¶ added in v0.17.0
DebugStatus logs a debug message visible to the user.
The message will only be displayed while it is the latest message.
func (Logger) DebugStatusf ¶ added in v0.17.0
DebugStatusf logs a debug message visible to the user, formatting it with fmt.Sprintf.
The message will only be displayed while it is the latest message.
func (Logger) Debugf ¶ added in v0.17.0
Debugf logs a debug message visible to the user, formatting it with fmt.Sprintf.
func (Logger) ErrorStatus ¶ added in v0.17.0
func (Logger) ErrorStatusf ¶ added in v0.17.0
func (Logger) InfoStatus ¶ added in v0.17.0
func (Logger) InfoStatusf ¶ added in v0.17.0
func (Logger) WarningStatus ¶ added in v0.17.0
func (Logger) WarningStatusf ¶ added in v0.17.0
type PropertyDiff ¶ added in v0.4.0
type Provider ¶ added in v0.4.0
type Provider struct { // GetSchema fetches the schema for this resource provider. GetSchema func(context.Context, GetSchemaRequest) (GetSchemaResponse, error) // Cancel signals the provider to gracefully shut down and abort any ongoing resource operations. // Operations aborted in this way will return an error (e.g., `Update` and `Create` will either return a // creation error or an initialization error). Since Cancel is advisory and non-blocking, it is up // to the host to decide how long to wait after Cancel is called before (e.g.) // hard-closing any gRPC connection. Cancel func(context.Context) error // Provider Config CheckConfig func(context.Context, CheckRequest) (CheckResponse, error) DiffConfig func(context.Context, DiffRequest) (DiffResponse, error) // NOTE: We opt into all options. Configure func(context.Context, ConfigureRequest) error // Invokes Invoke func(context.Context, InvokeRequest) (InvokeResponse, error) // Check validates that the given property bag is valid for a resource of the given type and returns the inputs // that should be passed to successive calls to Diff, Create, or Update for this resource. As a rule, the provider // inputs returned by a call to Check should preserve the original representation of the properties as present in // the program inputs. Though this rule is not required for correctness, violations thereof can negatively impact // the end-user experience, as the provider inputs are using for detecting and rendering diffs. Check func(context.Context, CheckRequest) (CheckResponse, error) Diff func(context.Context, DiffRequest) (DiffResponse, error) Create func(context.Context, CreateRequest) (CreateResponse, error) Read func(context.Context, ReadRequest) (ReadResponse, error) Update func(context.Context, UpdateRequest) (UpdateResponse, error) Delete func(context.Context, DeleteRequest) error // Call allows methods to be attached to resources. // // Right now, Call is restricted to methods on component resources.[^1][^2] // // [^1]: On the provider resource: https://github.com/pulumi/pulumi/issues/17025 // [^2]: On custom resources: https://github.com/pulumi/pulumi/issues/16257 Call func(context.Context, CallRequest) (CallResponse, error) // Components Resources Construct func(context.Context, ConstructRequest) (ConstructResponse, error) }
func (Provider) WithDefaults ¶ added in v0.8.0
WithDefaults returns a provider with sensible defaults. It does not mutate its receiver.
Most default values return a NotYetImplemented error, which the engine knows to ignore. Other defaults are no-op functions.
You should not need to call this function manually. It will be automatically invoked before a provider is run.
type ReadRequest ¶ added in v0.4.0
type ReadRequest struct { ID string // the ID of the resource to read. Urn presource.URN // the Pulumi URN for this resource. Properties presource.PropertyMap // the current state (sufficiently complete to identify the resource). Inputs presource.PropertyMap // the current inputs, if any (only populated during refresh). }
type ReadResponse ¶ added in v0.4.0
type ReadResponse struct { ID string // the ID of the resource read back (or empty if missing). Properties presource.PropertyMap // the state of the resource read from the live environment. Inputs presource.PropertyMap // the inputs for this resource that would be returned from Check. // non-nil to indicate that the read failed and left the resource in a partial // state. // // If PartialState is non-nil, then an error will be returned, annotated with // [pulumirpc.ErrorResourceInitFailed]. PartialState *InitializationFailed }
type RunInfo ¶ added in v0.4.0
func GetRunInfo ¶ added in v0.17.0
type UpdateRequest ¶ added in v0.4.0
type UpdateRequest struct { ID string // the ID of the resource to update. Urn presource.URN // the Pulumi URN for this resource. Olds presource.PropertyMap // the old values of provider inputs for the resource to update. News presource.PropertyMap // the new values of provider inputs for the resource to update. Timeout float64 // the update request timeout represented in seconds. IgnoreChanges []presource.PropertyKey // a set of property paths that should be treated as unchanged. Preview bool // true if the provider should not actually create the resource. }
type UpdateResponse ¶ added in v0.4.0
type UpdateResponse struct { // any properties that were computed during updating. Properties presource.PropertyMap // non-nil to indicate that the update failed and left the resource in a partial // state. // // If PartialState is non-nil, then an error will be returned, annotated with // [pulumirpc.ErrorResourceInitFailed]. PartialState *InitializationFailed }
Directories ¶
Path | Synopsis |
---|---|
examples
|
|
auto-naming
package main shows how a [infer] based provider can implement auto-naming.
|
package main shows how a [infer] based provider can implement auto-naming. |
credentials
Module
|
|
dna-store
Module
|
|
file
Module
|
|
random-login
Module
|
|
str
Module
|
|
Package infer is a framework to define Pulumi resources and functions derived from go types.
|
Package infer is a framework to define Pulumi resources and functions derived from go types. |
internal/ende
Package ende - ENcoding and DEcoding resource.Property* values
|
Package ende - ENcoding and DEcoding resource.Property* values |
types
Package types provides ancillary types for use with github.com/pulumi/pulumi-go-provider/infer.
|
Package types provides ancillary types for use with github.com/pulumi/pulumi-go-provider/infer. |
tests
Module
|
|
Package integration is a test library for validating in-memory providers behave correctly.
|
Package integration is a test library for validating in-memory providers behave correctly. |
Package internal holds types that should only be used by this module.
|
Package internal holds types that should only be used by this module. |
introspect
Package introspect has shared utilities for reflecting.
|
Package introspect has shared utilities for reflecting. |
key
Package key provides an internal set of keys for use with context.WithValue and context.Context.Value that can be shared across packages source.
|
Package key provides an internal set of keys for use with context.WithValue and context.Context.Value that can be shared across packages source. |
putil
Package putil contains utility functions for working with [resource.PropertyValue]s.
|
Package putil contains utility functions for working with [resource.PropertyValue]s. |
rapid/reflect
Package reflect provides [rapid.Generator]s for reflect types.
|
Package reflect provides [rapid.Generator]s for reflect types. |
rapid/resource
Package resource provides [rapid.Generator]s for [resource.PropertyValue]s.
|
Package resource provides [rapid.Generator]s for [resource.PropertyValue]s. |
Package middleware defines common interfaces multiple middleware components use.
|
Package middleware defines common interfaces multiple middleware components use. |
cancel
Package cancel provides a middle-ware that ties the Cancel gRPC call from Pulumi to Go's context.Context cancellation system.
|
Package cancel provides a middle-ware that ties the Cancel gRPC call from Pulumi to Go's context.Context cancellation system. |
cancel/internal/evict
Package evict is a helper package for github.com/pulumi/pulumi-go-provider/middleware/cancel.
|
Package evict is a helper package for github.com/pulumi/pulumi-go-provider/middleware/cancel. |
complexconfig
Package complexconfig adds middleware for schema informed complex configuration encoding/decoding as a work-around for https://github.com/pulumi/pulumi/pull/15032.
|
Package complexconfig adds middleware for schema informed complex configuration encoding/decoding as a work-around for https://github.com/pulumi/pulumi/pull/15032. |
context
Package context allows systemic wrapping of provider.Context before invoking a subsidiary provider.
|
Package context allows systemic wrapping of provider.Context before invoking a subsidiary provider. |
dispatch
Package dispatch provides a provider that dispatches calls by URN such as `Create` to resource level invocations.
|
Package dispatch provides a provider that dispatches calls by URN such as `Create` to resource level invocations. |
rpc
Package rpc allows projecting a [rpc.ResourceProviderServer] into a [p.Provider].
|
Package rpc allows projecting a [rpc.ResourceProviderServer] into a [p.Provider]. |
schema
Package schema provides a middleware to respond to GetSchema.
|
Package schema provides a middleware to respond to GetSchema. |
Package resourcex provides experimental utilities for manipulating github.com/pulumi/pulumi/sdk/v3/go/common/resource types.
|
Package resourcex provides experimental utilities for manipulating github.com/pulumi/pulumi/sdk/v3/go/common/resource types. |
tests
module
|