facter 2.5.7-x64-mingw32 → 3.9.6.cfacter.20180412-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.
- checksums.yaml +5 -5
- data/bin/facter.bat +8 -0
- data/bin/facter.exe +0 -0
- data/bin/facter_interactive.bat +6 -0
- data/bin/libfacter.so +0 -0
- data/bin/run_facter_interactive.bat +9 -0
- data/lib/facter.rb +45 -261
- data/lib/libfacter.so.a +0 -0
- metadata +23 -854
- data/COMMITTERS.md +0 -185
- data/CONTRIBUTING.md +0 -91
- data/Gemfile +0 -69
- data/LICENSE +0 -15
- data/README.md +0 -65
- data/Rakefile +0 -46
- data/bin/facter +0 -20
- data/etc/facter.conf +0 -5
- data/ext/build_defaults.yaml +0 -9
- data/ext/debian/changelog.erb +0 -59
- data/ext/debian/compat +0 -1
- data/ext/debian/control +0 -15
- data/ext/debian/copyright +0 -19
- data/ext/debian/docs +0 -1
- data/ext/debian/lintian-overrides +0 -0
- data/ext/debian/rules +0 -10
- data/ext/debian/source/format +0 -1
- data/ext/facter-diff +0 -74
- data/ext/ips/facter.p5m.erb +0 -10
- data/ext/ips/rules +0 -7
- data/ext/ips/transforms +0 -18
- data/ext/osx/file_mapping.yaml +0 -32
- data/ext/osx/preflight.erb +0 -33
- data/ext/osx/prototype.plist.erb +0 -38
- data/ext/project_data.yaml +0 -31
- data/ext/redhat/facter.spec.erb +0 -223
- data/ext/solaris/pkginfo +0 -7
- data/install.rb +0 -380
- data/lib/facter/Cfkey.rb +0 -42
- data/lib/facter/application.rb +0 -206
- data/lib/facter/architecture.rb +0 -50
- data/lib/facter/augeasversion.rb +0 -28
- data/lib/facter/blockdevices.rb +0 -105
- data/lib/facter/core/aggregate.rb +0 -220
- data/lib/facter/core/directed_graph.rb +0 -46
- data/lib/facter/core/execution.rb +0 -123
- data/lib/facter/core/execution/base.rb +0 -81
- data/lib/facter/core/execution/posix.rb +0 -50
- data/lib/facter/core/execution/windows.rb +0 -57
- data/lib/facter/core/logging.rb +0 -197
- data/lib/facter/core/resolvable.rb +0 -94
- data/lib/facter/core/suitable.rb +0 -113
- data/lib/facter/dhcp_servers.rb +0 -45
- data/lib/facter/domain.rb +0 -99
- data/lib/facter/ec2.rb +0 -68
- data/lib/facter/ec2/rest.rb +0 -137
- data/lib/facter/facterversion.rb +0 -15
- data/lib/facter/filesystems.rb +0 -45
- data/lib/facter/fqdn.rb +0 -24
- data/lib/facter/gce.rb +0 -16
- data/lib/facter/gce/metadata.rb +0 -87
- data/lib/facter/gid.rb +0 -25
- data/lib/facter/hardwareisa.rb +0 -20
- data/lib/facter/hardwaremodel.rb +0 -67
- data/lib/facter/hostname.rb +0 -31
- data/lib/facter/id.rb +0 -21
- data/lib/facter/interfaces.rb +0 -58
- data/lib/facter/ipaddress.rb +0 -169
- data/lib/facter/ipaddress6.rb +0 -82
- data/lib/facter/iphostnumber.rb +0 -29
- data/lib/facter/kernel.rb +0 -22
- data/lib/facter/kernelmajversion.rb +0 -23
- data/lib/facter/kernelrelease.rb +0 -45
- data/lib/facter/kernelversion.rb +0 -22
- data/lib/facter/ldom.rb +0 -51
- data/lib/facter/lsbdistcodename.rb +0 -20
- data/lib/facter/lsbdistdescription.rb +0 -21
- data/lib/facter/lsbdistid.rb +0 -20
- data/lib/facter/lsbdistrelease.rb +0 -20
- data/lib/facter/lsbmajdistrelease.rb +0 -22
- data/lib/facter/lsbminordistrelease.rb +0 -22
- data/lib/facter/lsbrelease.rb +0 -20
- data/lib/facter/macaddress.rb +0 -99
- data/lib/facter/macosx.rb +0 -56
- data/lib/facter/manufacturer.rb +0 -68
- data/lib/facter/memory.rb +0 -168
- data/lib/facter/netmask.rb +0 -43
- data/lib/facter/network.rb +0 -20
- data/lib/facter/operatingsystem.rb +0 -24
- data/lib/facter/operatingsystem/base.rb +0 -61
- data/lib/facter/operatingsystem/cumuluslinux.rb +0 -27
- data/lib/facter/operatingsystem/implementation.rb +0 -33
- data/lib/facter/operatingsystem/linux.rb +0 -511
- data/lib/facter/operatingsystem/osreleaselinux.rb +0 -28
- data/lib/facter/operatingsystem/sunos.rb +0 -54
- data/lib/facter/operatingsystem/vmkernel.rb +0 -11
- data/lib/facter/operatingsystem/windows.rb +0 -43
- data/lib/facter/operatingsystemmajrelease.rb +0 -31
- data/lib/facter/operatingsystemrelease.rb +0 -29
- data/lib/facter/os.rb +0 -98
- data/lib/facter/osfamily.rb +0 -18
- data/lib/facter/partitions.rb +0 -39
- data/lib/facter/path.rb +0 -14
- data/lib/facter/physicalprocessorcount.rb +0 -27
- data/lib/facter/processor.rb +0 -52
- data/lib/facter/processors.rb +0 -66
- data/lib/facter/processors/os.rb +0 -244
- data/lib/facter/ps.rb +0 -31
- data/lib/facter/puppetversion.rb +0 -20
- data/lib/facter/rackspace.rb +0 -37
- data/lib/facter/rubyplatform.rb +0 -12
- data/lib/facter/rubysitedir.rb +0 -15
- data/lib/facter/rubyversion.rb +0 -12
- data/lib/facter/selinux.rb +0 -154
- data/lib/facter/ssh.rb +0 -73
- data/lib/facter/system32.rb +0 -21
- data/lib/facter/system_uptime.rb +0 -44
- data/lib/facter/timezone.rb +0 -14
- data/lib/facter/uniqueid.rb +0 -4
- data/lib/facter/uptime.rb +0 -16
- data/lib/facter/uptime_days.rb +0 -13
- data/lib/facter/uptime_hours.rb +0 -13
- data/lib/facter/uptime_seconds.rb +0 -20
- data/lib/facter/util/architecture.rb +0 -19
- data/lib/facter/util/collection.rb +0 -161
- data/lib/facter/util/composite_loader.rb +0 -12
- data/lib/facter/util/config.rb +0 -88
- data/lib/facter/util/confine.rb +0 -66
- data/lib/facter/util/dhcp_servers.rb +0 -58
- data/lib/facter/util/directory_loader.rb +0 -88
- data/lib/facter/util/ec2.rb +0 -106
- data/lib/facter/util/fact.rb +0 -204
- data/lib/facter/util/file_read.rb +0 -37
- data/lib/facter/util/formatter.rb +0 -39
- data/lib/facter/util/ip.rb +0 -340
- data/lib/facter/util/ip/windows.rb +0 -215
- data/lib/facter/util/loader.rb +0 -155
- data/lib/facter/util/macaddress.rb +0 -43
- data/lib/facter/util/macosx.rb +0 -73
- data/lib/facter/util/manufacturer.rb +0 -99
- data/lib/facter/util/memory.rb +0 -228
- data/lib/facter/util/netmask.rb +0 -40
- data/lib/facter/util/normalization.rb +0 -94
- data/lib/facter/util/nothing_loader.rb +0 -12
- data/lib/facter/util/operatingsystem.rb +0 -21
- data/lib/facter/util/parser.rb +0 -168
- data/lib/facter/util/partitions.rb +0 -47
- data/lib/facter/util/partitions/linux.rb +0 -71
- data/lib/facter/util/partitions/openbsd.rb +0 -40
- data/lib/facter/util/plist.rb +0 -24
- data/lib/facter/util/plist/generator.rb +0 -228
- data/lib/facter/util/plist/parser.rb +0 -226
- data/lib/facter/util/posix.rb +0 -16
- data/lib/facter/util/processor.rb +0 -289
- data/lib/facter/util/registry.rb +0 -11
- data/lib/facter/util/resolution.rb +0 -160
- data/lib/facter/util/solaris_zones.rb +0 -158
- data/lib/facter/util/unix_root.rb +0 -5
- data/lib/facter/util/uptime.rb +0 -83
- data/lib/facter/util/values.rb +0 -109
- data/lib/facter/util/virtual.rb +0 -220
- data/lib/facter/util/vlans.rb +0 -21
- data/lib/facter/util/windows.rb +0 -10
- data/lib/facter/util/windows/api_types.rb +0 -135
- data/lib/facter/util/windows/dir.rb +0 -43
- data/lib/facter/util/windows/error.rb +0 -87
- data/lib/facter/util/windows/process.rb +0 -294
- data/lib/facter/util/windows/user.rb +0 -186
- data/lib/facter/util/windows_root.rb +0 -7
- data/lib/facter/util/wmi.rb +0 -49
- data/lib/facter/util/xendomains.rb +0 -28
- data/lib/facter/version.rb +0 -86
- data/lib/facter/virtual.rb +0 -339
- data/lib/facter/vlans.rb +0 -17
- data/lib/facter/xendomains.rb +0 -20
- data/lib/facter/zfs_version.rb +0 -14
- data/lib/facter/zonename.rb +0 -6
- data/lib/facter/zones.rb +0 -18
- data/lib/facter/zpool_version.rb +0 -10
- data/spec/fixtures/cpuinfo/amd64dual +0 -57
- data/spec/fixtures/cpuinfo/amd64dual-grep +0 -2
- data/spec/fixtures/cpuinfo/amd64quad +0 -79
- data/spec/fixtures/cpuinfo/amd64solo +0 -23
- data/spec/fixtures/cpuinfo/amd64tri +0 -86
- data/spec/fixtures/cpuinfo/amd64twentyfour +0 -600
- data/spec/fixtures/cpuinfo/amd64twentyfour-grep +0 -24
- data/spec/fixtures/cpuinfo/bbg3-armel +0 -12
- data/spec/fixtures/cpuinfo/beaglexm-armel +0 -12
- data/spec/fixtures/cpuinfo/panda-armel +0 -17
- data/spec/fixtures/cpuinfo/ppc64 +0 -19
- data/spec/fixtures/cpuinfo/ppc64le +0 -15
- data/spec/fixtures/cpuinfo/sparc +0 -10
- data/spec/fixtures/cpuinfo/two_multicore-grep +0 -4
- data/spec/fixtures/cpuinfo/two_singlecore-grep +0 -2
- data/spec/fixtures/hpux/machinfo/hppa-rp4440 +0 -26
- data/spec/fixtures/hpux/machinfo/ia64-rx2620 +0 -49
- data/spec/fixtures/hpux/machinfo/ia64-rx6600 +0 -26
- data/spec/fixtures/hpux/machinfo/ia64-rx8640 +0 -53
- data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +0 -53
- data/spec/fixtures/hpux/machinfo/superdome2-16s +0 -31
- data/spec/fixtures/hpux/sched.models +0 -174
- data/spec/fixtures/hpux/unistd.h +0 -1534
- data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +0 -18
- data/spec/fixtures/ifconfig/centos_5_5 +0 -17
- data/spec/fixtures/ifconfig/centos_5_5_eth0 +0 -8
- data/spec/fixtures/ifconfig/darwin_10_3_0 +0 -26
- data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +0 -6
- data/spec/fixtures/ifconfig/darwin_10_6_4 +0 -28
- data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +0 -6
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +0 -8
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +0 -7
- data/spec/fixtures/ifconfig/darwin_9_8_0 +0 -26
- data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +0 -6
- data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +0 -23
- data/spec/fixtures/ifconfig/fedora_10 +0 -36
- data/spec/fixtures/ifconfig/fedora_10_eth0 +0 -9
- data/spec/fixtures/ifconfig/fedora_13 +0 -18
- data/spec/fixtures/ifconfig/fedora_13_eth0 +0 -9
- data/spec/fixtures/ifconfig/fedora_8 +0 -38
- data/spec/fixtures/ifconfig/fedora_8_eth0 +0 -9
- data/spec/fixtures/ifconfig/freebsd_6_0 +0 -12
- data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +0 -19
- data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +0 -16
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +0 -19
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces_and_fe80 +0 -19
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces_and_no_public_ipv6 +0 -18
- data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +0 -19
- data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +0 -8
- data/spec/fixtures/ifconfig/linux_ifconfig_venet +0 -24
- data/spec/fixtures/ifconfig/open_solaris_10 +0 -12
- data/spec/fixtures/ifconfig/open_solaris_b132 +0 -20
- data/spec/fixtures/ifconfig/openbsd_bridge_rules +0 -11
- data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +0 -10
- data/spec/fixtures/ifconfig/ubuntu_7_04 +0 -38
- data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +0 -9
- data/spec/fixtures/ldom/ldom_v1 +0 -6
- data/spec/fixtures/netstat/centos_5_5 +0 -5
- data/spec/fixtures/netstat/darwin_10_3_0 +0 -35
- data/spec/fixtures/netstat/darwin_10_6_4 +0 -29
- data/spec/fixtures/netstat/darwin_10_6_6_dualstack +0 -34
- data/spec/fixtures/netstat/darwin_9_8_0 +0 -28
- data/spec/fixtures/netstat/fedora_10 +0 -7
- data/spec/fixtures/netstat/open_solaris_10 +0 -16
- data/spec/fixtures/netstat/open_solaris_b132 +0 -17
- data/spec/fixtures/netstat/ubuntu_7_04 +0 -7
- data/spec/fixtures/processorcount/solaris-psrinfo +0 -24
- data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +0 -1216
- data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +0 -225
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices +0 -4
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +0 -4
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +0 -36
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +0 -24
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +0 -49
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +0 -37
- data/spec/fixtures/unit/dhcp_servers/route +0 -3
- data/spec/fixtures/unit/dhcp_servers/route_nogw +0 -1
- data/spec/fixtures/unit/ec2/rest/meta-data/root +0 -20
- data/spec/fixtures/unit/filesystems/linux +0 -28
- data/spec/fixtures/unit/gce/metadata/metadata.json +0 -69
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +0 -19
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +0 -10
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +0 -8
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60_v6.txt +0 -9
- data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +0 -20
- data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +0 -19
- data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +0 -18
- data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +0 -16
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +0 -2
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +0 -3
- data/spec/fixtures/unit/memory/aix-svmon +0 -9
- data/spec/fixtures/unit/memory/aix-swap_l +0 -2
- data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +0 -3
- data/spec/fixtures/unit/memory/darwin-swapinfo-single +0 -2
- data/spec/fixtures/unit/memory/darwin-vm_stat +0 -13
- data/spec/fixtures/unit/memory/dragonfly-vmstat +0 -3
- data/spec/fixtures/unit/memory/freebsd-vmstat +0 -3
- data/spec/fixtures/unit/memory/linux-proc_meminfo +0 -10
- data/spec/fixtures/unit/memory/openbsd-vmstat +0 -3
- data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +0 -2
- data/spec/fixtures/unit/memory/solaris-prtconf +0 -4
- data/spec/fixtures/unit/memory/solaris-swap_l-multiple +0 -3
- data/spec/fixtures/unit/memory/solaris-swap_l-single +0 -2
- data/spec/fixtures/unit/memory/solaris-vmstat +0 -3
- data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +0 -30
- data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +0 -3
- data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +0 -19
- data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +0 -16
- data/spec/fixtures/unit/processors/os/darwin-system-profiler +0 -287
- data/spec/fixtures/unit/selinux/selinux_sestatus +0 -6
- data/spec/fixtures/unit/selinux/selinux_sestatus2 +0 -9
- data/spec/fixtures/unit/util/dhcp_servers/route +0 -3
- data/spec/fixtures/unit/util/dhcp_servers/route_nogw +0 -1
- data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +0 -1
- data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +0 -1
- data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +0 -5
- data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +0 -7
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +0 -6
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +0 -10
- data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +0 -12
- data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +0 -26
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +0 -10
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +0 -6
- data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +0 -40
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +0 -5
- data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +0 -4
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +0 -5
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +0 -4
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +0 -4
- data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +0 -4
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +0 -2
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +0 -9
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +0 -6
- data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +0 -19
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +0 -10
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +0 -8
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0_centos7 +0 -8
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +0 -9
- data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +0 -18
- data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +0 -8
- data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0_centos7 +0 -8
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +0 -8
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +0 -3
- data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +0 -12
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +0 -7
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +0 -18
- data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +0 -42
- data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +0 -549
- data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +0 -60
- data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +0 -33
- data/spec/fixtures/unit/util/manufacturer/smartos_smbios +0 -533
- data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +0 -33
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +0 -136
- data/spec/fixtures/unit/util/operatingsystem/coreos.txt +0 -9
- data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +0 -8
- data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +0 -12
- data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +0 -7
- data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +0 -9
- data/spec/fixtures/unit/util/partitions/partitions/mount +0 -9
- data/spec/fixtures/unit/util/processor/solaris-i86pc +0 -28
- data/spec/fixtures/unit/util/processor/solaris-sun4u +0 -151
- data/spec/fixtures/unit/util/processor/x86-pentium2 +0 -41
- data/spec/fixtures/unit/util/uptime/kstat_boot_time +0 -1
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +0 -1
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +0 -1
- data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +0 -1
- data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
- data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
- data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +0 -2
- data/spec/fixtures/unit/util/vlans/linux_vlan_config +0 -6
- data/spec/fixtures/unit/util/xendomains/xendomains +0 -4
- data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
- data/spec/fixtures/unit/zfs_version/freebsd_8.2 +0 -14
- data/spec/fixtures/unit/zfs_version/freebsd_9.0 +0 -13
- data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +0 -14
- data/spec/fixtures/unit/zfs_version/solaris_10 +0 -10
- data/spec/fixtures/unit/zfs_version/solaris_11 +0 -12
- data/spec/fixtures/unit/zfs_version/zfs_new +0 -61
- data/spec/fixtures/unit/zfs_version/zfs_old +0 -43
- data/spec/fixtures/unit/zfs_version/zfsonlinux_0.6.1 +0 -13
- data/spec/fixtures/unit/zpool_version/freebsd_8.2 +0 -26
- data/spec/fixtures/unit/zpool_version/freebsd_9.0 +0 -38
- data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +0 -35
- data/spec/fixtures/unit/zpool_version/solaris_10 +0 -31
- data/spec/fixtures/unit/zpool_version/solaris_11 +0 -43
- data/spec/fixtures/unit/zpool_version/zfsonlinux_0.6.1 +0 -48
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +0 -9
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +0 -8
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices +0 -10
- data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +0 -9
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +0 -37
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +0 -36
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +0 -39
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +0 -39
- data/spec/integration/facter_spec.rb +0 -39
- data/spec/integration/util/windows/user_spec.rb +0 -59
- data/spec/lib/facter_spec/cpuinfo.rb +0 -15
- data/spec/lib/facter_spec/windows_network.rb +0 -64
- data/spec/puppetlabs_spec/files.rb +0 -57
- data/spec/puppetlabs_spec/fixtures.rb +0 -49
- data/spec/puppetlabs_spec/matchers.rb +0 -87
- data/spec/puppetlabs_spec/verbose.rb +0 -9
- data/spec/puppetlabs_spec_helper.rb +0 -26
- data/spec/schema/validate_facter_schema.rb +0 -18
- data/spec/shared_contexts/platform.rb +0 -55
- data/spec/shared_formats/parses.rb +0 -3
- data/spec/spec_helper.rb +0 -68
- data/spec/unit/application_spec.rb +0 -110
- data/spec/unit/architecture_spec.rb +0 -63
- data/spec/unit/blockdevices_spec.rb +0 -109
- data/spec/unit/core/aggregate_spec.rb +0 -125
- data/spec/unit/core/directed_graph_spec.rb +0 -79
- data/spec/unit/core/execution/base_spec.rb +0 -130
- data/spec/unit/core/execution/posix_spec.rb +0 -96
- data/spec/unit/core/execution/windows_spec.rb +0 -106
- data/spec/unit/core/execution_spec.rb +0 -42
- data/spec/unit/core/logging_spec.rb +0 -223
- data/spec/unit/core/resolvable_spec.rb +0 -81
- data/spec/unit/core/suitable_spec.rb +0 -106
- data/spec/unit/dhcp_servers_spec.rb +0 -212
- data/spec/unit/domain_spec.rb +0 -310
- data/spec/unit/ec2/rest_spec.rb +0 -168
- data/spec/unit/ec2_spec.rb +0 -139
- data/spec/unit/facter_spec.rb +0 -108
- data/spec/unit/filesystems_spec.rb +0 -50
- data/spec/unit/fqdn_spec.rb +0 -16
- data/spec/unit/gce/metadata_spec.rb +0 -49
- data/spec/unit/gce_spec.rb +0 -34
- data/spec/unit/gid_spec.rb +0 -51
- data/spec/unit/hardwareisa_spec.rb +0 -41
- data/spec/unit/hardwaremodel_spec.rb +0 -58
- data/spec/unit/hostname_spec.rb +0 -40
- data/spec/unit/id_spec.rb +0 -29
- data/spec/unit/interfaces_spec.rb +0 -67
- data/spec/unit/ipaddress6_spec.rb +0 -180
- data/spec/unit/ipaddress_spec.rb +0 -114
- data/spec/unit/kernel_spec.rb +0 -24
- data/spec/unit/kernelmajversion_spec.rb +0 -22
- data/spec/unit/kernelrelease_spec.rb +0 -66
- data/spec/unit/kernelversion_spec.rb +0 -32
- data/spec/unit/ldom_spec.rb +0 -84
- data/spec/unit/lsbdistcodename_spec.rb +0 -30
- data/spec/unit/lsbdistdescription_spec.rb +0 -30
- data/spec/unit/lsbdistid_spec.rb +0 -30
- data/spec/unit/lsbdistrelease_spec.rb +0 -30
- data/spec/unit/lsbmajdistrelease_spec.rb +0 -30
- data/spec/unit/lsbminordistrelease_spec.rb +0 -31
- data/spec/unit/lsbrelease_spec.rb +0 -30
- data/spec/unit/macaddress_spec.rb +0 -76
- data/spec/unit/manufacturer_spec.rb +0 -115
- data/spec/unit/memory_spec.rb +0 -470
- data/spec/unit/netmask_spec.rb +0 -106
- data/spec/unit/operatingsystem/base_spec.rb +0 -76
- data/spec/unit/operatingsystem/cumuluslinux_spec.rb +0 -40
- data/spec/unit/operatingsystem/implementation_spec.rb +0 -50
- data/spec/unit/operatingsystem/linux_spec.rb +0 -559
- data/spec/unit/operatingsystem/sunos_spec.rb +0 -143
- data/spec/unit/operatingsystem/vmkernel_spec.rb +0 -13
- data/spec/unit/operatingsystem/windows_spec.rb +0 -77
- data/spec/unit/operatingsystem_spec.rb +0 -17
- data/spec/unit/operatingsystemmajrelease_spec.rb +0 -21
- data/spec/unit/operatingsystemrelease_spec.rb +0 -20
- data/spec/unit/os_spec.rb +0 -131
- data/spec/unit/osfamily_spec.rb +0 -17
- data/spec/unit/partitions_spec.rb +0 -88
- data/spec/unit/physicalprocessorcount_spec.rb +0 -13
- data/spec/unit/processor_spec.rb +0 -38
- data/spec/unit/processors/os_spec.rb +0 -469
- data/spec/unit/processors_spec.rb +0 -203
- data/spec/unit/ps_spec.rb +0 -42
- data/spec/unit/rackspace_spec.rb +0 -40
- data/spec/unit/rubyplatform_spec.rb +0 -7
- data/spec/unit/selinux_spec.rb +0 -119
- data/spec/unit/ssh_spec.rb +0 -77
- data/spec/unit/system32_spec.rb +0 -28
- data/spec/unit/system_uptime_spec.rb +0 -80
- data/spec/unit/uniqueid_spec.rb +0 -27
- data/spec/unit/uptime_spec.rb +0 -110
- data/spec/unit/util/collection_spec.rb +0 -258
- data/spec/unit/util/config_spec.rb +0 -120
- data/spec/unit/util/confine_spec.rb +0 -148
- data/spec/unit/util/dhcp_servers_spec.rb +0 -63
- data/spec/unit/util/directory_loader_spec.rb +0 -102
- data/spec/unit/util/ec2_spec.rb +0 -184
- data/spec/unit/util/fact_spec.rb +0 -142
- data/spec/unit/util/file_read_spec.rb +0 -29
- data/spec/unit/util/formatter_spec.rb +0 -55
- data/spec/unit/util/ip/windows_spec.rb +0 -80
- data/spec/unit/util/ip_spec.rb +0 -487
- data/spec/unit/util/loader_spec.rb +0 -286
- data/spec/unit/util/macaddress_spec.rb +0 -143
- data/spec/unit/util/macosx_spec.rb +0 -114
- data/spec/unit/util/manufacturer_spec.rb +0 -223
- data/spec/unit/util/normalization_spec.rb +0 -113
- data/spec/unit/util/operatingsystem_spec.rb +0 -107
- data/spec/unit/util/parser_spec.rb +0 -233
- data/spec/unit/util/partitions/partitions_spec.rb +0 -67
- data/spec/unit/util/partitions_spec.rb +0 -19
- data/spec/unit/util/posix_spec.rb +0 -11
- data/spec/unit/util/processor_spec.rb +0 -212
- data/spec/unit/util/registry_spec.rb +0 -76
- data/spec/unit/util/resolution_spec.rb +0 -129
- data/spec/unit/util/solaris_zones_spec.rb +0 -127
- data/spec/unit/util/uptime_spec.rb +0 -131
- data/spec/unit/util/values_spec.rb +0 -171
- data/spec/unit/util/virtual_spec.rb +0 -393
- data/spec/unit/util/vlans_spec.rb +0 -42
- data/spec/unit/util/wmi_spec.rb +0 -19
- data/spec/unit/util/xendomains_spec.rb +0 -114
- data/spec/unit/version_spec.rb +0 -42
- data/spec/unit/virtual_spec.rb +0 -585
- data/spec/unit/zfs_version_spec.rb +0 -87
- data/spec/unit/zonename_spec.rb +0 -14
- data/spec/unit/zones_spec.rb +0 -55
- data/spec/unit/zpool_version_spec.rb +0 -80
- data/spec/watchr.rb +0 -125
@@ -1,158 +0,0 @@
|
|
1
|
-
require 'facter/util/resolution'
|
2
|
-
|
3
|
-
module Facter
|
4
|
-
module Util
|
5
|
-
##
|
6
|
-
# Provide a set of utility methods to interact with Solaris zones. This class
|
7
|
-
# is expected to be instantiated once per set of resolutions in order to
|
8
|
-
# cache the output of the zoneadm command, which can be quite expensive.
|
9
|
-
#
|
10
|
-
# @api private
|
11
|
-
class SolarisZones
|
12
|
-
attr_reader :zone_hash
|
13
|
-
attr_reader :zoneadm_cmd
|
14
|
-
attr_reader :zoneadm_output
|
15
|
-
attr_reader :zoneadm_keys
|
16
|
-
|
17
|
-
##
|
18
|
-
# add_facts defines all of the facts for solaris zones, for example `zones`,
|
19
|
-
# `zone_global_id`, `zone_global_status`, etc... This method defines the
|
20
|
-
# static fact named `zones`. The value of this fact is the numver of zones
|
21
|
-
# reported by the zoneadm system command. The `zones` fact also defines
|
22
|
-
# all of the dynamic facts describing the following seven attribute values
|
23
|
-
# for each zone.
|
24
|
-
#
|
25
|
-
# Zones may be added to the system while Facter is loaded. In order to
|
26
|
-
# define new dynamic facts that reflect this new information, the `virtual`
|
27
|
-
# will define new facts as a side effect of refreshing it's own value.
|
28
|
-
#
|
29
|
-
# @api private
|
30
|
-
def self.add_facts
|
31
|
-
model = new
|
32
|
-
model.refresh
|
33
|
-
model.add_dynamic_facts
|
34
|
-
Facter.add("zones") do
|
35
|
-
setcode do
|
36
|
-
model.refresh if model.flushed?
|
37
|
-
model.add_dynamic_facts
|
38
|
-
model.count
|
39
|
-
end
|
40
|
-
on_flush do
|
41
|
-
model.flush!
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
##
|
47
|
-
# @param [Hash] opts the options to create the instance with
|
48
|
-
# @option opts [String] :zoneadm_cmd ('/usr/sbin/zoneadm list -cp') the
|
49
|
-
# system command to inspect zones
|
50
|
-
# @option opts [String] :zoneadm_output (nil) the cached output of the
|
51
|
-
# zoneadm_cmd
|
52
|
-
def initialize(opts = {})
|
53
|
-
@zoneadm_keys = [:id, :name, :status, :path, :uuid, :brand, :iptype]
|
54
|
-
@zoneadm_cmd = opts[:zoneadm_cmd] || '/usr/sbin/zoneadm list -cp'
|
55
|
-
if opts[:zoneadm_output]
|
56
|
-
@zoneadm_output = opts[:zoneadm_output]
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
##
|
61
|
-
# add_dynamic_facts defines all of the dynamic facts derived from parsing
|
62
|
-
# the output of the zoneadm command. The zone facts are dynamic, so this
|
63
|
-
# method has the behavior of figuring out what dynamic zone facts need to
|
64
|
-
# be defined and how they should be resolved.
|
65
|
-
#
|
66
|
-
# @param model [SolarisZones] the model used to store data from the system
|
67
|
-
#
|
68
|
-
# @api private
|
69
|
-
def add_dynamic_facts
|
70
|
-
model = self
|
71
|
-
zone_hash.each_pair do |zone, attr_hsh|
|
72
|
-
attr_hsh.keys.each do |attr|
|
73
|
-
Facter.add("zone_#{zone}_#{attr}") do
|
74
|
-
setcode do
|
75
|
-
model.refresh if model.flushed?
|
76
|
-
# Don't resolve if the zone has since been deleted
|
77
|
-
if zone_hsh = model.zone_hash[zone]
|
78
|
-
zone_hsh[attr] # the value
|
79
|
-
end
|
80
|
-
end
|
81
|
-
on_flush do
|
82
|
-
model.flush!
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
##
|
90
|
-
# refresh executes the zoneadm_cmd and stores the output data.
|
91
|
-
#
|
92
|
-
# @api private
|
93
|
-
#
|
94
|
-
# @return [Hash] the parsed output of the zoneadm command
|
95
|
-
def refresh
|
96
|
-
@zoneadm_output = Facter::Core::Execution.execute(zoneadm_cmd, {:on_fail => nil})
|
97
|
-
parse!
|
98
|
-
end
|
99
|
-
|
100
|
-
##
|
101
|
-
# parse! parses the string stored in {@zoneadm_output} and stores the
|
102
|
-
# resulting Hash data structure in {@zone_hash}
|
103
|
-
#
|
104
|
-
# @api private
|
105
|
-
def parse!
|
106
|
-
if @zoneadm_output
|
107
|
-
rows = @zoneadm_output.split("\n").collect { |line| line.split(':') }
|
108
|
-
else
|
109
|
-
Facter.debug "Cannot parse zone facts, #{zoneadm_cmd} returned no output"
|
110
|
-
rows = []
|
111
|
-
end
|
112
|
-
|
113
|
-
@zone_hash = rows.inject({}) do |memo, fields|
|
114
|
-
zone = fields[1].intern
|
115
|
-
# Transform the row into a hash with keys named by the column names
|
116
|
-
memo[zone] = Hash[*@zoneadm_keys.zip(fields).flatten]
|
117
|
-
memo
|
118
|
-
end
|
119
|
-
end
|
120
|
-
private :parse!
|
121
|
-
|
122
|
-
##
|
123
|
-
# count returns the number of running zones, including the global zone.
|
124
|
-
# This method is intended to be used from the setcode block of the `zones`
|
125
|
-
# fact.
|
126
|
-
#
|
127
|
-
# @api private
|
128
|
-
#
|
129
|
-
# @return [Fixnum, nil] the number of running zones or nil if the number
|
130
|
-
# could not be determined.
|
131
|
-
def count
|
132
|
-
if @zone_hash
|
133
|
-
@zone_hash.size
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
##
|
138
|
-
# flush! purges the saved data from the zoneadm_cmd output
|
139
|
-
#
|
140
|
-
# @api private
|
141
|
-
def flush!
|
142
|
-
@zoneadm_output = nil
|
143
|
-
@zone_hash = nil
|
144
|
-
end
|
145
|
-
|
146
|
-
##
|
147
|
-
# flushed? returns true if the instance has no parsed data accessible via
|
148
|
-
# the {zone_hash} method.
|
149
|
-
#
|
150
|
-
# @api private
|
151
|
-
#
|
152
|
-
# @return [Boolean] true if there is no parsed data, false otherwise
|
153
|
-
def flushed?
|
154
|
-
!@zone_hash
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
data/lib/facter/util/uptime.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
require 'time'
|
2
|
-
|
3
|
-
# A module to gather uptime facts
|
4
|
-
#
|
5
|
-
module Facter::Util::Uptime
|
6
|
-
def self.get_uptime_seconds_unix
|
7
|
-
uptime_proc_uptime or uptime_sysctl or uptime_executable
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.get_uptime_seconds_win
|
11
|
-
require 'facter/util/wmi'
|
12
|
-
|
13
|
-
last_boot = ""
|
14
|
-
Facter::Util::WMI.execquery("select * from Win32_OperatingSystem").each do |x|
|
15
|
-
last_boot = x.LastBootupTime
|
16
|
-
end
|
17
|
-
self.compute_uptime(Time.parse(last_boot.split('.').first))
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def self.uptime_proc_uptime
|
23
|
-
output = Facter::Core::Execution.execute("/bin/cat #{uptime_file} 2>/dev/null")
|
24
|
-
|
25
|
-
if not output.empty?
|
26
|
-
output.chomp.split(" ").first.to_i
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.uptime_sysctl
|
31
|
-
require 'facter/util/posix'
|
32
|
-
output = Facter::Util::POSIX.sysctl(uptime_sysctl_variable)
|
33
|
-
if output
|
34
|
-
compute_uptime(Time.at(output.match(/\d+/)[0].to_i))
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.uptime_executable
|
39
|
-
output = Facter::Core::Execution.execute("#{uptime_executable_cmd} 2>/dev/null", :on_fail => nil)
|
40
|
-
|
41
|
-
if output
|
42
|
-
up=0
|
43
|
-
if output =~ /(\d+) day(?:s|\(s\))?,?\s+(\d+):-?(\d+)/
|
44
|
-
# Regexp handles Solaris, AIX, HP-UX, and Tru64.
|
45
|
-
# 'day(?:s|\(s\))?' says maybe 'day', 'days',
|
46
|
-
# or 'day(s)', and don't set $2.
|
47
|
-
up=86400*$1.to_i + 3600*$2.to_i + 60*$3.to_i
|
48
|
-
elsif output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) hr(?:s|\(s\))?,/
|
49
|
-
up=86400*$1.to_i + 3600*$2.to_i
|
50
|
-
elsif output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) min(?:s|\(s\))?,/
|
51
|
-
up=86400*$1.to_i + 60*$2.to_i
|
52
|
-
elsif output =~ /(\d+) day(?:s|\(s\))?,/
|
53
|
-
up=86400*$1.to_i
|
54
|
-
elsif output =~ /up\s+(\d+):-?(\d+),/
|
55
|
-
# must anchor to 'up' to avoid matching time of day
|
56
|
-
# at beginning of line. Certain versions of uptime on
|
57
|
-
# Solaris may insert a '-' into the minutes field.
|
58
|
-
up=3600*$1.to_i + 60*$2.to_i
|
59
|
-
elsif output =~ /(\d+) hr(?:s|\(s\))?,/
|
60
|
-
up=3600*$1.to_i
|
61
|
-
elsif output =~ /(\d+) min(?:s|\(s\))?,/
|
62
|
-
up=60*$1.to_i
|
63
|
-
end
|
64
|
-
up
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.compute_uptime(time)
|
69
|
-
(Time.now - time).to_i
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.uptime_file
|
73
|
-
"/proc/uptime"
|
74
|
-
end
|
75
|
-
|
76
|
-
def self.uptime_sysctl_variable
|
77
|
-
'kern.boottime'
|
78
|
-
end
|
79
|
-
|
80
|
-
def self.uptime_executable_cmd
|
81
|
-
"uptime"
|
82
|
-
end
|
83
|
-
end
|
data/lib/facter/util/values.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
|
2
|
-
module Facter
|
3
|
-
module Util
|
4
|
-
# A util module for facter containing helper methods
|
5
|
-
module Values
|
6
|
-
module_function
|
7
|
-
|
8
|
-
class DeepFreezeError < StandardError; end
|
9
|
-
|
10
|
-
# Duplicate and deeply freeze a given data structure
|
11
|
-
#
|
12
|
-
# @param value [Object] The structure to freeze
|
13
|
-
# @return [void]
|
14
|
-
def deep_freeze(value)
|
15
|
-
case value
|
16
|
-
when Numeric, Symbol, TrueClass, FalseClass, NilClass
|
17
|
-
# These are immutable values, we can safely ignore them
|
18
|
-
value
|
19
|
-
when String
|
20
|
-
value.dup.freeze
|
21
|
-
when Array
|
22
|
-
value.map do |entry|
|
23
|
-
deep_freeze(entry)
|
24
|
-
end.freeze
|
25
|
-
when Hash
|
26
|
-
value.inject({}) do |hash, (key, value)|
|
27
|
-
hash[deep_freeze(key)] = deep_freeze(value)
|
28
|
-
hash
|
29
|
-
end.freeze
|
30
|
-
else
|
31
|
-
raise DeepFreezeError, "Cannot deep freeze #{value}:#{value.class}"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class DeepMergeError < StandardError; end
|
36
|
-
|
37
|
-
# Perform a deep merge of two nested data structures.
|
38
|
-
#
|
39
|
-
# @param left [Object]
|
40
|
-
# @param right [Object]
|
41
|
-
# @param path [Array<String>] The traversal path followed when merging nested hashes
|
42
|
-
#
|
43
|
-
# @return [Object] The merged data structure.
|
44
|
-
def deep_merge(left, right, path = [], &block)
|
45
|
-
ret = nil
|
46
|
-
|
47
|
-
if left.is_a? Hash and right.is_a? Hash
|
48
|
-
ret = left.merge(right) do |key, left_val, right_val|
|
49
|
-
path.push(key)
|
50
|
-
merged = deep_merge(left_val, right_val, path)
|
51
|
-
path.pop
|
52
|
-
merged
|
53
|
-
end
|
54
|
-
elsif left.is_a? Array and right.is_a? Array
|
55
|
-
ret = left.dup.concat(right)
|
56
|
-
elsif right.nil?
|
57
|
-
ret = left
|
58
|
-
elsif left.nil?
|
59
|
-
ret = right
|
60
|
-
elsif left.nil? and right.nil?
|
61
|
-
ret = nil
|
62
|
-
else
|
63
|
-
msg = "Cannot merge #{left.inspect}:#{left.class} and #{right.inspect}:#{right.class}"
|
64
|
-
if not path.empty?
|
65
|
-
msg << " at root"
|
66
|
-
msg << path.map { |part| "[#{part.inspect}]" }.join
|
67
|
-
end
|
68
|
-
raise DeepMergeError, msg
|
69
|
-
end
|
70
|
-
|
71
|
-
ret
|
72
|
-
end
|
73
|
-
|
74
|
-
def convert(value)
|
75
|
-
value = value.to_s if value.is_a?(Symbol)
|
76
|
-
value = value.downcase if value.is_a?(String)
|
77
|
-
value
|
78
|
-
end
|
79
|
-
|
80
|
-
# Flatten the given data structure to something that's suitable to return
|
81
|
-
# as flat facts.
|
82
|
-
#
|
83
|
-
# @param path [String] The fact path to be prefixed to the given value.
|
84
|
-
# @param structure [Object] The data structure to flatten. Nested hashes
|
85
|
-
# will be recursively flattened, everything else will be returned as-is.
|
86
|
-
#
|
87
|
-
# @return [Hash] The given data structure prefixed with the given path
|
88
|
-
def flatten_structure(path, structure)
|
89
|
-
results = {}
|
90
|
-
|
91
|
-
if structure.is_a? Hash
|
92
|
-
structure.each_pair do |name, value|
|
93
|
-
new_path = "#{path}_#{name}".gsub(/\-|\//, '_')
|
94
|
-
results.merge! flatten_structure(new_path, value)
|
95
|
-
end
|
96
|
-
elsif structure.is_a? Array
|
97
|
-
structure.each_with_index do |value, index|
|
98
|
-
new_path = "#{path}_#{index}"
|
99
|
-
results.merge! flatten_structure(new_path, value)
|
100
|
-
end
|
101
|
-
else
|
102
|
-
results[path] = structure
|
103
|
-
end
|
104
|
-
|
105
|
-
results
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
data/lib/facter/util/virtual.rb
DELETED
@@ -1,220 +0,0 @@
|
|
1
|
-
require 'facter/util/posix'
|
2
|
-
require 'facter/util/file_read'
|
3
|
-
require 'pathname'
|
4
|
-
|
5
|
-
module Facter::Util::Virtual
|
6
|
-
##
|
7
|
-
# virt_what is a delegating helper method intended to make it easier to stub
|
8
|
-
# the system call without affecting other calls to
|
9
|
-
# Facter::Core::Execution.exec
|
10
|
-
#
|
11
|
-
# Per https://bugzilla.redhat.com/show_bug.cgi?id=719611 when run as a
|
12
|
-
# non-root user the virt-what command may emit an error message on stdout,
|
13
|
-
# and later versions of virt-what may emit this message on stderr. This
|
14
|
-
# method ensures stderr is redirected and that error messages are stripped
|
15
|
-
# from stdout.
|
16
|
-
def self.virt_what(cmd = "virt-what")
|
17
|
-
if bindir = Facter::Util::Config.override_binary_dir
|
18
|
-
command = Facter::Core::Execution.which(File.join(bindir, cmd))
|
19
|
-
else
|
20
|
-
command = nil
|
21
|
-
end
|
22
|
-
|
23
|
-
if !command
|
24
|
-
command = Facter::Core::Execution.which(cmd)
|
25
|
-
return unless command
|
26
|
-
end
|
27
|
-
|
28
|
-
if Facter.value(:kernel) == 'windows'
|
29
|
-
redirected_cmd = "#{command} 2>NUL"
|
30
|
-
else
|
31
|
-
redirected_cmd = "#{command} 2>/dev/null"
|
32
|
-
end
|
33
|
-
output = Facter::Core::Execution.exec redirected_cmd
|
34
|
-
output.gsub(/^virt-what: .*$/, '') if output
|
35
|
-
end
|
36
|
-
|
37
|
-
##
|
38
|
-
# lspci is a delegating helper method intended to make it easier to stub the
|
39
|
-
# system call without affecting other calls to Facter::Core::Execution.exec
|
40
|
-
def self.lspci(command = nil)
|
41
|
-
if command.nil?
|
42
|
-
if ["FreeBSD", "OpenBSD"].include? Facter.value(:kernel)
|
43
|
-
command = "pciconf -lv 2>/dev/null"
|
44
|
-
else
|
45
|
-
command = "lspci 2>/dev/null"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
Facter::Core::Execution.exec command
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.openvz?
|
53
|
-
FileTest.directory?("/proc/vz") and not self.openvz_cloudlinux?
|
54
|
-
end
|
55
|
-
|
56
|
-
# So one can either have #6728 work on OpenVZ or Cloudlinux. Whoo.
|
57
|
-
def self.openvz_type
|
58
|
-
return false unless self.openvz?
|
59
|
-
return false unless FileTest.exists?( '/proc/self/status' )
|
60
|
-
|
61
|
-
envid = Facter::Core::Execution.exec( 'grep "envID" /proc/self/status' )
|
62
|
-
if envid =~ /^envID:\s+0$/i
|
63
|
-
return 'openvzhn'
|
64
|
-
elsif envid =~ /^envID:\s+(\d+)$/i
|
65
|
-
return 'openvzve'
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
# Cloudlinux uses OpenVZ to a degree, but always has an empty /proc/vz/ and
|
70
|
-
# has /proc/lve/list present
|
71
|
-
def self.openvz_cloudlinux?
|
72
|
-
FileTest.file?("/proc/lve/list") or Dir.glob('/proc/vz/*').empty?
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.zone?
|
76
|
-
return true if FileTest.directory?("/.SUNWnative")
|
77
|
-
z = Facter::Core::Execution.exec("/sbin/zonename")
|
78
|
-
return false unless z
|
79
|
-
return z.chomp != 'global'
|
80
|
-
end
|
81
|
-
|
82
|
-
def self.vserver?
|
83
|
-
return false unless FileTest.exists?("/proc/self/status")
|
84
|
-
txt = File.open("/proc/self/status", "rb").read
|
85
|
-
if txt.respond_to?(:encode!)
|
86
|
-
txt.encode!('UTF-16', 'UTF-8', :invalid => :replace)
|
87
|
-
txt.encode!('UTF-8', 'UTF-16')
|
88
|
-
end
|
89
|
-
return true if txt =~ /^(s_context|VxID):[[:blank:]]*[0-9]/
|
90
|
-
return false
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.vserver_type
|
94
|
-
if self.vserver?
|
95
|
-
if FileTest.exists?("/proc/virtual")
|
96
|
-
"vserver_host"
|
97
|
-
else
|
98
|
-
"vserver"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def self.xen?
|
104
|
-
["/proc/sys/xen", "/sys/bus/xen", "/proc/xen" ].detect do |f|
|
105
|
-
FileTest.exists?(f)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
def self.ec2?
|
110
|
-
File.read("/sys/devices/virtual/dmi/id/bios_vendor") =~ /Amazon EC2/ rescue false
|
111
|
-
end
|
112
|
-
|
113
|
-
def self.kvm?
|
114
|
-
txt = if FileTest.exists?("/proc/cpuinfo")
|
115
|
-
File.read("/proc/cpuinfo")
|
116
|
-
elsif ["FreeBSD", "OpenBSD"].include? Facter.value(:kernel)
|
117
|
-
Facter::Util::POSIX.sysctl("hw.model")
|
118
|
-
elsif Facter.value(:kernel) == "SunOS" and FileTest.exists?("/usr/sbin/prtconf")
|
119
|
-
Facter::Core::Execution.exec("/usr/sbin/prtconf -v")
|
120
|
-
end
|
121
|
-
(txt =~ /QEMU Virtual (CPU|Machine)/i) ? true : false
|
122
|
-
end
|
123
|
-
|
124
|
-
def self.virtualbox?
|
125
|
-
File.read("/sys/devices/virtual/dmi/id/product_name") =~ /VirtualBox/ rescue false
|
126
|
-
end
|
127
|
-
|
128
|
-
def self.kvm_type
|
129
|
-
# TODO Tell the difference between kvm and qemu
|
130
|
-
# Can't work out a way to do this at the moment that doesn't
|
131
|
-
# require a special binary
|
132
|
-
if self.kvm?
|
133
|
-
"kvm"
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def self.rhev?
|
138
|
-
File.read("/sys/devices/virtual/dmi/id/product_name") =~ /RHEV Hypervisor/ rescue false
|
139
|
-
end
|
140
|
-
|
141
|
-
def self.ovirt?
|
142
|
-
File.read("/sys/devices/virtual/dmi/id/product_name") =~ /oVirt Node/ rescue false
|
143
|
-
end
|
144
|
-
|
145
|
-
def self.gce?
|
146
|
-
File.read("/sys/devices/virtual/dmi/id/product_name") =~ /Google/ rescue false
|
147
|
-
end
|
148
|
-
|
149
|
-
def self.nitro?
|
150
|
-
File.read("/sys/devices/virtual/dmi/id/bios_vendor") =~ /Amazon/ rescue false
|
151
|
-
end
|
152
|
-
|
153
|
-
def self.jail?
|
154
|
-
path = case Facter.value(:kernel)
|
155
|
-
when "FreeBSD" then "/sbin"
|
156
|
-
when "GNU/kFreeBSD" then "/bin"
|
157
|
-
end
|
158
|
-
Facter::Core::Execution.exec("#{path}/sysctl -n security.jail.jailed") == "1"
|
159
|
-
end
|
160
|
-
|
161
|
-
def self.hpvm?
|
162
|
-
Facter::Core::Execution.exec("/usr/bin/getconf MACHINE_MODEL").chomp =~ /Virtual Machine/
|
163
|
-
end
|
164
|
-
|
165
|
-
##
|
166
|
-
# lxc? returns true if the process is running inside of a linux container.
|
167
|
-
# Implementation derived from
|
168
|
-
# http://stackoverflow.com/questions/20010199/determining-if-a-process-runs-inside-lxc-docker
|
169
|
-
def self.lxc?
|
170
|
-
path = Pathname.new('/proc/1/cgroup')
|
171
|
-
return false unless path.readable?
|
172
|
-
begin
|
173
|
-
in_lxc = path.readlines.any? {|l| l.split(":")[2].to_s.include? '/lxc' }
|
174
|
-
rescue Errno::EPERM => exc
|
175
|
-
# If we get "operation not permitted" here, it probably means we are
|
176
|
-
# running OpenVZ. We are not running LXC anyway, so...
|
177
|
-
return false
|
178
|
-
end
|
179
|
-
return true if in_lxc
|
180
|
-
return false
|
181
|
-
end
|
182
|
-
|
183
|
-
##
|
184
|
-
# docker? returns true if the process is running inside of a docker container.
|
185
|
-
# Implementation derived from observation of a boot2docker system
|
186
|
-
def self.docker?
|
187
|
-
path = Pathname.new('/proc/1/cgroup')
|
188
|
-
return false unless path.readable?
|
189
|
-
begin
|
190
|
-
in_docker = path.readlines.any? {|l| l.split(":")[2].to_s.include? '/docker' }
|
191
|
-
rescue Errno::EPERM => exc
|
192
|
-
# This can fail under OpenVZ, just like in .lxc?
|
193
|
-
return false
|
194
|
-
end
|
195
|
-
return true if in_docker
|
196
|
-
return false
|
197
|
-
end
|
198
|
-
|
199
|
-
def self.zlinux?
|
200
|
-
"zlinux"
|
201
|
-
end
|
202
|
-
|
203
|
-
##
|
204
|
-
# read_sysfs Reads the raw data as per the documentation at [Detecting if You
|
205
|
-
# Are Running in Google Compute
|
206
|
-
# Engine](https://developers.google.com/compute/docs/instances#dmi) This
|
207
|
-
# method is intended to provide an easy seam to mock.
|
208
|
-
#
|
209
|
-
# @api public
|
210
|
-
#
|
211
|
-
# @return [String] or nil if the path does not exist or is unreadable
|
212
|
-
def self.read_sysfs_dmi_entries(path="/sys/firmware/dmi/entries/1-0/raw")
|
213
|
-
if File.readable?(path)
|
214
|
-
begin
|
215
|
-
Facter::Util::FileRead.read_binary(path)
|
216
|
-
rescue Errno::EINVAL
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|