Andy Kurth created VCL-977:
------------------------------

             Summary: VMware may fail to register VM if existing invalid VM is 
registered
                 Key: VCL-977
                 URL: https://issues.apache.org/jira/browse/VCL-977
             Project: VCL
          Issue Type: Improvement
          Components: vcld (backend)
    Affects Versions: 2.4.2
            Reporter: Andy Kurth
             Fix For: 2.5


Under some circumstances a VM may become _invalid_.  It looks like this:

VCL will fail to load a VM if an _invalid_ VM exists on the host that is using 
the same .vmx file path as the new VM.  As you can see in the image, there are 
3 _invalid_ VMs all using the same computer, _vi1-154_.  Each VM had been 
loaded with a different image revision.  If you attempt to load the same VM 
with any of the same revisions, the VMware host would not allow the new VM to 
be registered because it finds the existing _invalid_ VM using the same .vmx 
path.  The following appears in *vcld.log*:
{noformat}
VIM_SSH.pm:_run_vim_cmd|265| ---- WARNING ----
VIM_SSH.pm:_run_vim_cmd|265| 2016-07-27 
11:35:17VIM_SSH.pm:_run_vim_cmd|265|attempt 1/5: failed to execute command on 
VM host blade1a5-3: vim-cmd solo/registervm 
"/vmfs/volumes/local/vi1-154_3705-v6/vi1-154_3705-v6.vmx", exit status: 1, 
output:
VIM_SSH.pm:_run_vim_cmd|265| (vim.fault.AlreadyExists) {
VIM_SSH.pm:_run_vim_cmd|265| faultCause = (vmodl.MethodFault) null,
VIM_SSH.pm:_run_vim_cmd|265| name = "135",
VIM_SSH.pm:_run_vim_cmd|265| msg = "The specified key, name, or identifier 
'135' already exists."
VIM_SSH.pm:_run_vim_cmd|265| }
VIM_SSH.pm:_run_vim_cmd|265| ( 0) VIM_SSH.pm, _run_vim_cmd (line: 265)
VIM_SSH.pm:_run_vim_cmd|265| (-1) VIM_SSH.pm, vm_register (line: 1417)
VIM_SSH.pm:_run_vim_cmd|265| (-2) VMware.pm, load (line: 548)
VIM_SSH.pm:_run_vim_cmd|265| (-3) new.pm, reload_image (line: 634)
VIM_SSH.pm:_run_vim_cmd|265| (-4) new.pm, process (line: 277)
VIM_SSH.pm:_run_vim_cmd|265| (-5) vcld, make_new_child (line: 587)
{noformat}

The code is not detecting the existing _invalid_ VM because it is ignoring the 
_Skipping invalid VM_ lines returned from {{vim-cmd vmsvc/getallvms}}:
{noformat}
blade1a5-3:~ $ vim-cmd vmsvc/getallvms
Skipping invalid VM '142'
Skipping invalid VM '148'
Skipping invalid VM '149'
Vmid                     Name                                        File       
                    Guest OS       Version   Annotation
162    vi1-152:win7-ISE716Test-3796-v3 (shared)   [local] 
vi1-152_3796-v3/vi1-152_3796-v3.vmx   windows7_64Guest   vmx-07
{noformat}

The invalid VMs can be unregistered via {{vim-cmd vmsvc/unregister}}.  The code 
could be updated to try to unregister _invalid_ VMs if it fails to register a 
.vmx file.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to