facter 2.4.4-x64-mingw32 → 2.4.5-x64-mingw32
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: x64-mingw32
         | 
| 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 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: ffi
         | 
| @@ -249,6 +249,7 @@ files: | |
| 249 249 | 
             
            - spec/fixtures/cpuinfo/two_multicore-grep
         | 
| 250 250 | 
             
            - spec/fixtures/virtual/proc_1_cgroup/in_a_container
         | 
| 251 251 | 
             
            - spec/fixtures/virtual/proc_1_cgroup/not_in_a_container
         | 
| 252 | 
            +
            - spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices
         | 
| 252 253 | 
             
            - spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container
         | 
| 253 254 | 
             
            - spec/fixtures/virtual/proc_self_status/vserver_2_1/guest
         | 
| 254 255 | 
             
            - spec/fixtures/virtual/proc_self_status/vserver_2_1/host
         | 
| @@ -267,8 +268,12 @@ files: | |
| 267 268 | 
             
            - spec/fixtures/processorcount/solaris-psrinfo
         | 
| 268 269 | 
             
            - spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt
         | 
| 269 270 | 
             
            - spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt
         | 
| 271 | 
            +
            - spec/fixtures/unit/netmask/net_route_ubuntu_1204.txt
         | 
| 272 | 
            +
            - spec/fixtures/unit/netmask/net_route_multiple_127_addresses.txt
         | 
| 270 273 | 
             
            - spec/fixtures/unit/netmask/ifconfig_aix_7.txt
         | 
| 271 | 
            -
            - spec/fixtures/unit/netmask/ | 
| 274 | 
            +
            - spec/fixtures/unit/netmask/net_route_non_english_locale.txt
         | 
| 275 | 
            +
            - spec/fixtures/unit/netmask/net_route_net_tools_1.60.txt
         | 
| 276 | 
            +
            - spec/fixtures/unit/netmask/ifconfig_darwin_10_8_5.txt
         | 
| 272 277 | 
             
            - spec/fixtures/unit/selinux/selinux_sestatus2
         | 
| 273 278 | 
             
            - spec/fixtures/unit/selinux/selinux_sestatus
         | 
| 274 279 | 
             
            - spec/fixtures/unit/filesystems/linux
         | 
| @@ -346,8 +351,12 @@ files: | |
| 346 351 | 
             
            - spec/fixtures/unit/ec2/rest/meta-data/root
         | 
| 347 352 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt
         | 
| 348 353 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt
         | 
| 354 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_ubuntu_1204.txt
         | 
| 355 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_multiple_127_addresses.txt
         | 
| 349 356 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt
         | 
| 357 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_non_english_locale.txt
         | 
| 350 358 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt
         | 
| 359 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_net_tools_1.60.txt
         | 
| 351 360 | 
             
            - spec/fixtures/unit/processors/os/darwin-system-profiler
         | 
| 352 361 | 
             
            - spec/fixtures/unit/zfs_version/zfs_new
         | 
| 353 362 | 
             
            - spec/fixtures/unit/zfs_version/solaris_11
         | 
| @@ -392,6 +401,7 @@ files: | |
| 392 401 | 
             
            - spec/fixtures/unit/zpool_version/freebsd_8.2
         | 
| 393 402 | 
             
            - spec/fixtures/unit/zpool_version/solaris_10
         | 
| 394 403 | 
             
            - spec/fixtures/ifconfig/open_solaris_b132
         | 
| 404 | 
            +
            - spec/fixtures/ifconfig/net_route_all_with_multiple_interfaces
         | 
| 395 405 | 
             
            - spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt
         | 
| 396 406 | 
             
            - spec/fixtures/ifconfig/freebsd_6_0
         | 
| 397 407 | 
             
            - spec/fixtures/ifconfig/linux_ifconfig_venet
         | 
| @@ -415,6 +425,7 @@ files: | |
| 415 425 | 
             
            - spec/fixtures/ifconfig/darwin_10_3_0_en0
         | 
| 416 426 | 
             
            - spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces
         | 
| 417 427 | 
             
            - spec/fixtures/ifconfig/open_solaris_10
         | 
| 428 | 
            +
            - spec/fixtures/ifconfig/net_route_net_tools_1.60.txt
         | 
| 418 429 | 
             
            - spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1
         | 
| 419 430 | 
             
            - spec/fixtures/ifconfig/darwin_10_6_6_dualstack
         | 
| 420 431 | 
             
            - spec/fixtures/ifconfig/ubuntu_7_04_eth0
         | 
| @@ -597,6 +608,7 @@ test_files: | |
| 597 608 | 
             
            - spec/fixtures/cpuinfo/two_multicore-grep
         | 
| 598 609 | 
             
            - spec/fixtures/virtual/proc_1_cgroup/in_a_container
         | 
| 599 610 | 
             
            - spec/fixtures/virtual/proc_1_cgroup/not_in_a_container
         | 
| 611 | 
            +
            - spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices
         | 
| 600 612 | 
             
            - spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container
         | 
| 601 613 | 
             
            - spec/fixtures/virtual/proc_self_status/vserver_2_1/guest
         | 
| 602 614 | 
             
            - spec/fixtures/virtual/proc_self_status/vserver_2_1/host
         | 
| @@ -615,8 +627,12 @@ test_files: | |
| 615 627 | 
             
            - spec/fixtures/processorcount/solaris-psrinfo
         | 
| 616 628 | 
             
            - spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt
         | 
| 617 629 | 
             
            - spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt
         | 
| 630 | 
            +
            - spec/fixtures/unit/netmask/net_route_ubuntu_1204.txt
         | 
| 631 | 
            +
            - spec/fixtures/unit/netmask/net_route_multiple_127_addresses.txt
         | 
| 618 632 | 
             
            - spec/fixtures/unit/netmask/ifconfig_aix_7.txt
         | 
| 619 | 
            -
            - spec/fixtures/unit/netmask/ | 
| 633 | 
            +
            - spec/fixtures/unit/netmask/net_route_non_english_locale.txt
         | 
| 634 | 
            +
            - spec/fixtures/unit/netmask/net_route_net_tools_1.60.txt
         | 
| 635 | 
            +
            - spec/fixtures/unit/netmask/ifconfig_darwin_10_8_5.txt
         | 
| 620 636 | 
             
            - spec/fixtures/unit/selinux/selinux_sestatus2
         | 
| 621 637 | 
             
            - spec/fixtures/unit/selinux/selinux_sestatus
         | 
| 622 638 | 
             
            - spec/fixtures/unit/filesystems/linux
         | 
| @@ -694,8 +710,12 @@ test_files: | |
| 694 710 | 
             
            - spec/fixtures/unit/ec2/rest/meta-data/root
         | 
| 695 711 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt
         | 
| 696 712 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt
         | 
| 713 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_ubuntu_1204.txt
         | 
| 714 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_multiple_127_addresses.txt
         | 
| 697 715 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt
         | 
| 716 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_non_english_locale.txt
         | 
| 698 717 | 
             
            - spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt
         | 
| 718 | 
            +
            - spec/fixtures/unit/ipaddress/net_route_net_tools_1.60.txt
         | 
| 699 719 | 
             
            - spec/fixtures/unit/processors/os/darwin-system-profiler
         | 
| 700 720 | 
             
            - spec/fixtures/unit/zfs_version/zfs_new
         | 
| 701 721 | 
             
            - spec/fixtures/unit/zfs_version/solaris_11
         | 
| @@ -740,6 +760,7 @@ test_files: | |
| 740 760 | 
             
            - spec/fixtures/unit/zpool_version/freebsd_8.2
         | 
| 741 761 | 
             
            - spec/fixtures/unit/zpool_version/solaris_10
         | 
| 742 762 | 
             
            - spec/fixtures/ifconfig/open_solaris_b132
         | 
| 763 | 
            +
            - spec/fixtures/ifconfig/net_route_all_with_multiple_interfaces
         | 
| 743 764 | 
             
            - spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt
         | 
| 744 765 | 
             
            - spec/fixtures/ifconfig/freebsd_6_0
         | 
| 745 766 | 
             
            - spec/fixtures/ifconfig/linux_ifconfig_venet
         | 
| @@ -763,6 +784,7 @@ test_files: | |
| 763 784 | 
             
            - spec/fixtures/ifconfig/darwin_10_3_0_en0
         | 
| 764 785 | 
             
            - spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces
         | 
| 765 786 | 
             
            - spec/fixtures/ifconfig/open_solaris_10
         | 
| 787 | 
            +
            - spec/fixtures/ifconfig/net_route_net_tools_1.60.txt
         | 
| 766 788 | 
             
            - spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1
         | 
| 767 789 | 
             
            - spec/fixtures/ifconfig/darwin_10_6_6_dualstack
         | 
| 768 790 | 
             
            - spec/fixtures/ifconfig/ubuntu_7_04_eth0
         |