Add lxc to vagrant post-processor

This commit is contained in:
Michele Catalano 2015-06-12 10:18:59 +02:00 committed by Megan Marsh
parent f409dc54f5
commit e1ca5c4488
3 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,30 @@
package vagrant
import (
"fmt"
"github.com/mitchellh/packer/packer"
"path/filepath"
)
type LxcProvider struct{}
func (p *LxcProvider) KeepInputArtifact() bool {
return false
}
func (p *LxcProvider) Process(ui packer.Ui, artifact packer.Artifact, dir string) (vagrantfile string, metadata map[string]interface{}, err error) {
// Create the metadata
metadata = map[string]interface{}{"provider": "lxc"}
// Copy all of the original contents into the temporary directory
for _, path := range artifact.Files() {
ui.Message(fmt.Sprintf("Copying: %s", path))
dstPath := filepath.Join(dir, filepath.Base(path))
if err = CopyContents(dstPath, path); err != nil {
return
}
}
return
}

View File

@ -0,0 +1,9 @@
package vagrant
import (
"testing"
)
func TestLxcProvider_impl(t *testing.T) {
var _ Provider = new(LxcProvider)
}

View File

@ -28,6 +28,7 @@ var builtins = map[string]string{
"packer.parallels": "parallels",
"MSOpenTech.hyperv": "hyperv",
"transcend.qemu": "libvirt",
"ustream.lxc": "lxc",
}
type Config struct {
@ -232,6 +233,8 @@ func providerForName(name string) Provider {
return new(HypervProvider)
case "libvirt":
return new(LibVirtProvider)
case "lxc":
return new(LxcProvider)
default:
return nil
}