class ManageIQ::NetworkDiscovery::VMwareEsxVcProbe
Constants
- ESX_PORTS
- VC_PORTS
Public Class Methods
probe(ost)
click to toggle source
# File lib/manageiq/network_discovery/modules/VMwareEsxVcProbe.rb, line 20 def self.probe(ost) if !ost.discover_types.include?(:virtualcenter) && !ost.discover_types.include?(:esx) $log.debug "Skipping VMwareEsxVcProbe" if $log return end # First check if we can access the VMware webservice before even trying the port scans. $log.debug "VMwareEsxVcProbe: probing ip = #{ost.ipaddr}" if $log begin require 'VMwareWebService/MiqVimClientBase' MiqVimClientBase.new(ost.ipaddr, "test", "test") rescue => err $log.debug "VMwareEsxVcProbe: Failed to connect to VMware webservice: #{err}. ip = #{ost.ipaddr}" if $log return end $log.debug "VMwareEsxVcProbe: ip = #{ost.ipaddr}, Connected to VMware webservice. Machine is either ESX or VirtualCenter." if $log # Next check for ESX or VC. Since VC shares some port numbers with ESX, we check VC before ESX # TODO: See if there is a way we can check ESX first, and without having to # also check VC, since it is more likely there will be more ESX servers on # a network than VC servers. checked_vc = false found_vc = false # Check if we have VC ports if ost.discover_types.include?(:virtualcenter) checked_vc = true if PortScanner.portAndOrScan?(ost, VC_PORTS) ost.os << :mswin ost.hypervisor << :virtualcenter found_vc = true $log.debug "VMwareEsxVcProbe: ip = #{ost.ipaddr}, Machine is VirtualCenter." if $log end end # Check if we have ESX ports open if !found_vc && ost.discover_types.include?(:esx) && PortScanner.portOrScan?(ost, ESX_PORTS) # Since VC may share ports with ESX, but it may have not already been # checked due to filtering, check that this is not a VC server if checked_vc || !PortScanner.portAndOrScan?(ost, VC_PORTS) ost.os << :linux ost.hypervisor << :esx $log.debug "VMwareEsxVcProbe: ip = #{ost.ipaddr}, Machine is an ESX server." if $log end end $log.debug "VMwareEsxVcProbe: probe of ip = #{ost.ipaddr} complete" if $log end