From d0b8d3b43696fc74ef0feb2407af97ff6ff31a64 Mon Sep 17 00:00:00 2001 From: mouyaq Date: Tue, 21 May 2019 15:50:24 +0200 Subject: [PATCH] F #3264: fix rubocop warnings (cherry picked from commit b4f75b56d5e958916417a93fe59cca22f9a6f65b) --- .../virtual_machine_helper/vm_helper.rb | 10 +- .../virtual_machine_monitor/vm_monitor.rb | 362 ++++++++++++------ 2 files changed, 249 insertions(+), 123 deletions(-) diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb index c433ace63e..02b1ba2f27 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb @@ -16,15 +16,15 @@ module VirtualMachineHelper # This method raises an exception if the timeout is reached - # The exception needs to be handled in the VMM drivers and any - # process that uses this method + # The exception needs to be handled in the VMM drivers and any + # process that uses this method def wait_timeout(action, timeout = 300) time_start = Time.now - begin + until send(action) sleep(1) - condition = (Time.now-time_start).to_i >= timeout + condition = (Time.now - time_start).to_i >= timeout raise 'Reached deploy timeout' if condition - end until send(action) + end end end diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb index 474d185c6d..c98cc2a6f0 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb @@ -14,21 +14,25 @@ # limitations under the License. # #--------------------------------------------------------------------------- # module VirtualMachineMonitor - # Converts the VI string state to OpenNebula state convention - # Guest states are: - # - poweredOff The virtual machine is currently powered off. - # - poweredOn The virtual machine is currently powered on. - # - suspended The virtual machine is currently suspended. - def state_to_c(state) + + POLL_ATTRIBUTE = OpenNebula::VirtualMachine::Driver::POLL_ATTRIBUTE + VM_STATE = OpenNebula::VirtualMachine::Driver::VM_STATE + + # Converts the VI string state to OpenNebula state convention + # Guest states are: + # - poweredOff The virtual machine is currently powered off. + # - poweredOn The virtual machine is currently powered on. + # - suspended The virtual machine is currently suspended. + def state_to_c(state) case state when 'poweredOn' - OpenNebula::VirtualMachine::Driver::VM_STATE[:active] + VM_STATE[:active] when 'suspended' - OpenNebula::VirtualMachine::Driver::VM_STATE[:paused] + VM_STATE[:paused] when 'poweredOff' - OpenNebula::VirtualMachine::Driver::VM_STATE[:deleted] + VM_STATE[:deleted] else - OpenNebula::VirtualMachine::Driver::VM_STATE[:unknown] + VM_STATE[:unknown] end end @@ -36,31 +40,36 @@ module VirtualMachineMonitor def monitor_poll_vm reset_monitor - @state = state_to_c(self["summary.runtime.powerState"]) + @state = state_to_c(self['summary.runtime.powerState']) if @state != OpenNebula::VirtualMachine::Driver::VM_STATE[:active] reset_monitor return end - cpuMhz = self["runtime.host.summary.hardware.cpuMhz"].to_f + cpuMhz = self['runtime.host.summary.hardware.cpuMhz'].to_f - @monitor[:used_memory] = self["summary.quickStats.hostMemoryUsage"] * 1024 + @monitor[:used_memory] = self['summary.quickStats.hostMemoryUsage'] * + 1024 - used_cpu = self["summary.quickStats.overallCpuUsage"].to_f / cpuMhz + used_cpu = self['summary.quickStats.overallCpuUsage'].to_f / cpuMhz used_cpu = (used_cpu * 100).to_s - @monitor[:used_cpu] = sprintf('%.2f', used_cpu).to_s + @monitor[:used_cpu] = format('%.2f', used_cpu).to_s # Check for negative values @monitor[:used_memory] = 0 if @monitor[:used_memory].to_i < 0 @monitor[:used_cpu] = 0 if @monitor[:used_cpu].to_i < 0 guest_ip_addresses = [] - self["guest.net"].each do |net| - net.ipConfig.ipAddress.each do |ip| - guest_ip_addresses << ip.ipAddress - end if net.ipConfig && net.ipConfig.ipAddress - end if self["guest.net"] + if self['guest.net'] + self['guest.net'].each do |net| + next unless net.ipConfig && net.ipConfig.ipAddress + + net.ipConfig.ipAddress.each do |ip| + guest_ip_addresses << ip.ipAddress + end + end + end @guest_ip_addresses = guest_ip_addresses.join(',') @@ -73,30 +82,38 @@ module VirtualMachineMonitor if get_vm_id stats = {} - if (self.one_item["MONITORING/LAST_MON"] && self.one_item["MONITORING/LAST_MON"].to_i != 0 ) - #Real time data stores max 1 hour. 1 minute has 3 samples - interval = (Time.now.to_i - self.one_item["MONITORING/LAST_MON"].to_i) + if one_item['MONITORING/LAST_MON'] && + one_item['MONITORING/LAST_MON'].to_i != 0 + # Real time data stores max 1 hour. 1 minute has 3 samples + interval = (Time.now.to_i - + one_item['MONITORING/LAST_MON'].to_i) - #If last poll was more than hour ago get 3 minutes, - #else calculate how many samples since last poll - samples = interval > 3600 ? 9 : (interval / refresh_rate) + 1 - max_samples = samples > 0 ? samples : 1 + # If last poll was more than hour ago get 3 minutes, + # else calculate how many samples since last poll + if interval > 3600 + samples = 9 + else + samples = (interval / refresh_rate) + 1 + end + samples > 0 ? max_samples = samples : max_samples = 1 stats = pm.retrieve_stats( [@item], - ['net.transmitted','net.bytesRx','net.bytesTx','net.received', - 'virtualDisk.numberReadAveraged','virtualDisk.numberWriteAveraged', - 'virtualDisk.read','virtualDisk.write'], - {interval:refresh_rate, max_samples: max_samples} + ['net.transmitted', 'net.bytesRx', 'net.bytesTx', + 'net.received', 'virtualDisk.numberReadAveraged', + 'virtualDisk.numberWriteAveraged', 'virtualDisk.read', + 'virtualDisk.write'], + interval => refresh_rate, max_samples => max_samples ) rescue {} else # First poll, get at least latest 3 minutes = 9 samples stats = pm.retrieve_stats( [@item], - ['net.transmitted','net.bytesRx','net.bytesTx','net.received', - 'virtualDisk.numberReadAveraged','virtualDisk.numberWriteAveraged', - 'virtualDisk.read','virtualDisk.write'], - {interval:refresh_rate, max_samples: 9} + ['net.transmitted', 'net.bytesRx', 'net.bytesTx', + 'net.received', 'virtualDisk.numberReadAveraged', + 'virtualDisk.numberWriteAveraged', 'virtualDisk.read', + 'virtualDisk.write'], + interval => refresh_rate, max_samples => 9 ) rescue {} end @@ -105,44 +122,44 @@ module VirtualMachineMonitor nettx_kbpersec = 0 if metrics['net.transmitted'] - metrics['net.transmitted'].each { |sample| + metrics['net.transmitted'].each do |sample| nettx_kbpersec += sample if sample > 0 - } + end end netrx_kbpersec = 0 if metrics['net.bytesRx'] - metrics['net.bytesRx'].each { |sample| + metrics['net.bytesRx'].each do |sample| netrx_kbpersec += sample if sample > 0 - } + end end read_kbpersec = 0 if metrics['virtualDisk.read'] - metrics['virtualDisk.read'].each { |sample| + metrics['virtualDisk.read'].each do |sample| read_kbpersec += sample if sample > 0 - } + end end read_iops = 0 if metrics['virtualDisk.numberReadAveraged'] - metrics['virtualDisk.numberReadAveraged'].each { |sample| + metrics['virtualDisk.numberReadAveraged'].each do |sample| read_iops += sample if sample > 0 - } + end end write_kbpersec = 0 if metrics['virtualDisk.write'] - metrics['virtualDisk.write'].each { |sample| + metrics['virtualDisk.write'].each do |sample| write_kbpersec += sample if sample > 0 - } + end end write_iops = 0 if metrics['virtualDisk.numberWriteAveraged'] - metrics['virtualDisk.numberWriteAveraged'].each { |sample| + metrics['virtualDisk.numberWriteAveraged'].each do |sample| write_iops += sample if sample > 0 - } + end end else nettx_kbpersec = 0 @@ -154,52 +171,89 @@ module VirtualMachineMonitor end # Accumulate values if present - previous_nettx = @one_item && @one_item["MONITORING/NETTX"] ? @one_item["MONITORING/NETTX"].to_i : 0 - previous_netrx = @one_item && @one_item["MONITORING/NETRX"] ? @one_item["MONITORING/NETRX"].to_i : 0 - previous_diskrdiops = @one_item && @one_item["MONITORING/DISKRDIOPS"] ? @one_item["MONITORING/DISKRDIOPS"].to_i : 0 - previous_diskwriops = @one_item && @one_item["MONITORING/DISKWRIOPS"] ? @one_item["MONITORING/DISKWRIOPS"].to_i : 0 - previous_diskrdbytes = @one_item && @one_item["MONITORING/DISKRDBYTES"] ? @one_item["MONITORING/DISKRDBYTES"].to_i : 0 - previous_diskwrbytes = @one_item && @one_item["MONITORING/DISKWRBYTES"] ? @one_item["MONITORING/DISKWRBYTES"].to_i : 0 + if @one_item && @one_item['MONITORING/NETTX'] + previous_nettx = @one_item['MONITORING/NETTX'].to_i + else + previous_nettx = 0 + end - @monitor[:nettx] = previous_nettx + (nettx_kbpersec * 1024 * refresh_rate).to_i - @monitor[:netrx] = previous_netrx + (netrx_kbpersec * 1024 * refresh_rate).to_i + if @one_item && @one_item['MONITORING/NETRX'] + previous_netrx = @one_item['MONITORING/NETRX'].to_i + else + previous_netrx = 0 + end + + if @one_item && @one_item['MONITORING/DISKRDIOPS'] + previous_diskrdiops = @one_item['MONITORING/DISKRDIOPS'].to_i + else + previous_diskrdiops = 0 + end + + if @one_item && @one_item['MONITORING/DISKWRIOPS'] + previous_diskwriops = @one_item['MONITORING/DISKWRIOPS'].to_i + else + previous_diskwriops = 0 + end + + if @one_item && @one_item['MONITORING/DISKRDBYTES'] + previous_diskrdbytes = @one_item['MONITORING/DISKRDBYTES'].to_i + else + previous_diskrdbytes = 0 + end + + if @one_item && @one_item['MONITORING/DISKWRBYTES'] + previous_diskwrbytes = @one_item['MONITORING/DISKWRBYTES'].to_i + else + previous_diskwrbytes = 0 + end + + @monitor[:nettx] = previous_nettx + + (nettx_kbpersec * 1024 * refresh_rate).to_i + @monitor[:netrx] = previous_netrx + + (netrx_kbpersec * 1024 * refresh_rate).to_i @monitor[:diskrdiops] = previous_diskrdiops + read_iops @monitor[:diskwriops] = previous_diskwriops + write_iops - @monitor[:diskrdbytes] = previous_diskrdbytes + (read_kbpersec * 1024 * refresh_rate).to_i - @monitor[:diskwrbytes] = previous_diskwrbytes + (write_kbpersec * 1024 * refresh_rate).to_i + @monitor[:diskrdbytes] = previous_diskrdbytes + + (read_kbpersec * 1024 * refresh_rate).to_i + @monitor[:diskwrbytes] = previous_diskwrbytes + + (write_kbpersec * 1024 * refresh_rate).to_i end end # monitor function used when poll action is called for all vms def monitor(stats) - reset_monitor - refresh_rate = 20 #20 seconds between samples (realtime) + refresh_rate = 20 # 20 seconds between samples (realtime) - @state = state_to_c(@vm_info["summary.runtime.powerState"]) + @state = state_to_c(@vm_info['summary.runtime.powerState']) - return if @state != OpenNebula::VirtualMachine::Driver::VM_STATE[:active] + return if @state != VM_STATE[:active] cpuMhz = @vm_info[:esx_host_cpu] - @monitor[:used_memory] = @vm_info["summary.quickStats.hostMemoryUsage"].to_i * 1024 + @monitor[:used_memory] = @vm_info['summary.quickStats.hostMemoryUsage'] + .to_i * 1024 - used_cpu = @vm_info["summary.quickStats.overallCpuUsage"].to_f / cpuMhz + used_cpu = @vm_info['summary.quickStats.overallCpuUsage'].to_f / cpuMhz used_cpu = (used_cpu * 100).to_s - @monitor[:used_cpu] = sprintf('%.2f', used_cpu).to_s + @monitor[:used_cpu] = format('%.2f', used_cpu).to_s # Check for negative values @monitor[:used_memory] = 0 if @monitor[:used_memory].to_i < 0 @monitor[:used_cpu] = 0 if @monitor[:used_cpu].to_i < 0 guest_ip_addresses = [] - @vm_info["guest.net"].each do |net| - net.ipConfig.ipAddress.each do |ip| - guest_ip_addresses << ip.ipAddress - end if net.ipConfig && net.ipConfig.ipAddress - end if self["guest.net"] + if self['guest.net'] + @vm_info['guest.net'].each do |net| + next unless net.ipConfig && net.ipConfig.ipAddress + + net.ipConfig.ipAddress.each do |ip| + guest_ip_addresses << ip.ipAddress + end + end + end @guest_ip_addresses = guest_ip_addresses.join(',') @@ -208,44 +262,44 @@ module VirtualMachineMonitor nettx_kbpersec = 0 if metrics['net.transmitted'] - metrics['net.transmitted'].each { |sample| + metrics['net.transmitted'].each do |sample| nettx_kbpersec += sample if sample > 0 - } + end end netrx_kbpersec = 0 if metrics['net.bytesRx'] - metrics['net.bytesRx'].each { |sample| + metrics['net.bytesRx'].each do |sample| netrx_kbpersec += sample if sample > 0 - } + end end read_kbpersec = 0 if metrics['virtualDisk.read'] - metrics['virtualDisk.read'].each { |sample| + metrics['virtualDisk.read'].each do |sample| read_kbpersec += sample if sample > 0 - } + end end read_iops = 0 if metrics['virtualDisk.numberReadAveraged'] - metrics['virtualDisk.numberReadAveraged'].each { |sample| + metrics['virtualDisk.numberReadAveraged'].each do |sample| read_iops += sample if sample > 0 - } + end end write_kbpersec = 0 if metrics['virtualDisk.write'] - metrics['virtualDisk.write'].each { |sample| + metrics['virtualDisk.write'].each do |sample| write_kbpersec += sample if sample > 0 - } + end end write_iops = 0 if metrics['virtualDisk.numberWriteAveraged'] - metrics['virtualDisk.numberWriteAveraged'].each { |sample| + metrics['virtualDisk.numberWriteAveraged'].each do |sample| write_iops += sample if sample > 0 - } + end end else nettx_kbpersec = 0 @@ -257,27 +311,64 @@ module VirtualMachineMonitor end # Accumulate values if present - previous_nettx = @one_item && @one_item["MONITORING/NETTX"] ? @one_item["MONITORING/NETTX"].to_i : 0 - previous_netrx = @one_item && @one_item["MONITORING/NETRX"] ? @one_item["MONITORING/NETRX"].to_i : 0 - previous_diskrdiops = @one_item && @one_item["MONITORING/DISKRDIOPS"] ? @one_item["MONITORING/DISKRDIOPS"].to_i : 0 - previous_diskwriops = @one_item && @one_item["MONITORING/DISKWRIOPS"] ? @one_item["MONITORING/DISKWRIOPS"].to_i : 0 - previous_diskrdbytes = @one_item && @one_item["MONITORING/DISKRDBYTES"] ? @one_item["MONITORING/DISKRDBYTES"].to_i : 0 - previous_diskwrbytes = @one_item && @one_item["MONITORING/DISKWRBYTES"] ? @one_item["MONITORING/DISKWRBYTES"].to_i : 0 + if @one_item && @one_item['MONITORING/NETTX'] + previous_nettx = @one_item['MONITORING/NETTX'].to_i + else + previous_nettx = 0 + end - @monitor[:nettx] = previous_nettx + (nettx_kbpersec * 1024 * refresh_rate).to_i - @monitor[:netrx] = previous_netrx + (netrx_kbpersec * 1024 * refresh_rate).to_i + if @one_item && @one_item['MONITORING/NETRX'] + previous_netrx = @one_item['MONITORING/NETRX'].to_i + else + previous_netrx = 0 + end + + if @one_item && @one_item['MONITORING/DISKRDIOPS'] + previous_diskrdiops = @one_item['MONITORING/DISKRDIOPS'].to_i + else + previous_diskrdiops = 0 + end + + if @one_item && @one_item['MONITORING/DISKWRIOPS'] + previous_diskwriops = @one_item['MONITORING/DISKWRIOPS'].to_i + else + previous_diskwriops = 0 + end + + if @one_item && @one_item['MONITORING/DISKRDBYTES'] + previous_diskrdbytes = @one_item['MONITORING/DISKRDBYTES'].to_i + else + previous_diskrdbytes = 0 + end + + if @one_item && @one_item['MONITORING/DISKWRBYTES'] + previous_diskwrbytes = @one_item['MONITORING/DISKWRBYTES'].to_i + else + previous_diskwrbytes = 0 + end + + @monitor[:nettx] = previous_nettx + + (nettx_kbpersec * 1024 * refresh_rate).to_i + @monitor[:netrx] = previous_netrx + + (netrx_kbpersec * 1024 * refresh_rate).to_i @monitor[:diskrdiops] = previous_diskrdiops + read_iops @monitor[:diskwriops] = previous_diskwriops + write_iops - @monitor[:diskrdbytes] = previous_diskrdbytes + (read_kbpersec * 1024 * refresh_rate).to_i - @monitor[:diskwrbytes] = previous_diskwrbytes + (write_kbpersec * 1024 * refresh_rate).to_i + @monitor[:diskrdbytes] = previous_diskrdbytes + + (read_kbpersec * 1024 * refresh_rate).to_i + @monitor[:diskwrbytes] = previous_diskwrbytes + + (write_kbpersec * 1024 * refresh_rate).to_i end # Generates a OpenNebula IM Driver valid string with the monitor info def info return 'STATE=d' if @state == 'd' - guest_ip = @vm_info ? @vm_info["guest.ipAddress"] : self["guest.ipAddress"] + if @vm_info + guest_ip = @vm_info['guest.ipAddress'] + else + guest_ip = self['guest.ipAddress'] + end used_cpu = @monitor[:used_cpu] used_memory = @monitor[:used_memory] @@ -288,44 +379,79 @@ module VirtualMachineMonitor diskrdiops = @monitor[:diskrdiops] diskwriops = @monitor[:diskwriops] - esx_host = @vm_info ? @vm_info[:esx_host_name].to_s : self["runtime.host.name"].to_s - guest_state = @vm_info ? @vm_info["guest.guestState"].to_s : self["guest.guestState"].to_s - vmware_tools = @vm_info ? @vm_info["guest.toolsRunningStatus"].to_s : self["guest.toolsRunningStatus"].to_s - vmtools_ver = @vm_info ? @vm_info["guest.toolsVersion"].to_s : self["guest.toolsVersion"].to_s - vmtools_verst = @vm_info ? @vm_info["guest.toolsVersionStatus2"].to_s : vmtools_verst = self["guest.toolsVersionStatus2"].to_s + if @vm_info + esx_host = @vm_info[:esx_host_name].to_s + else + esx_host = self['runtime.host.name'].to_s + end if @vm_info - rp_name = @vm_info[:rp_list].select { |item| item[:ref] == @vm_info["resourcePool"]._ref}.first[:name] rescue "" - rp_name = "Resources" if rp_name.empty? + guest_state = @vm_info['guest.guestState'].to_s else - rp_name = self["resourcePool"].name + guest_state = self['guest.guestState'].to_s end - str_info = "" + if @vm_info + vmware_tools = @vm_info['guest.toolsRunningStatus'].to_s + else + vmware_tools = self['guest.toolsRunningStatus'].to_s + end - str_info = "GUEST_IP=" << guest_ip.to_s << " " if guest_ip + if @vm_info + vmtools_ver = @vm_info['guest.toolsVersion'].to_s + else + vmtools_ver = self['guest.toolsVersion'].to_s + end + + if @vm_info + vmtools_verst = @vm_info['guest.toolsVersionStatus2'].to_s + else + vmtools_verst = self['guest.toolsVersionStatus2'].to_s + end + + if @vm_info + # rp_name = @vm_info[:rp_list] + # .select {|item| + # item[:ref] == @vm_info['resourcePool']._ref + # }.first[:name] rescue '' + rp_name = @vm_info[:rp_list] + .select do |item| + item[:ref] == @vm_info['resourcePool']._ref + end + .first[:name] rescue '' + + rp_name = 'Resources' if rp_name.empty? + else + rp_name = self['resourcePool'].name + end + + str_info = '' + + str_info = 'GUEST_IP=' << guest_ip.to_s << ' ' if guest_ip if @guest_ip_addresses && !@guest_ip_addresses.empty? - str_info << "GUEST_IP_ADDRESSES=\"" << @guest_ip_addresses.to_s << "\" " + str_info << 'GUEST_IP_ADDRESSES="' << @guest_ip_addresses.to_s \ + << '" ' end - str_info << "#{OpenNebula::VirtualMachine::Driver::POLL_ATTRIBUTE[:state]}=" << @state << " " - str_info << "#{OpenNebula::VirtualMachine::Driver::POLL_ATTRIBUTE[:cpu]}=" << used_cpu.to_s << " " - str_info << "#{OpenNebula::VirtualMachine::Driver::POLL_ATTRIBUTE[:memory]}=" << used_memory.to_s << " " - str_info << "#{OpenNebula::VirtualMachine::Driver::POLL_ATTRIBUTE[:netrx]}=" << netrx.to_s << " " - str_info << "#{OpenNebula::VirtualMachine::Driver::POLL_ATTRIBUTE[:nettx]}=" << nettx.to_s << " " + str_info << "#{POLL_ATTRIBUTE[:state]}=" << @state << ' ' + str_info << "#{POLL_ATTRIBUTE[:cpu]}=" << used_cpu.to_s << ' ' + str_info << "#{POLL_ATTRIBUTE[:memory]}=" << used_memory.to_s << ' ' + str_info << "#{POLL_ATTRIBUTE[:netrx]}=" << netrx.to_s << ' ' + str_info << "#{POLL_ATTRIBUTE[:nettx]}=" << nettx.to_s << ' ' - str_info << "DISKRDBYTES=" << diskrdbytes.to_s << " " - str_info << "DISKWRBYTES=" << diskwrbytes.to_s << " " - str_info << "DISKRDIOPS=" << diskrdiops.to_s << " " - str_info << "DISKWRIOPS=" << diskwriops.to_s << " " + str_info << 'DISKRDBYTES=' << diskrdbytes.to_s << ' ' + str_info << 'DISKWRBYTES=' << diskwrbytes.to_s << ' ' + str_info << 'DISKRDIOPS=' << diskrdiops.to_s << ' ' + str_info << 'DISKWRIOPS=' << diskwriops.to_s << ' ' - str_info << "VCENTER_ESX_HOST=\"" << esx_host << "\" " - str_info << "VCENTER_GUEST_STATE=" << guest_state << " " - str_info << "VCENTER_VMWARETOOLS_RUNNING_STATUS=" << vmware_tools << " " - str_info << "VCENTER_VMWARETOOLS_VERSION=" << vmtools_ver << " " - str_info << "VCENTER_VMWARETOOLS_VERSION_STATUS=" << vmtools_verst << " " - str_info << "VCENTER_RP_NAME=\"" << rp_name << "\" " + str_info << 'VCENTER_ESX_HOST="' << esx_host << '" ' + str_info << 'VCENTER_GUEST_STATE=' << guest_state << ' ' + str_info << 'VCENTER_VMWARETOOLS_RUNNING_STATUS=' << vmware_tools << ' ' + str_info << 'VCENTER_VMWARETOOLS_VERSION=' << vmtools_ver << ' ' + str_info << 'VCENTER_VMWARETOOLS_VERSION_STATUS=' \ + << vmtools_verst << ' ' + str_info << 'VCENTER_RP_NAME="' << rp_name << '" ' end def reset_monitor