facter 2.4.4 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/facter/core/execution/posix.rb +2 -2
- data/lib/facter/gid.rb +1 -1
- data/lib/facter/ipaddress.rb +5 -14
- data/lib/facter/ipaddress6.rb +3 -2
- data/lib/facter/macaddress.rb +3 -8
- data/lib/facter/netmask.rb +9 -1
- data/lib/facter/processors/os.rb +1 -1
- data/lib/facter/util/ip.rb +17 -0
- data/lib/facter/util/netmask.rb +0 -6
- data/lib/facter/util/virtual.rb +2 -2
- data/lib/facter/version.rb +1 -1
- data/spec/fixtures/ifconfig/net_route_all_with_multiple_interfaces +2 -0
- data/spec/fixtures/ifconfig/net_route_net_tools_1.60.txt +3 -0
- data/spec/fixtures/unit/ipaddress/net_route_multiple_127_addresses.txt +3 -0
- data/spec/fixtures/unit/ipaddress/net_route_net_tools_1.60.txt +3 -0
- data/spec/fixtures/unit/ipaddress/net_route_non_english_locale.txt +3 -0
- data/spec/fixtures/unit/ipaddress/net_route_ubuntu_1204.txt +3 -0
- data/spec/fixtures/unit/netmask/{darwin_10_8_5.txt → ifconfig_darwin_10_8_5.txt} +0 -0
- data/spec/fixtures/unit/netmask/net_route_multiple_127_addresses.txt +3 -0
- data/spec/fixtures/unit/netmask/net_route_net_tools_1.60.txt +3 -0
- data/spec/fixtures/unit/netmask/net_route_non_english_locale.txt +3 -0
- data/spec/fixtures/unit/netmask/net_route_ubuntu_1204.txt +3 -0
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices +10 -0
- data/spec/unit/core/execution/posix_spec.rb +10 -0
- data/spec/unit/gid_spec.rb +9 -0
- data/spec/unit/ipaddress6_spec.rb +16 -4
- data/spec/unit/ipaddress_spec.rb +12 -12
- data/spec/unit/macaddress_spec.rb +6 -1
- data/spec/unit/netmask_spec.rb +17 -4
- data/spec/unit/processors/os_spec.rb +2 -0
- data/spec/unit/util/virtual_spec.rb +11 -0
- metadata +26 -4
|
@@ -11,11 +11,11 @@ class Facter::Core::Execution::Posix < Facter::Core::Execution::Base
|
|
|
11
11
|
|
|
12
12
|
def which(bin)
|
|
13
13
|
if absolute_path?(bin)
|
|
14
|
-
return bin if File.executable?(bin)
|
|
14
|
+
return bin if File.executable?(bin) and File.file?(bin)
|
|
15
15
|
else
|
|
16
16
|
search_paths.each do |dir|
|
|
17
17
|
dest = File.join(dir, bin)
|
|
18
|
-
return dest if File.executable?(dest)
|
|
18
|
+
return dest if File.executable?(dest) and File.file?(dest)
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
nil
|
data/lib/facter/gid.rb
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
Facter.add(:gid) do
|
|
12
12
|
confine do
|
|
13
|
-
Facter::Core::Execution.which('id') && Facter.value(:kernel)
|
|
13
|
+
Facter::Core::Execution.which('id') && !["SunOS", "windows"].include?(Facter.value(:kernel))
|
|
14
14
|
end
|
|
15
15
|
setcode { Facter::Core::Execution.exec('id -ng') }
|
|
16
16
|
end
|
data/lib/facter/ipaddress.rb
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
# Purpose: Return the main IP address for a host.
|
|
4
4
|
#
|
|
5
5
|
# Resolution:
|
|
6
|
-
# On
|
|
6
|
+
# On Linux and AIX, it examines the routing table and uses the IP address
|
|
7
|
+
# of the default interface.
|
|
8
|
+
# On other Unixes does an ifconfig, and returns the first non 127.0.0.0/8
|
|
7
9
|
# subnetted IP it finds.
|
|
8
10
|
# On Windows, it attempts to use the socket library and resolve the machine's
|
|
9
11
|
# hostname via DNS.
|
|
@@ -27,19 +29,8 @@ require 'facter/util/ip'
|
|
|
27
29
|
Facter.add(:ipaddress) do
|
|
28
30
|
confine :kernel => :linux
|
|
29
31
|
setcode do
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if output
|
|
33
|
-
regexp = /inet (?:addr:)?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
|
|
34
|
-
output.split("\n").each do |line|
|
|
35
|
-
match = regexp.match(line)
|
|
36
|
-
if match and not /^127\./.match(match[1])
|
|
37
|
-
ip = match[1]
|
|
38
|
-
break
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
ip
|
|
32
|
+
iface = Facter::Util::IP.linux_default_iface
|
|
33
|
+
Facter.value("ipaddress_#{iface}")
|
|
43
34
|
end
|
|
44
35
|
end
|
|
45
36
|
|
data/lib/facter/ipaddress6.rb
CHANGED
|
@@ -37,11 +37,12 @@ def get_address_after_token(output, token, return_first=false)
|
|
|
37
37
|
ip
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
|
|
40
41
|
Facter.add(:ipaddress6) do
|
|
41
42
|
confine :kernel => :linux
|
|
42
43
|
setcode do
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
iface = Facter::Util::IP.linux_default_iface
|
|
45
|
+
Facter.value("ipaddress6_#{iface}")
|
|
45
46
|
end
|
|
46
47
|
end
|
|
47
48
|
|
data/lib/facter/macaddress.rb
CHANGED
|
@@ -12,15 +12,10 @@ require 'facter/util/macaddress'
|
|
|
12
12
|
require 'facter/util/ip'
|
|
13
13
|
|
|
14
14
|
Facter.add(:macaddress) do
|
|
15
|
-
confine :kernel =>
|
|
15
|
+
confine :kernel => :linux
|
|
16
16
|
setcode do
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
String(output).each_line do |s|
|
|
21
|
-
ether.push($1) if s =~ /(?:ether|HWaddr) ((\w{1,2}:){5,}\w{1,2})/
|
|
22
|
-
end
|
|
23
|
-
Facter::Util::Macaddress.standardize(ether[0])
|
|
17
|
+
iface = Facter::Util::IP.linux_default_iface
|
|
18
|
+
Facter.value("macaddress_#{iface}")
|
|
24
19
|
end
|
|
25
20
|
end
|
|
26
21
|
|
data/lib/facter/netmask.rb
CHANGED
|
@@ -16,8 +16,16 @@
|
|
|
16
16
|
#
|
|
17
17
|
require 'facter/util/netmask'
|
|
18
18
|
|
|
19
|
+
Facter.add(:netmask) do
|
|
20
|
+
confine :kernel => :linux
|
|
21
|
+
setcode do
|
|
22
|
+
iface = Facter::Util::IP.linux_default_iface
|
|
23
|
+
Facter.value("netmask_#{iface}")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
19
27
|
Facter.add("netmask") do
|
|
20
|
-
confine :kernel => [ :sunos, :
|
|
28
|
+
confine :kernel => [ :sunos, :freebsd, :openbsd, :netbsd, :darwin, :"gnu/kfreebsd", :dragonfly, :AIX ]
|
|
21
29
|
setcode do
|
|
22
30
|
Facter::NetMask.get_netmask
|
|
23
31
|
end
|
data/lib/facter/processors/os.rb
CHANGED
|
@@ -112,7 +112,7 @@ module Facter
|
|
|
112
112
|
# get each physical processor
|
|
113
113
|
Facter::Util::WMI.execquery("select * from Win32_Processor").each do |proc|
|
|
114
114
|
# not supported before 2008
|
|
115
|
-
if proc.
|
|
115
|
+
if proc.ole_respond_to?(:NumberOfLogicalProcessors)
|
|
116
116
|
processor_num = proc.NumberOfLogicalProcessors
|
|
117
117
|
else
|
|
118
118
|
processor_num = 1
|
data/lib/facter/util/ip.rb
CHANGED
|
@@ -337,4 +337,21 @@ module Facter::Util::IP
|
|
|
337
337
|
network = ip.mask(subnet.to_s).to_s
|
|
338
338
|
end
|
|
339
339
|
end
|
|
340
|
+
|
|
341
|
+
def self.read_proc_net_route
|
|
342
|
+
File.read("/proc/net/route")
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def self.linux_default_iface
|
|
346
|
+
routes = read_proc_net_route
|
|
347
|
+
iface = nil
|
|
348
|
+
routes.split("\n").each do |line|
|
|
349
|
+
parts = line.split
|
|
350
|
+
if parts[1] == "00000000"
|
|
351
|
+
iface = alphafy(parts[0])
|
|
352
|
+
break
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
iface
|
|
356
|
+
end
|
|
340
357
|
end
|
data/lib/facter/util/netmask.rb
CHANGED
|
@@ -5,12 +5,6 @@ module Facter::NetMask
|
|
|
5
5
|
|
|
6
6
|
ops = nil
|
|
7
7
|
case Facter.value(:kernel)
|
|
8
|
-
when 'Linux'
|
|
9
|
-
ops = {
|
|
10
|
-
:ifconfig_opts => ['2>/dev/null'],
|
|
11
|
-
:regex => %r{#{Facter.value(:ipaddress)}.*?(?:Mask:|netmask)\s*(#{ipregex})}x,
|
|
12
|
-
:munge => nil,
|
|
13
|
-
}
|
|
14
8
|
when 'SunOS'
|
|
15
9
|
ops = {
|
|
16
10
|
:ifconfig_opts => ['-a'],
|
data/lib/facter/util/virtual.rb
CHANGED
|
@@ -162,7 +162,7 @@ module Facter::Util::Virtual
|
|
|
162
162
|
path = Pathname.new('/proc/1/cgroup')
|
|
163
163
|
return false unless path.readable?
|
|
164
164
|
begin
|
|
165
|
-
in_lxc = path.readlines.any? {|l| l.split(":")[2].to_s.
|
|
165
|
+
in_lxc = path.readlines.any? {|l| l.split(":")[2].to_s.include? '/lxc' }
|
|
166
166
|
rescue Errno::EPERM => exc
|
|
167
167
|
# If we get "operation not permitted" here, it probably means we are
|
|
168
168
|
# running OpenVZ. We are not running LXC anyway, so...
|
|
@@ -179,7 +179,7 @@ module Facter::Util::Virtual
|
|
|
179
179
|
path = Pathname.new('/proc/1/cgroup')
|
|
180
180
|
return false unless path.readable?
|
|
181
181
|
begin
|
|
182
|
-
in_docker = path.readlines.any? {|l| l.split(":")[2].to_s.
|
|
182
|
+
in_docker = path.readlines.any? {|l| l.split(":")[2].to_s.include? '/docker' }
|
|
183
183
|
rescue Errno::EPERM => exc
|
|
184
184
|
# This can fail under OpenVZ, just like in .lxc?
|
|
185
185
|
return false
|
data/lib/facter/version.rb
CHANGED
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
10:hugetlb:/
|
|
2
|
+
9:perf_event:/
|
|
3
|
+
8:blkio:/system.slice/docker-8255e18aa44c5809a33db5f324a4b34e3a73b246394e4070cff752cd84d79a6d.scope
|
|
4
|
+
7:net_cls:/
|
|
5
|
+
6:freezer:/system.slice/docker-8255e18aa44c5809a33db5f324a4b34e3a73b246394e4070cff752cd84d79a6d.scope
|
|
6
|
+
5:devices:/system.slice/docker-8255e18aa44c5809a33db5f324a4b34e3a73b246394e4070cff752cd84d79a6d.scope
|
|
7
|
+
4:memory:/system.slice/docker-8255e18aa44c5809a33db5f324a4b34e3a73b246394e4070cff752cd84d79a6d.scope
|
|
8
|
+
3:cpuacct,cpu:/system.slice/docker-8255e18aa44c5809a33db5f324a4b34e3a73b246394e4070cff752cd84d79a6d.scope
|
|
9
|
+
2:cpuset:/system.slice/docker-8255e18aa44c5809a33db5f324a4b34e3a73b246394e4070cff752cd84d79a6d.scope
|
|
10
|
+
1:name=systemd:/system.slice/docker-8255e18aa44c5809a33db5f324a4b34e3a73b246394e4070cff752cd84d79a6d.scope
|
|
@@ -16,6 +16,7 @@ describe Facter::Core::Execution::Posix, :unless => Facter::Util::Config.is_wind
|
|
|
16
16
|
|
|
17
17
|
context "and provided with an absolute path" do
|
|
18
18
|
it "should return the binary if executable" do
|
|
19
|
+
File.expects(:file?).with('/opt/foo').returns true
|
|
19
20
|
File.expects(:executable?).with('/opt/foo').returns true
|
|
20
21
|
subject.which('/opt/foo').should == '/opt/foo'
|
|
21
22
|
end
|
|
@@ -24,12 +25,21 @@ describe Facter::Core::Execution::Posix, :unless => Facter::Util::Config.is_wind
|
|
|
24
25
|
File.expects(:executable?).with('/opt/foo').returns false
|
|
25
26
|
subject.which('/opt/foo').should be_nil
|
|
26
27
|
end
|
|
28
|
+
|
|
29
|
+
it "should return nil if the binary is not a file" do
|
|
30
|
+
File.expects(:file?).with('/opt/foo').returns false
|
|
31
|
+
File.expects(:executable?).with('/opt/foo').returns true
|
|
32
|
+
subject.which('/opt/foo').should be_nil
|
|
33
|
+
end
|
|
27
34
|
end
|
|
28
35
|
|
|
29
36
|
context "and not provided with an absolute path" do
|
|
30
37
|
it "should return the absolute path if found" do
|
|
38
|
+
File.expects(:file?).with('/bin/foo').never
|
|
31
39
|
File.expects(:executable?).with('/bin/foo').returns false
|
|
40
|
+
File.expects(:file?).with('/sbin/foo').returns true
|
|
32
41
|
File.expects(:executable?).with('/sbin/foo').returns true
|
|
42
|
+
File.expects(:file?).with('/usr/sbin/foo').never
|
|
33
43
|
File.expects(:executable?).with('/usr/sbin/foo').never
|
|
34
44
|
subject.which('foo').should == '/sbin/foo'
|
|
35
45
|
end
|
data/spec/unit/gid_spec.rb
CHANGED
|
@@ -39,4 +39,13 @@ describe "gid fact" do
|
|
|
39
39
|
Facter.fact(:gid).value.should == nil
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
|
+
|
|
43
|
+
describe "on windows systems" do
|
|
44
|
+
it "is not supported" do
|
|
45
|
+
Facter.fact(:kernel).stubs(:value).returns("windows")
|
|
46
|
+
Facter::Core::Execution.expects(:which).with('id').returns(true)
|
|
47
|
+
|
|
48
|
+
Facter.fact(:gid).value.should == nil
|
|
49
|
+
end
|
|
50
|
+
end
|
|
42
51
|
end
|
|
@@ -26,8 +26,11 @@ describe "The IPv6 address fact" do
|
|
|
26
26
|
it "should return ipaddress6 information for Linux" do
|
|
27
27
|
Facter::Core::Execution.stubs(:exec).with('uname -s').returns('Linux')
|
|
28
28
|
Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
|
|
29
|
-
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
29
|
+
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
30
30
|
returns(ifconfig_fixture('linux_ifconfig_all_with_multiple_interfaces'))
|
|
31
|
+
routes = ifconfig_fixture('net_route_all_with_multiple_interfaces')
|
|
32
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns(routes)
|
|
33
|
+
Facter.collection.internal_loader.load(:interfaces)
|
|
31
34
|
|
|
32
35
|
Facter.value(:ipaddress6).should == "2610:10:20:209:212:3fff:febe:2201"
|
|
33
36
|
end
|
|
@@ -35,8 +38,11 @@ describe "The IPv6 address fact" do
|
|
|
35
38
|
it "should return ipaddress6 information for Linux with recent net-tools" do
|
|
36
39
|
Facter::Core::Execution.stubs(:exec).with('uname -s').returns('Linux')
|
|
37
40
|
Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
|
|
38
|
-
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
41
|
+
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
39
42
|
returns(ifconfig_fixture('ifconfig_net_tools_1.60.txt'))
|
|
43
|
+
routes = ifconfig_fixture('net_route_net_tools_1.60.txt')
|
|
44
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns(routes)
|
|
45
|
+
Facter.collection.internal_loader.load(:interfaces)
|
|
40
46
|
|
|
41
47
|
Facter.value(:ipaddress6).should == "2610:10:20:209:212:3fff:febe:2201"
|
|
42
48
|
end
|
|
@@ -44,8 +50,11 @@ describe "The IPv6 address fact" do
|
|
|
44
50
|
it "should return ipaddress6 with fe80 in any other octet than the first for Linux" do
|
|
45
51
|
Facter::Core::Execution.stubs(:exec).with('uname -s').returns('Linux')
|
|
46
52
|
Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
|
|
47
|
-
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
53
|
+
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
48
54
|
returns(ifconfig_fixture('linux_ifconfig_all_with_multiple_interfaces_and_fe80'))
|
|
55
|
+
routes = ifconfig_fixture('net_route_all_with_multiple_interfaces')
|
|
56
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns(routes)
|
|
57
|
+
Facter.collection.internal_loader.load(:interfaces)
|
|
49
58
|
|
|
50
59
|
Facter.value(:ipaddress6).should == "2610:10:20:209:212:3fff:fe80:2201"
|
|
51
60
|
end
|
|
@@ -53,8 +62,11 @@ describe "The IPv6 address fact" do
|
|
|
53
62
|
it "should not return ipaddress6 link-local address for Linux" do
|
|
54
63
|
Facter::Core::Execution.stubs(:exec).with('uname -s').returns('Linux')
|
|
55
64
|
Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
|
|
56
|
-
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
65
|
+
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
57
66
|
returns(ifconfig_fixture('linux_ifconfig_all_with_multiple_interfaces_and_no_public_ipv6'))
|
|
67
|
+
routes = ifconfig_fixture('net_route_all_with_multiple_interfaces')
|
|
68
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns(routes)
|
|
69
|
+
Facter.collection.internal_loader.load(:interfaces)
|
|
58
70
|
|
|
59
71
|
Facter.value(:ipaddress6).should be_false
|
|
60
72
|
end
|
data/spec/unit/ipaddress_spec.rb
CHANGED
|
@@ -4,10 +4,6 @@ require 'spec_helper'
|
|
|
4
4
|
require 'facter/util/ip'
|
|
5
5
|
|
|
6
6
|
describe "ipaddress fact" do
|
|
7
|
-
before do
|
|
8
|
-
Facter.collection.internal_loader.load(:ipaddress)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
7
|
context 'using `ifconfig`' do
|
|
12
8
|
before :each do
|
|
13
9
|
Facter.fact(:hostname).stubs(:value)
|
|
@@ -18,25 +14,29 @@ describe "ipaddress fact" do
|
|
|
18
14
|
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
|
19
15
|
end
|
|
20
16
|
|
|
17
|
+
after :each do
|
|
18
|
+
Facter.collection.flush
|
|
19
|
+
end
|
|
20
|
+
|
|
21
21
|
def expect_ifconfig_parse(address, fixture)
|
|
22
|
-
Facter::Util::IP.stubs(:exec_ifconfig).returns(my_fixture_read(fixture))
|
|
22
|
+
Facter::Util::IP.stubs(:exec_ifconfig).returns(my_fixture_read("ifconfig_#{fixture}"))
|
|
23
|
+
routes = my_fixture_read("net_route_#{fixture}")
|
|
24
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns(routes)
|
|
25
|
+
Facter.collection.internal_loader.load(:interfaces)
|
|
26
|
+
Facter.collection.internal_loader.load(:ipaddress)
|
|
23
27
|
Facter.fact(:ipaddress).value.should == address
|
|
24
28
|
end
|
|
25
29
|
|
|
26
30
|
it "parses correctly on Ubuntu 12.04" do
|
|
27
|
-
expect_ifconfig_parse "10.87.80.110", "
|
|
31
|
+
expect_ifconfig_parse "10.87.80.110", "ubuntu_1204.txt"
|
|
28
32
|
end
|
|
29
33
|
|
|
30
34
|
it "parses correctly on Fedora 17" do
|
|
31
|
-
expect_ifconfig_parse "131.252.209.153", "
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "parses a real address over multiple loopback addresses" do
|
|
35
|
-
expect_ifconfig_parse "10.0.222.20", "ifconfig_multiple_127_addresses.txt"
|
|
35
|
+
expect_ifconfig_parse "131.252.209.153", "net_tools_1.60.txt"
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
it "parses nothing with a non-english locale" do
|
|
39
|
-
expect_ifconfig_parse nil, "
|
|
39
|
+
expect_ifconfig_parse nil, "non_english_locale.txt"
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
end
|
|
@@ -23,8 +23,11 @@ describe "macaddress fact" do
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it "should return the macaddress of the first interface" do
|
|
26
|
-
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
26
|
+
Facter::Util::IP.stubs(:exec_ifconfig).
|
|
27
27
|
returns(ifconfig_fixture('linux_ifconfig_all_with_multiple_interfaces'))
|
|
28
|
+
routes = ifconfig_fixture("net_route_all_with_multiple_interfaces")
|
|
29
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns(routes)
|
|
30
|
+
Facter.collection.internal_loader.load(:interfaces)
|
|
28
31
|
|
|
29
32
|
Facter.value(:macaddress).should == "00:12:3f:be:22:01"
|
|
30
33
|
end
|
|
@@ -32,6 +35,7 @@ describe "macaddress fact" do
|
|
|
32
35
|
it "should return nil when no macaddress can be found" do
|
|
33
36
|
Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
|
|
34
37
|
returns(ifconfig_fixture('linux_ifconfig_no_mac'))
|
|
38
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns("")
|
|
35
39
|
|
|
36
40
|
proc { Facter.value(:macaddress) }.should_not raise_error
|
|
37
41
|
Facter.value(:macaddress).should be_nil
|
|
@@ -41,6 +45,7 @@ describe "macaddress fact" do
|
|
|
41
45
|
it "should return nil when no interface has a real macaddress" do
|
|
42
46
|
Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
|
|
43
47
|
returns(ifconfig_fixture('linux_ifconfig_venet'))
|
|
48
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns("")
|
|
44
49
|
|
|
45
50
|
proc { Facter.value(:macaddress) }.should_not raise_error
|
|
46
51
|
Facter.value(:macaddress).should be_nil
|
data/spec/unit/netmask_spec.rb
CHANGED
|
@@ -6,8 +6,21 @@ require 'facter/util/ip'
|
|
|
6
6
|
|
|
7
7
|
shared_examples_for "netmask from ifconfig output" do |platform, address, fixture|
|
|
8
8
|
it "correctly on #{platform}" do
|
|
9
|
-
Facter::Util::IP.stubs(:exec_ifconfig).returns(my_fixture_read(fixture))
|
|
9
|
+
Facter::Util::IP.stubs(:exec_ifconfig).returns(my_fixture_read("ifconfig_#{fixture}"))
|
|
10
10
|
Facter.collection.internal_loader.load(:netmask)
|
|
11
|
+
begin
|
|
12
|
+
routes = my_fixture_read("net_route_#{fixture}")
|
|
13
|
+
Facter::Util::IP.stubs(:read_proc_net_route).returns(routes)
|
|
14
|
+
rescue RuntimeError
|
|
15
|
+
# We want to try to load proc/net/route fixtures, but skip if
|
|
16
|
+
# they don't exist for non-linux platforms. Ideally we'd get an
|
|
17
|
+
# IOError here, but the fixture machinery here is dumb and
|
|
18
|
+
# converts this to a RuntimeError. Hopefully anything that would
|
|
19
|
+
# error here would also cause the actual test to fail, so I'm
|
|
20
|
+
# not going to worry too hard.
|
|
21
|
+
end
|
|
22
|
+
Facter.collection.internal_loader.load(:interfaces)
|
|
23
|
+
Facter.collection.internal_loader.load(:ipaddress)
|
|
11
24
|
|
|
12
25
|
Facter.fact(:netmask).value.should eq(address)
|
|
13
26
|
end
|
|
@@ -21,10 +34,10 @@ describe "The netmask fact" do
|
|
|
21
34
|
|
|
22
35
|
example_behavior_for "netmask from ifconfig output",
|
|
23
36
|
"Archlinux (net-tools 1.60)", "255.255.255.0",
|
|
24
|
-
"
|
|
37
|
+
"net_tools_1.60.txt"
|
|
25
38
|
example_behavior_for "netmask from ifconfig output",
|
|
26
39
|
"Ubuntu 12.04", "255.255.255.255",
|
|
27
|
-
"
|
|
40
|
+
"ubuntu_1204.txt"
|
|
28
41
|
end
|
|
29
42
|
|
|
30
43
|
context "on AIX" do
|
|
@@ -34,7 +47,7 @@ describe "The netmask fact" do
|
|
|
34
47
|
|
|
35
48
|
example_behavior_for "netmask from ifconfig output",
|
|
36
49
|
"AIX 7", "255.255.255.0",
|
|
37
|
-
"
|
|
50
|
+
"aix_7.txt"
|
|
38
51
|
|
|
39
52
|
end
|
|
40
53
|
|
|
@@ -221,6 +221,7 @@ describe Facter::Processors::Windows do
|
|
|
221
221
|
before :each do
|
|
222
222
|
proc = stubs 'proc'
|
|
223
223
|
proc.stubs(:Name).returns("Intel(R) Celeron(R) processor")
|
|
224
|
+
proc.stubs(:ole_respond_to?).with(:NumberOfLogicalProcessors).returns(false)
|
|
224
225
|
load(Array.new(2, proc))
|
|
225
226
|
end
|
|
226
227
|
|
|
@@ -235,6 +236,7 @@ describe Facter::Processors::Windows do
|
|
|
235
236
|
before :each do
|
|
236
237
|
proc = stubs 'proc'
|
|
237
238
|
proc.stubs(:NumberOfLogicalProcessors).returns(2)
|
|
239
|
+
proc.stubs(:ole_respond_to?).with(:NumberOfLogicalProcessors).returns(true)
|
|
238
240
|
proc.stubs(:Name).returns("Intel(R) Celeron(R) processor")
|
|
239
241
|
load(Array.new(2, proc))
|
|
240
242
|
end
|
|
@@ -368,6 +368,17 @@ describe Facter::Util::Virtual do
|
|
|
368
368
|
end
|
|
369
369
|
end
|
|
370
370
|
|
|
371
|
+
context '/proc/1/cgroup has at least one hierarchy with docker underneath a systemd slice parent' do
|
|
372
|
+
before :each do
|
|
373
|
+
fakepath = Pathname.new(File.join(fixture_path, 'in_a_docker_container_with_systemd_slices'))
|
|
374
|
+
Pathname.stubs(:new).with('/proc/1/cgroup').returns(fakepath)
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
it 'is true' do
|
|
378
|
+
subject.should be_true
|
|
379
|
+
end
|
|
380
|
+
end
|
|
381
|
+
|
|
371
382
|
context '/proc/1/cgroup has no hierarchies rooted in /docker/' do
|
|
372
383
|
before :each do
|
|
373
384
|
fakepath = Pathname.new(File.join(fixture_path, 'not_in_a_container'))
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: facter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.4.
|
|
4
|
+
version: 2.4.5
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2016-01-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: You can prove anything with facts!
|
|
15
15
|
email: info@puppetlabs.com
|
|
@@ -201,6 +201,7 @@ files:
|
|
|
201
201
|
- spec/fixtures/cpuinfo/two_multicore-grep
|
|
202
202
|
- spec/fixtures/virtual/proc_1_cgroup/in_a_container
|
|
203
203
|
- spec/fixtures/virtual/proc_1_cgroup/not_in_a_container
|
|
204
|
+
- spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices
|
|
204
205
|
- spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container
|
|
205
206
|
- spec/fixtures/virtual/proc_self_status/vserver_2_1/guest
|
|
206
207
|
- spec/fixtures/virtual/proc_self_status/vserver_2_1/host
|
|
@@ -219,8 +220,12 @@ files:
|
|
|
219
220
|
- spec/fixtures/processorcount/solaris-psrinfo
|
|
220
221
|
- spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt
|
|
221
222
|
- spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt
|
|
223
|
+
- spec/fixtures/unit/netmask/net_route_ubuntu_1204.txt
|
|
224
|
+
- spec/fixtures/unit/netmask/net_route_multiple_127_addresses.txt
|
|
222
225
|
- spec/fixtures/unit/netmask/ifconfig_aix_7.txt
|
|
223
|
-
- spec/fixtures/unit/netmask/
|
|
226
|
+
- spec/fixtures/unit/netmask/net_route_non_english_locale.txt
|
|
227
|
+
- spec/fixtures/unit/netmask/net_route_net_tools_1.60.txt
|
|
228
|
+
- spec/fixtures/unit/netmask/ifconfig_darwin_10_8_5.txt
|
|
224
229
|
- spec/fixtures/unit/selinux/selinux_sestatus2
|
|
225
230
|
- spec/fixtures/unit/selinux/selinux_sestatus
|
|
226
231
|
- spec/fixtures/unit/filesystems/linux
|
|
@@ -298,8 +303,12 @@ files:
|
|
|
298
303
|
- spec/fixtures/unit/ec2/rest/meta-data/root
|
|
299
304
|
- spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt
|
|
300
305
|
- spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt
|
|
306
|
+
- spec/fixtures/unit/ipaddress/net_route_ubuntu_1204.txt
|
|
307
|
+
- spec/fixtures/unit/ipaddress/net_route_multiple_127_addresses.txt
|
|
301
308
|
- spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt
|
|
309
|
+
- spec/fixtures/unit/ipaddress/net_route_non_english_locale.txt
|
|
302
310
|
- spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt
|
|
311
|
+
- spec/fixtures/unit/ipaddress/net_route_net_tools_1.60.txt
|
|
303
312
|
- spec/fixtures/unit/processors/os/darwin-system-profiler
|
|
304
313
|
- spec/fixtures/unit/zfs_version/zfs_new
|
|
305
314
|
- spec/fixtures/unit/zfs_version/solaris_11
|
|
@@ -344,6 +353,7 @@ files:
|
|
|
344
353
|
- spec/fixtures/unit/zpool_version/freebsd_8.2
|
|
345
354
|
- spec/fixtures/unit/zpool_version/solaris_10
|
|
346
355
|
- spec/fixtures/ifconfig/open_solaris_b132
|
|
356
|
+
- spec/fixtures/ifconfig/net_route_all_with_multiple_interfaces
|
|
347
357
|
- spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt
|
|
348
358
|
- spec/fixtures/ifconfig/freebsd_6_0
|
|
349
359
|
- spec/fixtures/ifconfig/linux_ifconfig_venet
|
|
@@ -367,6 +377,7 @@ files:
|
|
|
367
377
|
- spec/fixtures/ifconfig/darwin_10_3_0_en0
|
|
368
378
|
- spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces
|
|
369
379
|
- spec/fixtures/ifconfig/open_solaris_10
|
|
380
|
+
- spec/fixtures/ifconfig/net_route_net_tools_1.60.txt
|
|
370
381
|
- spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1
|
|
371
382
|
- spec/fixtures/ifconfig/darwin_10_6_6_dualstack
|
|
372
383
|
- spec/fixtures/ifconfig/ubuntu_7_04_eth0
|
|
@@ -549,6 +560,7 @@ test_files:
|
|
|
549
560
|
- spec/fixtures/cpuinfo/two_multicore-grep
|
|
550
561
|
- spec/fixtures/virtual/proc_1_cgroup/in_a_container
|
|
551
562
|
- spec/fixtures/virtual/proc_1_cgroup/not_in_a_container
|
|
563
|
+
- spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices
|
|
552
564
|
- spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container
|
|
553
565
|
- spec/fixtures/virtual/proc_self_status/vserver_2_1/guest
|
|
554
566
|
- spec/fixtures/virtual/proc_self_status/vserver_2_1/host
|
|
@@ -567,8 +579,12 @@ test_files:
|
|
|
567
579
|
- spec/fixtures/processorcount/solaris-psrinfo
|
|
568
580
|
- spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt
|
|
569
581
|
- spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt
|
|
582
|
+
- spec/fixtures/unit/netmask/net_route_ubuntu_1204.txt
|
|
583
|
+
- spec/fixtures/unit/netmask/net_route_multiple_127_addresses.txt
|
|
570
584
|
- spec/fixtures/unit/netmask/ifconfig_aix_7.txt
|
|
571
|
-
- spec/fixtures/unit/netmask/
|
|
585
|
+
- spec/fixtures/unit/netmask/net_route_non_english_locale.txt
|
|
586
|
+
- spec/fixtures/unit/netmask/net_route_net_tools_1.60.txt
|
|
587
|
+
- spec/fixtures/unit/netmask/ifconfig_darwin_10_8_5.txt
|
|
572
588
|
- spec/fixtures/unit/selinux/selinux_sestatus2
|
|
573
589
|
- spec/fixtures/unit/selinux/selinux_sestatus
|
|
574
590
|
- spec/fixtures/unit/filesystems/linux
|
|
@@ -646,8 +662,12 @@ test_files:
|
|
|
646
662
|
- spec/fixtures/unit/ec2/rest/meta-data/root
|
|
647
663
|
- spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt
|
|
648
664
|
- spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt
|
|
665
|
+
- spec/fixtures/unit/ipaddress/net_route_ubuntu_1204.txt
|
|
666
|
+
- spec/fixtures/unit/ipaddress/net_route_multiple_127_addresses.txt
|
|
649
667
|
- spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt
|
|
668
|
+
- spec/fixtures/unit/ipaddress/net_route_non_english_locale.txt
|
|
650
669
|
- spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt
|
|
670
|
+
- spec/fixtures/unit/ipaddress/net_route_net_tools_1.60.txt
|
|
651
671
|
- spec/fixtures/unit/processors/os/darwin-system-profiler
|
|
652
672
|
- spec/fixtures/unit/zfs_version/zfs_new
|
|
653
673
|
- spec/fixtures/unit/zfs_version/solaris_11
|
|
@@ -692,6 +712,7 @@ test_files:
|
|
|
692
712
|
- spec/fixtures/unit/zpool_version/freebsd_8.2
|
|
693
713
|
- spec/fixtures/unit/zpool_version/solaris_10
|
|
694
714
|
- spec/fixtures/ifconfig/open_solaris_b132
|
|
715
|
+
- spec/fixtures/ifconfig/net_route_all_with_multiple_interfaces
|
|
695
716
|
- spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt
|
|
696
717
|
- spec/fixtures/ifconfig/freebsd_6_0
|
|
697
718
|
- spec/fixtures/ifconfig/linux_ifconfig_venet
|
|
@@ -715,6 +736,7 @@ test_files:
|
|
|
715
736
|
- spec/fixtures/ifconfig/darwin_10_3_0_en0
|
|
716
737
|
- spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces
|
|
717
738
|
- spec/fixtures/ifconfig/open_solaris_10
|
|
739
|
+
- spec/fixtures/ifconfig/net_route_net_tools_1.60.txt
|
|
718
740
|
- spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1
|
|
719
741
|
- spec/fixtures/ifconfig/darwin_10_6_6_dualstack
|
|
720
742
|
- spec/fixtures/ifconfig/ubuntu_7_04_eth0
|