[
https://issues.apache.org/jira/browse/VCL-929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15375553#comment-15375553
]
ASF subversion and git services commented on VCL-929:
-----------------------------------------------------
Commit 1752523 from [email protected] in branch 'vcl/trunk'
[ https://svn.apache.org/r1752523 ]
VCL-929
VIM_SSH.pm::get_virtual_disk_hardware_version still wasn't parsing the hardware
version correctly. '1' was being returned if the value was supposed to be '11'.
Updated to regex to include the /g flag.
Also added check to VMware.pm::get_vm_virtual_hardware_version to catch if
get_virtual_disk_hardware_version returns a value less than 7 and ESXi is being
used.
> 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)