Skip to content

Commit 314c652

Browse files
authored
Merge pull request #3511 from dougm/issue-3483
fix: restore govc import.spec DiskProvisioning default value
2 parents 78f5722 + 11dc5a3 commit 314c652

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

govc/test/import.bats

+19
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,25 @@ load test_helper
212212
grep "invalid NetworkMapping.Name" <<<"$output"
213213
}
214214

215+
@test "import invalid disk provisioning" {
216+
vcsim_env
217+
218+
ovf="$GOVC_IMAGES/$TTYLINUX_NAME.ovf"
219+
220+
spec=$(govc import.spec "$GOVC_IMAGES/$TTYLINUX_NAME.ovf")
221+
222+
options=$(jq ".DiskProvisioning = \"enoent\"" <<<"$spec")
223+
224+
run govc import.ovf -options - "$ovf" <<<"$options"
225+
assert_failure "govc: Disk provisioning type not supported: enoent"
226+
227+
options=$(jq ".DiskProvisioning = \"monolithicSparse\"" <<<"$spec")
228+
229+
run govc import.ovf -options - "$ovf" <<<"$options"
230+
assert_failure
231+
assert_matches DeviceUnsupportedForVmPlatform
232+
}
233+
215234
@test "import properties" {
216235
vcsim_env
217236

ovf/importer/spec.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ func Spec(fpath string, a Archive, hidden, verbose bool) (*Options, error) {
9999
}
100100

101101
o := Options{
102-
DiskProvisioning: allDiskProvisioningOptions[0],
103-
IPAllocationPolicy: allIPAllocationPolicyOptions[0],
104-
IPProtocol: allIPProtocolOptions[0],
102+
DiskProvisioning: string(types.OvfCreateImportSpecParamsDiskProvisioningTypeFlat),
103+
IPAllocationPolicy: string(types.VAppIPAssignmentInfoIpAllocationPolicyDhcpPolicy),
104+
IPProtocol: string(types.VAppIPAssignmentInfoProtocolsIPv4),
105105
MarkAsTemplate: false,
106106
PowerOn: false,
107107
WaitForIP: false,

simulator/ovf_manager.go

+22
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,28 @@ func (m *OvfManager) CreateImportSpec(ctx *Context, req *types.CreateImportSpec)
305305
}
306306
path.Path = fmt.Sprintf("%s/disk-%d.vmdk", req.Cisp.EntityName, ndisk)
307307
d := device.CreateDisk(c.(types.BaseVirtualController), ds.Reference(), path.String())
308+
309+
switch types.OvfCreateImportSpecParamsDiskProvisioningType(req.Cisp.DiskProvisioning) {
310+
case "",
311+
types.OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicFlat,
312+
types.OvfCreateImportSpecParamsDiskProvisioningTypeFlat,
313+
types.OvfCreateImportSpecParamsDiskProvisioningTypeEagerZeroedThick,
314+
types.OvfCreateImportSpecParamsDiskProvisioningTypeThin,
315+
types.OvfCreateImportSpecParamsDiskProvisioningTypeThick,
316+
types.OvfCreateImportSpecParamsDiskProvisioningTypeSeSparse:
317+
// OK
318+
case types.OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicSparse:
319+
// results in DeviceUnsupportedForVmPlatform during import
320+
d.VirtualDevice.Backing = new(types.VirtualDiskSparseVer2BackingInfo)
321+
default:
322+
result.Error = append(result.Error, types.LocalizedMethodFault{
323+
Fault: &types.OvfUnsupportedDiskProvisioning{
324+
DiskProvisioning: req.Cisp.DiskProvisioning,
325+
},
326+
LocalizedMessage: "Disk provisioning type not supported: " + req.Cisp.DiskProvisioning,
327+
})
328+
}
329+
308330
d.VirtualDevice.DeviceInfo = &types.Description{
309331
Label: item.ElementName,
310332
}

simulator/virtual_machine.go

+7
Original file line numberDiff line numberDiff line change
@@ -1359,6 +1359,13 @@ func (vm *VirtualMachine) configureDevice(
13591359

13601360
summary = fmt.Sprintf("%s KB", numberToString(x.CapacityInKB, ','))
13611361
switch b := d.Backing.(type) {
1362+
case *types.VirtualDiskSparseVer2BackingInfo:
1363+
// Sparse disk creation not supported in ESX
1364+
return &types.DeviceUnsupportedForVmPlatform{
1365+
InvalidDeviceSpec: types.InvalidDeviceSpec{
1366+
InvalidVmConfig: types.InvalidVmConfig{Property: "VirtualDeviceSpec.device.backing"},
1367+
},
1368+
}
13621369
case types.BaseVirtualDeviceFileBackingInfo:
13631370
info := b.GetVirtualDeviceFileBackingInfo()
13641371
var path object.DatastorePath

0 commit comments

Comments
 (0)