From 745bcb73ae74317017bce4977ed6ed96f98aa052 Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Tue, 23 Sep 2014 16:35:50 +0200 Subject: [PATCH] feature #2911: Add VNC support for vCenter --- src/sunstone/OpenNebulaVNC.rb | 10 ++++++--- src/vmm_mad/remotes/vcenter/vcenter_driver.rb | 22 +++++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/sunstone/OpenNebulaVNC.rb b/src/sunstone/OpenNebulaVNC.rb index a86969a2c3..c6c76768fa 100644 --- a/src/sunstone/OpenNebulaVNC.rb +++ b/src/sunstone/OpenNebulaVNC.rb @@ -172,9 +172,13 @@ class OpenNebulaVNC end # Proxy data - host = vm_resource['/VM/HISTORY_RECORDS/HISTORY[last()]/HOSTNAME'] - vnc_port = vm_resource['TEMPLATE/GRAPHICS/PORT'] - vnc_pw = vm_resource['TEMPLATE/GRAPHICS/PASSWD'] + host = vm_resource['/VM/HISTORY_RECORDS/HISTORY[last()]/HOSTNAME'] + vnc_port = vm_resource['TEMPLATE/GRAPHICS/PORT'] + vnc_pw = vm_resource['TEMPLATE/GRAPHICS/PASSWD'] + + if vm_resource['TEMPLATE/ESX_HOST'] # It is behind a vCenter + host = vm_resource['TEMPLATE/ESX_HOST'] + end # Generate token random_str: host:port random_str = rand(36**20).to_s(36) #random string a-z0-9 length 20 diff --git a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb index 63c3d82196..2252f4d926 100644 --- a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb +++ b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb @@ -463,7 +463,18 @@ class VCenterVm :name => "one-#{vmid}", :spec => clone_spec).wait_for_completion - return rc.config.uuid + vm_uuid = rc.config.uuid + + vnc_port = xml.root.elements["/VM/TEMPLATE/GRAPHICS/PORT"] + + if vnc_port + spec = RbVmomi::VIM.VirtualMachineConfigSpec(:extraConfig => + [{:key=>"remotedisplay.vnc.enabled", :value=>"TRUE"}, + {:key=>"remotedisplay.vnc.port", :value=>vnc_port.text}]) + rc.ReconfigVM_Task(:spec => spec).wait_for_completion + end + + return vm_uuid end ############################################################################ @@ -478,7 +489,7 @@ class VCenterVm vm = connection.find_vm_template(deploy_id) vm.PowerOffVM_Task.wait_for_completion - vm.UnregisterVM.wait_for_completion + vm.Destroy_Task.wait_for_completion end ############################################################################ @@ -520,7 +531,7 @@ class VCenterVm vm = connection.find_vm_template(deploy_id) - vm.PowerOnVM_Task.wait_for_completion + vm.RebootGuest.wait_for_completion end ############################################################################ @@ -650,6 +661,8 @@ class VCenterVm # Check for negative values @used_memory = 0 if @used_memory.to_i < 0 @used_cpu = 0 if @used_cpu.to_i < 0 + + @esx_host = @vm.summary.runtime.host.name end ######################################################################## @@ -664,7 +677,8 @@ class VCenterVm str_info << "USEDCPU=" << @used_cpu.to_s << " " str_info << "USEDMEMORY="<< @used_memory.to_s << " " str_info << "NETRX=" << @net_rx.to_s << " " - str_info << "NETTX=" << @net_tx.to_s + str_info << "NETTX=" << @net_tx.to_s << " " + str_info << "ESX_HOST=" << @esx_host.to_s end ########################################################################