[sles-beta] SLES12 RC1 SUSEConnect distingush between virtiual and physical server?
urs.frey at post.ch
urs.frey at post.ch
Tue Aug 12 02:06:25 MDT 2014
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
More information about the sles-beta
mailing list