Module: Facter::Util::Virtual

Defined in:
lib/facter/util/virtual.rb

Class Method Summary collapse

Class Method Details

.hpvm?Boolean



69
70
71
# File 'lib/facter/util/virtual.rb', line 69

def self.hpvm?
    Facter::Util::Resolution.exec("/usr/bin/getconf MACHINE_MODEL").chomp =~ /Virtual Machine/
end

.jail?Boolean



61
62
63
64
65
66
67
# File 'lib/facter/util/virtual.rb', line 61

def self.jail?
    path = case Facter.value(:kernel)
        when "FreeBSD" then "/sbin"
        when "GNU/kFreeBSD" then "/bin"
    end
    Facter::Util::Resolution.exec("#{path}/sysctl -n security.jail.jailed") == "1"
end

.kvm?Boolean



45
46
47
48
49
50
51
52
# File 'lib/facter/util/virtual.rb', line 45

def self.kvm?
   txt = if FileTest.exists?("/proc/cpuinfo")
       File.read("/proc/cpuinfo")
   elsif Facter.value(:kernel)=="FreeBSD"
       Facter::Util::Resolution.exec("/sbin/sysctl -n hw.model")
   end
   (txt =~ /QEMU Virtual CPU/) ? true : false
end

.kvm_typeObject



54
55
56
57
58
59
# File 'lib/facter/util/virtual.rb', line 54

def self.kvm_type
  # TODO Tell the difference between kvm and qemu
  # Can't work out a way to do this at the moment that doesn't
  # require a special binary
  "kvm"
end

.openvz?Boolean



2
3
4
# File 'lib/facter/util/virtual.rb', line 2

def self.openvz?
    FileTest.directory?("/proc/vz") and FileTest.exists?( '/proc/vz/veinfo' )
end

.openvz_typeObject



6
7
8
9
10
11
12
13
# File 'lib/facter/util/virtual.rb', line 6

def self.openvz_type
    return nil unless self.openvz?
    if FileTest.exists?("/proc/vz/version")
        result = "openvzhn"
    else
        result = "openvzve"
    end
end

.vserver?Boolean



22
23
24
25
26
27
# File 'lib/facter/util/virtual.rb', line 22

def self.vserver?
    return false unless FileTest.exists?("/proc/self/status")
    txt = File.read("/proc/self/status")
    return true if txt =~ /^(s_context|VxID):[[:blank:]]*[0-9]/
    return false
end

.vserver_typeObject



29
30
31
32
33
34
35
36
37
# File 'lib/facter/util/virtual.rb', line 29

def self.vserver_type
    if self.vserver?
        if FileTest.exists?("/proc/virtual")
            "vserver_host"
        else
            "vserver"
        end
    end
end

.xen?Boolean



39
40
41
42
43
# File 'lib/facter/util/virtual.rb', line 39

def self.xen?
    ["/proc/sys/xen", "/sys/bus/xen", "/proc/xen" ].detect do |f|
        FileTest.exists?(f)
    end
end

.zlinux?Boolean



73
74
75
# File 'lib/facter/util/virtual.rb', line 73

def self.zlinux?
     "zlinux"
end

.zone?Boolean



15
16
17
18
19
20
# File 'lib/facter/util/virtual.rb', line 15

def self.zone?
    return true if FileTest.directory?("/.SUNWnative")
    z = Facter::Util::Resolution.exec("/sbin/zonename")
    return false unless z
    return z.chomp != 'global'
end