Documentation ¶
Index ¶
- Constants
- func CoerceTerraformString(schType shim.ValueType, ps *SchemaInfo, stringValue string) (interface{}, error)
- func False() *bool
- func FromName(options AutoNameOptions) func(res *PulumiResource) (interface{}, error)
- func GetModuleMajorVersion(version string) string
- func IsMaxItemsOne(tfs shim.Schema, info *SchemaInfo) bool
- func Main(pkg string, version string, prov ProviderInfo, pulumiSchema []byte)
- func MakeTerraformConfigFromInputs(p shim.Provider, inputs map[string]interface{}) shim.ResourceConfig
- func MakeTerraformOutput(p shim.Provider, v interface{}, tfs shim.Schema, ps *SchemaInfo, ...) resource.PropertyValue
- func MakeTerraformOutputs(p shim.Provider, outs map[string]interface{}, tfs shim.SchemaMap, ...) resource.PropertyMap
- func MakeTerraformResult(p shim.Provider, state shim.InstanceState, tfs shim.SchemaMap, ...) (resource.PropertyMap, error)
- func MakeTerraformState(res Resource, id string, m resource.PropertyMap) (shim.InstanceState, error)
- func PulumiToTerraformName(name string, tfs shim.SchemaMap, ps map[string]*SchemaInfo) string
- func Serve(module string, version string, info ProviderInfo, pulumiSchema []byte) error
- func TerraformToPulumiName(name string, sch shim.Schema, ps *SchemaInfo, upper bool) string
- func TransformJSONDocument(v resource.PropertyValue) (resource.PropertyValue, error)
- func True() *bool
- func UnmarshalTerraformState(r Resource, id string, m *pbstruct.Struct, l string) (shim.InstanceState, error)
- type AliasInfo
- type AssetTable
- func MakeTerraformConfig(p *Provider, m resource.PropertyMap, tfs shim.SchemaMap, ...) (shim.ResourceConfig, AssetTable, error)
- func MakeTerraformInputs(instance *PulumiResource, config resource.PropertyMap, ...) (map[string]interface{}, AssetTable, error)
- func UnmarshalTerraformConfig(p *Provider, m *pbstruct.Struct, tfs shim.SchemaMap, ps map[string]*SchemaInfo, ...) (shim.ResourceConfig, AssetTable, error)
- type AssetTranslation
- func (a *AssetTranslation) IsArchive() bool
- func (a *AssetTranslation) IsAsset() bool
- func (a *AssetTranslation) TranslateArchive(archive *resource.Archive) (interface{}, error)
- func (a *AssetTranslation) TranslateAsset(asset *resource.Asset) (interface{}, error)
- func (a *AssetTranslation) Type() string
- type AssetTranslationKind
- type AutoNameOptions
- type CSharpInfo
- type ConfigInfo
- type DataSource
- type DataSourceInfo
- type DefaultInfo
- type DocInfo
- type GolangInfo
- type JavaScriptInfo
- type LogRedirector
- type MarshallableDataSourceInfo
- type MarshallableDefaultInfo
- type MarshallableElem
- type MarshallableProvider
- type MarshallableProviderInfo
- type MarshallableResource
- type MarshallableResourceInfo
- type MarshallableSchema
- type MarshallableSchemaInfo
- type OverlayInfo
- type PreConfigureCallback
- type Provider
- func (p *Provider) Cancel(ctx context.Context, req *pbempty.Empty) (*pbempty.Empty, error)
- func (p *Provider) Check(ctx context.Context, req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error)
- func (p *Provider) CheckConfig(ctx context.Context, req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error)
- func (p *Provider) Configure(ctx context.Context, req *pulumirpc.ConfigureRequest) (*pulumirpc.ConfigureResponse, error)
- func (p *Provider) Construct(context.Context, *pulumirpc.ConstructRequest) (*pulumirpc.ConstructResponse, error)
- func (p *Provider) Create(ctx context.Context, req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error)
- func (p *Provider) Delete(ctx context.Context, req *pulumirpc.DeleteRequest) (*pbempty.Empty, error)
- func (p *Provider) Diff(ctx context.Context, req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error)
- func (p *Provider) DiffConfig(ctx context.Context, req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error)
- func (p *Provider) GetPluginInfo(ctx context.Context, req *pbempty.Empty) (*pulumirpc.PluginInfo, error)
- func (p *Provider) GetSchema(ctx context.Context, req *pulumirpc.GetSchemaRequest) (*pulumirpc.GetSchemaResponse, error)
- func (p *Provider) Invoke(ctx context.Context, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error)
- func (p *Provider) Read(ctx context.Context, req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error)
- func (p *Provider) StreamInvoke(req *pulumirpc.InvokeRequest, ...) error
- func (p *Provider) Update(ctx context.Context, req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error)
- type ProviderInfo
- func (info ProviderInfo) GetGitHubHost() string
- func (info ProviderInfo) GetGitHubOrg() string
- func (info ProviderInfo) GetProviderModuleVersion() string
- func (info ProviderInfo) GetResourcePrefix() string
- func (info ProviderInfo) GetTFProviderLicense() TFProviderLicense
- func (p *ProviderInfo) RenameDataSource(resourceName string, legacyTok tokens.ModuleMember, newTok tokens.ModuleMember, ...)
- func (p *ProviderInfo) RenameResourceWithAlias(resourceName string, legacyTok tokens.Type, newTok tokens.Type, ...)
- func (p *ProviderInfo) SetAutonaming(maxLength int, separator string)
- type PulumiResource
- type PythonInfo
- type Resource
- type ResourceInfo
- type ResourceOrDataSourceInfo
- type SchemaInfo
- type TFProviderLicense
- type Transformer
Constants ¶
const TerraformUnknownVariableValue = "74D93920-ED26-11E3-AC10-0800200C9A66"
TerraformUnknownVariableValue is the sentinal defined in github.com/hashicorp/terraform/configs/hcl2shim, representing a variable whose value is not known at some particular time. The value is duplicated here in order to prevent an additional dependency - it is unlikely to ever change upstream since that would break rather a lot of things.
Variables ¶
This section is empty.
Functions ¶
func CoerceTerraformString ¶
func CoerceTerraformString(schType shim.ValueType, ps *SchemaInfo, stringValue string) (interface{}, error)
CoerceTerraformString coerces a string value to a Go value whose type is the type requested by the Terraform schema type or the Pulumi SchemaInfo. We prefer the SchemaInfo overrides as it's an explicit call to action over the Terraform Schema. Returns an error if the string can't be successfully coerced to the requested type.
func False ¶
func False() *bool
False is used for interations in the providers that require a pointer to false
func FromName ¶
func FromName(options AutoNameOptions) func(res *PulumiResource) (interface{}, error)
FromName automatically propagates a resource's URN onto the resulting default info.
func GetModuleMajorVersion ¶
Calculates the major version of a go sdk go module paths only care about appending a version when the version is 2 or greater. github.com/org/my-repo/sdk/v1/go is not a valid go module path but github.com/org/my-repo/sdk/v2/go is
func IsMaxItemsOne ¶
func IsMaxItemsOne(tfs shim.Schema, info *SchemaInfo) bool
IsMaxItemsOne returns true if the schema/info pair represents a TypeList or TypeSet which should project as a scalar, else returns false.
func Main ¶
func Main(pkg string, version string, prov ProviderInfo, pulumiSchema []byte)
Main launches the tfbridge plugin for a given package pkg and provider prov.
func MakeTerraformConfigFromInputs ¶
func MakeTerraformConfigFromInputs(p shim.Provider, inputs map[string]interface{}) shim.ResourceConfig
MakeTerraformConfigFromInputs creates a new Terraform configuration object from a set of Terraform inputs.
func MakeTerraformOutput ¶
func MakeTerraformOutput(p shim.Provider, v interface{}, tfs shim.Schema, ps *SchemaInfo, assets AssetTable, rawNames, supportsSecrets bool) resource.PropertyValue
MakeTerraformOutput takes a single Terraform property and returns the Pulumi equivalent.
func MakeTerraformOutputs ¶
func MakeTerraformOutputs(p shim.Provider, outs map[string]interface{}, tfs shim.SchemaMap, ps map[string]*SchemaInfo, assets AssetTable, rawNames, supportsSecrets bool) resource.PropertyMap
MakeTerraformOutputs takes an expanded Terraform property map and returns a Pulumi equivalent. This respects the property maps so that results end up with their correct Pulumi names when shipping back to the engine.
func MakeTerraformResult ¶
func MakeTerraformResult(p shim.Provider, state shim.InstanceState, tfs shim.SchemaMap, ps map[string]*SchemaInfo, assets AssetTable, supportsSecrets bool) (resource.PropertyMap, error)
MakeTerraformResult expands a Terraform state into an expanded Pulumi resource property map. This respects the property maps so that results end up with their correct Pulumi names when shipping back to the engine.
func MakeTerraformState ¶
func MakeTerraformState(res Resource, id string, m resource.PropertyMap) (shim.InstanceState, error)
MakeTerraformState converts a Pulumi property bag into its Terraform equivalent. This requires flattening everything and serializing individual properties as strings. This is a little awkward, but it's how Terraform represents resource properties (schemas are simply sugar on top).
func PulumiToTerraformName ¶
PulumiToTerraformName performs a standard transformation on the given name string, from Pulumi's PascalCasing or camelCasing, to Terraform's underscore_casing.
func Serve ¶
func Serve(module string, version string, info ProviderInfo, pulumiSchema []byte) error
Serve fires up a Pulumi resource provider listening to inbound gRPC traffic, and translates calls from Pulumi into actions against the provided Terraform Provider.
func TerraformToPulumiName ¶
TerraformToPulumiName performs a standard transformation on the given name string, from Terraform's underscore_casing to Pulumi's PascalCasing (if upper is true) or camelCasing (if upper is false).
func TransformJSONDocument ¶
func TransformJSONDocument(v resource.PropertyValue) (resource.PropertyValue, error)
TransformJSONDocument permits either a string, which is presumed to represent an already-stringified JSON document, or a map/array, which will be transformed into its JSON representation.
func True ¶
func True() *bool
True is used for interations in the providers that require a pointer to true
func UnmarshalTerraformState ¶
func UnmarshalTerraformState(r Resource, id string, m *pbstruct.Struct, l string) (shim.InstanceState, error)
UnmarshalTerraformState unmarshals a Terraform instance state from an RPC property map.
Types ¶
type AliasInfo ¶
AliasInfo is a partial description of prior named used for a resource. It can be processed in the context of a resource creation to determine what the full aliased URN would be.
It can be used by Pulumi resource providers to change the aspects of it (i.e. what module it is contained in), without causing resources to be recreated for customers who migrate from the original resource to the current resource.
type AssetTable ¶
type AssetTable map[*SchemaInfo]resource.PropertyValue
AssetTable is used to record which properties in a call to MakeTerraformInputs were assets so that they can be marshaled back to assets by MakeTerraformOutputs.
func MakeTerraformConfig ¶
func MakeTerraformConfig(p *Provider, m resource.PropertyMap, tfs shim.SchemaMap, ps map[string]*SchemaInfo) (shim.ResourceConfig, AssetTable, error)
MakeTerraformConfig creates a Terraform config map, used in state and diff calculations, from a Pulumi property map.
func MakeTerraformInputs ¶
func MakeTerraformInputs(instance *PulumiResource, config resource.PropertyMap, olds, news resource.PropertyMap, tfs shim.SchemaMap, ps map[string]*SchemaInfo) (map[string]interface{}, AssetTable, error)
func UnmarshalTerraformConfig ¶
func UnmarshalTerraformConfig(p *Provider, m *pbstruct.Struct, tfs shim.SchemaMap, ps map[string]*SchemaInfo, label string) (shim.ResourceConfig, AssetTable, error)
UnmarshalTerraformConfig creates a Terraform config map from a Pulumi RPC property map.
type AssetTranslation ¶
type AssetTranslation struct { Kind AssetTranslationKind // the kind of translation to perform. Format resource.ArchiveFormat // an archive format, required if this is an archive. HashField string // a field to store the hash into, if any. }
AssetTranslation instructs the bridge how to translate assets into something Terraform can use.
func (*AssetTranslation) IsArchive ¶
func (a *AssetTranslation) IsArchive() bool
IsArchive returns true if the translation deals with an archive (rather than asset).
func (*AssetTranslation) IsAsset ¶
func (a *AssetTranslation) IsAsset() bool
IsAsset returns true if the translation deals with an asset (rather than archive).
func (*AssetTranslation) TranslateArchive ¶
func (a *AssetTranslation) TranslateArchive(archive *resource.Archive) (interface{}, error)
TranslateArchive translates the given archive using the directives provided by the translation info.
func (*AssetTranslation) TranslateAsset ¶
func (a *AssetTranslation) TranslateAsset(asset *resource.Asset) (interface{}, error)
TranslateAsset translates the given asset using the directives provided by the translation info.
func (*AssetTranslation) Type ¶
func (a *AssetTranslation) Type() string
Type fetches the Pulumi runtime type corresponding to values of this asset kind.
type AssetTranslationKind ¶
type AssetTranslationKind int
AssetTranslationKind may be used to choose from various source and dest translation targets.
const ( // FileAsset turns the asset into a file on disk and passes the filename in its place. FileAsset AssetTranslationKind = iota // BytesAsset turns the asset into a []byte and passes it directly in-memory. BytesAsset // FileArchive turns the archive into a file on disk and passes the filename in its place. FileArchive // BytesArchive turns the asset into a []byte and passes that directly in-memory. BytesArchive )
type AutoNameOptions ¶
type AutoNameOptions struct { // A separator between name and random portions of the Separator string // Maximum length of the generated name Maxlen int // Number of characters of random hex digits to add to the name Randlen int // A transform to apply to the name prior to adding random characters Transform func(string) string // A transform to apply after the auto naming has been computed PostTransform func(res *PulumiResource, name string) (string, error) }
AutoNameOptions provides parameters to AutoName to control how names will be generated
type CSharpInfo ¶
type CSharpInfo struct { PackageReferences map[string]string // NuGet package reference information. Overlay *OverlayInfo // optional overlay information for augmented code-generation. Namespaces map[string]string // Known .NET namespaces with proper capitalization. }
CSharpInfo contains optional overlay information for C# code-generation.
type ConfigInfo ¶
type ConfigInfo struct { // Info is the Pulumi schema for this variable. Info *SchemaInfo // Schema is the Terraform schema for this variable. Schema shim.Schema }
ConfigInfo represents a synthetic configuration variable that is Pulumi-only, and not passed to Terraform.
type DataSource ¶
type DataSource struct { Schema *DataSourceInfo // optional provider overrides. TF shim.Resource // the Terraform data source schema. TFName string // the Terraform resource name. }
DataSource wraps both the Terraform data source (resource) type info plus the overlay resource info.
type DataSourceInfo ¶
type DataSourceInfo struct { Tok tokens.ModuleMember Fields map[string]*SchemaInfo Docs *DocInfo // overrides for finding and mapping TF docs. DeprecationMessage string // message to use in deprecation warning }
DataSourceInfo can be used to override a data source's standard name mangling and argument/return information.
func (*DataSourceInfo) GetDocs ¶
func (info *DataSourceInfo) GetDocs() *DocInfo
func (*DataSourceInfo) GetFields ¶
func (info *DataSourceInfo) GetFields() map[string]*SchemaInfo
func (*DataSourceInfo) GetTok ¶
func (info *DataSourceInfo) GetTok() tokens.Token
type DefaultInfo ¶
type DefaultInfo struct { // AutoNamed is true if this default represents an autogenerated name. AutoNamed bool // Config uses a configuration variable from this package as the default value. Config string // From applies a transformation from other resource properties. From func(res *PulumiResource) (interface{}, error) // Value injects a raw literal value as the default. Value interface{} // EnvVars to use for defaults. If none of these variables have values at runtime, the value of `Value` (if any) // will be used as the default. EnvVars []string }
DefaultInfo lets fields get default values at runtime, before they are even passed to Terraform.
type DocInfo ¶
type DocInfo struct { Source string // an optional override to locate TF docs; "" uses the default. Markdown []byte // an optional override for the source markdown. IncludeAttributesFrom string // optionally include attributes from another raw resource for docs. IncludeArgumentsFrom string // optionally include arguments from another raw resource for docs. IncludeAttributesFromArguments string // optionally include attributes from another raw resource's arguments. }
DocInfo contains optional overrids for finding and mapping TD docs.
type GolangInfo ¶
type GolangInfo struct { GenerateResourceContainerTypes bool // Generate container types for resources e.g. arrays, maps, pointers etc. ImportBasePath string // Base import path for package. Overlay *OverlayInfo // optional overlay information for augmented code-generation. }
GolangInfo contains optional overlay information for Golang code-generation.
type JavaScriptInfo ¶
type JavaScriptInfo struct { PackageName string // Custom name for the NPM package. Dependencies map[string]string // NPM dependencies to add to package.json. DevDependencies map[string]string // NPM dev-dependencies to add to package.json. PeerDependencies map[string]string // NPM peer-dependencies to add to package.json. Resolutions map[string]string // NPM resolutions to add to package.json. Overlay *OverlayInfo // optional overlay information for augmented code-generation. TypeScriptVersion string // A specific version of TypeScript to include in package.json. }
JavaScriptInfo contains optional overlay information for Python code-generation.
type LogRedirector ¶
type LogRedirector struct {
// contains filtered or unexported fields
}
LogRedirector creates a new redirection writer that takes as input plugin stderr output, and routes it to the correct Pulumi stream based on the standard Terraform logging output prefixes.
func NewTerraformLogRedirector ¶
func NewTerraformLogRedirector(ctx context.Context, hostClient *provider.HostClient) *LogRedirector
NewLogRedirector returns a new LogRedirector with the (unexported) writers field set to the given map.
func (*LogRedirector) Disable ¶
func (lr *LogRedirector) Disable()
Disable disables most of the specific logging levels, but it retains debug logging.
func (*LogRedirector) Enable ¶
func (lr *LogRedirector) Enable()
Enable turns on full featured logging. This is the default.
type MarshallableDataSourceInfo ¶
type MarshallableDataSourceInfo struct { Tok tokens.ModuleMember `json:"tok"` Fields map[string]*MarshallableSchemaInfo `json:"fields"` }
MarshallableDataSourceInfo is the JSON-marshallable form of a Pulumi DataSourceInfo value.
func MarshalDataSourceInfo ¶
func MarshalDataSourceInfo(d *DataSourceInfo) *MarshallableDataSourceInfo
MarshalDataSourceInfo converts a Pulumi DataSourceInfo value into a MarshallableDataSourceInfo value.
func (*MarshallableDataSourceInfo) Unmarshal ¶
func (m *MarshallableDataSourceInfo) Unmarshal() *DataSourceInfo
Unmarshal creates a mostly-=initialized Pulumi DataSourceInfo value from the given MarshallableDataSourceInfo.
type MarshallableDefaultInfo ¶
type MarshallableDefaultInfo struct { AutoNamed bool `json:"autonamed,omitempty"` IsFunc bool `json:"isFunc,omitempty"` Value interface{} `json:"value,omitempty"` EnvVars []string `json:"envvars,omitempty"` }
MarshallableDefaultInfo is the JSON-marshallable form of a Pulumi DefaultInfo value.
func MarshalDefaultInfo ¶
func MarshalDefaultInfo(d *DefaultInfo) *MarshallableDefaultInfo
MarshalDefaultInfo converts a Pulumi DefaultInfo value into a MarshallableDefaultInfo value.
func (*MarshallableDefaultInfo) Unmarshal ¶
func (m *MarshallableDefaultInfo) Unmarshal() *DefaultInfo
Unmarshal creates a mostly-initialized Pulumi DefaultInfo value from the given MarshallableDefaultInfo.
type MarshallableElem ¶
type MarshallableElem struct { Schema *MarshallableSchema `json:"schema,omitempty"` Resource MarshallableResource `json:"resource,omitempty"` }
MarshallableElem is the JSON-marshallable form of a Terraform schema's element field.
func MarshalElem ¶
func MarshalElem(e interface{}) *MarshallableElem
MarshalElem converts a Terraform schema's element field into a MarshallableElem.
func (*MarshallableElem) Unmarshal ¶
func (m *MarshallableElem) Unmarshal() interface{}
Unmarshal creates a Terraform schema element from a MarshallableElem.
type MarshallableProvider ¶
type MarshallableProvider struct { Schema map[string]*MarshallableSchema `json:"schema,omitempty"` Resources map[string]MarshallableResource `json:"resources,omitempty"` DataSources map[string]MarshallableResource `json:"dataSources,omitempty"` }
MarshallableProvider is the JSON-marshallable form of a Terraform provider schema.
func MarshalProvider ¶
func MarshalProvider(p shim.Provider) *MarshallableProvider
MarshalProvider converts a Terraform provider schema into a MarshallableProvider.
func (*MarshallableProvider) Unmarshal ¶
func (m *MarshallableProvider) Unmarshal() shim.Provider
Unmarshal creates a mostly-initialized Terraform provider schema from a MarshallableProvider
type MarshallableProviderInfo ¶
type MarshallableProviderInfo struct { Provider *MarshallableProvider `json:"provider"` Name string `json:"name"` Version string `json:"version"` Config map[string]*MarshallableSchemaInfo `json:"config,omitempty"` Resources map[string]*MarshallableResourceInfo `json:"resources,omitempty"` DataSources map[string]*MarshallableDataSourceInfo `json:"dataSources,omitempty"` TFProviderVersion string `json:"tfProviderVersion,omitempty"` }
MarshallableProviderInfo is the JSON-marshallable form of a Pulumi ProviderInfo value.
func MarshalProviderInfo ¶
func MarshalProviderInfo(p *ProviderInfo) *MarshallableProviderInfo
MarshalProviderInfo converts a Pulumi ProviderInfo value into a MarshallableProviderInfo value.
func (*MarshallableProviderInfo) Unmarshal ¶
func (m *MarshallableProviderInfo) Unmarshal() *ProviderInfo
Unmarshal creates a mostly-=initialized Pulumi ProviderInfo value from the given MarshallableProviderInfo.
type MarshallableResource ¶
type MarshallableResource map[string]*MarshallableSchema
MarshallableResource is the JSON-marshallable form of a Terraform resource schema.
func MarshalResource ¶
func MarshalResource(r shim.Resource) MarshallableResource
MarshalResource converts a Terraform resource schema into a MarshallableResource.
func (MarshallableResource) Unmarshal ¶
func (m MarshallableResource) Unmarshal() shim.Resource
Unmarshal creates a mostly-initialized Terraform resource schema from the given MarshallableResource.
type MarshallableResourceInfo ¶
type MarshallableResourceInfo struct { Tok tokens.Type `json:"tok"` Fields map[string]*MarshallableSchemaInfo `json:"fields"` IDFields []string `json:"idFields"` }
MarshallableResourceInfo is the JSON-marshallable form of a Pulumi ResourceInfo value.
func MarshalResourceInfo ¶
func MarshalResourceInfo(r *ResourceInfo) *MarshallableResourceInfo
MarshalResourceInfo converts a Pulumi ResourceInfo value into a MarshallableResourceInfo value.
func (*MarshallableResourceInfo) Unmarshal ¶
func (m *MarshallableResourceInfo) Unmarshal() *ResourceInfo
Unmarshal creates a mostly-=initialized Pulumi ResourceInfo value from the given MarshallableResourceInfo.
type MarshallableSchema ¶
type MarshallableSchema struct { Type shim.ValueType `json:"type"` Optional bool `json:"optional,omitempty"` Required bool `json:"required,omitempty"` Computed bool `json:"computed,omitempty"` ForceNew bool `json:"forceNew,omitempty"` Elem *MarshallableElem `json:"element,omitempty"` MaxItems int `json:"maxItems,omitempty"` MinItems int `json:"minItems,omitempty"` DeprecationMessage string `json:"deprecated,omitempty"` }
MarshallableSchema is the JSON-marshallable form of a Terraform schema.
func MarshalSchema ¶
func MarshalSchema(s shim.Schema) *MarshallableSchema
MarshalSchema converts a Terraform schema into a MarshallableSchema.
func (*MarshallableSchema) Unmarshal ¶
func (m *MarshallableSchema) Unmarshal() shim.Schema
Unmarshal creates a mostly-initialized Terraform schema from the given MarshallableSchema.
type MarshallableSchemaInfo ¶
type MarshallableSchemaInfo struct { Name string `json:"name,omitempty"` CSharpName string `json:"csharpName,omitempty"` Type tokens.Type `json:"typeomitempty"` AltTypes []tokens.Type `json:"altTypes,omitempty"` Elem *MarshallableSchemaInfo `json:"element,omitempty"` Fields map[string]*MarshallableSchemaInfo `json:"fields,omitempty"` Asset *AssetTranslation `json:"asset,omitempty"` Default *MarshallableDefaultInfo `json:"default,omitempty"` MaxItemsOne *bool `json:"maxItemsOne,omitempty"` Deprecated string `json:"deprecated,omitempty"` ForceNew *bool `json:"forceNew,omitempty"` Secret *bool `json:"secret,omitempty"` }
MarshallableSchemaInfo is the JSON-marshallable form of a Pulumi SchemaInfo value.
func MarshalSchemaInfo ¶
func MarshalSchemaInfo(s *SchemaInfo) *MarshallableSchemaInfo
MarshalSchemaInfo converts a Pulumi SchemaInfo value into a MarshallableSchemaInfo value.
func (*MarshallableSchemaInfo) Unmarshal ¶
func (m *MarshallableSchemaInfo) Unmarshal() *SchemaInfo
Unmarshal creates a mostly-=initialized Pulumi SchemaInfo value from the given MarshallableSchemaInfo.
type OverlayInfo ¶
type OverlayInfo struct { DestFiles []string // Additional files to include in the index file. Must exist in the destination. Modules map[string]*OverlayInfo // extra modules to inject into the structure. }
OverlayInfo contains optional overlay information. Each info has a 1:1 correspondence with a module and permits extra files to be included from the overlays/ directory when building up packs/. This allows augmented code-generation for convenient things like helper functions, modules, and gradual typing.
type PreConfigureCallback ¶
type PreConfigureCallback func(vars resource.PropertyMap, config shim.ResourceConfig) error
PreConfigureCallback is a function to invoke prior to calling the TF provider Configure
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider implements the Pulumi resource provider operations for any Terraform plugin.
func NewProvider ¶
func NewProvider(ctx context.Context, host *provider.HostClient, module string, version string, tf shim.Provider, info ProviderInfo, pulumiSchema []byte) *Provider
NewProvider creates a new Pulumi RPC server wired up to the given host and wrapping the given Terraform provider.
func (*Provider) Cancel ¶
Cancel requests that the provider cancel all ongoing RPCs. For TF, this is a no-op.
func (*Provider) Check ¶
func (p *Provider) Check(ctx context.Context, req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error)
Check validates that the given property bag is valid for a resource of the given type.
func (*Provider) CheckConfig ¶
func (p *Provider) CheckConfig(ctx context.Context, req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error)
CheckConfig validates the configuration for this Terraform provider.
func (*Provider) Configure ¶
func (p *Provider) Configure(ctx context.Context, req *pulumirpc.ConfigureRequest) (*pulumirpc.ConfigureResponse, error)
Configure configures the underlying Terraform provider with the live Pulumi variable state.
func (*Provider) Construct ¶
func (p *Provider) Construct(context.Context, *pulumirpc.ConstructRequest) (*pulumirpc.ConstructResponse, error)
Construct creates a new instance of the provided component resource and returns its state.
func (*Provider) Create ¶
func (p *Provider) Create(ctx context.Context, req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error)
Create allocates a new instance of the provided resource and returns its unique ID afterwards. (The input ID must be blank.) If this call fails, the resource must not have been created (i.e., it is "transactional").
func (*Provider) Delete ¶
func (p *Provider) Delete(ctx context.Context, req *pulumirpc.DeleteRequest) (*pbempty.Empty, error)
Delete tears down an existing resource with the given ID. If it fails, the resource is assumed to still exist.
func (*Provider) Diff ¶
func (p *Provider) Diff(ctx context.Context, req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error)
Diff checks what impacts a hypothetical update will have on the resource's properties.
func (*Provider) DiffConfig ¶
func (p *Provider) DiffConfig(ctx context.Context, req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error)
DiffConfig diffs the configuration for this Terraform provider.
func (*Provider) GetPluginInfo ¶
func (p *Provider) GetPluginInfo(ctx context.Context, req *pbempty.Empty) (*pulumirpc.PluginInfo, error)
GetPluginInfo implements an RPC call that returns the version of this plugin.
func (*Provider) GetSchema ¶
func (p *Provider) GetSchema(ctx context.Context, req *pulumirpc.GetSchemaRequest) (*pulumirpc.GetSchemaResponse, error)
GetSchema returns the JSON-encoded schema for this provider's package.
func (*Provider) Invoke ¶
func (p *Provider) Invoke(ctx context.Context, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error)
Invoke dynamically executes a built-in function in the provider.
func (*Provider) Read ¶
func (p *Provider) Read(ctx context.Context, req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error)
Read the current live state associated with a resource. Enough state must be include in the inputs to uniquely identify the resource; this is typically just the resource ID, but may also include some properties.
func (*Provider) StreamInvoke ¶
func (p *Provider) StreamInvoke( req *pulumirpc.InvokeRequest, server pulumirpc.ResourceProvider_StreamInvokeServer) error
StreamInvoke dynamically executes a built-in function in the provider. The result is streamed back as a series of messages.
func (*Provider) Update ¶
func (p *Provider) Update(ctx context.Context, req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error)
Update updates an existing resource with new values. Only those values in the provided property bag are updated to new values. The resource ID is returned and may be different if the resource had to be recreated.
type ProviderInfo ¶
type ProviderInfo struct { P shim.Provider // the TF provider/schema. Name string // the TF provider name (e.g. terraform-provider-XXXX). ResourcePrefix string // the prefix on resources the provider exposes, if different to `Name`. GitHubOrg string // the GitHub org of the provider. Defaults to `terraform-providers`. GitHubHost string // the GitHub host for the provider. Defaults to `github.com`. Description string // an optional descriptive overview of the package (a default supplied). Keywords []string // an optional list of keywords to help discovery of this package. License string // the license, if any, the resulting package has (default is none). LogoURL string // an optional URL to the logo of the package Homepage string // the URL to the project homepage. Repository string // the URL to the project source code repository. Version string // the version of the provider package. Config map[string]*SchemaInfo // a map of TF name to config schema overrides. ExtraConfig map[string]*ConfigInfo // a list of Pulumi-only configuration variables. Resources map[string]*ResourceInfo // a map of TF name to Pulumi name; standard mangling occurs if no entry. DataSources map[string]*DataSourceInfo // a map of TF name to Pulumi resource info. ExtraTypes map[string]pschema.ComplexTypeSpec // a map of Pulumi token to schema type for overlaid types. PluginDownloadURL string // an optional URL to download the provider binary from. JavaScript *JavaScriptInfo // optional overlay information for augmented JavaScript code-generation. Python *PythonInfo // optional overlay information for augmented Python code-generation. Golang *GolangInfo // optional overlay information for augmented Golang code-generation. CSharp *CSharpInfo // optional overlay information for augmented C# code-generation. TFProviderVersion string // the version of the TF provider on which this was based TFProviderLicense *TFProviderLicense // license that the TF provider is distributed under. Default `MPL 2.0`. TFProviderModuleVersion string // the Go module version of the provider. Default is unversioned e.g. v1 PreConfigureCallback PreConfigureCallback // a provider-specific callback to invoke prior to TF Configure }
ProviderInfo contains information about a Terraform provider plugin that we will use to generate the Pulumi metadata. It primarily contains a pointer to the Terraform schema, but can also contain specific name translations.
nolint: lll
func (ProviderInfo) GetGitHubHost ¶
func (info ProviderInfo) GetGitHubHost() string
func (ProviderInfo) GetGitHubOrg ¶
func (info ProviderInfo) GetGitHubOrg() string
func (ProviderInfo) GetProviderModuleVersion ¶
func (info ProviderInfo) GetProviderModuleVersion() string
func (ProviderInfo) GetResourcePrefix ¶
func (info ProviderInfo) GetResourcePrefix() string
GetResourcePrefix returns the resource prefix for the provider: info.ResourcePrefix if that is set, or info.Name if not. This is to avoid unexpected behaviour with providers which have no need to set ResourcePrefix following its introduction.
func (ProviderInfo) GetTFProviderLicense ¶
func (info ProviderInfo) GetTFProviderLicense() TFProviderLicense
func (*ProviderInfo) RenameDataSource ¶
func (p *ProviderInfo) RenameDataSource(resourceName string, legacyTok tokens.ModuleMember, newTok tokens.ModuleMember, legacyModule string, newModule string, info *DataSourceInfo)
func (*ProviderInfo) RenameResourceWithAlias ¶
func (p *ProviderInfo) RenameResourceWithAlias(resourceName string, legacyTok tokens.Type, newTok tokens.Type, legacyModule string, newModule string, info *ResourceInfo)
func (*ProviderInfo) SetAutonaming ¶
func (p *ProviderInfo) SetAutonaming(maxLength int, separator string)
SetAutonaming will loop all resources with a name property, and will add an auto-name property. It will skip those that already have a name mapping entry, since those may have custom overrides set in the resource declaration (e.g., for length).
type PulumiResource ¶
type PulumiResource struct { URN resource.URN Properties resource.PropertyMap }
PulumiResource is just a little bundle that carries URN and properties around.
type PythonInfo ¶
type PythonInfo struct { Requires map[string]string // Pip install_requires information. Overlay *OverlayInfo // optional overlay information for augmented code-generation. UsesIOClasses bool // Deprecated: No longer required, all providers use IO classes. }
PythonInfo contains optional overlay information for Python code-generation.
type Resource ¶
type Resource struct { Schema *ResourceInfo // optional provider overrides. TF shim.Resource // the Terraform resource schema. TFName string // the Terraform resource name. }
Resource wraps both the Terraform resource type info plus the overlay resource info.
type ResourceInfo ¶
type ResourceInfo struct { Tok tokens.Type // a type token to override the default; "" uses the default. Fields map[string]*SchemaInfo // a map of custom field names; if a type is missing, uses the default. IDFields []string // an optional list of ID alias fields. Docs *DocInfo // overrides for finding and mapping TF docs. DeleteBeforeReplace bool // if true, Pulumi will delete before creating new replacement resources. Aliases []AliasInfo // aliases for this resources, if any. DeprecationMessage string // message to use in deprecation warning CSharpName string // .NET-specific name }
ResourceInfo is a top-level type exported by a provider. This structure can override the type to generate. It can also give custom metadata for fields, using the SchemaInfo structure below. Finally, a set of composite keys can be given; this is used when Terraform needs more than just the ID to uniquely identify and query for a resource.
func (*ResourceInfo) GetDocs ¶
func (info *ResourceInfo) GetDocs() *DocInfo
func (*ResourceInfo) GetFields ¶
func (info *ResourceInfo) GetFields() map[string]*SchemaInfo
func (*ResourceInfo) GetTok ¶
func (info *ResourceInfo) GetTok() tokens.Token
type ResourceOrDataSourceInfo ¶
type ResourceOrDataSourceInfo interface { GetTok() tokens.Token // a type token to override the default; "" uses the default. GetFields() map[string]*SchemaInfo // a map of custom field names; if a type is missing, uses the default. GetDocs() *DocInfo // overrides for finding and mapping TF docs. }
ResourceOrDataSourceInfo is a shared interface to ResourceInfo and DataSourceInfo mappings
type SchemaInfo ¶
type SchemaInfo struct { // a name to override the default; "" uses the default. Name string // a name to override the default when targeting C#; "" uses the default. CSharpName string // a type to override the default; "" uses the default. Type tokens.Type // alternative types that can be used instead of the override. AltTypes []tokens.Type // a type to override when the property is a nested structure. NestedType tokens.Type // an optional idemponent transformation, applied before passing to TF. Transform Transformer // a schema override for elements for arrays, maps, and sets. Elem *SchemaInfo // a map of custom field names; if a type is missing, the default is used. Fields map[string]*SchemaInfo // a map of asset translation information, if this is an asset. Asset *AssetTranslation // an optional default directive to be applied if a value is missing. Default *DefaultInfo // to override whether a property is stable or not. Stable *bool // to override whether this property should project as a scalar or array. MaxItemsOne *bool // to remove empty object array elements SuppressEmptyMapElements *bool // this will make the parameter as computed and not allow the user to set it MarkAsComputedOnly *bool // this will make the parameter optional in the schema MarkAsOptional *bool // the deprecation message for the property DeprecationMessage string // whether a change in the configuration would force a new resource ForceNew *bool // whether or not this property has been removed from the Terraform schema Removed bool // whether or not to treat this property as secret Secret *bool }
SchemaInfo contains optional name transformations to apply.
func AutoName ¶
func AutoName(name string, maxlength int, separator string) *SchemaInfo
AutoName creates custom schema for a Terraform name property which is automatically populated from the resource's URN name, and transformed based on the provided options.
func AutoNameTransform ¶
func AutoNameTransform(name string, maxlen int, transform func(string) string) *SchemaInfo
AutoNameTransform creates custom schema for a Terraform name property which is automatically populated from the resource's URN name, with an 8 character random suffix ("-"+7 random chars), maximum length maxlen, and optional transformation function. This makes it easy to propagate the Pulumi resource's URN name part as the Terraform name as a convenient default, while still permitting it to be overridden.
func AutoNameWithCustomOptions ¶
func AutoNameWithCustomOptions(name string, options AutoNameOptions) *SchemaInfo
AutoNameWithCustomOptions creates a custom schema for a Terraform name property and allows setting options to allow transforms, custom separators and maxLength combinations.
func (SchemaInfo) HasDefault ¶
func (info SchemaInfo) HasDefault() bool
HasDefault returns true if there is a default value for this property.
type TFProviderLicense ¶
type TFProviderLicense string
TFProviderLicense is a way to be able to pass a license type for the upstream Terraform provider.
const ( MPL20LicenseType TFProviderLicense = "MPL 2.0" MITLicenseType TFProviderLicense = "MIT" Apache20LicenseType TFProviderLicense = "Apache 2.0" UnlicensedLicenseType TFProviderLicense = "UNLICENSED" )
func SetProviderLicense ¶
func SetProviderLicense(license TFProviderLicense) *TFProviderLicense
SetProviderLicense is used to pass a license type to a provider metadata
type Transformer ¶
type Transformer func(resource.PropertyValue) (resource.PropertyValue, error)
Transformer is given the option to transform a value in situ before it is processed by the bridge. This transformation must be deterministic and idempotent, and any value produced by this transformation must be a legal alternative input value. A good example is a resource that accepts either a string or JSON-stringable map; a resource provider may opt to store the raw string, but let users pass in maps as a convenience mechanism, and have the transformer stringify them on the fly. This is safe to do because the raw string is still accepted as a possible input value.