From 4b71995261f24ab352a73ea31a087bfbcf7d30e2 Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Mon, 17 Nov 2014 18:57:47 +0100 Subject: [PATCH] Feature #3305: Add context info for vCenter VMs (cherry picked from commit 6dd30ec6a66d6b18bdde5639f35ba5f390fdcbb9) --- src/vmm_mad/remotes/vcenter/vcenter_driver.rb | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb index 85584b6230..0212e57a31 100644 --- a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb +++ b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb @@ -39,6 +39,7 @@ $: << LIB_LOCATION+'/ruby' require 'rbvmomi' require 'yaml' require 'opennebula' +require 'base64' module VCenterDriver @@ -770,6 +771,8 @@ private raise "Cannot find host id in deployment file history." if hid.nil? + context = xml.root.elements["//TEMPLATE/CONTEXT"] + connection = VIClient.new(hid) vc_template = connection.find_vm_template(uuid) @@ -799,11 +802,26 @@ private vnc_listen = vnc_listen.text end + config_array = [] + if vnc_port - spec = RbVmomi::VIM.VirtualMachineConfigSpec(:extraConfig => + config_array += [{:key=>"remotedisplay.vnc.enabled", :value=>"TRUE"}, {:key=>"remotedisplay.vnc.port", :value=>vnc_port.text}, - {:key=>"remotedisplay.vnc.ip", :value=>vnc_listen}]) + {:key=>"remotedisplay.vnc.ip", :value=>vnc_listen}] + end + + if context + # Remove (9) and \n (11) + context_text = Base64.encode64(context.to_s[9..-11]) + config_array += + [{:key=>"guestinfo.opennebula.context", + :value=>context_text}] + end + + if config_array != [] + spec_hash = {:extraConfig =>config_array} + spec = RbVmomi::VIM.VirtualMachineConfigSpec(spec_hash) rc.ReconfigVM_Task(:spec => spec).wait_for_completion end