fix test and generated code
This commit is contained in:
parent
3b523e147e
commit
99e7ac5f42
|
@ -3,7 +3,6 @@ package clone
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/hashicorp/hcl/v2/hcldec"
|
"github.com/hashicorp/hcl/v2/hcldec"
|
||||||
"github.com/hashicorp/packer/packer-plugin-sdk/template/config"
|
|
||||||
"github.com/zclconf/go-cty/cty"
|
"github.com/zclconf/go-cty/cty"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -95,10 +94,10 @@ func (*FlatGlobalRoutingSettings) HCL2Spec() map[string]hcldec.Spec {
|
||||||
// FlatLinuxOptions is an auto-generated flat version of LinuxOptions.
|
// FlatLinuxOptions is an auto-generated flat version of LinuxOptions.
|
||||||
// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
|
// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
|
||||||
type FlatLinuxOptions struct {
|
type FlatLinuxOptions struct {
|
||||||
Domain *string `mapstructure:"domain" cty:"domain" hcl:"domain"`
|
Domain *string `mapstructure:"domain" cty:"domain" hcl:"domain"`
|
||||||
Hostname *string `mapstructure:"host_name" cty:"host_name" hcl:"host_name"`
|
Hostname *string `mapstructure:"host_name" cty:"host_name" hcl:"host_name"`
|
||||||
HWClockUTC *config.Trilean `mapstructure:"hw_clock_utc" cty:"hw_clock_utc" hcl:"hw_clock_utc"`
|
HWClockUTC *bool `mapstructure:"hw_clock_utc" cty:"hw_clock_utc" hcl:"hw_clock_utc"`
|
||||||
Timezone *string `mapstructure:"time_zone" cty:"time_zone" hcl:"time_zone"`
|
Timezone *string `mapstructure:"time_zone" cty:"time_zone" hcl:"time_zone"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// FlatMapstructure returns a new FlatLinuxOptions.
|
// FlatMapstructure returns a new FlatLinuxOptions.
|
||||||
|
@ -115,7 +114,7 @@ func (*FlatLinuxOptions) HCL2Spec() map[string]hcldec.Spec {
|
||||||
s := map[string]hcldec.Spec{
|
s := map[string]hcldec.Spec{
|
||||||
"domain": &hcldec.AttrSpec{Name: "domain", Type: cty.String, Required: false},
|
"domain": &hcldec.AttrSpec{Name: "domain", Type: cty.String, Required: false},
|
||||||
"host_name": &hcldec.AttrSpec{Name: "host_name", Type: cty.String, Required: false},
|
"host_name": &hcldec.AttrSpec{Name: "host_name", Type: cty.String, Required: false},
|
||||||
"hw_clock_utc": &hcldec.AttrSpec{Name: "hw_clock_utc", Type: cty.Number, Required: false},
|
"hw_clock_utc": &hcldec.AttrSpec{Name: "hw_clock_utc", Type: cty.Bool, Required: false},
|
||||||
"time_zone": &hcldec.AttrSpec{Name: "time_zone", Type: cty.String, Required: false},
|
"time_zone": &hcldec.AttrSpec{Name: "time_zone", Type: cty.String, Required: false},
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
|
|
|
@ -97,7 +97,6 @@ type HardwareConfig struct {
|
||||||
VGPUProfile string
|
VGPUProfile string
|
||||||
Firmware string
|
Firmware string
|
||||||
ForceBIOSSetup bool
|
ForceBIOSSetup bool
|
||||||
StorageConfig StorageConfig
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type NIC struct {
|
type NIC struct {
|
||||||
|
@ -521,76 +520,6 @@ func (vm *VirtualMachineDriver) Configure(config *HardwareConfig) error {
|
||||||
|
|
||||||
confSpec.CpuHotAddEnabled = &config.CpuHotAddEnabled
|
confSpec.CpuHotAddEnabled = &config.CpuHotAddEnabled
|
||||||
confSpec.MemoryHotAddEnabled = &config.MemoryHotAddEnabled
|
confSpec.MemoryHotAddEnabled = &config.MemoryHotAddEnabled
|
||||||
//
|
|
||||||
//if len(config.StorageConfig.Storage) > 0 {
|
|
||||||
// ds, err := vm.vm.Device(vm.driver.ctx)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// vd := ds.SelectByType((*types.VirtualDisk)(nil))
|
|
||||||
// vc := ds.SelectByType((*types.VirtualController)(nil))
|
|
||||||
//
|
|
||||||
// // Use existing devices to avoid wrong configuration
|
|
||||||
// devices := object.VirtualDeviceList{}
|
|
||||||
// devices = append(devices, vd...)
|
|
||||||
// devices = append(devices, vc...)
|
|
||||||
//
|
|
||||||
// newDevices := object.VirtualDeviceList{}
|
|
||||||
//
|
|
||||||
// // Adds new controllers
|
|
||||||
// var controllers []types.BaseVirtualController
|
|
||||||
// for _, controllerType := range config.StorageConfig.DiskControllerType {
|
|
||||||
// var device types.BaseVirtualDevice
|
|
||||||
// var err error
|
|
||||||
// if controllerType == "nvme" {
|
|
||||||
// device, err = devices.CreateNVMEController()
|
|
||||||
// } else {
|
|
||||||
// device, err = devices.CreateSCSIController(controllerType)
|
|
||||||
// }
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// devices = append(devices, device)
|
|
||||||
// newDevices = append(newDevices, device)
|
|
||||||
// name := devices.Name(device)
|
|
||||||
// log.Printf("MOSS controller name %s", name)
|
|
||||||
// controller, err := devices.FindDiskController(name)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// controllers = append(controllers, controller)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// for _, dc := range config.StorageConfig.Storage {
|
|
||||||
// key := devices.NewKey()
|
|
||||||
// disk := &types.VirtualDisk{
|
|
||||||
// VirtualDevice: types.VirtualDevice{
|
|
||||||
// Key: key,
|
|
||||||
// Backing: &types.VirtualDiskFlatVer2BackingInfo{
|
|
||||||
// DiskMode: string(types.VirtualDiskModePersistent),
|
|
||||||
// ThinProvisioned: types.NewBool(dc.DiskThinProvisioned),
|
|
||||||
// EagerlyScrub: types.NewBool(dc.DiskEagerlyScrub),
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// CapacityInKB: dc.DiskSize * 1024,
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// log.Printf("MOSS device key %d", key)
|
|
||||||
//
|
|
||||||
// devices.AssignController(disk, controllers[dc.ControllerIndex])
|
|
||||||
// newDevices = append(newDevices, disk)
|
|
||||||
// }
|
|
||||||
// //devices, err = config.StorageConfig.AddStorageDevices(devices)
|
|
||||||
// //if err != nil {
|
|
||||||
// // return err
|
|
||||||
// //}
|
|
||||||
//
|
|
||||||
// devicesConfigSpec, err := newDevices.ConfigSpec(types.VirtualDeviceConfigSpecOperationAdd)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// confSpec.DeviceChange = append(confSpec.DeviceChange, devicesConfigSpec...)
|
|
||||||
//}
|
|
||||||
|
|
||||||
if config.VideoRAM != 0 {
|
if config.VideoRAM != 0 {
|
||||||
devices, err := vm.vm.Device(vm.driver.ctx)
|
devices, err := vm.vm.Device(vm.driver.ctx)
|
||||||
|
|
|
@ -17,9 +17,18 @@ import (
|
||||||
|
|
||||||
func TestCreateConfig_Prepare(t *testing.T) {
|
func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
// Empty config - check defaults
|
// Empty config - check defaults
|
||||||
config := &CreateConfig{}
|
config := &CreateConfig{
|
||||||
|
// Storage is required
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
if errs := config.Prepare(); len(errs) != 0 {
|
if errs := config.Prepare(); len(errs) != 0 {
|
||||||
t.Fatalf("Config preprare should not fail")
|
t.Fatalf("Config preprare should not fail: %s", errs[0])
|
||||||
}
|
}
|
||||||
if config.GuestOSType != "otherGuest" {
|
if config.GuestOSType != "otherGuest" {
|
||||||
t.Fatalf("GuestOSType should default to 'otherGuest'")
|
t.Fatalf("GuestOSType should default to 'otherGuest'")
|
||||||
|
@ -69,6 +78,13 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
name: "USBController validate 'usb' and 'xhci' can be set together",
|
name: "USBController validate 'usb' and 'xhci' can be set together",
|
||||||
config: &CreateConfig{
|
config: &CreateConfig{
|
||||||
USBController: []string{"usb", "xhci"},
|
USBController: []string{"usb", "xhci"},
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
fail: false,
|
fail: false,
|
||||||
},
|
},
|
||||||
|
@ -76,6 +92,13 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
name: "USBController validate '1' and '0' can be set together",
|
name: "USBController validate '1' and '0' can be set together",
|
||||||
config: &CreateConfig{
|
config: &CreateConfig{
|
||||||
USBController: []string{"1", "0"},
|
USBController: []string{"1", "0"},
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
fail: false,
|
fail: false,
|
||||||
},
|
},
|
||||||
|
@ -83,6 +106,13 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
name: "USBController validate 'true' and 'false' can be set together",
|
name: "USBController validate 'true' and 'false' can be set together",
|
||||||
config: &CreateConfig{
|
config: &CreateConfig{
|
||||||
USBController: []string{"true", "false"},
|
USBController: []string{"true", "false"},
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
fail: false,
|
fail: false,
|
||||||
},
|
},
|
||||||
|
@ -90,6 +120,13 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
name: "USBController validate 'true' and 'usb' cannot be set together",
|
name: "USBController validate 'true' and 'usb' cannot be set together",
|
||||||
config: &CreateConfig{
|
config: &CreateConfig{
|
||||||
USBController: []string{"true", "usb"},
|
USBController: []string{"true", "usb"},
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
fail: true,
|
fail: true,
|
||||||
expectedErrMsg: "there can only be one usb controller and one xhci controller",
|
expectedErrMsg: "there can only be one usb controller and one xhci controller",
|
||||||
|
@ -98,6 +135,13 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
name: "USBController validate '1' and 'usb' cannot be set together",
|
name: "USBController validate '1' and 'usb' cannot be set together",
|
||||||
config: &CreateConfig{
|
config: &CreateConfig{
|
||||||
USBController: []string{"1", "usb"},
|
USBController: []string{"1", "usb"},
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
fail: true,
|
fail: true,
|
||||||
expectedErrMsg: "there can only be one usb controller and one xhci controller",
|
expectedErrMsg: "there can only be one usb controller and one xhci controller",
|
||||||
|
@ -106,6 +150,13 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
name: "USBController validate 'xhci' cannot be set more that once",
|
name: "USBController validate 'xhci' cannot be set more that once",
|
||||||
config: &CreateConfig{
|
config: &CreateConfig{
|
||||||
USBController: []string{"xhci", "xhci"},
|
USBController: []string{"xhci", "xhci"},
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
fail: true,
|
fail: true,
|
||||||
expectedErrMsg: "there can only be one usb controller and one xhci controller",
|
expectedErrMsg: "there can only be one usb controller and one xhci controller",
|
||||||
|
@ -114,6 +165,13 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
name: "USBController validate unknown value cannot be set",
|
name: "USBController validate unknown value cannot be set",
|
||||||
config: &CreateConfig{
|
config: &CreateConfig{
|
||||||
USBController: []string{"unknown"},
|
USBController: []string{"unknown"},
|
||||||
|
StorageConfig: common.StorageConfig{
|
||||||
|
Storage: []common.DiskConfig{
|
||||||
|
{
|
||||||
|
DiskSize: 32768,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
fail: true,
|
fail: true,
|
||||||
expectedErrMsg: "usb_controller[0] references an unknown usb controller",
|
expectedErrMsg: "usb_controller[0] references an unknown usb controller",
|
||||||
|
@ -131,7 +189,7 @@ func TestCreateConfig_Prepare(t *testing.T) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(errs) != 0 {
|
if len(errs) != 0 {
|
||||||
t.Fatalf("Config preprare should not fail")
|
t.Fatalf("Config preprare should not fail: %s", errs[0])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<!-- Code generated from the comments of the DiskConfig struct in builder/vsphere/iso/step_create.go; DO NOT EDIT MANUALLY -->
|
|
||||||
|
|
||||||
- `disk_thin_provisioned` (bool) - Enable VMDK thin provisioning for VM. Defaults to `false`.
|
|
||||||
|
|
||||||
- `disk_eagerly_scrub` (bool) - Enable VMDK eager scrubbing for VM. Defaults to `false`.
|
|
||||||
|
|
||||||
- `disk_controller_index` (int) - The assigned disk controller. Defaults to the first one (0)
|
|
|
@ -1,3 +0,0 @@
|
||||||
<!-- Code generated from the comments of the DiskConfig struct in builder/vsphere/iso/step_create.go; DO NOT EDIT MANUALLY -->
|
|
||||||
|
|
||||||
- `disk_size` (int64) - The size of the disk in MB.
|
|
|
@ -1,74 +0,0 @@
|
||||||
<!-- Code generated from the comments of the DiskConfig struct in builder/vsphere/iso/step_create.go; DO NOT EDIT MANUALLY -->
|
|
||||||
|
|
||||||
Defines the disk storage for a VM.
|
|
||||||
|
|
||||||
Example that will create a 15GB and a 20GB disk on the VM. The second disk will be thin provisioned:
|
|
||||||
|
|
||||||
In JSON:
|
|
||||||
```json
|
|
||||||
"storage": [
|
|
||||||
{
|
|
||||||
"disk_size": 15000
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"disk_size": 20000,
|
|
||||||
"disk_thin_provisioned": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
```
|
|
||||||
In HCL2:
|
|
||||||
```hcl
|
|
||||||
storage {
|
|
||||||
disk_size = 15000
|
|
||||||
}
|
|
||||||
storage {
|
|
||||||
disk_size = 20000
|
|
||||||
disk_thin_provisioned = true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Example that creates 2 pvscsi controllers and adds 2 disks to each one:
|
|
||||||
|
|
||||||
In JSON:
|
|
||||||
```json
|
|
||||||
"disk_controller_type": ["pvscsi", "pvscsi"],
|
|
||||||
"storage": [
|
|
||||||
{
|
|
||||||
"disk_size": 15000,
|
|
||||||
"disk_controller_index": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"disk_size": 15000,
|
|
||||||
"disk_controller_index": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"disk_size": 15000,
|
|
||||||
"disk_controller_index": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"disk_size": 15000,
|
|
||||||
"disk_controller_index": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
```
|
|
||||||
|
|
||||||
In HCL2:
|
|
||||||
```hcl
|
|
||||||
disk_controller_type = ["pvscsi", "pvscsi"]
|
|
||||||
storage {
|
|
||||||
disk_size = 15000,
|
|
||||||
disk_controller_index = 0
|
|
||||||
}
|
|
||||||
storage {
|
|
||||||
disk_size = 15000
|
|
||||||
disk_controller_index = 0
|
|
||||||
}
|
|
||||||
storage {
|
|
||||||
disk_size = 15000
|
|
||||||
disk_controller_index = 1
|
|
||||||
}
|
|
||||||
storage {
|
|
||||||
disk_size = 15000
|
|
||||||
disk_controller_index = 1
|
|
||||||
}
|
|
||||||
```
|
|
Loading…
Reference in New Issue