mirror of https://github.com/pulumi/pulumi.git
142 lines
4.7 KiB
Go
142 lines
4.7 KiB
Go
// Copyright 2016-2024, Pulumi Corporation.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Package optimport contains functional options to be used with workspace stack import operations
|
|
// github.com/sdk/v3/go/auto workspace.Import(context.Context, ...optimport.Option)
|
|
package optimport
|
|
|
|
import "io"
|
|
|
|
// Option is a parameter to be applied to a LocalWorkspace.Import() operation
|
|
type Option interface {
|
|
ApplyOption(*Options)
|
|
}
|
|
|
|
// Protect configures whether to set imported resources as protected in the Pulumi state.
|
|
func Protect(value bool) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.Protect = &value
|
|
})
|
|
}
|
|
|
|
// GenerateCode configures whether to generate code for the imported resources
|
|
func GenerateCode(value bool) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.GenerateCode = &value
|
|
})
|
|
}
|
|
|
|
// NameTable maps language names to parent and provider URNs. These names are
|
|
// used in the generated definitions, and should match the corresponding declarations
|
|
// in the source program. This table is required if any parents or providers are
|
|
// specified by the resources to import.
|
|
func NameTable(nameTable map[string]string) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.NameTable = nameTable
|
|
})
|
|
}
|
|
|
|
// Resources specified the resources to import
|
|
func Resources(resources []*ImportResource) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.Resources = resources
|
|
})
|
|
}
|
|
|
|
// Converter specifies the converter to use for importing the resources
|
|
func Converter(converter string) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.Converter = &converter
|
|
})
|
|
}
|
|
|
|
// ConverterArgs specifies the arguments to pass to the converter used for the import
|
|
func ConverterArgs(converterArgs []string) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.ConverterArgs = converterArgs
|
|
})
|
|
}
|
|
|
|
// ShowSecrets configures whether to show config secrets when they appear.
|
|
func ShowSecrets(value bool) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.ShowSecrets = value
|
|
})
|
|
}
|
|
|
|
// Message to associate with the update operation
|
|
func Message(message string) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.Message = message
|
|
})
|
|
}
|
|
|
|
// ProgressStreams allows specifying one or more io.Writers to redirect incremental update stdout
|
|
func ProgressStreams(writers ...io.Writer) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.ProgressStreams = writers
|
|
})
|
|
}
|
|
|
|
// ErrorProgressStreams allows specifying one or more io.Writers to redirect incremental update stderr
|
|
func ErrorProgressStreams(writers ...io.Writer) Option {
|
|
return optionFunc(func(opts *Options) {
|
|
opts.ErrorProgressStreams = writers
|
|
})
|
|
}
|
|
|
|
type ImportResource struct {
|
|
// The ID of the resource to import. The format of the ID is determined by the resource's provider.
|
|
ID string `json:"id,omitempty"`
|
|
// The type token of the Pulumi resource
|
|
Type string `json:"type,omitempty"`
|
|
// The name of the resource
|
|
Name string `json:"name,omitempty"`
|
|
// The name of the resource used in the generated Pulumi program from the import
|
|
LogicalName string `json:"logicalName,omitempty"`
|
|
// The parent of the resource
|
|
Parent string `json:"parent,omitempty"`
|
|
// The provider to use for importing the resource
|
|
Provider string `json:"provider,omitempty"`
|
|
// The version of the provider of the resource
|
|
Version string `json:"version,omitempty"`
|
|
// The URL to download the provider plugin from
|
|
PluginDownloadURL string `json:"pluginDownloadUrl,omitempty"`
|
|
// The input properties to use when importing the resource
|
|
Properties []string `json:"properties,omitempty"`
|
|
// Whether the resource is a component placeholder. When specifying this option, you don't need to provide an ID.
|
|
Component bool `json:"component,omitempty"`
|
|
// When the resource is a component, this specifies it as a remote component.
|
|
Remote bool `json:"remote,omitempty"`
|
|
}
|
|
|
|
type Options struct {
|
|
Protect *bool
|
|
GenerateCode *bool
|
|
NameTable map[string]string
|
|
Resources []*ImportResource
|
|
Converter *string
|
|
ConverterArgs []string
|
|
ShowSecrets bool
|
|
Message string
|
|
ProgressStreams []io.Writer
|
|
ErrorProgressStreams []io.Writer
|
|
}
|
|
|
|
type optionFunc func(*Options)
|
|
|
|
func (o optionFunc) ApplyOption(opts *Options) {
|
|
o(opts)
|
|
}
|