providers

package
v3.114.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2024 License: Apache-2.0 Imports: 17 Imported by: 4

Documentation

Overview

Package providers contains the logic for managing provider resources (versioning, loading, resource operations).

Index

Constants

View Source
const UnconfiguredID = "unconfigured"

UnconfiguredID is a distinguished token used to indicate that a provider doesn't yet have an ID because it hasn't been configured yet. This should never be returned back to SDKs by the engine but is used for internal tracking so we maximally reuse provider instances but only configure them once.

UnknownID is a distinguished token used to indicate that a provider's ID is not known (e.g. because we are performing a preview).

Variables

This section is empty.

Functions

func GetDeniedDefaultProviderPkg added in v3.23.0

func GetDeniedDefaultProviderPkg(ref Reference) string

Retrieves the package of the denied provider.

For example, if a reference to: "urn:pulumi:stack::project::pulumi:providers:aws::default_4_35_0" was denied, then GetDeniedDefaultProviderPkg would return "aws".

Panics if called on a provider that is not a DenyDefaultProvider.

func GetProviderChecksums added in v3.82.0

func GetProviderChecksums(inputs resource.PropertyMap) (map[string][]byte, error)

GetProviderChecksums fetches a provider plugin checksums from the given property map. If the checksums is not set, this function returns nil.

func GetProviderDownloadURL added in v3.21.0

func GetProviderDownloadURL(inputs resource.PropertyMap) (string, error)

GetProviderDownloadURL fetches a provider plugin download server URL from the given property map. If the server URL is not set, this function returns "".

func GetProviderPackage

func GetProviderPackage(typ tokens.Type) tokens.Package

GetProviderPackage returns the provider package for the given type token.

func GetProviderVersion

func GetProviderVersion(inputs resource.PropertyMap) (*semver.Version, error)

GetProviderVersion fetches and parses a provider version from the given property map. If the version property is not present, this function returns nil.

func IsDefaultProvider

func IsDefaultProvider(urn resource.URN) bool

IsDefaultProvider returns true if this URN refers to a default Pulumi provider.

func IsDenyDefaultsProvider added in v3.23.0

func IsDenyDefaultsProvider(ref Reference) bool

func IsProviderType

func IsProviderType(typ tokens.Type) bool

IsProviderType returns true if the supplied type token refers to a Pulumi provider.

func MakeProviderType

func MakeProviderType(pkg tokens.Package) tokens.Type

MakeProviderType returns the provider type token for the given package.

func SetProviderChecksums added in v3.82.0

func SetProviderChecksums(inputs resource.PropertyMap, value map[string][]byte)

SetProviderChecksums sets the provider plugin checksums in the given property map.

func SetProviderURL added in v3.21.0

func SetProviderURL(inputs resource.PropertyMap, value string)

SetProviderURL sets the provider plugin download server URL in the given property map.

func SetProviderVersion added in v3.21.0

func SetProviderVersion(inputs resource.PropertyMap, value *semver.Version)

Sets the provider version in the given property map.

Types

type ProviderRequest

type ProviderRequest struct {
	// contains filtered or unexported fields
}

A ProviderRequest is a tuple of an optional semantic version, download server url and a package name. Whenever the engine receives a registration for a resource that doesn't explicitly specify a provider, the engine creates a ProviderRequest for that resource's provider, using the version passed to the engine as part of RegisterResource and the package derived from the resource's token.

The source evaluator (source_eval.go) is responsible for servicing provider requests. It does this by interpreting these provider requests and sending resource registrations to the engine for the providers themselves. These are called "default providers".

ProviderRequest is useful as a hash key. The engine is free to instantiate any number of provider requests, but it is free to cache requests for a provider request that is equal to one that has already been serviced. If you do use ProviderRequest as a hash key, you should call String() to get a usable key for string-based hash maps.

func NewProviderRequest

func NewProviderRequest(
	version *semver.Version, pkg tokens.Package,
	pluginDownloadURL string, checksums map[string][]byte,
) ProviderRequest

NewProviderRequest constructs a new provider request from an optional version, optional pluginDownloadURL and package.

func (ProviderRequest) Name

func (p ProviderRequest) Name() string

Name returns a QName that is an appropriate name for a default provider constructed from this provider request. The name is intended to be unique; as such, the name is derived from the version associated with this request.

If a version is not provided, "default" is returned. Otherwise, Name returns a name starting with "default" and followed by a QName-legal representation of the semantic version of the requested provider.

func (ProviderRequest) Package

func (p ProviderRequest) Package() tokens.Package

Package returns this provider request's package.

func (ProviderRequest) PluginChecksums added in v3.82.0

func (p ProviderRequest) PluginChecksums() map[string][]byte

PluginChecksums returns this providers checksums. May be nil if no checksums were provided.

func (ProviderRequest) PluginDownloadURL added in v3.21.0

func (p ProviderRequest) PluginDownloadURL() string

PluginDownloadURL returns this providers server url. May be "" if no pluginDownloadURL was provided.

func (ProviderRequest) String

func (p ProviderRequest) String() string

String returns a string representation of this request. This string is suitable for use as a hash key.

func (ProviderRequest) Version

func (p ProviderRequest) Version() *semver.Version

Version returns this provider request's version. May be nil if no version was provided.

type Reference

type Reference struct {
	// contains filtered or unexported fields
}

Reference represents a reference to a particular provider.

func NewDenyDefaultProvider added in v3.23.0

func NewDenyDefaultProvider(name string) Reference

DenyDefaultProvider represent a default provider that cannot be created.

func NewReference

func NewReference(urn resource.URN, id resource.ID) (Reference, error)

NewReference creates a new reference for the given URN and ID.

func ParseReference

func ParseReference(s string) (Reference, error)

ParseReference parses the URN and ID from the string representation of a provider reference. If parsing was not possible, this function returns false.

func (Reference) ID

func (r Reference) ID() resource.ID

ID returns the provider reference's ID.

func (Reference) String

func (r Reference) String() string

String returns the string representation of this provider reference.

func (Reference) URN

func (r Reference) URN() resource.URN

URN returns the provider reference's URN.

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry manages the lifecylce of provider resources and their plugins and handles the resolution of provider references to loaded plugins.

When a registry is created, it is handed the set of old provider resources that it will manage. Each provider resource in this set is loaded and configured as per its recorded inputs and registered under the provider reference that corresponds to its URN and ID, both of which must be known. At this point, the created registry is prepared to be used to manage the lifecycle of these providers as well as any new provider resources requested by invoking the registry's CRUD operations.

In order to fit neatly in to the existing infrastructure for managing resources using Pulumi, a provider regidstry itself implements the plugin.Provider interface.

func NewRegistry

func NewRegistry(host plugin.Host, isPreview bool, builtins plugin.Provider) *Registry

NewRegistry creates a new provider registry using the given host.

func (*Registry) Call added in v3.6.0

func (*Registry) Check

func (r *Registry) Check(urn resource.URN, olds, news resource.PropertyMap,
	allowUnknowns bool, randomSeed []byte,
) (resource.PropertyMap, []plugin.CheckFailure, error)

Check validates the configuration for a particular provider resource.

The particulars of Check are a bit subtle for a few reasons:

  • we need to load the provider for the package indicated by the type name portion provider resource's URN in order to check its config
  • we need to keep the newly-loaded provider around in case we need to diff its config
  • if we are running a preview, we need to configure the provider, as its corresponding CRUD operations will not run (we would normally configure the provider in Create or Update).

func (*Registry) CheckConfig

func (r *Registry) CheckConfig(urn resource.URN, olds,
	news resource.PropertyMap, allowUnknowns bool,
) (resource.PropertyMap, []plugin.CheckFailure, error)

CheckConfig validates the configuration for this resource provider.

func (*Registry) Close

func (r *Registry) Close() error

func (*Registry) Configure

func (r *Registry) Configure(props resource.PropertyMap) error

func (*Registry) Construct

func (r *Registry) Construct(info plugin.ConstructInfo, typ tokens.Type, name string, parent resource.URN,
	inputs resource.PropertyMap, options plugin.ConstructOptions,
) (plugin.ConstructResult, error)

func (*Registry) Create

func (r *Registry) Create(urn resource.URN, news resource.PropertyMap, timeout float64,
	preview bool,
) (resource.ID, resource.PropertyMap, resource.Status, error)

Create configures the provider with the given URN using the indicated configuration, assigns it an ID, and registers it under the assigned (URN, ID).

The provider must have been loaded by a prior call to Check.

func (*Registry) Delete

func (r *Registry) Delete(urn resource.URN, id resource.ID, oldInputs, oldOutputs resource.PropertyMap,
	timeout float64,
) (resource.Status, error)

Delete unregisters and unloads the provider with the given URN and ID. If the provider was never loaded this is a no-op.

func (*Registry) Diff

func (r *Registry) Diff(urn resource.URN, id resource.ID, oldInputs, oldOutputs, newInputs resource.PropertyMap,
	allowUnknowns bool, ignoreChanges []string,
) (plugin.DiffResult, error)

Diff diffs the configuration of the indicated provider. The provider corresponding to the given URN must have previously been loaded by a call to Check.

func (*Registry) DiffConfig

func (r *Registry) DiffConfig(urn resource.URN, oldInputs, oldOutputs, newInputs resource.PropertyMap,
	allowUnknowns bool, ignoreChanges []string,
) (plugin.DiffResult, error)

DiffConfig checks what impacts a hypothetical change to this provider's configuration will have on the provider.

func (*Registry) GetMapping added in v3.49.0

func (r *Registry) GetMapping(key, provider string) ([]byte, string, error)

func (*Registry) GetMappings added in v3.85.0

func (r *Registry) GetMappings(key string) ([]string, error)

func (*Registry) GetPluginInfo

func (r *Registry) GetPluginInfo() (workspace.PluginInfo, error)

func (*Registry) GetProvider

func (r *Registry) GetProvider(ref Reference) (plugin.Provider, bool)

GetProvider returns the provider plugin that is currently registered under the given reference, if any.

func (*Registry) GetSchema

func (r *Registry) GetSchema(version int) ([]byte, error)

GetSchema returns the JSON-serialized schema for the provider.

func (*Registry) Invoke

func (*Registry) Pkg

func (r *Registry) Pkg() tokens.Package

func (*Registry) Read

func (r *Registry) Read(urn resource.URN, id resource.ID,
	inputs, state resource.PropertyMap,
) (plugin.ReadResult, resource.Status, error)

func (*Registry) RegisterAlias added in v3.9.1

func (r *Registry) RegisterAlias(providerURN, alias resource.URN)

RegisterAliases informs the registry that the new provider object with the given URN is aliased to the given list of URNs.

func (*Registry) Same added in v3.9.1

func (r *Registry) Same(res *resource.State) error

Same executes as part of the "Same" step for a provider that has not changed. It configures the provider instance with the given state and fixes up aliases.

func (*Registry) SignalCancellation

func (r *Registry) SignalCancellation() error

func (*Registry) StreamInvoke

func (r *Registry) StreamInvoke(
	tok tokens.ModuleMember, args resource.PropertyMap,
	onNext func(resource.PropertyMap) error,
) ([]plugin.CheckFailure, error)

func (*Registry) Update

func (r *Registry) Update(urn resource.URN, id resource.ID,
	oldInputs, oldOutputs, newInputs resource.PropertyMap, timeout float64,
	ignoreChanges []string, preview bool,
) (resource.PropertyMap, resource.Status, error)

Update configures the provider with the given URN and ID using the indicated configuration and registers it at the reference indicated by the (URN, ID) pair.

THe provider must have been loaded by a prior call to Check.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL