move packer config constants next to the packer config

This commit is contained in:
Megan Marsh 2020-12-02 12:12:47 -08:00
parent 8558d1241f
commit 5576bb5caa
29 changed files with 234 additions and 140 deletions

View File

@ -11,7 +11,6 @@ import (
amazonebsbuilder "github.com/hashicorp/packer/builder/amazon/ebs"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
testshelper "github.com/hashicorp/packer/helper/tests"
@ -55,8 +54,8 @@ func (s *AmazonEBSAccTest) CleanUp() error {
return helper.CleanUpAmi()
}
func (s *AmazonEBSAccTest) GetBuilderStore() packer.MapOfBuilder {
return packer.MapOfBuilder{
func (s *AmazonEBSAccTest) GetBuilderStore() packersdk.MapOfBuilder {
return packersdk.MapOfBuilder{
"amazon-ebs": func() (packersdk.Builder, error) { return &amazonebsbuilder.Builder{}, nil },
}
}

View File

@ -10,7 +10,7 @@ import (
"testing"
hypervcommon "github.com/hashicorp/packer/builder/hyperv/common"
"github.com/hashicorp/packer/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
"github.com/hashicorp/packer/packer-plugin-sdk/multistep"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
@ -26,7 +26,7 @@ func testConfig() map[string]interface{} {
"disk_block_size": 1,
"guest_additions_mode": "none",
"disk_additional_size": "50000,40000,30000",
packer.BuildNameConfigKey: "foo",
common.BuildNameConfigKey: "foo",
}
}
@ -591,7 +591,7 @@ func TestUserVariablesInBootCommand(t *testing.T) {
var b Builder
config := testConfig()
config[packer.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
config[common.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
config["boot_command"] = []string{"blah {{user `test-variable`}} blah"}
_, warns, err := b.Prepare(config)

View File

@ -10,7 +10,7 @@ import (
"os"
hypervcommon "github.com/hashicorp/packer/builder/hyperv/common"
"github.com/hashicorp/packer/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
"github.com/hashicorp/packer/packer-plugin-sdk/multistep"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
@ -25,7 +25,7 @@ func testConfig() map[string]interface{} {
"memory": 64,
"guest_additions_mode": "none",
"clone_from_vmcx_path": "generated",
packer.BuildNameConfigKey: "foo",
common.BuildNameConfigKey: "foo",
}
}
@ -483,7 +483,7 @@ func TestUserVariablesInBootCommand(t *testing.T) {
defer os.RemoveAll(td)
config["clone_from_vmcx_path"] = td
config[packer.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
config[common.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
config["boot_command"] = []string{"blah {{user `test-variable`}} blah"}
_, warns, err := b.Prepare(config)

View File

@ -5,7 +5,7 @@ import (
"reflect"
"testing"
"github.com/hashicorp/packer/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
@ -17,7 +17,7 @@ func testConfig() map[string]interface{} {
"ssh_username": "foo",
"parallels_tools_flavor": "lin",
packer.BuildNameConfigKey: "foo",
common.BuildNameConfigKey: "foo",
}
}

View File

@ -9,7 +9,7 @@ import (
"testing"
"time"
"github.com/hashicorp/packer/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/stretchr/testify/assert"
)
@ -49,7 +49,7 @@ func testConfig() map[string]interface{} {
"iso_checksum": "md5:0B0F137F17AC10944716020B018F8126",
"iso_url": "http://www.google.com/",
"ssh_username": "foo",
packer.BuildNameConfigKey: "foo",
common.BuildNameConfigKey: "foo",
}
}

View File

@ -11,7 +11,6 @@ import (
"github.com/hashicorp/packer/builder/virtualbox/iso"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
testshelper "github.com/hashicorp/packer/helper/tests"
@ -40,8 +39,8 @@ func (v *VirtualBoxISOAccTest) CleanUp() error {
return nil
}
func (v *VirtualBoxISOAccTest) GetBuilderStore() packer.MapOfBuilder {
return packer.MapOfBuilder{
func (v *VirtualBoxISOAccTest) GetBuilderStore() packersdk.MapOfBuilder {
return packersdk.MapOfBuilder{
"virtualbox-iso": func() (packersdk.Builder, error) { return &iso.Builder{}, nil },
}
}

View File

@ -6,7 +6,7 @@ import (
"testing"
"github.com/hashicorp/packer/builder/virtualbox/common"
"github.com/hashicorp/packer/packer"
packercommon "github.com/hashicorp/packer/packer-plugin-sdk/common"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
@ -17,7 +17,7 @@ func testConfig() map[string]interface{} {
"shutdown_command": "yes",
"ssh_username": "foo",
packer.BuildNameConfigKey: "foo",
packercommon.BuildNameConfigKey: "foo",
}
}

View File

@ -7,7 +7,7 @@ import (
"reflect"
"testing"
"github.com/hashicorp/packer/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
@ -18,7 +18,7 @@ func testConfig() map[string]interface{} {
"shutdown_command": "foo",
"ssh_username": "foo",
packer.BuildNameConfigKey: "foo",
common.BuildNameConfigKey: "foo",
}
}

View File

@ -138,16 +138,16 @@ func setupVMwareBuild(t *testing.T, builderConfig map[string]string, provisioner
// create our config to test the vmware-iso builder
components := packer.ComponentFinder{
BuilderStore: packer.MapOfBuilder{
BuilderStore: packersdk.MapOfBuilder{
"vmware-iso": func() (packersdk.Builder, error) { return &Builder{}, nil },
},
Hook: func(n string) (packersdk.Hook, error) {
return &packersdk.DispatchHook{}, nil
},
ProvisionerStore: packer.MapOfProvisioner{
ProvisionerStore: packersdk.MapOfProvisioner{
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
},
PostProcessorStore: packer.MapOfPostProcessor{
PostProcessorStore: packersdk.MapOfPostProcessor{
"something": func() (packersdk.PostProcessor, error) { return &packer.MockPostProcessor{}, nil },
},
}

View File

@ -68,12 +68,12 @@ func testMetaParallel(t *testing.T, builder *ParallelTestBuilder, locked *Locked
return Meta{
CoreConfig: &packer.CoreConfig{
Components: packer.ComponentFinder{
BuilderStore: packer.MapOfBuilder{
BuilderStore: packersdk.MapOfBuilder{
"parallel-test": func() (packersdk.Builder, error) { return builder, nil },
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
"lock": func() (packersdk.Builder, error) { return locked, nil },
},
ProvisionerStore: packer.MapOfProvisioner{
ProvisionerStore: packersdk.MapOfProvisioner{
"sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
},
},

View File

@ -836,16 +836,16 @@ func fileExists(filename string) bool {
// available. This allows us to test a builder that writes files to disk.
func testCoreConfigBuilder(t *testing.T) *packer.CoreConfig {
components := packer.ComponentFinder{
BuilderStore: packer.MapOfBuilder{
BuilderStore: packersdk.MapOfBuilder{
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
},
ProvisionerStore: packer.MapOfProvisioner{
ProvisionerStore: packersdk.MapOfProvisioner{
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
"file": func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
},
PostProcessorStore: packer.MapOfPostProcessor{
PostProcessorStore: packersdk.MapOfPostProcessor{
"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
"manifest": func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
},

View File

@ -16,10 +16,10 @@ import (
// available. This allows us to test a builder that writes files to disk.
func testCoreConfigSleepBuilder(t *testing.T) *packer.CoreConfig {
components := packer.ComponentFinder{
BuilderStore: packer.MapOfBuilder{
BuilderStore: packersdk.MapOfBuilder{
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
},
ProvisionerStore: packer.MapOfProvisioner{
ProvisionerStore: packersdk.MapOfProvisioner{
"sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
},

View File

@ -118,17 +118,17 @@ func commandMeta() Meta {
func getBareComponentFinder() packer.ComponentFinder {
return packer.ComponentFinder{
BuilderStore: packer.MapOfBuilder{
BuilderStore: packersdk.MapOfBuilder{
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
"amazon-ebs": func() (packersdk.Builder, error) { return &ebs.Builder{}, nil },
},
ProvisionerStore: packer.MapOfProvisioner{
ProvisionerStore: packersdk.MapOfProvisioner{
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
"file": func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
},
PostProcessorStore: packer.MapOfPostProcessor{
PostProcessorStore: packersdk.MapOfPostProcessor{
"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
"manifest": func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
},

View File

@ -12,7 +12,6 @@ import (
"strings"
"github.com/hashicorp/packer/command"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/hashicorp/packer/packer/plugin"
)
@ -27,9 +26,9 @@ type config struct {
RawBuilders map[string]string `json:"builders"`
RawProvisioners map[string]string `json:"provisioners"`
RawPostProcessors map[string]string `json:"post-processors"`
Builders packer.MapOfBuilder `json:"-"`
Provisioners packer.MapOfProvisioner `json:"-"`
PostProcessors packer.MapOfPostProcessor `json:"-"`
Builders packersdk.MapOfBuilder `json:"-"`
Provisioners packersdk.MapOfProvisioner `json:"-"`
PostProcessors packersdk.MapOfPostProcessor `json:"-"`
Plugins plugin.Config
}

View File

@ -11,9 +11,109 @@ import (
"strings"
"testing"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/hashicorp/packer/packer/plugin"
)
func newConfig() config {
var conf config
conf.PluginMinPort = 10000
conf.PluginMaxPort = 25000
conf.Builders = packersdk.MapOfBuilder{}
conf.PostProcessors = packersdk.MapOfPostProcessor{}
conf.Provisioners = packersdk.MapOfProvisioner{}
return conf
}
func TestDiscoverReturnsIfMagicCookieSet(t *testing.T) {
config := newConfig()
os.Setenv(plugin.MagicCookieKey, plugin.MagicCookieValue)
defer os.Unsetenv(plugin.MagicCookieKey)
err := config.Discover()
if err != nil {
t.Fatalf("Should not have errored: %s", err)
}
if len(config.Builders) != 0 {
t.Fatalf("Should not have tried to find builders")
}
}
func TestEnvVarPackerPluginPath(t *testing.T) {
// Create a temporary directory to store plugins in
dir, _, cleanUpFunc, err := generateFakePlugins("custom_plugin_dir",
[]string{"packer-provisioner-partyparrot"})
if err != nil {
t.Fatalf("Error creating fake custom plugins: %s", err)
}
defer cleanUpFunc()
// Add temp dir to path.
os.Setenv("PACKER_PLUGIN_PATH", dir)
defer os.Unsetenv("PACKER_PLUGIN_PATH")
config := newConfig()
err = config.Discover()
if err != nil {
t.Fatalf("Should not have errored: %s", err)
}
if len(config.Provisioners) == 0 {
t.Fatalf("Should have found partyparrot provisioner")
}
if _, ok := config.Provisioners["partyparrot"]; !ok {
t.Fatalf("Should have found partyparrot provisioner.")
}
}
func TestEnvVarPackerPluginPath_MultiplePaths(t *testing.T) {
// Create a temporary directory to store plugins in
dir, _, cleanUpFunc, err := generateFakePlugins("custom_plugin_dir",
[]string{"packer-provisioner-partyparrot"})
if err != nil {
t.Fatalf("Error creating fake custom plugins: %s", err)
}
defer cleanUpFunc()
pathsep := ":"
if runtime.GOOS == "windows" {
pathsep = ";"
}
// Create a second dir to look in that will be empty
decoyDir, err := ioutil.TempDir("", "decoy")
if err != nil {
t.Fatalf("Failed to create a temporary test dir.")
}
defer os.Remove(decoyDir)
pluginPath := dir + pathsep + decoyDir
// Add temp dir to path.
os.Setenv("PACKER_PLUGIN_PATH", pluginPath)
defer os.Unsetenv("PACKER_PLUGIN_PATH")
config := newConfig()
err = config.Discover()
if err != nil {
t.Fatalf("Should not have errored: %s", err)
}
if len(config.Provisioners) == 0 {
t.Fatalf("Should have found partyparrot provisioner")
}
if _, ok := config.Provisioners["partyparrot"]; !ok {
t.Fatalf("Should have found partyparrot provisioner.")
}
}
>>>>>>> move packer config constants next to the packer config
func TestDecodeConfig(t *testing.T) {
packerConfig := `
@ -49,9 +149,9 @@ func TestLoadExternalComponentsFromConfig(t *testing.T) {
defer cleanUpFunc()
var cfg config
cfg.Builders = packer.MapOfBuilder{}
cfg.PostProcessors = packer.MapOfPostProcessor{}
cfg.Provisioners = packer.MapOfProvisioner{}
cfg.Builders = packersdk.MapOfBuilder{}
cfg.PostProcessors = packersdk.MapOfPostProcessor{}
cfg.Provisioners = packersdk.MapOfProvisioner{}
if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
t.Fatalf("error encountered decoding configuration: %v", err)
@ -81,7 +181,7 @@ func TestLoadExternalComponentsFromConfig_onlyProvisioner(t *testing.T) {
defer cleanUpFunc()
var cfg config
cfg.Provisioners = packer.MapOfProvisioner{}
cfg.Provisioners = packersdk.MapOfProvisioner{}
if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
t.Fatalf("error encountered decoding configuration: %v", err)
@ -126,9 +226,9 @@ func TestLoadSingleComponent(t *testing.T) {
}
var cfg config
cfg.Builders = packer.MapOfBuilder{}
cfg.PostProcessors = packer.MapOfPostProcessor{}
cfg.Provisioners = packer.MapOfProvisioner{}
cfg.Builders = packersdk.MapOfBuilder{}
cfg.PostProcessors = packersdk.MapOfPostProcessor{}
cfg.Provisioners = packersdk.MapOfProvisioner{}
for _, tc := range tt {
tc := tc

View File

@ -20,16 +20,16 @@ import (
func getBasicParser() *Parser {
return &Parser{
Parser: hclparse.NewParser(),
BuilderSchemas: packer.MapOfBuilder{
BuilderSchemas: packersdk.MapOfBuilder{
"amazon-ebs": func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
"virtualbox-iso": func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
},
ProvisionersSchemas: packer.MapOfProvisioner{
ProvisionersSchemas: packersdk.MapOfProvisioner{
"shell": func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
"file": func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
},
PostProcessorsSchemas: packer.MapOfPostProcessor{
PostProcessorsSchemas: packersdk.MapOfPostProcessor{
"amazon-import": func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
"manifest": func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
},

View File

@ -14,7 +14,7 @@ import (
amazonEBS "github.com/hashicorp/packer/builder/amazon/ebs/acceptance"
virtualboxISO "github.com/hashicorp/packer/builder/virtualbox/iso/acceptance"
"github.com/hashicorp/packer/command"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
func TestProvisionersAgainstBuilders(provisionerAcc ProvisionerAcceptance, t *testing.T) {
@ -133,14 +133,14 @@ func buildCommand(t *testing.T, builder BuilderAcceptance, provisioner Provision
type ProvisionerAcceptance interface {
GetName() string
GetConfig() (string, error)
GetProvisionerStore() packer.MapOfProvisioner
GetProvisionerStore() packersdk.MapOfProvisioner
IsCompatible(builder string, vmOS string) bool
RunTest(c *command.BuildCommand, args []string) error
}
type BuilderAcceptance interface {
GetConfigs() (map[string]string, error)
GetBuilderStore() packer.MapOfBuilder
GetBuilderStore() packersdk.MapOfBuilder
CleanUp() error
}

View File

@ -25,14 +25,14 @@ func FileExists(filename string) bool {
// available. This allows us to test a builder that writes files to disk.
func testCoreConfigBuilder(t *testing.T) *packer.CoreConfig {
components := packer.ComponentFinder{
BuilderStore: packer.MapOfBuilder{
BuilderStore: packersdk.MapOfBuilder{
"amazon-ebs": func() (packersdk.Builder, error) { return &amazonebsbuilder.Builder{}, nil },
},
ProvisionerStore: packer.MapOfProvisioner{
ProvisionerStore: packersdk.MapOfProvisioner{
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
"file": func() (packersdk.Provisioner, error) { return &fileprovisioner.Provisioner{}, nil },
},
PostProcessorStore: packer.MapOfPostProcessor{},
PostProcessorStore: packersdk.MapOfPostProcessor{},
}
return &packer.CoreConfig{
Components: components,

View File

@ -1,5 +1,42 @@
package common
const (
// This is the key in configurations that is set to the name of the
// build.
BuildNameConfigKey = "packer_build_name"
// This is the key in the configuration that is set to the type
// of the builder that is run. This is useful for provisioners and
// such who want to make use of this.
BuilderTypeConfigKey = "packer_builder_type"
// this is the key in the configuration that is set to the version of the
// Packer Core. This can be used by plugins to set user agents, etc, without
// having to import the Core to find out the Packer version.
CoreVersionConfigKey = "packer_core_version"
// This is the key in configurations that is set to "true" when Packer
// debugging is enabled.
DebugConfigKey = "packer_debug"
// This is the key in configurations that is set to "true" when Packer
// force build is enabled.
ForceConfigKey = "packer_force"
// This key determines what to do when a normal multistep step fails
// - "cleanup" - run cleanup steps
// - "abort" - exit without cleanup
// - "ask" - ask the user
OnErrorConfigKey = "packer_on_error"
// TemplatePathKey is the path to the template that configured this build
TemplatePathKey = "packer_template_path"
// This key contains a map[string]string of the user variables for
// template processing.
UserVariablesConfigKey = "packer_user_variables"
)
// PackerConfig is a struct that contains the configuration keys that
// are sent by packer, properly tagged already so mapstructure can load
// them. Embed this structure into your configuration class to get access to

View File

@ -2,18 +2,16 @@ package packer
import (
"fmt"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
type MapOfProvisioner map[string]func() (packersdk.Provisioner, error)
type MapOfProvisioner map[string]func() (Provisioner, error)
func (mop MapOfProvisioner) Has(provisioner string) bool {
_, res := mop[provisioner]
return res
}
func (mop MapOfProvisioner) Start(provisioner string) (packersdk.Provisioner, error) {
func (mop MapOfProvisioner) Start(provisioner string) (Provisioner, error) {
p, found := mop[provisioner]
if !found {
return nil, fmt.Errorf("Unknown provisioner %s", provisioner)
@ -29,14 +27,14 @@ func (mop MapOfProvisioner) List() []string {
return res
}
type MapOfPostProcessor map[string]func() (packersdk.PostProcessor, error)
type MapOfPostProcessor map[string]func() (PostProcessor, error)
func (mopp MapOfPostProcessor) Has(postProcessor string) bool {
_, res := mopp[postProcessor]
return res
}
func (mopp MapOfPostProcessor) Start(postProcessor string) (packersdk.PostProcessor, error) {
func (mopp MapOfPostProcessor) Start(postProcessor string) (PostProcessor, error) {
p, found := mopp[postProcessor]
if !found {
return nil, fmt.Errorf("Unknown post-processor %s", postProcessor)
@ -52,14 +50,14 @@ func (mopp MapOfPostProcessor) List() []string {
return res
}
type MapOfBuilder map[string]func() (packersdk.Builder, error)
type MapOfBuilder map[string]func() (Builder, error)
func (mob MapOfBuilder) Has(builder string) bool {
_, res := mob[builder]
return res
}
func (mob MapOfBuilder) Start(builder string) (packersdk.Builder, error) {
func (mob MapOfBuilder) Start(builder string) (Builder, error) {
d, found := mob[builder]
if !found {
return nil, fmt.Errorf("Unknown builder %s", builder)

View File

@ -6,48 +6,12 @@ import (
"log"
"sync"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/packerbuilderdata"
"github.com/hashicorp/packer/version"
)
const (
// This is the key in configurations that is set to the name of the
// build.
BuildNameConfigKey = "packer_build_name"
// This is the key in the configuration that is set to the type
// of the builder that is run. This is useful for provisioners and
// such who want to make use of this.
BuilderTypeConfigKey = "packer_builder_type"
// this is the key in the configuration that is set to the version of the
// Packer Core. This can be used by plugins to set user agents, etc, without
// having to import the Core to find out the Packer version.
CoreVersionConfigKey = "packer_core_version"
// This is the key in configurations that is set to "true" when Packer
// debugging is enabled.
DebugConfigKey = "packer_debug"
// This is the key in configurations that is set to "true" when Packer
// force build is enabled.
ForceConfigKey = "packer_force"
// This key determines what to do when a normal multistep step fails
// - "cleanup" - run cleanup steps
// - "abort" - exit without cleanup
// - "ask" - ask the user
OnErrorConfigKey = "packer_on_error"
// TemplatePathKey is the path to the template that configured this build
TemplatePathKey = "packer_template_path"
// This key contains a map[string]string of the user variables for
// template processing.
UserVariablesConfigKey = "packer_user_variables"
)
// A Build represents a single job within Packer that is responsible for
// building some machine image artifact. Builds are meant to be parallelized.
type Build interface {
@ -165,14 +129,14 @@ func (b *CoreBuild) Prepare() (warn []string, err error) {
b.prepareCalled = true
packerConfig := map[string]interface{}{
BuildNameConfigKey: b.Type,
BuilderTypeConfigKey: b.BuilderType,
CoreVersionConfigKey: version.FormattedVersion(),
DebugConfigKey: b.debug,
ForceConfigKey: b.force,
OnErrorConfigKey: b.onError,
TemplatePathKey: b.TemplatePath,
UserVariablesConfigKey: b.Variables,
common.BuildNameConfigKey: b.Type,
common.BuilderTypeConfigKey: b.BuilderType,
common.CoreVersionConfigKey: version.FormattedVersion(),
common.DebugConfigKey: b.debug,
common.ForceConfigKey: b.force,
common.OnErrorConfigKey: b.onError,
common.TemplatePathKey: b.TemplatePath,
common.UserVariablesConfigKey: b.Variables,
}
// Prepare the builder

View File

@ -5,6 +5,7 @@ import (
"reflect"
"testing"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/packerbuilderdata"
"github.com/hashicorp/packer/version"
@ -41,14 +42,14 @@ func testBuild() *CoreBuild {
func testDefaultPackerConfig() map[string]interface{} {
return map[string]interface{}{
BuildNameConfigKey: "test",
BuilderTypeConfigKey: "foo",
CoreVersionConfigKey: version.FormattedVersion(),
DebugConfigKey: false,
ForceConfigKey: false,
OnErrorConfigKey: "cleanup",
TemplatePathKey: "",
UserVariablesConfigKey: make(map[string]string),
common.BuildNameConfigKey: "test",
common.BuilderTypeConfigKey: "foo",
common.CoreVersionConfigKey: version.FormattedVersion(),
common.DebugConfigKey: false,
common.ForceConfigKey: false,
common.OnErrorConfigKey: "cleanup",
common.TemplatePathKey: "",
common.UserVariablesConfigKey: make(map[string]string),
}
}
func TestBuild_Name(t *testing.T) {
@ -144,7 +145,7 @@ func TestBuildPrepare_BuilderWarnings(t *testing.T) {
func TestBuild_Prepare_Debug(t *testing.T) {
packerConfig := testDefaultPackerConfig()
packerConfig[DebugConfigKey] = true
packerConfig[common.DebugConfigKey] = true
build := testBuild()
builder := build.Builder.(*MockBuilder)
@ -170,7 +171,7 @@ func TestBuild_Prepare_Debug(t *testing.T) {
func TestBuildPrepare_variables_default(t *testing.T) {
packerConfig := testDefaultPackerConfig()
packerConfig[UserVariablesConfigKey] = map[string]string{
packerConfig[common.UserVariablesConfigKey] = map[string]string{
"foo": "bar",
}

View File

@ -800,7 +800,7 @@ func TestCoreBuild_provRetry(t *testing.T) {
b := TestBuilder(t, config, "test")
pString := new(MockProvisioner)
pInt := new(MockProvisioner)
config.Components.ProvisionerStore = MapOfProvisioner{
config.Components.ProvisionerStore = packersdk.MapOfProvisioner{
"test-string": func() (packersdk.Provisioner, error) { return pString, nil },
// backwards compatibility
"test-integer": func() (packersdk.Provisioner, error) { return pInt, nil },

View File

@ -11,7 +11,7 @@ import (
func TestCoreConfig(t *testing.T) *CoreConfig {
// Create some test components
components := ComponentFinder{
BuilderStore: MapOfBuilder{
BuilderStore: packersdk.MapOfBuilder{
"test": func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
},
}
@ -45,7 +45,7 @@ func TestUi(t *testing.T) packersdk.Ui {
func TestBuilder(t *testing.T, c *CoreConfig, n string) *MockBuilder {
var b MockBuilder
c.Components.BuilderStore = MapOfBuilder{
c.Components.BuilderStore = packersdk.MapOfBuilder{
n: func() (packersdk.Builder, error) { return &b, nil },
}
@ -57,7 +57,7 @@ func TestBuilder(t *testing.T, c *CoreConfig, n string) *MockBuilder {
func TestProvisioner(t *testing.T, c *CoreConfig, n string) *MockProvisioner {
var b MockProvisioner
c.Components.ProvisionerStore = MapOfProvisioner{
c.Components.ProvisionerStore = packersdk.MapOfProvisioner{
n: func() (packersdk.Provisioner, error) { return &b, nil },
}
@ -69,7 +69,7 @@ func TestProvisioner(t *testing.T, c *CoreConfig, n string) *MockProvisioner {
func TestPostProcessor(t *testing.T, c *CoreConfig, n string) *MockPostProcessor {
var b MockPostProcessor
c.Components.PostProcessorStore = MapOfPostProcessor{
c.Components.PostProcessorStore = packersdk.MapOfPostProcessor{
n: func() (packersdk.PostProcessor, error) { return &b, nil },
}

View File

@ -5,7 +5,7 @@ import (
"os"
"testing"
"github.com/hashicorp/packer/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
)
@ -303,7 +303,7 @@ func TestProvisionerPrepare_json(t *testing.T) {
"foo": "{{ user `foo` }}",
}
config[packer.UserVariablesConfigKey] = map[string]string{
config[common.UserVariablesConfigKey] = map[string]string{
"foo": `"bar\baz"`,
}

View File

@ -11,7 +11,6 @@ import (
"github.com/hashicorp/go-uuid"
"github.com/hashicorp/packer/command"
"github.com/hashicorp/packer/helper/tests/acc"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/hashicorp/packer/provisioner/powershell"
windowsshellprovisioner "github.com/hashicorp/packer/provisioner/windows-shell"
@ -63,8 +62,8 @@ func (s *PowershellProvisionerAccTest) GetConfig() (string, error) {
return string(file), nil
}
func (s *PowershellProvisionerAccTest) GetProvisionerStore() packer.MapOfProvisioner {
return packer.MapOfProvisioner{
func (s *PowershellProvisionerAccTest) GetProvisionerStore() packersdk.MapOfProvisioner {
return packersdk.MapOfProvisioner{
TestProvisionerName: func() (packersdk.Provisioner, error) { return &powershell.Provisioner{}, nil },
"windows-shell": func() (packersdk.Provisioner, error) { return &windowsshellprovisioner.Provisioner{}, nil },
}

View File

@ -11,7 +11,7 @@ import (
"testing"
"time"
"github.com/hashicorp/packer/packer"
"github.com/hashicorp/packer/packer-plugin-sdk/common"
"github.com/hashicorp/packer/packer-plugin-sdk/multistep/commonsteps"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/stretchr/testify/assert"
@ -89,7 +89,7 @@ func TestProvisionerPrepare_Config(t *testing.T) {
config := testConfig()
config["elevated_user"] = "{{user `user`}}"
config["elevated_password"] = "{{user `password`}}"
config[packer.UserVariablesConfigKey] = map[string]string{
config[common.UserVariablesConfigKey] = map[string]string{
"user": "myusername",
"password": "mypassword",
}

View File

@ -11,7 +11,6 @@ import (
"github.com/hashicorp/packer/helper/tests/acc"
"github.com/hashicorp/packer/provisioner/shell"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/hashicorp/packer/command"
@ -40,8 +39,8 @@ func (s *ShellLocalProvisionerAccTest) GetConfig() (string, error) {
return string(file), err
}
func (s *ShellLocalProvisionerAccTest) GetProvisionerStore() packer.MapOfProvisioner {
return packer.MapOfProvisioner{
func (s *ShellLocalProvisionerAccTest) GetProvisionerStore() packersdk.MapOfProvisioner {
return packersdk.MapOfProvisioner{
"shell-local": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
}
}

View File

@ -12,7 +12,6 @@ import (
"github.com/hashicorp/packer/provisioner/file"
"github.com/hashicorp/packer/provisioner/shell"
"github.com/hashicorp/packer/packer"
packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
"github.com/hashicorp/go-uuid"
@ -43,8 +42,8 @@ func (s *ShellProvisionerAccTest) GetConfig() (string, error) {
return string(file), err
}
func (s *ShellProvisionerAccTest) GetProvisionerStore() packer.MapOfProvisioner {
return packer.MapOfProvisioner{
func (s *ShellProvisionerAccTest) GetProvisionerStore() packersdk.MapOfProvisioner {
return packersdk.MapOfProvisioner{
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
"file": func() (packersdk.Provisioner, error) { return &file.Provisioner{}, nil },
}