facter 2.1.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of facter might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/COMMITTERS.md +194 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +53 -0
- data/LICENSE +15 -0
- data/README.md +33 -0
- data/Rakefile +79 -0
- data/bin/facter +20 -0
- data/etc/facter.conf +5 -0
- data/ext/build_defaults.yaml +24 -0
- data/ext/debian/changelog.erb +59 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +14 -0
- data/ext/debian/copyright +19 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/lintian-overrides +0 -0
- data/ext/debian/rules +10 -0
- data/ext/debian/source/format +1 -0
- data/ext/facter-diff +74 -0
- data/ext/ips/facter.p5m.erb +10 -0
- data/ext/ips/rules +7 -0
- data/ext/ips/transforms +18 -0
- data/ext/osx/file_mapping.yaml +27 -0
- data/ext/osx/preflight.erb +33 -0
- data/ext/osx/prototype.plist.erb +38 -0
- data/ext/project_data.yaml +36 -0
- data/ext/redhat/facter.spec.erb +220 -0
- data/ext/solaris/pkginfo +7 -0
- data/install.rb +380 -0
- data/lib/facter.rb +261 -0
- data/lib/facter/Cfkey.rb +42 -0
- data/lib/facter/application.rb +204 -0
- data/lib/facter/architecture.rb +50 -0
- data/lib/facter/augeasversion.rb +28 -0
- data/lib/facter/blockdevices.rb +105 -0
- data/lib/facter/core/aggregate.rb +220 -0
- data/lib/facter/core/directed_graph.rb +46 -0
- data/lib/facter/core/execution.rb +123 -0
- data/lib/facter/core/execution/base.rb +81 -0
- data/lib/facter/core/execution/posix.rb +50 -0
- data/lib/facter/core/execution/windows.rb +57 -0
- data/lib/facter/core/logging.rb +169 -0
- data/lib/facter/core/resolvable.rb +94 -0
- data/lib/facter/core/suitable.rb +113 -0
- data/lib/facter/dhcp_servers.rb +39 -0
- data/lib/facter/domain.rb +99 -0
- data/lib/facter/ec2.rb +44 -0
- data/lib/facter/ec2/rest.rb +130 -0
- data/lib/facter/facterversion.rb +15 -0
- data/lib/facter/filesystems.rb +38 -0
- data/lib/facter/fqdn.rb +24 -0
- data/lib/facter/gce.rb +16 -0
- data/lib/facter/gce/metadata.rb +87 -0
- data/lib/facter/hardwareisa.rb +20 -0
- data/lib/facter/hardwaremodel.rb +67 -0
- data/lib/facter/hostname.rb +31 -0
- data/lib/facter/id.rb +21 -0
- data/lib/facter/interfaces.rb +46 -0
- data/lib/facter/ipaddress.rb +171 -0
- data/lib/facter/ipaddress6.rb +82 -0
- data/lib/facter/iphostnumber.rb +29 -0
- data/lib/facter/kernel.rb +22 -0
- data/lib/facter/kernelmajversion.rb +23 -0
- data/lib/facter/kernelrelease.rb +50 -0
- data/lib/facter/kernelversion.rb +22 -0
- data/lib/facter/ldom.rb +47 -0
- data/lib/facter/lsbdistcodename.rb +16 -0
- data/lib/facter/lsbdistdescription.rb +25 -0
- data/lib/facter/lsbdistid.rb +16 -0
- data/lib/facter/lsbdistrelease.rb +16 -0
- data/lib/facter/lsbmajdistrelease.rb +27 -0
- data/lib/facter/lsbrelease.rb +16 -0
- data/lib/facter/macaddress.rb +97 -0
- data/lib/facter/macosx.rb +56 -0
- data/lib/facter/manufacturer.rb +68 -0
- data/lib/facter/memory.rb +168 -0
- data/lib/facter/netmask.rb +42 -0
- data/lib/facter/network.rb +20 -0
- data/lib/facter/operatingsystem.rb +141 -0
- data/lib/facter/operatingsystemmajrelease.rb +47 -0
- data/lib/facter/operatingsystemrelease.rb +250 -0
- data/lib/facter/osfamily.rb +37 -0
- data/lib/facter/partitions.rb +35 -0
- data/lib/facter/path.rb +14 -0
- data/lib/facter/physicalprocessorcount.rb +91 -0
- data/lib/facter/processor.rb +168 -0
- data/lib/facter/ps.rb +30 -0
- data/lib/facter/puppetversion.rb +20 -0
- data/lib/facter/rubysitedir.rb +12 -0
- data/lib/facter/rubyversion.rb +12 -0
- data/lib/facter/selinux.rb +99 -0
- data/lib/facter/ssh.rb +72 -0
- data/lib/facter/timezone.rb +14 -0
- data/lib/facter/uniqueid.rb +4 -0
- data/lib/facter/uptime.rb +34 -0
- data/lib/facter/uptime_days.rb +15 -0
- data/lib/facter/uptime_hours.rb +15 -0
- data/lib/facter/uptime_seconds.rb +24 -0
- data/lib/facter/util/architecture.rb +19 -0
- data/lib/facter/util/collection.rb +161 -0
- data/lib/facter/util/composite_loader.rb +12 -0
- data/lib/facter/util/config.rb +63 -0
- data/lib/facter/util/confine.rb +66 -0
- data/lib/facter/util/dhcp_servers.rb +43 -0
- data/lib/facter/util/directory_loader.rb +83 -0
- data/lib/facter/util/ec2.rb +106 -0
- data/lib/facter/util/fact.rb +204 -0
- data/lib/facter/util/file_read.rb +37 -0
- data/lib/facter/util/formatter.rb +39 -0
- data/lib/facter/util/ip.rb +285 -0
- data/lib/facter/util/ip/windows.rb +215 -0
- data/lib/facter/util/loader.rb +155 -0
- data/lib/facter/util/macaddress.rb +43 -0
- data/lib/facter/util/macosx.rb +73 -0
- data/lib/facter/util/manufacturer.rb +99 -0
- data/lib/facter/util/memory.rb +228 -0
- data/lib/facter/util/netmask.rb +40 -0
- data/lib/facter/util/normalization.rb +94 -0
- data/lib/facter/util/nothing_loader.rb +12 -0
- data/lib/facter/util/operatingsystem.rb +21 -0
- data/lib/facter/util/parser.rb +158 -0
- data/lib/facter/util/partitions.rb +41 -0
- data/lib/facter/util/partitions/linux.rb +65 -0
- data/lib/facter/util/plist.rb +24 -0
- data/lib/facter/util/plist/generator.rb +228 -0
- data/lib/facter/util/plist/parser.rb +226 -0
- data/lib/facter/util/posix.rb +16 -0
- data/lib/facter/util/processor.rb +289 -0
- data/lib/facter/util/registry.rb +11 -0
- data/lib/facter/util/resolution.rb +160 -0
- data/lib/facter/util/solaris_zones.rb +158 -0
- data/lib/facter/util/unix_root.rb +5 -0
- data/lib/facter/util/uptime.rb +81 -0
- data/lib/facter/util/values.rb +109 -0
- data/lib/facter/util/virtual.rb +180 -0
- data/lib/facter/util/vlans.rb +21 -0
- data/lib/facter/util/windows_root.rb +7 -0
- data/lib/facter/util/wmi.rb +16 -0
- data/lib/facter/util/xendomains.rb +10 -0
- data/lib/facter/version.rb +86 -0
- data/lib/facter/virtual.rb +311 -0
- data/lib/facter/vlans.rb +17 -0
- data/lib/facter/xendomains.rb +20 -0
- data/lib/facter/zfs_version.rb +10 -0
- data/lib/facter/zonename.rb +6 -0
- data/lib/facter/zones.rb +17 -0
- data/lib/facter/zpool_version.rb +10 -0
- data/spec/fixtures/cpuinfo/amd64dual +57 -0
- data/spec/fixtures/cpuinfo/amd64quad +79 -0
- data/spec/fixtures/cpuinfo/amd64solo +23 -0
- data/spec/fixtures/cpuinfo/amd64tri +86 -0
- data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
- data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
- data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
- data/spec/fixtures/cpuinfo/panda-armel +17 -0
- data/spec/fixtures/cpuinfo/ppc64 +19 -0
- data/spec/fixtures/cpuinfo/sparc +10 -0
- data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
- data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
- data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
- data/spec/fixtures/hpux/sched.models +174 -0
- data/spec/fixtures/hpux/unistd.h +1534 -0
- data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
- data/spec/fixtures/ifconfig/centos_5_5 +17 -0
- data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
- data/spec/fixtures/ifconfig/fedora_10 +36 -0
- data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_13 +18 -0
- data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_8 +38 -0
- data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
- data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
- data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
- data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
- data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
- data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
- data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
- data/spec/fixtures/ldom/ldom_v1 +6 -0
- data/spec/fixtures/netstat/centos_5_5 +5 -0
- data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
- data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
- data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
- data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
- data/spec/fixtures/netstat/fedora_10 +7 -0
- data/spec/fixtures/netstat/open_solaris_10 +16 -0
- data/spec/fixtures/netstat/open_solaris_b132 +17 -0
- data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
- data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
- data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
- data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
- data/spec/fixtures/unit/dhcp_servers/route +3 -0
- data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
- data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
- data/spec/fixtures/unit/filesystems/linux +28 -0
- data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
- data/spec/fixtures/unit/memory/aix-svmon +9 -0
- data/spec/fixtures/unit/memory/aix-swap_l +2 -0
- data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
- data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
- data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
- data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
- data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
- data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
- data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
- data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
- data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
- data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
- data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
- data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
- data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
- data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
- data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
- data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
- data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
- data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
- data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
- data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
- data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
- data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
- data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
- data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
- data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
- data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
- data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
- data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
- data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
- data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
- data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
- data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
- data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
- data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
- data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
- data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
- data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
- data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
- 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 +2 -0
- data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
- data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
- data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
- data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
- data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
- data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
- data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
- data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
- data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
- data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
- data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
- data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
- data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
- data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
- data/spec/integration/facter_spec.rb +39 -0
- data/spec/lib/facter_spec/cpuinfo.rb +15 -0
- data/spec/lib/facter_spec/windows_network.rb +64 -0
- data/spec/puppetlabs_spec/files.rb +57 -0
- data/spec/puppetlabs_spec/fixtures.rb +49 -0
- data/spec/puppetlabs_spec/matchers.rb +87 -0
- data/spec/puppetlabs_spec/verbose.rb +9 -0
- data/spec/puppetlabs_spec_helper.rb +26 -0
- data/spec/shared_contexts/platform.rb +55 -0
- data/spec/shared_formats/parses.rb +3 -0
- data/spec/spec_helper.rb +75 -0
- data/spec/unit/application_spec.rb +101 -0
- data/spec/unit/architecture_spec.rb +63 -0
- data/spec/unit/blockdevices_spec.rb +109 -0
- data/spec/unit/core/aggregate_spec.rb +125 -0
- data/spec/unit/core/directed_graph_spec.rb +79 -0
- data/spec/unit/core/execution/base_spec.rb +130 -0
- data/spec/unit/core/execution/posix_spec.rb +86 -0
- data/spec/unit/core/execution/windows_spec.rb +106 -0
- data/spec/unit/core/execution_spec.rb +42 -0
- data/spec/unit/core/logging_spec.rb +104 -0
- data/spec/unit/core/resolvable_spec.rb +81 -0
- data/spec/unit/core/suitable_spec.rb +106 -0
- data/spec/unit/dhcp_servers_spec.rb +152 -0
- data/spec/unit/domain_spec.rb +310 -0
- data/spec/unit/ec2/rest_spec.rb +145 -0
- data/spec/unit/ec2_spec.rb +127 -0
- data/spec/unit/facter_spec.rb +108 -0
- data/spec/unit/filesystems_spec.rb +50 -0
- data/spec/unit/fqdn_spec.rb +16 -0
- data/spec/unit/gce/metadata_spec.rb +49 -0
- data/spec/unit/gce_spec.rb +34 -0
- data/spec/unit/hardwareisa_spec.rb +41 -0
- data/spec/unit/hardwaremodel_spec.rb +56 -0
- data/spec/unit/hostname_spec.rb +40 -0
- data/spec/unit/id_spec.rb +29 -0
- data/spec/unit/interfaces_spec.rb +57 -0
- data/spec/unit/ipaddress6_spec.rb +161 -0
- data/spec/unit/ipaddress_spec.rb +114 -0
- data/spec/unit/kernel_spec.rb +24 -0
- data/spec/unit/kernelmajversion_spec.rb +22 -0
- data/spec/unit/kernelrelease_spec.rb +69 -0
- data/spec/unit/kernelversion_spec.rb +32 -0
- data/spec/unit/ldom_spec.rb +75 -0
- data/spec/unit/lsbdistcodename_spec.rb +25 -0
- data/spec/unit/lsbdistdescription_spec.rb +25 -0
- data/spec/unit/lsbdistid_spec.rb +25 -0
- data/spec/unit/lsbdistrelease_spec.rb +25 -0
- data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
- data/spec/unit/lsbrelease_spec.rb +25 -0
- data/spec/unit/macaddress_spec.rb +73 -0
- data/spec/unit/manufacturer_spec.rb +115 -0
- data/spec/unit/memory_spec.rb +470 -0
- data/spec/unit/netmask_spec.rb +106 -0
- data/spec/unit/operatingsystem_spec.rb +160 -0
- data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
- data/spec/unit/operatingsystemrelease_spec.rb +236 -0
- data/spec/unit/osfamily_spec.rb +62 -0
- data/spec/unit/partitions_spec.rb +48 -0
- data/spec/unit/physicalprocessorcount_spec.rb +85 -0
- data/spec/unit/processor_spec.rb +401 -0
- data/spec/unit/ps_spec.rb +42 -0
- data/spec/unit/selinux_spec.rb +114 -0
- data/spec/unit/ssh_spec.rb +77 -0
- data/spec/unit/uniqueid_spec.rb +27 -0
- data/spec/unit/uptime_spec.rb +110 -0
- data/spec/unit/util/collection_spec.rb +258 -0
- data/spec/unit/util/config_spec.rb +97 -0
- data/spec/unit/util/confine_spec.rb +148 -0
- data/spec/unit/util/dhcp_servers_spec.rb +63 -0
- data/spec/unit/util/directory_loader_spec.rb +88 -0
- data/spec/unit/util/ec2_spec.rb +184 -0
- data/spec/unit/util/fact_spec.rb +142 -0
- data/spec/unit/util/file_read_spec.rb +29 -0
- data/spec/unit/util/formatter_spec.rb +50 -0
- data/spec/unit/util/ip/windows_spec.rb +80 -0
- data/spec/unit/util/ip_spec.rb +467 -0
- data/spec/unit/util/loader_spec.rb +286 -0
- data/spec/unit/util/macaddress_spec.rb +141 -0
- data/spec/unit/util/macosx_spec.rb +114 -0
- data/spec/unit/util/manufacturer_spec.rb +223 -0
- data/spec/unit/util/normalization_spec.rb +113 -0
- data/spec/unit/util/operatingsystem_spec.rb +92 -0
- data/spec/unit/util/parser_spec.rb +200 -0
- data/spec/unit/util/partitions/partitions_spec.rb +67 -0
- data/spec/unit/util/partitions_spec.rb +19 -0
- data/spec/unit/util/posix_spec.rb +11 -0
- data/spec/unit/util/processor_spec.rb +92 -0
- data/spec/unit/util/registry_spec.rb +76 -0
- data/spec/unit/util/resolution_spec.rb +129 -0
- data/spec/unit/util/solaris_zones_spec.rb +127 -0
- data/spec/unit/util/uptime_spec.rb +126 -0
- data/spec/unit/util/values_spec.rb +171 -0
- data/spec/unit/util/virtual_spec.rb +364 -0
- data/spec/unit/util/vlans_spec.rb +42 -0
- data/spec/unit/util/wmi_spec.rb +19 -0
- data/spec/unit/util/xendomains_spec.rb +21 -0
- data/spec/unit/version_spec.rb +42 -0
- data/spec/unit/virtual_spec.rb +519 -0
- data/spec/unit/zfs_version_spec.rb +75 -0
- data/spec/unit/zonename_spec.rb +14 -0
- data/spec/unit/zones_spec.rb +55 -0
- data/spec/unit/zpool_version_spec.rb +75 -0
- data/spec/watchr.rb +125 -0
- metadata +815 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'facter/core/resolvable'
|
3
|
+
|
4
|
+
describe Facter::Core::Resolvable do
|
5
|
+
|
6
|
+
class ResolvableClass
|
7
|
+
def initialize(name)
|
8
|
+
@name = name
|
9
|
+
@fact = Facter::Util::Fact.new("stub fact")
|
10
|
+
end
|
11
|
+
attr_accessor :name, :resolve_value
|
12
|
+
attr_reader :fact
|
13
|
+
include Facter::Core::Resolvable
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { ResolvableClass.new('resolvable') }
|
17
|
+
|
18
|
+
it "has a default timeout of 0 seconds" do
|
19
|
+
expect(subject.limit).to eq 0
|
20
|
+
end
|
21
|
+
|
22
|
+
it "can specify a custom timeout" do
|
23
|
+
subject.timeout = 10
|
24
|
+
expect(subject.limit).to eq 10
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "generating a value" do
|
28
|
+
it "returns the results of #resolve_value" do
|
29
|
+
subject.resolve_value = 'stuff'
|
30
|
+
expect(subject.value).to eq 'stuff'
|
31
|
+
end
|
32
|
+
|
33
|
+
it "normalizes the resolved value" do
|
34
|
+
Facter::Util::Normalization.expects(:normalize).returns 'stuff'
|
35
|
+
subject.resolve_value = 'stuff'
|
36
|
+
expect(subject.value).to eq('stuff')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "logs a warning if an exception was raised" do
|
40
|
+
subject.expects(:resolve_value).raises RuntimeError, "kaboom!"
|
41
|
+
Facter.expects(:warn).with(regexp_matches(/Could not retrieve .*: kaboom!/))
|
42
|
+
expect(subject.value).to eq nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "timing out" do
|
47
|
+
it "uses #limit instead of #timeout to determine the timeout period" do
|
48
|
+
subject.expects(:timeout).never
|
49
|
+
subject.expects(:limit).returns 25
|
50
|
+
|
51
|
+
Timeout.expects(:timeout).with(25)
|
52
|
+
subject.value
|
53
|
+
end
|
54
|
+
|
55
|
+
it "returns nil if the timeout was reached" do
|
56
|
+
Facter.expects(:warn).with(regexp_matches(/Timed out after 0\.1 seconds while resolving/))
|
57
|
+
Timeout.expects(:timeout).raises Timeout::Error
|
58
|
+
|
59
|
+
subject.timeout = 0.1
|
60
|
+
|
61
|
+
expect(subject.value).to be_nil
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe 'callbacks when flushing facts' do
|
66
|
+
class FlushFakeError < StandardError; end
|
67
|
+
|
68
|
+
context '#on_flush' do
|
69
|
+
it 'accepts a block with on_flush' do
|
70
|
+
subject.on_flush() { raise NotImplementedError }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context '#flush' do
|
75
|
+
it 'calls the block passed to on_flush' do
|
76
|
+
subject.on_flush() { raise FlushFakeError }
|
77
|
+
expect { subject.flush }.to raise_error FlushFakeError
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'facter/core/suitable'
|
3
|
+
|
4
|
+
describe Facter::Core::Suitable do
|
5
|
+
|
6
|
+
class SuitableClass
|
7
|
+
def initialize
|
8
|
+
@confines = []
|
9
|
+
end
|
10
|
+
attr_reader :confines
|
11
|
+
include Facter::Core::Suitable
|
12
|
+
end
|
13
|
+
|
14
|
+
subject { SuitableClass.new }
|
15
|
+
|
16
|
+
describe "confining on facts" do
|
17
|
+
it "can add confines with a fact and a single value" do
|
18
|
+
subject.confine :kernel => 'Linux'
|
19
|
+
end
|
20
|
+
|
21
|
+
it "creates a Facter::Util::Confine object for the confine call" do
|
22
|
+
subject.confine :kernel => 'Linux'
|
23
|
+
conf = subject.confines.first
|
24
|
+
expect(conf).to be_a_kind_of Facter::Util::Confine
|
25
|
+
expect(conf.fact).to eq :kernel
|
26
|
+
expect(conf.values).to eq ['Linux']
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "confining on blocks" do
|
31
|
+
it "can add a single fact with a block parameter" do
|
32
|
+
subject.confine(:one) { true }
|
33
|
+
end
|
34
|
+
|
35
|
+
it "creates a Util::Confine instance for the provided fact with block parameter" do
|
36
|
+
block = lambda { true }
|
37
|
+
Facter::Util::Confine.expects(:new).with("one")
|
38
|
+
|
39
|
+
subject.confine("one", &block)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should accept a single block parameter" do
|
43
|
+
subject.confine() { true }
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should create a Util::Confine instance for the provided block parameter" do
|
47
|
+
block = lambda { true }
|
48
|
+
Facter::Util::Confine.expects(:new)
|
49
|
+
|
50
|
+
subject.confine(&block)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "determining weight" do
|
55
|
+
it "is zero if no confines are set" do
|
56
|
+
expect(subject.weight).to eq 0
|
57
|
+
end
|
58
|
+
|
59
|
+
it "defaults to the number of confines" do
|
60
|
+
subject.confine :kernel => 'Linux'
|
61
|
+
expect(subject.weight).to eq 1
|
62
|
+
end
|
63
|
+
|
64
|
+
it "can be explicitly set" do
|
65
|
+
subject.has_weight 10
|
66
|
+
expect(subject.weight).to eq 10
|
67
|
+
end
|
68
|
+
|
69
|
+
it "prefers an explicit weight over the number of confines" do
|
70
|
+
subject.confine :kernel => 'Linux'
|
71
|
+
subject.has_weight 11
|
72
|
+
expect(subject.weight).to eq 11
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "determining suitability" do
|
77
|
+
it "is true if all confines for the object evaluate to true" do
|
78
|
+
subject.confine :kernel => 'Linux'
|
79
|
+
subject.confine :operatingsystem => 'Redhat'
|
80
|
+
|
81
|
+
subject.confines.each { |confine| confine.stubs(:true?).returns true }
|
82
|
+
|
83
|
+
expect(subject).to be_suitable
|
84
|
+
end
|
85
|
+
|
86
|
+
it "is false if any confines for the object evaluate to false" do
|
87
|
+
subject.confine :kernel => 'Linux'
|
88
|
+
subject.confine :operatingsystem => 'Redhat'
|
89
|
+
|
90
|
+
subject.confines.first.stubs(:true?).returns true
|
91
|
+
subject.confines.first.stubs(:true?).returns false
|
92
|
+
|
93
|
+
expect(subject).to_not be_suitable
|
94
|
+
end
|
95
|
+
|
96
|
+
it "recalculates suitability on every invocation" do
|
97
|
+
subject.confine :kernel => 'Linux'
|
98
|
+
|
99
|
+
subject.confines.first.stubs(:true?).returns false
|
100
|
+
expect(subject).to_not be_suitable
|
101
|
+
subject.confines.first.unstub(:true?)
|
102
|
+
subject.confines.first.stubs(:true?).returns true
|
103
|
+
expect(subject).to be_suitable
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DHCP server facts" do
|
4
|
+
describe "on Linux OS's" do
|
5
|
+
before :each do
|
6
|
+
Facter.fact(:kernel).stubs(:value).returns 'Linux'
|
7
|
+
Facter::Util::FileRead.stubs(:read).with('/proc/net/route').returns(my_fixture_read('route'))
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "with nmcli version <= 0.9.8 available" do
|
11
|
+
before :each do
|
12
|
+
Facter::Core::Execution.stubs(:which).with('nmcli').returns('/usr/bin/nmcli')
|
13
|
+
Facter::Core::Execution.stubs(:exec).with('nmcli --version').returns('nmcli tool, version 0.9.8.0')
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "with a main interface configured with DHCP" do
|
17
|
+
before :each do
|
18
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
19
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface eth0").returns(my_fixture_read("nmcli_eth0_dhcp"))
|
20
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface wlan0").returns(my_fixture_read("nmcli_wlan0_dhcp"))
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should produce a dhcp_servers fact that includes values for 'system' as well as each dhcp enabled interface" do
|
24
|
+
Facter.fact(:dhcp_servers).value.should == { 'system' => '192.168.1.1', 'eth0' => '192.168.1.1', 'wlan0' => '192.168.2.1' }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "with a main interface NOT configured with DHCP" do
|
29
|
+
before :each do
|
30
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
31
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface eth0").returns(my_fixture_read("nmcli_eth0_static"))
|
32
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface wlan0").returns(my_fixture_read("nmcli_wlan0_dhcp"))
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should a dhcp_servers fact that includes values for each dhcp enables interface and NO 'system' value" do
|
36
|
+
Facter.fact(:dhcp_servers).value.should == {'wlan0' => '192.168.2.1' }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "with no default gateway" do
|
41
|
+
before :each do
|
42
|
+
Facter::Util::FileRead.stubs(:read).with('/proc/net/route').returns(my_fixture_read('route_nogw'))
|
43
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
44
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface eth0").returns(my_fixture_read("nmcli_eth0_dhcp"))
|
45
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface wlan0").returns(my_fixture_read("nmcli_wlan0_dhcp"))
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should a dhcp_servers fact that includes values for each dhcp enables interface and NO 'system' value" do
|
49
|
+
Facter.fact(:dhcp_servers).value.should == {'eth0' => '192.168.1.1', 'wlan0' => '192.168.2.1' }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "with no DHCP enabled interfaces" do
|
54
|
+
before :each do
|
55
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
56
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface eth0").returns(my_fixture_read("nmcli_eth0_static"))
|
57
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d list iface wlan0").returns(my_fixture_read("nmcli_wlan0_static"))
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should not produce a dhcp_servers fact" do
|
61
|
+
Facter.fact(:dhcp_servers).value.should be_nil
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "with no CONNECTED devices" do
|
66
|
+
before :each do
|
67
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices_disconnected"))
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should not produce a dhcp_servers fact" do
|
71
|
+
Facter.fact(:dhcp_servers).value.should be_nil
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "with nmcli version >= 0.9.9 available" do
|
77
|
+
before :each do
|
78
|
+
Facter::Core::Execution.stubs(:which).with('nmcli').returns('/usr/bin/nmcli')
|
79
|
+
Facter::Core::Execution.stubs(:exec).with('nmcli --version').returns('nmcli tool, version 0.9.9.0-20.git20131003.fc20')
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "with a main interface configured with DHCP" do
|
83
|
+
before :each do
|
84
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
85
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show eth0").returns(my_fixture_read("nmcli_eth0_dhcp"))
|
86
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show wlan0").returns(my_fixture_read("nmcli_wlan0_dhcp"))
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should produce a dhcp_servers fact that includes values for 'system' as well as each dhcp enabled interface" do
|
90
|
+
Facter.fact(:dhcp_servers).value.should == { 'system' => '192.168.1.1', 'eth0' => '192.168.1.1', 'wlan0' => '192.168.2.1' }
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "with a main interface NOT configured with DHCP" do
|
95
|
+
before :each do
|
96
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
97
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show eth0").returns(my_fixture_read("nmcli_eth0_static"))
|
98
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show wlan0").returns(my_fixture_read("nmcli_wlan0_dhcp"))
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should a dhcp_servers fact that includes values for each dhcp enables interface and NO 'system' value" do
|
102
|
+
Facter.fact(:dhcp_servers).value.should == {'wlan0' => '192.168.2.1' }
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "with no default gateway" do
|
107
|
+
before :each do
|
108
|
+
Facter::Util::FileRead.stubs(:read).with('/proc/net/route').returns(my_fixture_read('route_nogw'))
|
109
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
110
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show eth0").returns(my_fixture_read("nmcli_eth0_dhcp"))
|
111
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show wlan0").returns(my_fixture_read("nmcli_wlan0_dhcp"))
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should a dhcp_servers fact that includes values for each dhcp enables interface and NO 'system' value" do
|
115
|
+
Facter.fact(:dhcp_servers).value.should == {'eth0' => '192.168.1.1', 'wlan0' => '192.168.2.1' }
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "with no DHCP enabled interfaces" do
|
120
|
+
before :each do
|
121
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices"))
|
122
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show eth0").returns(my_fixture_read("nmcli_eth0_static"))
|
123
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli -f all d show wlan0").returns(my_fixture_read("nmcli_wlan0_static"))
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should not produce a dhcp_servers fact" do
|
127
|
+
Facter.fact(:dhcp_servers).value.should be_nil
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "with no CONNECTED devices" do
|
132
|
+
before :each do
|
133
|
+
Facter::Core::Execution.stubs(:exec).with("nmcli d").returns(my_fixture_read("nmcli_devices_disconnected"))
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should not produce a dhcp_servers fact" do
|
137
|
+
Facter.fact(:dhcp_servers).value.should be_nil
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe "without nmcli available" do
|
143
|
+
before :each do
|
144
|
+
Facter::Core::Execution.stubs(:which).with('nmcli').returns(nil)
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should not produce a dhcp_server fact" do
|
148
|
+
Facter.fact(:dhcp_servers).value.should be_nil
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
@@ -0,0 +1,310 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'stringio'
|
5
|
+
|
6
|
+
describe "Domain name facts" do
|
7
|
+
|
8
|
+
def resolv_conf_contains(*lines)
|
9
|
+
file_handle = StringIO.new(lines.join("\n"))
|
10
|
+
FileTest.stubs(:exists?).with("/etc/resolv.conf").returns(true)
|
11
|
+
File.stubs(:open).with("/etc/resolv.conf").yields(file_handle)
|
12
|
+
end
|
13
|
+
|
14
|
+
[
|
15
|
+
{ :kernel => "Linux", :hostname_command => "hostname -f 2> /dev/null" },
|
16
|
+
{ :kernel => "SunOS", :hostname_command => "hostname 2> /dev/null" },
|
17
|
+
{ :kernel => "Darwin", :hostname_command => "hostname -f 2> /dev/null" },
|
18
|
+
{ :kernel => "FreeBSD", :hostname_command => "hostname -f 2> /dev/null" },
|
19
|
+
{ :kernel => "HP-UX", :hostname_command => "hostname 2> /dev/null" },
|
20
|
+
].each do |scenario|
|
21
|
+
|
22
|
+
describe "on #{scenario[:kernel]}" do
|
23
|
+
let(:hostname_command) { scenario[:hostname_command] }
|
24
|
+
let(:dnsdomain_command) { "dnsdomainname 2> /dev/null" }
|
25
|
+
|
26
|
+
def the_hostname_is(value)
|
27
|
+
Facter::Core::Execution.stubs(:exec).with(hostname_command).returns(value)
|
28
|
+
end
|
29
|
+
|
30
|
+
def the_dnsdomainname_is(value)
|
31
|
+
Facter::Core::Execution.stubs(:exec).with(dnsdomain_command).returns(value)
|
32
|
+
end
|
33
|
+
|
34
|
+
before do
|
35
|
+
Facter.fact(:kernel).stubs(:value).returns(scenario[:kernel])
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should use the hostname binary" do
|
39
|
+
the_hostname_is("test.example.com")
|
40
|
+
|
41
|
+
Facter.fact(:domain).value.should == "example.com"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should fall back to the dnsdomainname binary" do
|
45
|
+
the_hostname_is("myhost")
|
46
|
+
the_dnsdomainname_is("example.com")
|
47
|
+
|
48
|
+
Facter.fact(:domain).value.should == "example.com"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should fall back to /etc/resolv.conf" do
|
52
|
+
the_hostname_is("myhost")
|
53
|
+
the_dnsdomainname_is("")
|
54
|
+
|
55
|
+
resolv_conf_contains("domain testing.com")
|
56
|
+
|
57
|
+
Facter.fact(:domain).value.should == "testing.com"
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "Top level domain" do
|
61
|
+
it "should find the domain name" do
|
62
|
+
the_hostname_is("ns01.tld")
|
63
|
+
|
64
|
+
Facter.fact(:domain).value.should == "tld"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "when using /etc/resolv.conf" do
|
69
|
+
before do
|
70
|
+
the_hostname_is("")
|
71
|
+
the_dnsdomainname_is("")
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should use the domain field over the search field" do
|
75
|
+
resolv_conf_contains(
|
76
|
+
"nameserver 4.2.2.1",
|
77
|
+
"search example.org",
|
78
|
+
"domain example.com"
|
79
|
+
)
|
80
|
+
|
81
|
+
Facter.fact(:domain).value.should == 'example.com'
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should fall back to the search field" do
|
85
|
+
resolv_conf_contains(
|
86
|
+
"nameserver 4.2.2.1",
|
87
|
+
"search example.org"
|
88
|
+
)
|
89
|
+
|
90
|
+
Facter.fact(:domain).value.should == 'example.org'
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should use the first domain in the search field" do
|
94
|
+
resolv_conf_contains("search example.org example.net")
|
95
|
+
|
96
|
+
Facter.fact(:domain).value.should == 'example.org'
|
97
|
+
end
|
98
|
+
|
99
|
+
# Test permutations of domain and search, where 'domain' can be a value of
|
100
|
+
# the search keyword and the domain keyword
|
101
|
+
# and also where 'search' can be a value of the search keyword and the
|
102
|
+
# domain keyword
|
103
|
+
# For example, /etc/resolv.conf may look like:
|
104
|
+
# domain domain
|
105
|
+
# or
|
106
|
+
# search search
|
107
|
+
# or
|
108
|
+
# domain search
|
109
|
+
#
|
110
|
+
#
|
111
|
+
# Why someone would have their machines named 'www.domain' or 'www.search', I
|
112
|
+
# don't know, but we'll at least handle it properly
|
113
|
+
[
|
114
|
+
[["domain domain"], "domain"],
|
115
|
+
[["domain search"], "search"],
|
116
|
+
[["search domain"], "domain"],
|
117
|
+
[["search search"], "search"],
|
118
|
+
[["search domain notdomain"], "domain"],
|
119
|
+
[["#search notdomain", "search search"], "search"],
|
120
|
+
[["# search notdomain", "search search"], "search"],
|
121
|
+
[["#domain notdomain", "domain domain"], "domain"],
|
122
|
+
[["# domain notdomain", "domain domain"], "domain"],
|
123
|
+
].each do |tuple|
|
124
|
+
conf = tuple[0]
|
125
|
+
expect = tuple[1]
|
126
|
+
it "should return #{expect} from \"#{conf}\"" do
|
127
|
+
resolv_conf_contains(*conf)
|
128
|
+
|
129
|
+
Facter.fact(:domain).value.should == expect
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe "on Windows" do
|
137
|
+
before(:each) do
|
138
|
+
Facter.fact(:kernel).stubs(:value).returns("windows")
|
139
|
+
require 'facter/util/registry'
|
140
|
+
end
|
141
|
+
|
142
|
+
describe "with primary dns suffix" do
|
143
|
+
before(:each) do
|
144
|
+
Facter::Util::Registry.stubs(:hklm_read).returns('baz.com')
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should get the primary dns suffix" do
|
148
|
+
Facter.fact(:domain).value.should == 'baz.com'
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should not execute the wmi query" do
|
152
|
+
require 'facter/util/wmi'
|
153
|
+
Facter::Util::WMI.expects(:execquery).never
|
154
|
+
Facter.fact(:domain).value
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "without primary dns suffix" do
|
159
|
+
before(:each) do
|
160
|
+
Facter::Util::Registry.stubs(:hklm_read).returns('')
|
161
|
+
end
|
162
|
+
|
163
|
+
def expects_dnsdomains(domains)
|
164
|
+
nics = []
|
165
|
+
|
166
|
+
domains.each do |domain|
|
167
|
+
nic = stubs 'nic'
|
168
|
+
nic.stubs(:DNSDomain).returns(domain)
|
169
|
+
nics << nic
|
170
|
+
end
|
171
|
+
|
172
|
+
require 'facter/util/wmi'
|
173
|
+
Facter::Util::WMI.stubs(:execquery).with("select DNSDomain from Win32_NetworkAdapterConfiguration where IPEnabled = True").returns(nics)
|
174
|
+
end
|
175
|
+
|
176
|
+
it "uses the first DNSDomain" do
|
177
|
+
expects_dnsdomains(['foo.com', 'bar.com'])
|
178
|
+
|
179
|
+
Facter.fact(:domain).value.should == 'foo.com'
|
180
|
+
end
|
181
|
+
|
182
|
+
it "uses the first non-nil DNSDomain" do
|
183
|
+
expects_dnsdomains([nil, 'bar.com'])
|
184
|
+
|
185
|
+
Facter.fact(:domain).value.should == 'bar.com'
|
186
|
+
end
|
187
|
+
|
188
|
+
it "uses the first non-empty DNSDomain" do
|
189
|
+
expects_dnsdomains(['', 'bar.com'])
|
190
|
+
|
191
|
+
Facter.fact(:domain).value.should == 'bar.com'
|
192
|
+
end
|
193
|
+
|
194
|
+
context "without any network adapters with a specified DNSDomain" do
|
195
|
+
let(:hostname_command) { 'hostname > NUL' }
|
196
|
+
|
197
|
+
it "should return nil" do
|
198
|
+
expects_dnsdomains([nil])
|
199
|
+
|
200
|
+
Facter::Core::Execution.stubs(:exec).with(hostname_command).returns('sometest')
|
201
|
+
FileTest.stubs(:exists?).with("/etc/resolv.conf").returns(false)
|
202
|
+
|
203
|
+
Facter.fact(:domain).value.should be_nil
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
describe "with trailing dots" do
|
210
|
+
describe "on Windows" do
|
211
|
+
before do
|
212
|
+
Facter.fact(:kernel).stubs(:value).returns("windows")
|
213
|
+
require 'facter/util/registry'
|
214
|
+
require 'facter/util/wmi'
|
215
|
+
end
|
216
|
+
|
217
|
+
[{:registry => 'testdomain.', :wmi => '', :expect => 'testdomain'},
|
218
|
+
{:registry => '', :wmi => 'testdomain.', :expect => 'testdomain'},
|
219
|
+
].each do |scenario|
|
220
|
+
|
221
|
+
describe "scenarios" do
|
222
|
+
before(:each) do
|
223
|
+
Facter::Util::Registry.stubs(:hklm_read).returns(scenario[:registry])
|
224
|
+
nic = stubs 'nic'
|
225
|
+
nic.stubs(:DNSDomain).returns(scenario[:wmi])
|
226
|
+
Facter::Util::WMI.stubs(:execquery).with("select DNSDomain from Win32_NetworkAdapterConfiguration where IPEnabled = True").returns([nic])
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should return #{scenario[:expect]}" do
|
230
|
+
Facter.fact(:domain).value.should == scenario[:expect]
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should remove trailing dots" do
|
234
|
+
Facter.fact(:domain).value.should_not =~ /\.$/
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
describe "on everything else" do
|
241
|
+
before do
|
242
|
+
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
243
|
+
FileTest.stubs(:exists?).with("/etc/resolv.conf").returns(true)
|
244
|
+
end
|
245
|
+
|
246
|
+
[
|
247
|
+
{
|
248
|
+
:scenario => 'when there is only a hostname',
|
249
|
+
:hostname => 'host.testdomain.',
|
250
|
+
:dnsdomainname => '',
|
251
|
+
:resolve_domain => '',
|
252
|
+
:resolve_search => '',
|
253
|
+
:expect => 'testdomain'
|
254
|
+
},
|
255
|
+
{
|
256
|
+
:scenario => 'when there is only a domain name',
|
257
|
+
:hostname => '',
|
258
|
+
:dnsdomainname => 'testdomain.',
|
259
|
+
:resolve_domain => '',
|
260
|
+
:resolve_search => '',
|
261
|
+
:expect => 'testdomain'
|
262
|
+
},
|
263
|
+
{
|
264
|
+
:scenario => 'when there is only a resolve domain',
|
265
|
+
:hostname => '',
|
266
|
+
:dnsdomainname => '',
|
267
|
+
:resolve_domain => 'testdomain.',
|
268
|
+
:resolve_search => '',
|
269
|
+
:expect => 'testdomain'
|
270
|
+
},
|
271
|
+
{
|
272
|
+
:scenario => 'when there is only a resolve search',
|
273
|
+
:hostname => '',
|
274
|
+
:dnsdomainname => '',
|
275
|
+
:resolve_domain => '',
|
276
|
+
:resolve_search => 'testdomain.',
|
277
|
+
:expect => 'testdomain'
|
278
|
+
},
|
279
|
+
{
|
280
|
+
:scenario => 'when there is no information available',
|
281
|
+
:hostname => '',
|
282
|
+
:dnsdomainname => '',
|
283
|
+
:resolve_domain => '',
|
284
|
+
:resolve_search => '',
|
285
|
+
:expect => nil
|
286
|
+
}
|
287
|
+
].each do |scenario|
|
288
|
+
|
289
|
+
describe scenario[:scenario] do
|
290
|
+
before(:each) do
|
291
|
+
Facter::Core::Execution.stubs(:exec).with("hostname -f 2> /dev/null").returns(scenario[:hostname])
|
292
|
+
Facter::Core::Execution.stubs(:exec).with("dnsdomainname 2> /dev/null").returns(scenario[:dnsdomainname])
|
293
|
+
resolv_conf_contains(
|
294
|
+
"search #{scenario[:resolve_search]}",
|
295
|
+
"domain #{scenario[:resolve_domain]}"
|
296
|
+
)
|
297
|
+
end
|
298
|
+
|
299
|
+
it "should remove trailing dots" do
|
300
|
+
Facter.fact(:domain).value.should_not =~ /\.$/
|
301
|
+
end
|
302
|
+
|
303
|
+
it "should return #{scenario[:expect]}" do
|
304
|
+
Facter.fact(:domain).value.should == scenario[:expect]
|
305
|
+
end
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|