Merge pull request #3891 from nouney/f-generated-files

Add "generated" file tag to allow users to upload files created on the fly.
pull/6114/head
M. Marsh 8 years ago committed by GitHub
commit 56dd8cdb63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -26,6 +26,9 @@ type Config struct {
// Direction
Direction string
// False if the sources have to exist.
Generated bool
ctx interpolate.Context
}
@ -61,7 +64,7 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
if p.config.Direction == "upload" {
for _, src := range p.config.Sources {
if _, err := os.Stat(src); err != nil {
if _, err := os.Stat(src); p.config.Generated == false && err != nil {
errs = packer.MultiErrorAppend(errs,
fmt.Errorf("Bad source '%s': %s", src, err))
}

@ -45,6 +45,12 @@ func TestProvisionerPrepare_InvalidSource(t *testing.T) {
if err == nil {
t.Fatalf("should require existing file")
}
config["generated"] = false
err = p.Prepare(config)
if err == nil {
t.Fatalf("should required existing file")
}
}
func TestProvisionerPrepare_ValidSource(t *testing.T) {
@ -58,13 +64,30 @@ func TestProvisionerPrepare_ValidSource(t *testing.T) {
config := testConfig()
config["source"] = tf.Name()
err = p.Prepare(config)
if err != nil {
t.Fatalf("should allow valid file: %s", err)
}
config["generated"] = false
err = p.Prepare(config)
if err != nil {
t.Fatalf("should allow valid file: %s", err)
}
}
func TestProvisionerPrepare_GeneratedSource(t *testing.T) {
var p Provisioner
config := testConfig()
config["source"] = "/this/should/not/exist"
config["generated"] = true
err := p.Prepare(config)
if err != nil {
t.Fatalf("should allow non-existing file: %s", err)
}
}
func TestProvisionerPrepare_EmptyDestination(t *testing.T) {
var p Provisioner

@ -48,6 +48,9 @@ The available configuration options are listed below. All elements are required.
"upload". If it is set to "download" then the file "source" in the machine
will be downloaded locally to "destination"
- `generated` (boolean) - If true, check the file existence only before uploading.
This allows to upload files created on-the-fly. This defaults to false.
## Directory Uploads
The file provisioner is also able to upload a complete directory to the remote

Loading…
Cancel
Save