blob: 4355451c7b17f5b17578922cb2ee0518e20455c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
module Facter::Util::Virtual
def self.openvz?
FileTest.directory?("/proc/vz")
end
def self.openvz_type
return nil unless self.openvz?
if FileTest.exists?("/proc/vz/version")
result = "openvzhn"
else
result = "openvzve"
end
end
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
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
def self.vserver_type
if self.vserver?
if FileTest.exists?("/proc/virtual")
"vserver_host"
else
"vserver"
end
end
end
def self.xen?
["/proc/sys/xen", "/sys/bus/xen", "/proc/xen" ].detect do |f|
FileTest.exists?(f)
end
end
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
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
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
def self.hpvm?
Facter::Util::Resolution.exec("/usr/bin/getconf MACHINE_MODEL").chomp =~ /Virtual Machine/
end
def self.zlinux?
"zlinux"
end
end
|