[sles-beta] SLES12 RC1 SUSEConnect distingush between virtiual and physical server?

Darren Thompson (AkurIT) darrent at akurit.com.au
Tue Aug 12 05:10:44 MDT 2014


Is it worth me running the same shell script on a XEN host to. Compare the output?

On 12/08/2014, at 18:06, <urs.frey at post.ch> wrote:

> Hello Josef
> 
> OK, thank you very much!
> I see:
> In fact you are doing nothing other than
> 
>  def hypervisor
>    output['Hypervisor vendor']
>  end
> 
>  def output
>    @output ||= execute('lscpu', false).split("\n").reduce({}) do |hash, line|
>      k, v = line.split(':')
>      hash[k] = v.strip
>      hash
>    end
>  end
> 
> Which is in bash shell:
> 
> KVM:
> =====
> h05cnh:~ # lscpu | grep "Hypervisor vendor"| cut -d":" -f2 | awk '{print $1}'
> KVM
> h05cnh:~ #
> 
> 
> VMware ESXi
> ==========
> v03er9:~ # lscpu| grep "Hypervisor vendor"| cut -d":" -f2 | awk '{print $1}'
> VMware
> v03er9:~ #
> 
> HP ProLiant
> =========
> h05cni:~ # lscpu| grep "Hypervisor vendor"| cut -d":" -f2 | awk '{print $1}'
> h05cni:~ #
> 
> 
> And therefore if "Hypervisor vendor" Output has some value, you know : "This is a virtual machine installation"
> 
> Is this correct?
> 
> Thank you very much
> 
> Best regards
> 
> 
> Urs Frey                                              
> Post CH AG
> Informationstechnologie
> IT Betrieb 
> Webergutstrasse 12 
> 3030 Bern (Zollikofen) 
> Telefon : ++41 (0)58 338 58 70 
> FAX     : ++41 (0)58 667 30 07 
> E-Mail:   urs.frey at post.ch
> 
> -----Ursprüngliche Nachricht-----
> Von: Josef Reidinger [mailto:jreidinger at suse.com] 
> Gesendet: Tuesday, August 12, 2014 8:15 AM
> An: sles-beta at lists.suse.com
> Cc: Frey Urs, IT222
> Betreff: Re: [sles-beta] SLES12 RC1 SUSEConnect distingush between virtiual and physical server?
> 
> On Mon, 11 Aug 2014 16:55:47 +0000
> <urs.frey at post.ch> wrote:
> 
>> Hi
>> 
>> I finally found an old note of mine showing me, that once in SLES12
>> beta6 the
>> file /usr/lib64/ruby/gems/2.0.0/gems/suse-connect-0.0.17/lib/suse/connect/system.rb,
>> there was this sequence to distinguish between virtual and physical
>> installation when registering.
>> 
>> Within the file
>> /usr/lib64/ruby/gems/2.0.0/gems/suse-connect-0.0.17/lib/suse/connect/system.rb
>> I can see this sequence
>> 
>> module SUSE
>>  module Connect
>>    # System class allowing to interact with underlying system
>>    class System
>> 
>>      class << self
>> 
>>        def hwinfo
>>          info = {
>>            :cpu_type       => `uname -p`,
>>            :cpu_count      => `grep "processor" /proc/cpuinfo | wc
>> -l`, :platform_type  => `uname -i`,
>>            :hostname       => `hostname`
>>          }
>> 
>>          info.values.each(&:chomp!)
>>          dmidecode = `dmidecode`
>>          virt_zoo = ['vmware', 'virtual machine', 'qemu', 'domu']
>>          info[:virtualized] = (virt_zoo).any? {|ident|
>> dmidecode.downcase.include? ident } if dmidecode info
>>        end
>> 
>>        # returns username and password from SCC_CREDENTIALS_FILE
>> 
>> So dmidecode is used to detect a virtual machine
>> 
>> 
>> Now with SLES12 RC1 this sequence has gone, there are some hypervisor
>> definitions now
>> 
>> h05cnh:~ #
>> cat /usr/lib64/ruby/gems/2.1.0/gems/suse-connect-0.2.7/lib/suse/connect/system.rb
>> require 'suse/toolkit/hwinfo'
>> 
>> module SUSE
>>  module Connect
>>    # System class allowing to interact with underlying system
>>    class System
>>      class << self
>> 
>>        include SUSE::Toolkit::Hwinfo
>> 
>>        attr_accessor :filesystem_root
>> 
>>        def prefix_path(path)
>>          filesystem_root ? File.join(filesystem_root, path) : path
>>        end
>> 
>>        def hwinfo
>>          if x86?
>>            {
>>              hostname: hostname,
>>              cpus: cpus,
>>              sockets: sockets,
>>              hypervisor: hypervisor,
>>              arch: arch,
>>              uuid: uuid
>>            }
>>          else
>>            {
>>              hostname: hostname,
>>              arch: arch
>>            }
>>          end
>>        end
>> 
>> From the toolkit hwinfo,rb I can see some Hypervisor definitions
>> h05cnh:~ #
>> cat /usr/lib64/ruby/gems/2.1.0/gems/suse-connect-0.2.7/lib/suse/toolkit/hwinfo.rb
>> require 'suse/toolkit/system_calls'
>> 
>> # Collects system hardware information
>> module SUSE::Toolkit::Hwinfo
>> 
>>  include SUSE::Toolkit::SystemCalls
>> 
>>  def cpus
>>    output['CPU(s)'].to_i
>>  end
>> 
>>  def sockets
>>    output['Socket(s)'].to_i
>>  end
>> 
>>  def hypervisor
>>    output['Hypervisor vendor']
>>  end
>> 
>> Can somebody please show me, how now SUSEConnect can distinguish
>> between a HP-ProLiant Server, a XEN client, a KVM client and a VMWare
>> ESXi client. It is really of interest to see how it is done.
>> ( Believing is one thing. But understanding the process gives me
>> confidence. )
>> 
>> Thank you very much, indeed
>> 
>> Best regards
> 
> Hi Urs,
> I check current code on github and it uses now lscpu call -
> https://github.com/SUSE/connect/blob/master/lib/suse/connect/hwinfo/x86.rb#L45
> from which it create pairs of keys and values. and there should by
> Hypervisor vendor key.
> 
> Josef
> _______________________________________________
> sles-beta mailing list
> sles-beta at lists.suse.com
> http://lists.suse.com/mailman/listinfo/sles-beta


More information about the sles-beta mailing list