Copy `MapOf...` plugin types back into Packer core (#10466)
* move maps of plugins back in core * go mod vendor * more fixes * fix imports * Update core_test.go * fix build * more fixes * more fixes * up vendors after fixing sdk * Update post_processor_mock.hcl2spec.go * Leave implementatino of MapOf in the sdk for plugi tests Other wise use the interface * go mod tidy * add MapOfDatasource type too
This commit is contained in:
parent
1e8b0723f5
commit
52d2d7fe5f
|
@ -12,6 +12,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
"github.com/hashicorp/packer/packer"
|
||||||
"github.com/hashicorp/packer/packer/plugin"
|
"github.com/hashicorp/packer/packer/plugin"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -141,7 +142,7 @@ func discoverAndLoad() error {
|
||||||
|
|
||||||
// checkHCL2ConfigSpec checks if the hcl2spec config is present for the given plugins by validating that ConfigSpec() does not
|
// checkHCL2ConfigSpec checks if the hcl2spec config is present for the given plugins by validating that ConfigSpec() does not
|
||||||
// return an empty map of specs.
|
// return an empty map of specs.
|
||||||
func checkHCL2ConfigSpec(builders packersdk.MapOfBuilder, provisioners packersdk.MapOfProvisioner, postProcessors packersdk.MapOfPostProcessor) error {
|
func checkHCL2ConfigSpec(builders packer.BuilderStore, provisioners packer.ProvisionerStore, postProcessors packer.PostProcessorStore) error {
|
||||||
var errs *packersdk.MultiError
|
var errs *packersdk.MultiError
|
||||||
for _, b := range builders.List() {
|
for _, b := range builders.List() {
|
||||||
builder, err := builders.Start(b)
|
builder, err := builders.Start(b)
|
||||||
|
|
|
@ -68,12 +68,12 @@ func testMetaParallel(t *testing.T, builder *ParallelTestBuilder, locked *Locked
|
||||||
return Meta{
|
return Meta{
|
||||||
CoreConfig: &packer.CoreConfig{
|
CoreConfig: &packer.CoreConfig{
|
||||||
Components: packer.ComponentFinder{
|
Components: packer.ComponentFinder{
|
||||||
BuilderStore: packersdk.MapOfBuilder{
|
BuilderStore: packer.MapOfBuilder{
|
||||||
"parallel-test": func() (packersdk.Builder, error) { return builder, nil },
|
"parallel-test": func() (packersdk.Builder, error) { return builder, nil },
|
||||||
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
||||||
"lock": func() (packersdk.Builder, error) { return locked, nil },
|
"lock": func() (packersdk.Builder, error) { return locked, nil },
|
||||||
},
|
},
|
||||||
ProvisionerStore: packersdk.MapOfProvisioner{
|
ProvisionerStore: packer.MapOfProvisioner{
|
||||||
"sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
|
"sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -836,16 +836,16 @@ func fileExists(filename string) bool {
|
||||||
// available. This allows us to test a builder that writes files to disk.
|
// available. This allows us to test a builder that writes files to disk.
|
||||||
func testCoreConfigBuilder(t *testing.T) *packer.CoreConfig {
|
func testCoreConfigBuilder(t *testing.T) *packer.CoreConfig {
|
||||||
components := packer.ComponentFinder{
|
components := packer.ComponentFinder{
|
||||||
BuilderStore: packersdk.MapOfBuilder{
|
BuilderStore: packer.MapOfBuilder{
|
||||||
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
||||||
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
|
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
|
||||||
},
|
},
|
||||||
ProvisionerStore: packersdk.MapOfProvisioner{
|
ProvisionerStore: packer.MapOfProvisioner{
|
||||||
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
|
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
|
||||||
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
|
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
|
||||||
"file": func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
|
"file": func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
|
||||||
},
|
},
|
||||||
PostProcessorStore: packersdk.MapOfPostProcessor{
|
PostProcessorStore: packer.MapOfPostProcessor{
|
||||||
"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
|
"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
|
||||||
"manifest": func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
|
"manifest": func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
|
||||||
},
|
},
|
||||||
|
|
|
@ -16,10 +16,10 @@ import (
|
||||||
// available. This allows us to test a builder that writes files to disk.
|
// available. This allows us to test a builder that writes files to disk.
|
||||||
func testCoreConfigSleepBuilder(t *testing.T) *packer.CoreConfig {
|
func testCoreConfigSleepBuilder(t *testing.T) *packer.CoreConfig {
|
||||||
components := packer.ComponentFinder{
|
components := packer.ComponentFinder{
|
||||||
BuilderStore: packersdk.MapOfBuilder{
|
BuilderStore: packer.MapOfBuilder{
|
||||||
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
||||||
},
|
},
|
||||||
ProvisionerStore: packersdk.MapOfProvisioner{
|
ProvisionerStore: packer.MapOfProvisioner{
|
||||||
"sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
|
"sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
|
||||||
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
|
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
|
||||||
},
|
},
|
||||||
|
|
|
@ -118,17 +118,17 @@ func commandMeta() Meta {
|
||||||
|
|
||||||
func getBareComponentFinder() packer.ComponentFinder {
|
func getBareComponentFinder() packer.ComponentFinder {
|
||||||
return packer.ComponentFinder{
|
return packer.ComponentFinder{
|
||||||
BuilderStore: packersdk.MapOfBuilder{
|
BuilderStore: packer.MapOfBuilder{
|
||||||
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
|
||||||
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
|
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
|
||||||
"amazon-ebs": func() (packersdk.Builder, error) { return &ebs.Builder{}, nil },
|
"amazon-ebs": func() (packersdk.Builder, error) { return &ebs.Builder{}, nil },
|
||||||
},
|
},
|
||||||
ProvisionerStore: packersdk.MapOfProvisioner{
|
ProvisionerStore: packer.MapOfProvisioner{
|
||||||
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
|
"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
|
||||||
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
|
"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
|
||||||
"file": func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
|
"file": func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
|
||||||
},
|
},
|
||||||
PostProcessorStore: packersdk.MapOfPostProcessor{
|
PostProcessorStore: packer.MapOfPostProcessor{
|
||||||
"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
|
"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
|
||||||
"manifest": func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
|
"manifest": func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
|
||||||
},
|
},
|
||||||
|
|
17
config.go
17
config.go
|
@ -13,6 +13,7 @@ import (
|
||||||
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/hashicorp/packer/command"
|
"github.com/hashicorp/packer/command"
|
||||||
|
"github.com/hashicorp/packer/packer"
|
||||||
"github.com/hashicorp/packer/packer/plugin"
|
"github.com/hashicorp/packer/packer/plugin"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -21,14 +22,14 @@ import (
|
||||||
const PACKERSPACE = "-PACKERSPACE-"
|
const PACKERSPACE = "-PACKERSPACE-"
|
||||||
|
|
||||||
type config struct {
|
type config struct {
|
||||||
DisableCheckpoint bool `json:"disable_checkpoint"`
|
DisableCheckpoint bool `json:"disable_checkpoint"`
|
||||||
DisableCheckpointSignature bool `json:"disable_checkpoint_signature"`
|
DisableCheckpointSignature bool `json:"disable_checkpoint_signature"`
|
||||||
RawBuilders map[string]string `json:"builders"`
|
RawBuilders map[string]string `json:"builders"`
|
||||||
RawProvisioners map[string]string `json:"provisioners"`
|
RawProvisioners map[string]string `json:"provisioners"`
|
||||||
RawPostProcessors map[string]string `json:"post-processors"`
|
RawPostProcessors map[string]string `json:"post-processors"`
|
||||||
Builders packersdk.MapOfBuilder `json:"-"`
|
Builders packer.MapOfBuilder `json:"-"`
|
||||||
Provisioners packersdk.MapOfProvisioner `json:"-"`
|
Provisioners packer.MapOfProvisioner `json:"-"`
|
||||||
PostProcessors packersdk.MapOfPostProcessor `json:"-"`
|
PostProcessors packer.MapOfPostProcessor `json:"-"`
|
||||||
Plugins plugin.Config
|
Plugins plugin.Config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
"github.com/hashicorp/packer/packer"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDecodeConfig(t *testing.T) {
|
func TestDecodeConfig(t *testing.T) {
|
||||||
|
@ -49,9 +49,9 @@ func TestLoadExternalComponentsFromConfig(t *testing.T) {
|
||||||
defer cleanUpFunc()
|
defer cleanUpFunc()
|
||||||
|
|
||||||
var cfg config
|
var cfg config
|
||||||
cfg.Builders = packersdk.MapOfBuilder{}
|
cfg.Builders = packer.MapOfBuilder{}
|
||||||
cfg.PostProcessors = packersdk.MapOfPostProcessor{}
|
cfg.PostProcessors = packer.MapOfPostProcessor{}
|
||||||
cfg.Provisioners = packersdk.MapOfProvisioner{}
|
cfg.Provisioners = packer.MapOfProvisioner{}
|
||||||
|
|
||||||
if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
|
if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
|
||||||
t.Fatalf("error encountered decoding configuration: %v", err)
|
t.Fatalf("error encountered decoding configuration: %v", err)
|
||||||
|
@ -81,7 +81,7 @@ func TestLoadExternalComponentsFromConfig_onlyProvisioner(t *testing.T) {
|
||||||
defer cleanUpFunc()
|
defer cleanUpFunc()
|
||||||
|
|
||||||
var cfg config
|
var cfg config
|
||||||
cfg.Provisioners = packersdk.MapOfProvisioner{}
|
cfg.Provisioners = packer.MapOfProvisioner{}
|
||||||
|
|
||||||
if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
|
if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
|
||||||
t.Fatalf("error encountered decoding configuration: %v", err)
|
t.Fatalf("error encountered decoding configuration: %v", err)
|
||||||
|
@ -126,9 +126,9 @@ func TestLoadSingleComponent(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var cfg config
|
var cfg config
|
||||||
cfg.Builders = packersdk.MapOfBuilder{}
|
cfg.Builders = packer.MapOfBuilder{}
|
||||||
cfg.PostProcessors = packersdk.MapOfPostProcessor{}
|
cfg.PostProcessors = packer.MapOfPostProcessor{}
|
||||||
cfg.Provisioners = packersdk.MapOfProvisioner{}
|
cfg.Provisioners = packer.MapOfProvisioner{}
|
||||||
|
|
||||||
for _, tc := range tt {
|
for _, tc := range tt {
|
||||||
tc := tc
|
tc := tc
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -49,7 +49,7 @@ require (
|
||||||
github.com/hashicorp/go-uuid v1.0.2
|
github.com/hashicorp/go-uuid v1.0.2
|
||||||
github.com/hashicorp/go-version v1.2.0
|
github.com/hashicorp/go-version v1.2.0
|
||||||
github.com/hashicorp/hcl/v2 v2.8.0
|
github.com/hashicorp/hcl/v2 v2.8.0
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.0.6
|
github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210111224258-fd30ebb797f0
|
||||||
github.com/hashicorp/vault/api v1.0.4
|
github.com/hashicorp/vault/api v1.0.4
|
||||||
github.com/hetznercloud/hcloud-go v1.15.1
|
github.com/hetznercloud/hcloud-go v1.15.1
|
||||||
github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4
|
github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4
|
||||||
|
|
32
go.sum
32
go.sum
|
@ -102,12 +102,8 @@ github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f h1:jI4DIE
|
||||||
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
|
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
|
||||||
github.com/antchfx/xpath v0.0.0-20170728053731-b5c552e1acbd h1:S3Fr6QnkpW9VRjiEY4psQHhhbbahASuNVj52YIce7lI=
|
github.com/antchfx/xpath v0.0.0-20170728053731-b5c552e1acbd h1:S3Fr6QnkpW9VRjiEY4psQHhhbbahASuNVj52YIce7lI=
|
||||||
github.com/antchfx/xpath v0.0.0-20170728053731-b5c552e1acbd/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
|
github.com/antchfx/xpath v0.0.0-20170728053731-b5c552e1acbd/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
|
||||||
github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e h1:ptBAamGVd6CfRsUtyHD+goy2JGhv1QC32v3gqM8mYAM=
|
|
||||||
github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
|
|
||||||
github.com/antchfx/xquery v0.0.0-20170730121040-eb8c3c172607 h1:BFFG6KP8ASFBg2ptWsJn8p8RDufBjBDKIxLU7BTYGOM=
|
github.com/antchfx/xquery v0.0.0-20170730121040-eb8c3c172607 h1:BFFG6KP8ASFBg2ptWsJn8p8RDufBjBDKIxLU7BTYGOM=
|
||||||
github.com/antchfx/xquery v0.0.0-20170730121040-eb8c3c172607/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M=
|
github.com/antchfx/xquery v0.0.0-20170730121040-eb8c3c172607/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M=
|
||||||
github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0 h1:JaCC8jz0zdMLk2m+qCCVLLLM/PL93p84w4pK3aJWj60=
|
|
||||||
github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M=
|
|
||||||
github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
|
github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
|
||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
||||||
github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U=
|
github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U=
|
||||||
|
@ -187,8 +183,6 @@ github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURU
|
||||||
github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ=
|
github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ=
|
||||||
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08 h1:0bp6/GrNOrTDtSXe9YYGCwf8jp5Fb/b+4a6MTRm4qzY=
|
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08 h1:0bp6/GrNOrTDtSXe9YYGCwf8jp5Fb/b+4a6MTRm4qzY=
|
||||||
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08/go.mod h1:VBVDFSBXCIW8JaHQpI8lldSKfYaLMzP9oyq6IJ4fhzY=
|
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08/go.mod h1:VBVDFSBXCIW8JaHQpI8lldSKfYaLMzP9oyq6IJ4fhzY=
|
||||||
github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1 h1:r1oACdS2XYiAWcfF8BJXkoU8l1J71KehGR+d99yWEDA=
|
|
||||||
github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y=
|
|
||||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.4 h1:rEvIZUSZ3fx39WIi3JkQqQBitGwpELBIYWeBVh6wn+E=
|
github.com/envoyproxy/go-control-plane v0.9.4 h1:rEvIZUSZ3fx39WIi3JkQqQBitGwpELBIYWeBVh6wn+E=
|
||||||
|
@ -228,8 +222,6 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
||||||
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
||||||
github.com/gofrs/flock v0.7.3 h1:I0EKY9l8HZCXTMYC4F80vwT6KNypV9uYKP3Alm/hjmQ=
|
github.com/gofrs/flock v0.7.3 h1:I0EKY9l8HZCXTMYC4F80vwT6KNypV9uYKP3Alm/hjmQ=
|
||||||
github.com/gofrs/flock v0.7.3/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
github.com/gofrs/flock v0.7.3/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
||||||
github.com/gofrs/flock v0.8.0 h1:MSdYClljsF3PbENUUEx85nkWfJSGfzYI9yEBZOJz6CY=
|
|
||||||
github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
|
||||||
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
|
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
|
||||||
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
|
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
|
||||||
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||||
|
@ -306,8 +298,6 @@ github.com/google/pprof v0.0.0-20200905233945-acf8798be1f7/go.mod h1:ZgVRPoUq/hf
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/google/shlex v0.0.0-20150127133951-6f45313302b9 h1:JM174NTeGNJ2m/oLH3UOWOvWQQKd+BoL3hcSCUWFLt0=
|
github.com/google/shlex v0.0.0-20150127133951-6f45313302b9 h1:JM174NTeGNJ2m/oLH3UOWOvWQQKd+BoL3hcSCUWFLt0=
|
||||||
github.com/google/shlex v0.0.0-20150127133951-6f45313302b9/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE=
|
github.com/google/shlex v0.0.0-20150127133951-6f45313302b9/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE=
|
||||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
|
|
||||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
|
|
||||||
github.com/google/uuid v0.0.0-20170306145142-6a5e28554805/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v0.0.0-20170306145142-6a5e28554805/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
|
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
|
||||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
@ -331,12 +321,8 @@ github.com/hashicorp/aws-sdk-go-base v0.6.0 h1:qmUbzM36msbBF59YctwuO5w0M2oNXjlil
|
||||||
github.com/hashicorp/aws-sdk-go-base v0.6.0/go.mod h1:2fRjWDv3jJBeN6mVWFHV6hFTNeFBx2gpDLQaZNxUVAY=
|
github.com/hashicorp/aws-sdk-go-base v0.6.0/go.mod h1:2fRjWDv3jJBeN6mVWFHV6hFTNeFBx2gpDLQaZNxUVAY=
|
||||||
github.com/hashicorp/consul/api v1.4.0 h1:jfESivXnO5uLdH650JU/6AnjRoHrLhULq0FnC3Kp9EY=
|
github.com/hashicorp/consul/api v1.4.0 h1:jfESivXnO5uLdH650JU/6AnjRoHrLhULq0FnC3Kp9EY=
|
||||||
github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU=
|
github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU=
|
||||||
github.com/hashicorp/consul/api v1.8.0 h1:/djwFfq2mSyZeP6iqRpmYUzsJtzG5I9SlP3FJvSlbTE=
|
|
||||||
github.com/hashicorp/consul/api v1.8.0/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+XbolEz1952UB+mk=
|
|
||||||
github.com/hashicorp/consul/sdk v0.4.0 h1:zBtCfKJZcJDBvSCkQJch4ulp59m1rATFLKwNo/LYY30=
|
github.com/hashicorp/consul/sdk v0.4.0 h1:zBtCfKJZcJDBvSCkQJch4ulp59m1rATFLKwNo/LYY30=
|
||||||
github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM=
|
github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM=
|
||||||
github.com/hashicorp/consul/sdk v0.7.0 h1:H6R9d008jDcHPQPAqPNuydAshJ4v5/8URdFnUvK/+sc=
|
|
||||||
github.com/hashicorp/consul/sdk v0.7.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM=
|
|
||||||
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
||||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de h1:XDCSythtg8aWSRSO29uwhgh7b127fWr+m5SemqjSUL8=
|
github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de h1:XDCSythtg8aWSRSO29uwhgh7b127fWr+m5SemqjSUL8=
|
||||||
|
@ -421,16 +407,15 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p
|
||||||
github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g=
|
github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g=
|
||||||
github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
|
github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
|
||||||
github.com/hashicorp/packer v1.6.6/go.mod h1:meJucaEeJro8UP1jw+KaOCpaiC4VE+itPLXY8lbIU2A=
|
github.com/hashicorp/packer v1.6.6/go.mod h1:meJucaEeJro8UP1jw+KaOCpaiC4VE+itPLXY8lbIU2A=
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.0.5 h1:ZaWvFY9b+YiDMmEBe5Z2UrEmmvmK7WsiZ3j6RDYVn+o=
|
github.com/hashicorp/packer v1.6.7-0.20210107234516-6564ee76e807/go.mod h1:fBz288Z4of8zkpDWwL/ngG1txC36jGSXS7dnUmUaLUs=
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.0.5/go.mod h1:xtyp/NeMzMrsESFAsUh1uFsLKgYI0kWbcMliDqvx3AM=
|
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.0.6 h1:BN2G4APXSMvDURFdnk+6DspwsU83pZeMsbEur7NmGsA=
|
github.com/hashicorp/packer-plugin-sdk v0.0.6 h1:BN2G4APXSMvDURFdnk+6DspwsU83pZeMsbEur7NmGsA=
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU=
|
github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU=
|
||||||
|
github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210111224258-fd30ebb797f0 h1:2GsORpJjcMQN84ZA1IEyHzx0zPY6QH6tNGbZc7CP6QE=
|
||||||
|
github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210111224258-fd30ebb797f0/go.mod h1:YdWTt5w6cYfaQG7IOi5iorL+3SXnz8hI0gJCi8Db/LI=
|
||||||
github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=
|
github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=
|
||||||
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
|
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
|
||||||
github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0=
|
github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0=
|
||||||
github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
|
github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
|
||||||
github.com/hashicorp/serf v0.9.5 h1:EBWvyu9tcRszt3Bxp3KNssBMP1KuHWyO51lz9+786iM=
|
|
||||||
github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
|
|
||||||
github.com/hashicorp/vault/api v1.0.4 h1:j08Or/wryXT4AcHj1oCbMd7IijXcKzYUGw59LGu9onU=
|
github.com/hashicorp/vault/api v1.0.4 h1:j08Or/wryXT4AcHj1oCbMd7IijXcKzYUGw59LGu9onU=
|
||||||
github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q=
|
github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q=
|
||||||
github.com/hashicorp/vault/sdk v0.1.13 h1:mOEPeOhT7jl0J4AMl1E705+BcmeRs1VmKNb9F0sMLy8=
|
github.com/hashicorp/vault/sdk v0.1.13 h1:mOEPeOhT7jl0J4AMl1E705+BcmeRs1VmKNb9F0sMLy8=
|
||||||
|
@ -438,8 +423,6 @@ github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvh
|
||||||
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
||||||
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ=
|
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ=
|
||||||
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
||||||
github.com/hashicorp/yamux v0.0.0-20200609203250-aecfd211c9ce h1:7UnVY3T/ZnHUrfviiAgIUjg2PXxsQfs5bphsG8F7Keo=
|
|
||||||
github.com/hashicorp/yamux v0.0.0-20200609203250-aecfd211c9ce/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
|
||||||
github.com/hetznercloud/hcloud-go v1.15.1 h1:G8Q+xyAqQ5IUY7yq4HKZgkabFa0S/VXJXq3TGCeT8JM=
|
github.com/hetznercloud/hcloud-go v1.15.1 h1:G8Q+xyAqQ5IUY7yq4HKZgkabFa0S/VXJXq3TGCeT8JM=
|
||||||
github.com/hetznercloud/hcloud-go v1.15.1/go.mod h1:8lR3yHBHZWy2uGcUi9Ibt4UOoop2wrVdERJgCtxsF3Q=
|
github.com/hetznercloud/hcloud-go v1.15.1/go.mod h1:8lR3yHBHZWy2uGcUi9Ibt4UOoop2wrVdERJgCtxsF3Q=
|
||||||
github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 h1:mSmyzhwBeQt2TlHbsXYLona9pwjWAvYGwQJ2Cq/k3VE=
|
github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 h1:mSmyzhwBeQt2TlHbsXYLona9pwjWAvYGwQJ2Cq/k3VE=
|
||||||
|
@ -481,8 +464,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGi
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169 h1:YUrU1/jxRqnt0PSrKj1Uj/wEjk/fjnE80QFfi2Zlj7Q=
|
github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169 h1:YUrU1/jxRqnt0PSrKj1Uj/wEjk/fjnE80QFfi2Zlj7Q=
|
||||||
github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169/go.mod h1:glhvuHOU9Hy7/8PwwdtnarXqLagOX0b/TbZx2zLMqEg=
|
github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169/go.mod h1:glhvuHOU9Hy7/8PwwdtnarXqLagOX0b/TbZx2zLMqEg=
|
||||||
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
|
|
||||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
|
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
|
||||||
|
@ -532,8 +513,6 @@ github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMK
|
||||||
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
|
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
|
||||||
github.com/mitchellh/go-fs v0.0.0-20180402234041-7b48fa161ea7 h1:PXPMDtfqV+rZJshQHOiwUFqlqErXaAcuWy+/ZmyRfNc=
|
github.com/mitchellh/go-fs v0.0.0-20180402234041-7b48fa161ea7 h1:PXPMDtfqV+rZJshQHOiwUFqlqErXaAcuWy+/ZmyRfNc=
|
||||||
github.com/mitchellh/go-fs v0.0.0-20180402234041-7b48fa161ea7/go.mod h1:g7SZj7ABpStq3tM4zqHiVEG5un/DZ1+qJJKO7qx1EvU=
|
github.com/mitchellh/go-fs v0.0.0-20180402234041-7b48fa161ea7/go.mod h1:g7SZj7ABpStq3tM4zqHiVEG5un/DZ1+qJJKO7qx1EvU=
|
||||||
github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff h1:bFJ74ac7ZK/jyislqiWdzrnENesFt43sNEBRh1xk/+g=
|
|
||||||
github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff/go.mod h1:g7SZj7ABpStq3tM4zqHiVEG5un/DZ1+qJJKO7qx1EvU=
|
|
||||||
github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0=
|
github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0=
|
||||||
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||||
|
@ -582,8 +561,6 @@ github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699 h1:SHe9i7h
|
||||||
github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699/go.mod h1:5AqqNH1X8zCHescKVlpSHRzrat1KCKDXqZoQPe8fY3A=
|
github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699/go.mod h1:5AqqNH1X8zCHescKVlpSHRzrat1KCKDXqZoQPe8fY3A=
|
||||||
github.com/packer-community/winrmcp v0.0.0-20180921204643-0fd363d6159a h1:A3QMuteviunoaY/8ex+RKFqwhcZJ/Cf3fCW3IwL2wx4=
|
github.com/packer-community/winrmcp v0.0.0-20180921204643-0fd363d6159a h1:A3QMuteviunoaY/8ex+RKFqwhcZJ/Cf3fCW3IwL2wx4=
|
||||||
github.com/packer-community/winrmcp v0.0.0-20180921204643-0fd363d6159a/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
|
github.com/packer-community/winrmcp v0.0.0-20180921204643-0fd363d6159a/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
|
||||||
github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db h1:9uViuKtx1jrlXLBW/pMnhOfzn3iSEdLase/But/IZRU=
|
|
||||||
github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
|
|
||||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=
|
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=
|
||||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||||
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
|
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
|
||||||
|
@ -598,8 +575,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/sftp v0.0.0-20160118190721-e84cc8c755ca h1:k8gsErq3rkcbAyCnpOycQsbw88NjCHk7L3KfBZKhQDQ=
|
github.com/pkg/sftp v0.0.0-20160118190721-e84cc8c755ca h1:k8gsErq3rkcbAyCnpOycQsbw88NjCHk7L3KfBZKhQDQ=
|
||||||
github.com/pkg/sftp v0.0.0-20160118190721-e84cc8c755ca/go.mod h1:NxmoDg/QLVWluQDUYG7XBZTLUpKeFa8e3aMf1BfjyHk=
|
github.com/pkg/sftp v0.0.0-20160118190721-e84cc8c755ca/go.mod h1:NxmoDg/QLVWluQDUYG7XBZTLUpKeFa8e3aMf1BfjyHk=
|
||||||
github.com/pkg/sftp v1.12.0 h1:/f3b24xrDhkhddlaobPe2JgBqfdt+gC/NYl0QY9IOuI=
|
|
||||||
github.com/pkg/sftp v1.12.0/go.mod h1:fUqqXB5vEgVCZ131L+9say31RAri6aF6KDViawhxKK8=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
|
github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
|
||||||
|
@ -727,7 +702,6 @@ golang.org/x/crypto v0.0.0-20200422194213-44a606286825 h1:dSChiwOTvzwbHFTMq2l6uR
|
||||||
golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 h1:sYNJzB4J8toYPQTM6pAkcmBRgw9SnQKP9oXCHfgy604=
|
golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 h1:sYNJzB4J8toYPQTM6pAkcmBRgw9SnQKP9oXCHfgy604=
|
||||||
golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
|
|
|
@ -20,16 +20,16 @@ import (
|
||||||
func getBasicParser() *Parser {
|
func getBasicParser() *Parser {
|
||||||
return &Parser{
|
return &Parser{
|
||||||
Parser: hclparse.NewParser(),
|
Parser: hclparse.NewParser(),
|
||||||
BuilderSchemas: packersdk.MapOfBuilder{
|
BuilderSchemas: packer.MapOfBuilder{
|
||||||
"amazon-ebs": func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
|
"amazon-ebs": func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
|
||||||
"virtualbox-iso": 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 },
|
"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
|
||||||
},
|
},
|
||||||
ProvisionersSchemas: packersdk.MapOfProvisioner{
|
ProvisionersSchemas: packer.MapOfProvisioner{
|
||||||
"shell": func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
|
"shell": func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
|
||||||
"file": func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
|
"file": func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
|
||||||
},
|
},
|
||||||
PostProcessorsSchemas: packersdk.MapOfPostProcessor{
|
PostProcessorsSchemas: packer.MapOfPostProcessor{
|
||||||
"amazon-import": func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
|
"amazon-import": func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
|
||||||
"manifest": func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
|
"manifest": func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
|
||||||
},
|
},
|
||||||
|
|
|
@ -800,7 +800,7 @@ func TestCoreBuild_provRetry(t *testing.T) {
|
||||||
b := TestBuilder(t, config, "test")
|
b := TestBuilder(t, config, "test")
|
||||||
pString := new(packersdk.MockProvisioner)
|
pString := new(packersdk.MockProvisioner)
|
||||||
pInt := new(packersdk.MockProvisioner)
|
pInt := new(packersdk.MockProvisioner)
|
||||||
config.Components.ProvisionerStore = packersdk.MapOfProvisioner{
|
config.Components.ProvisionerStore = MapOfProvisioner{
|
||||||
"test-string": func() (packersdk.Provisioner, error) { return pString, nil },
|
"test-string": func() (packersdk.Provisioner, error) { return pString, nil },
|
||||||
// backwards compatibility
|
// backwards compatibility
|
||||||
"test-integer": func() (packersdk.Provisioner, error) { return pInt, nil },
|
"test-integer": func() (packersdk.Provisioner, error) { return pInt, nil },
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
package packer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MapOfProvisioner map[string]func() (packersdk.Provisioner, error)
|
||||||
|
|
||||||
|
func (mop MapOfProvisioner) Has(provisioner string) bool {
|
||||||
|
_, res := mop[provisioner]
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mop MapOfProvisioner) Start(provisioner string) (packersdk.Provisioner, error) {
|
||||||
|
p, found := mop[provisioner]
|
||||||
|
if !found {
|
||||||
|
return nil, fmt.Errorf("Unknown provisioner %s", provisioner)
|
||||||
|
}
|
||||||
|
return p()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mop MapOfProvisioner) List() []string {
|
||||||
|
res := []string{}
|
||||||
|
for k := range mop {
|
||||||
|
res = append(res, k)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
type MapOfPostProcessor map[string]func() (packersdk.PostProcessor, error)
|
||||||
|
|
||||||
|
func (mopp MapOfPostProcessor) Has(postProcessor string) bool {
|
||||||
|
_, res := mopp[postProcessor]
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mopp MapOfPostProcessor) Start(postProcessor string) (packersdk.PostProcessor, error) {
|
||||||
|
p, found := mopp[postProcessor]
|
||||||
|
if !found {
|
||||||
|
return nil, fmt.Errorf("Unknown post-processor %s", postProcessor)
|
||||||
|
}
|
||||||
|
return p()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mopp MapOfPostProcessor) List() []string {
|
||||||
|
res := []string{}
|
||||||
|
for k := range mopp {
|
||||||
|
res = append(res, k)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
type MapOfBuilder map[string]func() (packersdk.Builder, error)
|
||||||
|
|
||||||
|
func (mob MapOfBuilder) Has(builder string) bool {
|
||||||
|
_, res := mob[builder]
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mob MapOfBuilder) Start(builder string) (packersdk.Builder, error) {
|
||||||
|
d, found := mob[builder]
|
||||||
|
if !found {
|
||||||
|
return nil, fmt.Errorf("Unknown builder %s", builder)
|
||||||
|
}
|
||||||
|
return d()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mob MapOfBuilder) List() []string {
|
||||||
|
res := []string{}
|
||||||
|
for k := range mob {
|
||||||
|
res = append(res, k)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
type MapOfDatasource map[string]func() (packersdk.Datasource, error)
|
||||||
|
|
||||||
|
func (mod MapOfDatasource) Has(dataSource string) bool {
|
||||||
|
_, res := mod[dataSource]
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mod MapOfDatasource) Start(dataSource string) (packersdk.Datasource, error) {
|
||||||
|
d, found := mod[dataSource]
|
||||||
|
if !found {
|
||||||
|
return nil, fmt.Errorf("Unknown data source %s", dataSource)
|
||||||
|
}
|
||||||
|
return d()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mod MapOfDatasource) List() []string {
|
||||||
|
res := []string{}
|
||||||
|
for k := range mod {
|
||||||
|
res = append(res, k)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
|
@ -13,6 +13,7 @@ import (
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/hashicorp/packer-plugin-sdk/pathing"
|
"github.com/hashicorp/packer-plugin-sdk/pathing"
|
||||||
pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin"
|
pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin"
|
||||||
|
"github.com/hashicorp/packer/packer"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PACKERSPACE is used to represent the spaces that separate args for a command
|
// PACKERSPACE is used to represent the spaces that separate args for a command
|
||||||
|
@ -22,12 +23,12 @@ const PACKERSPACE = "-PACKERSPACE-"
|
||||||
type Config struct {
|
type Config struct {
|
||||||
PluginMinPort int
|
PluginMinPort int
|
||||||
PluginMaxPort int
|
PluginMaxPort int
|
||||||
builders packersdk.MapOfBuilder
|
builders packer.MapOfBuilder
|
||||||
provisioners packersdk.MapOfProvisioner
|
provisioners packer.MapOfProvisioner
|
||||||
postProcessors packersdk.MapOfPostProcessor
|
postProcessors packer.MapOfPostProcessor
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Config) GetPlugins() (packersdk.MapOfBuilder, packersdk.MapOfProvisioner, packersdk.MapOfPostProcessor) {
|
func (c *Config) GetPlugins() (packer.MapOfBuilder, packer.MapOfProvisioner, packer.MapOfPostProcessor) {
|
||||||
return c.builders, c.provisioners, c.postProcessors
|
return c.builders, c.provisioners, c.postProcessors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,13 +41,13 @@ func (c *Config) GetPlugins() (packersdk.MapOfBuilder, packersdk.MapOfProvisione
|
||||||
// CWD has the highest priority.
|
// CWD has the highest priority.
|
||||||
func (c *Config) Discover() error {
|
func (c *Config) Discover() error {
|
||||||
if c.builders == nil {
|
if c.builders == nil {
|
||||||
c.builders = packersdk.MapOfBuilder{}
|
c.builders = packer.MapOfBuilder{}
|
||||||
}
|
}
|
||||||
if c.provisioners == nil {
|
if c.provisioners == nil {
|
||||||
c.provisioners = packersdk.MapOfProvisioner{}
|
c.provisioners = packer.MapOfProvisioner{}
|
||||||
}
|
}
|
||||||
if c.postProcessors == nil {
|
if c.postProcessors == nil {
|
||||||
c.postProcessors = packersdk.MapOfPostProcessor{}
|
c.postProcessors = packer.MapOfPostProcessor{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we are already inside a plugin process we should not need to
|
// If we are already inside a plugin process we should not need to
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin"
|
pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin"
|
||||||
"github.com/hashicorp/packer-plugin-sdk/tmp"
|
"github.com/hashicorp/packer-plugin-sdk/tmp"
|
||||||
)
|
)
|
||||||
|
@ -258,13 +258,13 @@ func createMockPlugins(t *testing.T, plugins map[string]pluginsdk.Set) {
|
||||||
var (
|
var (
|
||||||
mockPlugins = map[string]pluginsdk.Set{
|
mockPlugins = map[string]pluginsdk.Set{
|
||||||
"bird": pluginsdk.Set{
|
"bird": pluginsdk.Set{
|
||||||
Builders: map[string]packer.Builder{
|
Builders: map[string]packersdk.Builder{
|
||||||
"feather": nil,
|
"feather": nil,
|
||||||
"guacamole": nil,
|
"guacamole": nil,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"chimney": pluginsdk.Set{
|
"chimney": pluginsdk.Set{
|
||||||
PostProcessors: map[string]packer.PostProcessor{
|
PostProcessors: map[string]packersdk.PostProcessor{
|
||||||
"smoke": nil,
|
"smoke": nil,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -272,7 +272,7 @@ var (
|
||||||
|
|
||||||
defaultNameMock = map[string]pluginsdk.Set{
|
defaultNameMock = map[string]pluginsdk.Set{
|
||||||
"foo": pluginsdk.Set{
|
"foo": pluginsdk.Set{
|
||||||
Builders: map[string]packer.Builder{
|
Builders: map[string]packersdk.Builder{
|
||||||
"bar": nil,
|
"bar": nil,
|
||||||
"baz": nil,
|
"baz": nil,
|
||||||
pluginsdk.DEFAULT_NAME: nil,
|
pluginsdk.DEFAULT_NAME: nil,
|
||||||
|
@ -282,12 +282,12 @@ var (
|
||||||
|
|
||||||
doubleDefaultMock = map[string]pluginsdk.Set{
|
doubleDefaultMock = map[string]pluginsdk.Set{
|
||||||
"yolo": pluginsdk.Set{
|
"yolo": pluginsdk.Set{
|
||||||
Builders: map[string]packer.Builder{
|
Builders: map[string]packersdk.Builder{
|
||||||
"bar": nil,
|
"bar": nil,
|
||||||
"baz": nil,
|
"baz": nil,
|
||||||
pluginsdk.DEFAULT_NAME: nil,
|
pluginsdk.DEFAULT_NAME: nil,
|
||||||
},
|
},
|
||||||
PostProcessors: map[string]packer.PostProcessor{
|
PostProcessors: map[string]packersdk.PostProcessor{
|
||||||
pluginsdk.DEFAULT_NAME: nil,
|
pluginsdk.DEFAULT_NAME: nil,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -295,7 +295,7 @@ var (
|
||||||
|
|
||||||
badDefaultNameMock = map[string]pluginsdk.Set{
|
badDefaultNameMock = map[string]pluginsdk.Set{
|
||||||
"foo": pluginsdk.Set{
|
"foo": pluginsdk.Set{
|
||||||
Builders: map[string]packer.Builder{
|
Builders: map[string]packersdk.Builder{
|
||||||
"bar": nil,
|
"bar": nil,
|
||||||
"baz": nil,
|
"baz": nil,
|
||||||
pluginsdk.DEFAULT_NAME: nil,
|
pluginsdk.DEFAULT_NAME: nil,
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
func TestCoreConfig(t *testing.T) *CoreConfig {
|
func TestCoreConfig(t *testing.T) *CoreConfig {
|
||||||
// Create some test components
|
// Create some test components
|
||||||
components := ComponentFinder{
|
components := ComponentFinder{
|
||||||
BuilderStore: packersdk.MapOfBuilder{
|
BuilderStore: MapOfBuilder{
|
||||||
"test": func() (packersdk.Builder, error) { return &packersdk.MockBuilder{}, nil },
|
"test": func() (packersdk.Builder, error) { return &packersdk.MockBuilder{}, nil },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ func TestUi(t *testing.T) packersdk.Ui {
|
||||||
func TestBuilder(t *testing.T, c *CoreConfig, n string) *packersdk.MockBuilder {
|
func TestBuilder(t *testing.T, c *CoreConfig, n string) *packersdk.MockBuilder {
|
||||||
var b packersdk.MockBuilder
|
var b packersdk.MockBuilder
|
||||||
|
|
||||||
c.Components.BuilderStore = packersdk.MapOfBuilder{
|
c.Components.BuilderStore = MapOfBuilder{
|
||||||
n: func() (packersdk.Builder, error) { return &b, nil },
|
n: func() (packersdk.Builder, error) { return &b, nil },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ func TestBuilder(t *testing.T, c *CoreConfig, n string) *packersdk.MockBuilder {
|
||||||
func TestProvisioner(t *testing.T, c *CoreConfig, n string) *packersdk.MockProvisioner {
|
func TestProvisioner(t *testing.T, c *CoreConfig, n string) *packersdk.MockProvisioner {
|
||||||
var b packersdk.MockProvisioner
|
var b packersdk.MockProvisioner
|
||||||
|
|
||||||
c.Components.ProvisionerStore = packersdk.MapOfProvisioner{
|
c.Components.ProvisionerStore = MapOfProvisioner{
|
||||||
n: func() (packersdk.Provisioner, error) { return &b, nil },
|
n: func() (packersdk.Provisioner, error) { return &b, nil },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ func TestProvisioner(t *testing.T, c *CoreConfig, n string) *packersdk.MockProvi
|
||||||
func TestPostProcessor(t *testing.T, c *CoreConfig, n string) *MockPostProcessor {
|
func TestPostProcessor(t *testing.T, c *CoreConfig, n string) *MockPostProcessor {
|
||||||
var b MockPostProcessor
|
var b MockPostProcessor
|
||||||
|
|
||||||
c.Components.PostProcessorStore = packersdk.MapOfPostProcessor{
|
c.Components.PostProcessorStore = MapOfPostProcessor{
|
||||||
n: func() (packersdk.PostProcessor, error) { return &b, nil },
|
n: func() (packersdk.PostProcessor, error) { return &b, nil },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/hashicorp/packer-plugin-sdk/multistep"
|
"github.com/hashicorp/packer-plugin-sdk/multistep"
|
||||||
"github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/hashicorp/packer/builder/yandex"
|
"github.com/hashicorp/packer/builder/yandex"
|
||||||
"github.com/yandex-cloud/go-genproto/yandex/cloud/compute/v1"
|
"github.com/yandex-cloud/go-genproto/yandex/cloud/compute/v1"
|
||||||
)
|
)
|
||||||
|
@ -17,7 +17,7 @@ type StepAttachDisk struct {
|
||||||
|
|
||||||
func (c *StepAttachDisk) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction {
|
func (c *StepAttachDisk) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction {
|
||||||
driver := state.Get("driver").(yandex.Driver)
|
driver := state.Get("driver").(yandex.Driver)
|
||||||
ui := state.Get("ui").(packer.Ui)
|
ui := state.Get("ui").(packersdk.Ui)
|
||||||
instanceID := state.Get("instance_id").(string)
|
instanceID := state.Get("instance_id").(string)
|
||||||
|
|
||||||
ui.Say("Create secondary disk from image for export...")
|
ui.Say("Create secondary disk from image for export...")
|
||||||
|
@ -82,7 +82,7 @@ func (c *StepAttachDisk) Run(ctx context.Context, state multistep.StateBag) mult
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StepAttachDisk) Cleanup(state multistep.StateBag) {
|
func (s *StepAttachDisk) Cleanup(state multistep.StateBag) {
|
||||||
ui := state.Get("ui").(packer.Ui)
|
ui := state.Get("ui").(packersdk.Ui)
|
||||||
driver := state.Get("driver").(yandex.Driver)
|
driver := state.Get("driver").(yandex.Driver)
|
||||||
if diskID, ok := state.GetOk("secondary_disk_id"); ok {
|
if diskID, ok := state.GetOk("secondary_disk_id"); ok {
|
||||||
ui.Say("Remove the secondary disk...")
|
ui.Say("Remove the secondary disk...")
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/aws/session"
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
"github.com/aws/aws-sdk-go/service/s3"
|
"github.com/aws/aws-sdk-go/service/s3"
|
||||||
"github.com/hashicorp/packer-plugin-sdk/multistep"
|
"github.com/hashicorp/packer-plugin-sdk/multistep"
|
||||||
"github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/hashicorp/packer/builder/yandex"
|
"github.com/hashicorp/packer/builder/yandex"
|
||||||
"github.com/yandex-cloud/go-genproto/yandex/cloud/iam/v1/awscompatibility"
|
"github.com/yandex-cloud/go-genproto/yandex/cloud/iam/v1/awscompatibility"
|
||||||
)
|
)
|
||||||
|
@ -25,7 +25,7 @@ type StepCreateS3Keys struct {
|
||||||
|
|
||||||
func (c *StepCreateS3Keys) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction {
|
func (c *StepCreateS3Keys) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction {
|
||||||
driver := state.Get("driver").(yandex.Driver)
|
driver := state.Get("driver").(yandex.Driver)
|
||||||
ui := state.Get("ui").(packer.Ui)
|
ui := state.Get("ui").(packersdk.Ui)
|
||||||
|
|
||||||
ui.Say("Create temporary storage Access Key")
|
ui.Say("Create temporary storage Access Key")
|
||||||
// Create temporary storage Access Key
|
// Create temporary storage Access Key
|
||||||
|
@ -48,7 +48,7 @@ func (c *StepCreateS3Keys) Run(ctx context.Context, state multistep.StateBag) mu
|
||||||
|
|
||||||
func (s *StepCreateS3Keys) Cleanup(state multistep.StateBag) {
|
func (s *StepCreateS3Keys) Cleanup(state multistep.StateBag) {
|
||||||
driver := state.Get("driver").(yandex.Driver)
|
driver := state.Get("driver").(yandex.Driver)
|
||||||
ui := state.Get("ui").(packer.Ui)
|
ui := state.Get("ui").(packersdk.Ui)
|
||||||
|
|
||||||
if val, ok := state.GetOk("s3_secret"); ok {
|
if val, ok := state.GetOk("s3_secret"); ok {
|
||||||
ui.Say("S3 secrets have been found")
|
ui.Say("S3 secrets have been found")
|
||||||
|
|
23
vendor/github.com/hashicorp/packer-plugin-sdk/packer/datasource.go
generated
vendored
Normal file
23
vendor/github.com/hashicorp/packer-plugin-sdk/packer/datasource.go
generated
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package packer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl/v2/hcldec"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Datasources make data available for use in any source block of a Packer configuration.
|
||||||
|
type Datasource interface {
|
||||||
|
// HCL2Speccer is a type that can tell it's own hcl2 conf/layout.
|
||||||
|
HCL2Speccer
|
||||||
|
|
||||||
|
// Configure takes values from HCL2 and applies them to the struct
|
||||||
|
Configure(...interface{}) error
|
||||||
|
|
||||||
|
// OutputSpec is the HCL2 layout of the variable output, it will allow
|
||||||
|
// Packer to validate whether someone is using the output of the data
|
||||||
|
// source correctly without having to execute the data source call.
|
||||||
|
OutputSpec() hcldec.ObjectSpec
|
||||||
|
|
||||||
|
// Execute the func call and return the values
|
||||||
|
Execute() (cty.Value, error)
|
||||||
|
}
|
47
vendor/github.com/hashicorp/packer-plugin-sdk/packer/datasource_mock.go
generated
vendored
Normal file
47
vendor/github.com/hashicorp/packer-plugin-sdk/packer/datasource_mock.go
generated
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
//go:generate mapstructure-to-hcl2 -type MockDatasource,MockDatasourceResponse
|
||||||
|
package packer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl/v2/hcldec"
|
||||||
|
configHelper "github.com/hashicorp/packer-plugin-sdk/template/config"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MockDatasource struct {
|
||||||
|
Foo string
|
||||||
|
|
||||||
|
OutputSpecCalled bool `mapstructure-to-hcl2:",skip"`
|
||||||
|
ConfigureCalled bool `mapstructure-to-hcl2:",skip"`
|
||||||
|
ConfigureConfigs []interface{} `mapstructure-to-hcl2:",skip"`
|
||||||
|
ExecuteCalled bool `mapstructure-to-hcl2:",skip"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type MockDatasourceResponse struct {
|
||||||
|
Foo string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *MockDatasource) ConfigSpec() hcldec.ObjectSpec {
|
||||||
|
return d.FlatMapstructure().HCL2Spec()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *MockDatasource) OutputSpec() hcldec.ObjectSpec {
|
||||||
|
d.OutputSpecCalled = true
|
||||||
|
return (&MockDatasourceResponse{}).FlatMapstructure().HCL2Spec()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *MockDatasource) Configure(configs ...interface{}) error {
|
||||||
|
configHelper.Decode(d, nil, configs...)
|
||||||
|
d.ConfigureCalled = true
|
||||||
|
d.ConfigureConfigs = configs
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *MockDatasource) Execute() (cty.Value, error) {
|
||||||
|
d.ExecuteCalled = true
|
||||||
|
if d.Foo == "" {
|
||||||
|
d.Foo = "bar"
|
||||||
|
}
|
||||||
|
return cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"foo": cty.StringVal(d.Foo),
|
||||||
|
}), nil
|
||||||
|
}
|
54
vendor/github.com/hashicorp/packer-plugin-sdk/packer/datasource_mock.hcl2spec.go
generated
vendored
Normal file
54
vendor/github.com/hashicorp/packer-plugin-sdk/packer/datasource_mock.hcl2spec.go
generated
vendored
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
// Code generated by "mapstructure-to-hcl2 -type MockDatasource,MockDatasourceResponse"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package packer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl/v2/hcldec"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FlatMockDatasource is an auto-generated flat version of MockDatasource.
|
||||||
|
// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
|
||||||
|
type FlatMockDatasource struct {
|
||||||
|
Foo *string `cty:"foo" hcl:"foo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FlatMapstructure returns a new FlatMockDatasource.
|
||||||
|
// FlatMockDatasource is an auto-generated flat version of MockDatasource.
|
||||||
|
// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
|
||||||
|
func (*MockDatasource) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } {
|
||||||
|
return new(FlatMockDatasource)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HCL2Spec returns the hcl spec of a MockDatasource.
|
||||||
|
// This spec is used by HCL to read the fields of MockDatasource.
|
||||||
|
// The decoded values from this spec will then be applied to a FlatMockDatasource.
|
||||||
|
func (*FlatMockDatasource) HCL2Spec() map[string]hcldec.Spec {
|
||||||
|
s := map[string]hcldec.Spec{
|
||||||
|
"foo": &hcldec.AttrSpec{Name: "foo", Type: cty.String, Required: false},
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
// FlatMockDatasourceResponse is an auto-generated flat version of MockDatasourceResponse.
|
||||||
|
// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
|
||||||
|
type FlatMockDatasourceResponse struct {
|
||||||
|
Foo *string `cty:"foo" hcl:"foo"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FlatMapstructure returns a new FlatMockDatasourceResponse.
|
||||||
|
// FlatMockDatasourceResponse is an auto-generated flat version of MockDatasourceResponse.
|
||||||
|
// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
|
||||||
|
func (*MockDatasourceResponse) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } {
|
||||||
|
return new(FlatMockDatasourceResponse)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HCL2Spec returns the hcl spec of a MockDatasourceResponse.
|
||||||
|
// This spec is used by HCL to read the fields of MockDatasourceResponse.
|
||||||
|
// The decoded values from this spec will then be applied to a FlatMockDatasourceResponse.
|
||||||
|
func (*FlatMockDatasourceResponse) HCL2Spec() map[string]hcldec.Spec {
|
||||||
|
s := map[string]hcldec.Spec{
|
||||||
|
"foo": &hcldec.AttrSpec{Name: "foo", Type: cty.String, Required: false},
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
|
@ -72,3 +72,26 @@ func (mob MapOfBuilder) List() []string {
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MapOfDatasource map[string]func() (Datasource, error)
|
||||||
|
|
||||||
|
func (mod MapOfDatasource) Has(dataSource string) bool {
|
||||||
|
_, res := mod[dataSource]
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mod MapOfDatasource) Start(dataSource string) (Datasource, error) {
|
||||||
|
d, found := mod[dataSource]
|
||||||
|
if !found {
|
||||||
|
return nil, fmt.Errorf("Unknown data source %s", dataSource)
|
||||||
|
}
|
||||||
|
return d()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mod MapOfDatasource) List() []string {
|
||||||
|
res := []string{}
|
||||||
|
for k := range mod {
|
||||||
|
res = append(res, k)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@ import (
|
||||||
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
pluginVersion "github.com/hashicorp/packer-plugin-sdk/version"
|
pluginVersion "github.com/hashicorp/packer-plugin-sdk/version"
|
||||||
"github.com/hashicorp/packer/version"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Use this name to make the name of the plugin in the packer template match
|
// Use this name to make the name of the plugin in the packer template match
|
||||||
|
@ -22,7 +21,6 @@ import (
|
||||||
// plugin per plugin type.
|
// plugin per plugin type.
|
||||||
const DEFAULT_NAME = "-packer-default-plugin-name-"
|
const DEFAULT_NAME = "-packer-default-plugin-name-"
|
||||||
|
|
||||||
|
|
||||||
// Set is a plugin set. It's API is meant to be very close to what is returned
|
// Set is a plugin set. It's API is meant to be very close to what is returned
|
||||||
// by plugin.Server
|
// by plugin.Server
|
||||||
// It can describe itself or run a single plugin using the CLI arguments.
|
// It can describe itself or run a single plugin using the CLI arguments.
|
||||||
|
@ -32,6 +30,7 @@ type Set struct {
|
||||||
Builders map[string]packersdk.Builder
|
Builders map[string]packersdk.Builder
|
||||||
PostProcessors map[string]packersdk.PostProcessor
|
PostProcessors map[string]packersdk.PostProcessor
|
||||||
Provisioners map[string]packersdk.Provisioner
|
Provisioners map[string]packersdk.Provisioner
|
||||||
|
Datasources map[string]packersdk.Datasource
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetDescription describes a Set.
|
// SetDescription describes a Set.
|
||||||
|
@ -41,6 +40,7 @@ type SetDescription struct {
|
||||||
Builders []string `json:"builders"`
|
Builders []string `json:"builders"`
|
||||||
PostProcessors []string `json:"post_processors"`
|
PostProcessors []string `json:"post_processors"`
|
||||||
Provisioners []string `json:"provisioners"`
|
Provisioners []string `json:"provisioners"`
|
||||||
|
Datasources []string `json:"datasources"`
|
||||||
}
|
}
|
||||||
|
|
||||||
////
|
////
|
||||||
|
@ -48,12 +48,13 @@ type SetDescription struct {
|
||||||
////
|
////
|
||||||
|
|
||||||
func NewSet() *Set {
|
func NewSet() *Set {
|
||||||
|
sdkVersion := pluginVersion.InitializePluginVersion(pluginVersion.Version, pluginVersion.VersionPrerelease)
|
||||||
return &Set{
|
return &Set{
|
||||||
version: version.String(),
|
sdkVersion: sdkVersion.String(),
|
||||||
sdkVersion: version.String(), // TODO: Set me after the split
|
|
||||||
Builders: map[string]packersdk.Builder{},
|
Builders: map[string]packersdk.Builder{},
|
||||||
PostProcessors: map[string]packersdk.PostProcessor{},
|
PostProcessors: map[string]packersdk.PostProcessor{},
|
||||||
Provisioners: map[string]packersdk.Provisioner{},
|
Provisioners: map[string]packersdk.Provisioner{},
|
||||||
|
Datasources: map[string]packersdk.Datasource{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,6 +83,13 @@ func (i *Set) RegisterProvisioner(name string, provisioner packersdk.Provisioner
|
||||||
i.Provisioners[name] = provisioner
|
i.Provisioners[name] = provisioner
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *Set) RegisterDatasource(name string, datasource packersdk.Datasource) {
|
||||||
|
if _, found := i.Datasources[name]; found {
|
||||||
|
panic(fmt.Errorf("registering duplicate %s datasource", name))
|
||||||
|
}
|
||||||
|
i.Datasources[name] = datasource
|
||||||
|
}
|
||||||
|
|
||||||
// Run takes the os Args and runs a packer plugin command from it.
|
// Run takes the os Args and runs a packer plugin command from it.
|
||||||
// * "describe" command makes the plugin set describe itself.
|
// * "describe" command makes the plugin set describe itself.
|
||||||
// * "start builder builder-name" starts the builder "builder-name"
|
// * "start builder builder-name" starts the builder "builder-name"
|
||||||
|
@ -125,6 +133,8 @@ func (i *Set) start(kind, name string) error {
|
||||||
err = server.RegisterPostProcessor(i.PostProcessors[name])
|
err = server.RegisterPostProcessor(i.PostProcessors[name])
|
||||||
case "provisioner":
|
case "provisioner":
|
||||||
err = server.RegisterProvisioner(i.Provisioners[name])
|
err = server.RegisterProvisioner(i.Provisioners[name])
|
||||||
|
case "datasource":
|
||||||
|
err = server.RegisterDatasource(i.Datasources[name])
|
||||||
default:
|
default:
|
||||||
err = fmt.Errorf("Unknown plugin type: %s", kind)
|
err = fmt.Errorf("Unknown plugin type: %s", kind)
|
||||||
}
|
}
|
||||||
|
@ -146,6 +156,7 @@ func (i *Set) description() SetDescription {
|
||||||
Builders: i.buildersDescription(),
|
Builders: i.buildersDescription(),
|
||||||
PostProcessors: i.postProcessorsDescription(),
|
PostProcessors: i.postProcessorsDescription(),
|
||||||
Provisioners: i.provisionersDescription(),
|
Provisioners: i.provisionersDescription(),
|
||||||
|
Datasources: i.datasourceDescription(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,3 +190,12 @@ func (i *Set) provisionersDescription() []string {
|
||||||
sort.Strings(out)
|
sort.Strings(out)
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *Set) datasourceDescription() []string {
|
||||||
|
out := []string{}
|
||||||
|
for key := range i.Datasources {
|
||||||
|
out = append(out, key)
|
||||||
|
}
|
||||||
|
sort.Strings(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net/rpc"
|
"net/rpc"
|
||||||
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
"github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/ugorji/go/codec"
|
"github.com/ugorji/go/codec"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ func (c *Client) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Artifact() packersdk.Artifact {
|
func (c *Client) Artifact() packer.Artifact {
|
||||||
return &artifact{
|
return &artifact{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultArtifactEndpoint,
|
endpoint: DefaultArtifactEndpoint,
|
||||||
|
@ -78,7 +78,7 @@ func (c *Client) Artifact() packersdk.Artifact {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Build() packersdk.Build {
|
func (c *Client) Build() packer.Build {
|
||||||
return &build{
|
return &build{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultBuildEndpoint,
|
endpoint: DefaultBuildEndpoint,
|
||||||
|
@ -88,7 +88,7 @@ func (c *Client) Build() packersdk.Build {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Builder() packersdk.Builder {
|
func (c *Client) Builder() packer.Builder {
|
||||||
return &builder{
|
return &builder{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultBuilderEndpoint,
|
endpoint: DefaultBuilderEndpoint,
|
||||||
|
@ -98,7 +98,7 @@ func (c *Client) Builder() packersdk.Builder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Communicator() packersdk.Communicator {
|
func (c *Client) Communicator() packer.Communicator {
|
||||||
return &communicator{
|
return &communicator{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultCommunicatorEndpoint,
|
endpoint: DefaultCommunicatorEndpoint,
|
||||||
|
@ -108,7 +108,7 @@ func (c *Client) Communicator() packersdk.Communicator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Hook() packersdk.Hook {
|
func (c *Client) Hook() packer.Hook {
|
||||||
return &hook{
|
return &hook{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultHookEndpoint,
|
endpoint: DefaultHookEndpoint,
|
||||||
|
@ -118,7 +118,7 @@ func (c *Client) Hook() packersdk.Hook {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) PostProcessor() packersdk.PostProcessor {
|
func (c *Client) PostProcessor() packer.PostProcessor {
|
||||||
return &postProcessor{
|
return &postProcessor{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultPostProcessorEndpoint,
|
endpoint: DefaultPostProcessorEndpoint,
|
||||||
|
@ -128,7 +128,7 @@ func (c *Client) PostProcessor() packersdk.PostProcessor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Provisioner() packersdk.Provisioner {
|
func (c *Client) Provisioner() packer.Provisioner {
|
||||||
return &provisioner{
|
return &provisioner{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultProvisionerEndpoint,
|
endpoint: DefaultProvisionerEndpoint,
|
||||||
|
@ -138,7 +138,17 @@ func (c *Client) Provisioner() packersdk.Provisioner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Ui() packersdk.Ui {
|
func (c *Client) Datasource() packer.Datasource {
|
||||||
|
return &datasource{
|
||||||
|
commonClient: commonClient{
|
||||||
|
endpoint: DefaultDatasourceEndpoint,
|
||||||
|
client: c.client,
|
||||||
|
mux: c.mux,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Ui() packer.Ui {
|
||||||
return &Ui{
|
return &Ui{
|
||||||
commonClient: commonClient{
|
commonClient: commonClient{
|
||||||
endpoint: DefaultUiEndpoint,
|
endpoint: DefaultUiEndpoint,
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/gob"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/hashicorp/hcl/v2/hcldec"
|
||||||
|
"github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
// An implementation of packer.Datasource where the data source is actually
|
||||||
|
// executed over an RPC connection.
|
||||||
|
type datasource struct {
|
||||||
|
commonClient
|
||||||
|
}
|
||||||
|
|
||||||
|
type DatasourceConfigureArgs struct {
|
||||||
|
Configs []interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
type DatasourceConfigureResponse struct {
|
||||||
|
Error *BasicError
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *datasource) Configure(configs ...interface{}) error {
|
||||||
|
configs, err := encodeCTYValues(configs)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var resp DatasourceConfigureResponse
|
||||||
|
if err := d.client.Call(d.endpoint+".Configure", &DatasourceConfigureArgs{Configs: configs}, &resp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if resp.Error != nil {
|
||||||
|
err = resp.Error
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
type OutputSpecResponse struct {
|
||||||
|
OutputSpec []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *datasource) OutputSpec() hcldec.ObjectSpec {
|
||||||
|
resp := new(OutputSpecResponse)
|
||||||
|
if err := d.client.Call(d.endpoint+".OutputSpec", new(interface{}), resp); err != nil {
|
||||||
|
err := fmt.Errorf("Datasource.OutputSpec failed: %v", err)
|
||||||
|
panic(err.Error())
|
||||||
|
}
|
||||||
|
res := hcldec.ObjectSpec{}
|
||||||
|
err := gob.NewDecoder(bytes.NewReader(resp.OutputSpec)).Decode(&res)
|
||||||
|
if err != nil {
|
||||||
|
panic("ici:" + err.Error())
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
type ExecuteResponse struct {
|
||||||
|
Value []byte
|
||||||
|
Error *BasicError
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *datasource) Execute() (cty.Value, error) {
|
||||||
|
res := new(cty.Value)
|
||||||
|
resp := new(ExecuteResponse)
|
||||||
|
if err := d.client.Call(d.endpoint+".Execute", new(interface{}), resp); err != nil {
|
||||||
|
err := fmt.Errorf("Datasource.Execute failed: %v", err)
|
||||||
|
return *res, err
|
||||||
|
}
|
||||||
|
err := gob.NewDecoder(bytes.NewReader(resp.Value)).Decode(&res)
|
||||||
|
if err != nil {
|
||||||
|
return *res, err
|
||||||
|
}
|
||||||
|
return *res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DatasourceServer wraps a packer.Datasource implementation and makes it
|
||||||
|
// exportable as part of a Golang RPC server.
|
||||||
|
type DatasourceServer struct {
|
||||||
|
contextCancel func()
|
||||||
|
|
||||||
|
commonServer
|
||||||
|
d packer.Datasource
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DatasourceServer) Configure(args *DatasourceConfigureArgs, reply *DatasourceConfigureResponse) error {
|
||||||
|
config, err := decodeCTYValues(args.Configs)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = d.d.Configure(config...)
|
||||||
|
reply.Error = NewBasicError(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DatasourceServer) OutputSpec(args *DatasourceConfigureArgs, reply *OutputSpecResponse) error {
|
||||||
|
spec := d.d.OutputSpec()
|
||||||
|
b := bytes.NewBuffer(nil)
|
||||||
|
err := gob.NewEncoder(b).Encode(spec)
|
||||||
|
reply.OutputSpec = b.Bytes()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DatasourceServer) Execute(args *interface{}, reply *ExecuteResponse) error {
|
||||||
|
spec, err := d.d.Execute()
|
||||||
|
reply.Error = NewBasicError(err)
|
||||||
|
b := bytes.NewBuffer(nil)
|
||||||
|
err = gob.NewEncoder(b).Encode(spec)
|
||||||
|
reply.Value = b.Bytes()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DatasourceServer) Cancel(args *interface{}, reply *interface{}) error {
|
||||||
|
if d.contextCancel != nil {
|
||||||
|
d.contextCancel()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
gob.Register(new(cty.Value))
|
||||||
|
}
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net/rpc"
|
"net/rpc"
|
||||||
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
"github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/ugorji/go/codec"
|
"github.com/ugorji/go/codec"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ const (
|
||||||
DefaultHookEndpoint = "Hook"
|
DefaultHookEndpoint = "Hook"
|
||||||
DefaultPostProcessorEndpoint = "PostProcessor"
|
DefaultPostProcessorEndpoint = "PostProcessor"
|
||||||
DefaultProvisionerEndpoint = "Provisioner"
|
DefaultProvisionerEndpoint = "Provisioner"
|
||||||
|
DefaultDatasourceEndpoint = "Datasource"
|
||||||
DefaultUiEndpoint = "Ui"
|
DefaultUiEndpoint = "Ui"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -63,20 +64,20 @@ func (s *Server) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterArtifact(a packersdk.Artifact) error {
|
func (s *Server) RegisterArtifact(a packer.Artifact) error {
|
||||||
return s.server.RegisterName(DefaultArtifactEndpoint, &ArtifactServer{
|
return s.server.RegisterName(DefaultArtifactEndpoint, &ArtifactServer{
|
||||||
artifact: a,
|
artifact: a,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterBuild(b packersdk.Build) error {
|
func (s *Server) RegisterBuild(b packer.Build) error {
|
||||||
return s.server.RegisterName(DefaultBuildEndpoint, &BuildServer{
|
return s.server.RegisterName(DefaultBuildEndpoint, &BuildServer{
|
||||||
build: b,
|
build: b,
|
||||||
mux: s.mux,
|
mux: s.mux,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterBuilder(b packersdk.Builder) error {
|
func (s *Server) RegisterBuilder(b packer.Builder) error {
|
||||||
return s.server.RegisterName(DefaultBuilderEndpoint, &BuilderServer{
|
return s.server.RegisterName(DefaultBuilderEndpoint, &BuilderServer{
|
||||||
commonServer: commonServer{
|
commonServer: commonServer{
|
||||||
selfConfigurable: b,
|
selfConfigurable: b,
|
||||||
|
@ -86,7 +87,7 @@ func (s *Server) RegisterBuilder(b packersdk.Builder) error {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterCommunicator(c packersdk.Communicator) error {
|
func (s *Server) RegisterCommunicator(c packer.Communicator) error {
|
||||||
return s.server.RegisterName(DefaultCommunicatorEndpoint, &CommunicatorServer{
|
return s.server.RegisterName(DefaultCommunicatorEndpoint, &CommunicatorServer{
|
||||||
c: c,
|
c: c,
|
||||||
commonServer: commonServer{
|
commonServer: commonServer{
|
||||||
|
@ -95,14 +96,14 @@ func (s *Server) RegisterCommunicator(c packersdk.Communicator) error {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterHook(h packersdk.Hook) error {
|
func (s *Server) RegisterHook(h packer.Hook) error {
|
||||||
return s.server.RegisterName(DefaultHookEndpoint, &HookServer{
|
return s.server.RegisterName(DefaultHookEndpoint, &HookServer{
|
||||||
hook: h,
|
hook: h,
|
||||||
mux: s.mux,
|
mux: s.mux,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterPostProcessor(p packersdk.PostProcessor) error {
|
func (s *Server) RegisterPostProcessor(p packer.PostProcessor) error {
|
||||||
return s.server.RegisterName(DefaultPostProcessorEndpoint, &PostProcessorServer{
|
return s.server.RegisterName(DefaultPostProcessorEndpoint, &PostProcessorServer{
|
||||||
commonServer: commonServer{
|
commonServer: commonServer{
|
||||||
selfConfigurable: p,
|
selfConfigurable: p,
|
||||||
|
@ -112,7 +113,7 @@ func (s *Server) RegisterPostProcessor(p packersdk.PostProcessor) error {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterProvisioner(p packersdk.Provisioner) error {
|
func (s *Server) RegisterProvisioner(p packer.Provisioner) error {
|
||||||
return s.server.RegisterName(DefaultProvisionerEndpoint, &ProvisionerServer{
|
return s.server.RegisterName(DefaultProvisionerEndpoint, &ProvisionerServer{
|
||||||
commonServer: commonServer{
|
commonServer: commonServer{
|
||||||
selfConfigurable: p,
|
selfConfigurable: p,
|
||||||
|
@ -122,7 +123,17 @@ func (s *Server) RegisterProvisioner(p packersdk.Provisioner) error {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) RegisterUi(ui packersdk.Ui) error {
|
func (s *Server) RegisterDatasource(d packer.Datasource) error {
|
||||||
|
return s.server.RegisterName(DefaultDatasourceEndpoint, &DatasourceServer{
|
||||||
|
commonServer: commonServer{
|
||||||
|
selfConfigurable: d,
|
||||||
|
mux: s.mux,
|
||||||
|
},
|
||||||
|
d: d,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Server) RegisterUi(ui packer.Ui) error {
|
||||||
return s.server.RegisterName(DefaultUiEndpoint, &UiServer{
|
return s.server.RegisterName(DefaultUiEndpoint, &UiServer{
|
||||||
ui: ui,
|
ui: ui,
|
||||||
register: s.server.RegisterName,
|
register: s.server.RegisterName,
|
||||||
|
|
|
@ -12,6 +12,14 @@ import (
|
||||||
// The git commit that was compiled. This will be filled in by the compiler.
|
// The git commit that was compiled. This will be filled in by the compiler.
|
||||||
var GitCommit string
|
var GitCommit string
|
||||||
|
|
||||||
|
// Package version helps plugin creators set and track the sdk version using
|
||||||
|
const Version = "0.0.6"
|
||||||
|
|
||||||
|
// A pre-release marker for the version. If this is "" (empty string)
|
||||||
|
// then it means that it is a final release. Otherwise, this is a pre-release
|
||||||
|
// such as "dev" (in development), "beta", "rc1", etc.
|
||||||
|
const VersionPrerelease = "dev"
|
||||||
|
|
||||||
// InitializePluginVersion initializes the SemVer and returns a version var.
|
// InitializePluginVersion initializes the SemVer and returns a version var.
|
||||||
// If the provided "version" string is not valid, the call to version.Must
|
// If the provided "version" string is not valid, the call to version.Must
|
||||||
// will panic. Therefore, this function should always be called in a package
|
// will panic. Therefore, this function should always be called in a package
|
||||||
|
|
|
@ -355,7 +355,7 @@ github.com/hashicorp/hcl/v2/hclparse
|
||||||
github.com/hashicorp/hcl/v2/hclsyntax
|
github.com/hashicorp/hcl/v2/hclsyntax
|
||||||
github.com/hashicorp/hcl/v2/hclwrite
|
github.com/hashicorp/hcl/v2/hclwrite
|
||||||
github.com/hashicorp/hcl/v2/json
|
github.com/hashicorp/hcl/v2/json
|
||||||
# github.com/hashicorp/packer-plugin-sdk v0.0.6
|
# github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210111224258-fd30ebb797f0
|
||||||
github.com/hashicorp/packer-plugin-sdk/acctest
|
github.com/hashicorp/packer-plugin-sdk/acctest
|
||||||
github.com/hashicorp/packer-plugin-sdk/acctest/provisioneracc
|
github.com/hashicorp/packer-plugin-sdk/acctest/provisioneracc
|
||||||
github.com/hashicorp/packer-plugin-sdk/acctest/testutils
|
github.com/hashicorp/packer-plugin-sdk/acctest/testutils
|
||||||
|
|
Loading…
Reference in New Issue