Add cleanup_remote_cache config option to vmware-iso (#8917)
This commit is contained in:
parent
e6368b9246
commit
b17b211aa9
|
@ -16,6 +16,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type DriverConfig struct {
|
type DriverConfig struct {
|
||||||
|
// When set to true, Packer will cleanup the cache folder where the ISO file is stored during the build on the remote machine.
|
||||||
|
// By default, this is set to false.
|
||||||
|
CleanUpRemoteCache bool `mapstructure:"cleanup_remote_cache" required:"false"`
|
||||||
// Path to "VMware Fusion.app". By default this is
|
// Path to "VMware Fusion.app". By default this is
|
||||||
// /Applications/VMware Fusion.app but this setting allows you to
|
// /Applications/VMware Fusion.app but this setting allows you to
|
||||||
// customize this.
|
// customize this.
|
||||||
|
|
|
@ -26,6 +26,9 @@ type RemoteDriverMock struct {
|
||||||
UploadErr error
|
UploadErr error
|
||||||
DownloadErr error
|
DownloadErr error
|
||||||
|
|
||||||
|
RemovedCachePath string
|
||||||
|
CacheRemoved bool
|
||||||
|
|
||||||
ReloadVMErr error
|
ReloadVMErr error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +69,8 @@ func (d *RemoteDriverMock) Download(src, dst string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *RemoteDriverMock) RemoveCache(localPath string) error {
|
func (d *RemoteDriverMock) RemoveCache(localPath string) error {
|
||||||
|
d.RemovedCachePath = localPath
|
||||||
|
d.CacheRemoved = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
package common
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/packer/helper/multistep"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestStepRemoteUpload_Cleanup(t *testing.T) {
|
||||||
|
state := new(multistep.BasicStateBag)
|
||||||
|
driver := new(RemoteDriverMock)
|
||||||
|
state.Put("driver", driver)
|
||||||
|
state.Put("path_key", "packer_cache")
|
||||||
|
|
||||||
|
// Should clean up cache
|
||||||
|
s := &StepRemoteUpload{
|
||||||
|
Key: "path_key",
|
||||||
|
DoCleanup: true,
|
||||||
|
}
|
||||||
|
s.Cleanup(state)
|
||||||
|
|
||||||
|
if !driver.CacheRemoved {
|
||||||
|
t.Fatalf("bad: remote cache was not removed")
|
||||||
|
}
|
||||||
|
if driver.RemovedCachePath != "packer_cache" {
|
||||||
|
t.Fatalf("bad: removed cache path was expected to be packer_cache but was %s", driver.RemovedCachePath)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Should NOT clean up cache
|
||||||
|
s = &StepRemoteUpload{
|
||||||
|
Key: "path_key",
|
||||||
|
}
|
||||||
|
driver = new(RemoteDriverMock)
|
||||||
|
state.Put("driver", driver)
|
||||||
|
s.Cleanup(state)
|
||||||
|
|
||||||
|
if driver.CacheRemoved {
|
||||||
|
t.Fatalf("bad: remote cache was removed but was expected to not")
|
||||||
|
}
|
||||||
|
}
|
|
@ -98,6 +98,7 @@ func (b *Builder) Run(ctx context.Context, ui packer.Ui, hook packer.Hook) (pack
|
||||||
&vmwcommon.StepRemoteUpload{
|
&vmwcommon.StepRemoteUpload{
|
||||||
Key: "iso_path",
|
Key: "iso_path",
|
||||||
Message: "Uploading ISO to remote machine...",
|
Message: "Uploading ISO to remote machine...",
|
||||||
|
DoCleanup: b.config.DriverConfig.CleanUpRemoteCache,
|
||||||
Checksum: b.config.ISOChecksum,
|
Checksum: b.config.ISOChecksum,
|
||||||
ChecksumType: b.config.ISOChecksumType,
|
ChecksumType: b.config.ISOChecksumType,
|
||||||
},
|
},
|
||||||
|
|
|
@ -34,6 +34,7 @@ type FlatConfig struct {
|
||||||
BootCommand []string `mapstructure:"boot_command" cty:"boot_command"`
|
BootCommand []string `mapstructure:"boot_command" cty:"boot_command"`
|
||||||
DisableVNC *bool `mapstructure:"disable_vnc" cty:"disable_vnc"`
|
DisableVNC *bool `mapstructure:"disable_vnc" cty:"disable_vnc"`
|
||||||
BootKeyInterval *string `mapstructure:"boot_key_interval" cty:"boot_key_interval"`
|
BootKeyInterval *string `mapstructure:"boot_key_interval" cty:"boot_key_interval"`
|
||||||
|
CleanUpRemoteCache *bool `mapstructure:"cleanup_remote_cache" required:"false" cty:"cleanup_remote_cache"`
|
||||||
FusionAppPath *string `mapstructure:"fusion_app_path" required:"false" cty:"fusion_app_path"`
|
FusionAppPath *string `mapstructure:"fusion_app_path" required:"false" cty:"fusion_app_path"`
|
||||||
RemoteType *string `mapstructure:"remote_type" required:"false" cty:"remote_type"`
|
RemoteType *string `mapstructure:"remote_type" required:"false" cty:"remote_type"`
|
||||||
RemoteDatastore *string `mapstructure:"remote_datastore" required:"false" cty:"remote_datastore"`
|
RemoteDatastore *string `mapstructure:"remote_datastore" required:"false" cty:"remote_datastore"`
|
||||||
|
@ -165,6 +166,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec {
|
||||||
"boot_command": &hcldec.AttrSpec{Name: "boot_command", Type: cty.List(cty.String), Required: false},
|
"boot_command": &hcldec.AttrSpec{Name: "boot_command", Type: cty.List(cty.String), Required: false},
|
||||||
"disable_vnc": &hcldec.AttrSpec{Name: "disable_vnc", Type: cty.Bool, Required: false},
|
"disable_vnc": &hcldec.AttrSpec{Name: "disable_vnc", Type: cty.Bool, Required: false},
|
||||||
"boot_key_interval": &hcldec.AttrSpec{Name: "boot_key_interval", Type: cty.String, Required: false},
|
"boot_key_interval": &hcldec.AttrSpec{Name: "boot_key_interval", Type: cty.String, Required: false},
|
||||||
|
"cleanup_remote_cache": &hcldec.AttrSpec{Name: "cleanup_remote_cache", Type: cty.Bool, Required: false},
|
||||||
"fusion_app_path": &hcldec.AttrSpec{Name: "fusion_app_path", Type: cty.String, Required: false},
|
"fusion_app_path": &hcldec.AttrSpec{Name: "fusion_app_path", Type: cty.String, Required: false},
|
||||||
"remote_type": &hcldec.AttrSpec{Name: "remote_type", Type: cty.String, Required: false},
|
"remote_type": &hcldec.AttrSpec{Name: "remote_type", Type: cty.String, Required: false},
|
||||||
"remote_datastore": &hcldec.AttrSpec{Name: "remote_datastore", Type: cty.String, Required: false},
|
"remote_datastore": &hcldec.AttrSpec{Name: "remote_datastore", Type: cty.String, Required: false},
|
||||||
|
|
|
@ -27,6 +27,7 @@ type FlatConfig struct {
|
||||||
BootCommand []string `mapstructure:"boot_command" cty:"boot_command"`
|
BootCommand []string `mapstructure:"boot_command" cty:"boot_command"`
|
||||||
DisableVNC *bool `mapstructure:"disable_vnc" cty:"disable_vnc"`
|
DisableVNC *bool `mapstructure:"disable_vnc" cty:"disable_vnc"`
|
||||||
BootKeyInterval *string `mapstructure:"boot_key_interval" cty:"boot_key_interval"`
|
BootKeyInterval *string `mapstructure:"boot_key_interval" cty:"boot_key_interval"`
|
||||||
|
CleanUpRemoteCache *bool `mapstructure:"cleanup_remote_cache" required:"false" cty:"cleanup_remote_cache"`
|
||||||
FusionAppPath *string `mapstructure:"fusion_app_path" required:"false" cty:"fusion_app_path"`
|
FusionAppPath *string `mapstructure:"fusion_app_path" required:"false" cty:"fusion_app_path"`
|
||||||
RemoteType *string `mapstructure:"remote_type" required:"false" cty:"remote_type"`
|
RemoteType *string `mapstructure:"remote_type" required:"false" cty:"remote_type"`
|
||||||
RemoteDatastore *string `mapstructure:"remote_datastore" required:"false" cty:"remote_datastore"`
|
RemoteDatastore *string `mapstructure:"remote_datastore" required:"false" cty:"remote_datastore"`
|
||||||
|
@ -134,6 +135,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec {
|
||||||
"boot_command": &hcldec.AttrSpec{Name: "boot_command", Type: cty.List(cty.String), Required: false},
|
"boot_command": &hcldec.AttrSpec{Name: "boot_command", Type: cty.List(cty.String), Required: false},
|
||||||
"disable_vnc": &hcldec.AttrSpec{Name: "disable_vnc", Type: cty.Bool, Required: false},
|
"disable_vnc": &hcldec.AttrSpec{Name: "disable_vnc", Type: cty.Bool, Required: false},
|
||||||
"boot_key_interval": &hcldec.AttrSpec{Name: "boot_key_interval", Type: cty.String, Required: false},
|
"boot_key_interval": &hcldec.AttrSpec{Name: "boot_key_interval", Type: cty.String, Required: false},
|
||||||
|
"cleanup_remote_cache": &hcldec.AttrSpec{Name: "cleanup_remote_cache", Type: cty.Bool, Required: false},
|
||||||
"fusion_app_path": &hcldec.AttrSpec{Name: "fusion_app_path", Type: cty.String, Required: false},
|
"fusion_app_path": &hcldec.AttrSpec{Name: "fusion_app_path", Type: cty.String, Required: false},
|
||||||
"remote_type": &hcldec.AttrSpec{Name: "remote_type", Type: cty.String, Required: false},
|
"remote_type": &hcldec.AttrSpec{Name: "remote_type", Type: cty.String, Required: false},
|
||||||
"remote_datastore": &hcldec.AttrSpec{Name: "remote_datastore", Type: cty.String, Required: false},
|
"remote_datastore": &hcldec.AttrSpec{Name: "remote_datastore", Type: cty.String, Required: false},
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
<!-- Code generated from the comments of the DriverConfig struct in builder/vmware/common/driver_config.go; DO NOT EDIT MANUALLY -->
|
<!-- Code generated from the comments of the DriverConfig struct in builder/vmware/common/driver_config.go; DO NOT EDIT MANUALLY -->
|
||||||
|
|
||||||
|
- `cleanup_remote_cache` (bool) - When set to true, Packer will cleanup the cache folder where the ISO file is stored during the build on the remote machine.
|
||||||
|
By default, this is set to false.
|
||||||
|
|
||||||
- `fusion_app_path` (string) - Path to "VMware Fusion.app". By default this is
|
- `fusion_app_path` (string) - Path to "VMware Fusion.app". By default this is
|
||||||
/Applications/VMware Fusion.app but this setting allows you to
|
/Applications/VMware Fusion.app but this setting allows you to
|
||||||
customize this.
|
customize this.
|
||||||
|
|
Loading…
Reference in New Issue