Andy Kurth created VCL-929:
------------------------------
Summary: VMware.pm does not parse hardware version from .vmdk file
correctly
Key: VCL-929
URL: https://issues.apache.org/jira/browse/VCL-929
Project: VCL
Issue Type: Bug
Components: vcld (backend)
Affects Versions: 2.4.2
Reporter: Andy Kurth
Assignee: Andy Kurth
Fix For: 2.5
{{VIM_SSH.pm::get_virtual_disk_hardware_version}} calls the following command
similar to the following to retrieve the hardware version from a .vmdk file:
{noformat}
vim-cmd hostsvc/datastorebrowser/searchsubfolders 0 "[datastore-name]
vmwarelinux-imagename-v9"{noformat}
It then parses the output:
{noformat}
(vim.host.DatastoreBrowser.SearchResults) [
(vim.host.DatastoreBrowser.SearchResults) {
dynamicType = <unset>,
datastore = 'vim.Datastore:55921f72-785b973c-9fe6-6c0b8462bd80',
folderPath = "[datastore-name] vmwarelinux-imagename-v9",
file = (vim.host.DatastoreBrowser.FileInfo) [
(vim.host.DatastoreBrowser.VmDiskInfo) {
dynamicType = <unset>,
path = "vmwarelinux-imagename-v9.vmdk",
fileSize = 9457106944,
modification = "2016-02-05T16:58:35Z",
owner = <unset>,
diskType = "vim.vm.device.VirtualDisk.FlatVer2BackingInfo",
capacityKb = 31457280,
hardwareVersion = 11,
controllerType = "vim.vm.device.VirtualLsiLogicController",
diskExtents = (string) [
"[datastore-name]
vmwarelinux-imagename-v9/vmwarelinux-imagename-v9-flat.vmdk"
],
thin = true,
}
],
}
]
{noformat}
The important string is *hardwareVersion = 11*. The code then extracts the
part after the equals sign:
{code}my ($hardware_version) = $disk_info =~
/\shardwareVersion\s*=\s*(.+)/i;{code}
At this point, $hardware_version = '11,'. The code does not specifically look
for an integer at this point because the output may contain something such as
'unset,'.
The code checks for 'unset', then proceeds to extract an integer with the
following regex:
{code}$hardware_version =~ s/.*(\d+).*/$1/ig;{code}
This is problematic because it is not consistently returning only the integer.
Sometimes it returns 1 and other times 0.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)