facter 2.0.1.rc1-universal-darwin
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 +43 -0
- data/LICENSE +15 -0
- data/README.md +33 -0
- data/Rakefile +79 -0
- data/bin/facter +16 -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 +33 -0
- data/ext/redhat/facter.spec.erb +220 -0
- data/ext/solaris/pkginfo +7 -0
- data/install.rb +380 -0
- data/lib/facter.rb +262 -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 +100 -0
- data/lib/facter/core/execution/base.rb +73 -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 +117 -0
- data/lib/facter/domain.rb +99 -0
- data/lib/facter/ec2.rb +37 -0
- data/lib/facter/facterversion.rb +15 -0
- data/lib/facter/filesystems.rb +38 -0
- data/lib/facter/fqdn.rb +22 -0
- data/lib/facter/hardwareisa.rb +20 -0
- data/lib/facter/hardwaremodel.rb +67 -0
- data/lib/facter/hostname.rb +33 -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 +15 -0
- data/lib/facter/kernelrelease.rb +42 -0
- data/lib/facter/kernelversion.rb +22 -0
- data/lib/facter/ldom.rb +47 -0
- data/lib/facter/lsbdistcodename.rb +18 -0
- data/lib/facter/lsbdistdescription.rb +21 -0
- data/lib/facter/lsbdistid.rb +18 -0
- data/lib/facter/lsbdistrelease.rb +18 -0
- data/lib/facter/lsbmajdistrelease.rb +27 -0
- data/lib/facter/lsbrelease.rb +18 -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 +162 -0
- data/lib/facter/netmask.rb +42 -0
- data/lib/facter/network.rb +20 -0
- data/lib/facter/operatingsystem.rb +121 -0
- data/lib/facter/operatingsystemmajrelease.rb +33 -0
- data/lib/facter/operatingsystemrelease.rb +226 -0
- data/lib/facter/osfamily.rb +35 -0
- data/lib/facter/path.rb +14 -0
- data/lib/facter/physicalprocessorcount.rb +84 -0
- data/lib/facter/processor.rb +183 -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 +61 -0
- data/lib/facter/util/confine.rb +66 -0
- data/lib/facter/util/directory_loader.rb +83 -0
- data/lib/facter/util/ec2.rb +101 -0
- data/lib/facter/util/fact.rb +204 -0
- data/lib/facter/util/file_read.rb +37 -0
- data/lib/facter/util/formatter.rb +38 -0
- data/lib/facter/util/ip.rb +285 -0
- data/lib/facter/util/ip/windows.rb +215 -0
- data/lib/facter/util/loader.rb +146 -0
- data/lib/facter/util/macaddress.rb +43 -0
- data/lib/facter/util/macosx.rb +73 -0
- data/lib/facter/util/manufacturer.rb +104 -0
- data/lib/facter/util/memory.rb +228 -0
- data/lib/facter/util/monkey_patches.rb +8 -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/parser.rb +158 -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/processor.rb +291 -0
- data/lib/facter/util/registry.rb +11 -0
- data/lib/facter/util/resolution.rb +152 -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 +80 -0
- data/lib/facter/util/virtual.rb +151 -0
- data/lib/facter/util/vlans.rb +24 -0
- data/lib/facter/util/windows_root.rb +37 -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 +262 -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/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/filesystems/linux +28 -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/netmask/darwin_10_8_5.txt +30 -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/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/loader/nosuchfact.rb +1 -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/solaris_sunfire_v120_prtdiag +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -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/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_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 +119 -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 +37 -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 +96 -0
- data/spec/unit/domain_spec.rb +310 -0
- data/spec/unit/ec2_spec.rb +187 -0
- data/spec/unit/facter_spec.rb +108 -0
- data/spec/unit/filesystems_spec.rb +50 -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 +17 -0
- data/spec/unit/kernelrelease_spec.rb +53 -0
- data/spec/unit/kernelversion_spec.rb +32 -0
- data/spec/unit/ldom_spec.rb +74 -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 +61 -0
- data/spec/unit/manufacturer_spec.rb +115 -0
- data/spec/unit/memory_spec.rb +539 -0
- data/spec/unit/netmask_spec.rb +95 -0
- data/spec/unit/operatingsystem_spec.rb +141 -0
- data/spec/unit/operatingsystemmajrelease_spec.rb +16 -0
- data/spec/unit/operatingsystemrelease_spec.rb +226 -0
- data/spec/unit/physicalprocessorcount_spec.rb +76 -0
- data/spec/unit/processor_spec.rb +393 -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 +84 -0
- data/spec/unit/util/confine_spec.rb +148 -0
- data/spec/unit/util/directory_loader_spec.rb +88 -0
- data/spec/unit/util/ec2_spec.rb +180 -0
- data/spec/unit/util/fact_spec.rb +142 -0
- data/spec/unit/util/file_read_spec.rb +29 -0
- data/spec/unit/util/ip/windows_spec.rb +80 -0
- data/spec/unit/util/ip_spec.rb +463 -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 +113 -0
- data/spec/unit/util/manufacturer_spec.rb +179 -0
- data/spec/unit/util/normalization_spec.rb +113 -0
- data/spec/unit/util/parser_spec.rb +200 -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 +131 -0
- data/spec/unit/util/virtual_spec.rb +294 -0
- data/spec/unit/util/vlans_spec.rb +12 -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 +470 -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 +674 -0
@@ -0,0 +1,84 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Facter::Util::Config do
|
6
|
+
include PuppetlabsSpec::Files
|
7
|
+
|
8
|
+
describe "is_windows? function" do
|
9
|
+
it "should detect windows if Ruby RbConfig::CONFIG['host_os'] returns a windows OS" do
|
10
|
+
host_os = ["mswin","win32","dos","mingw","cygwin"]
|
11
|
+
host_os.each do |h|
|
12
|
+
RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
|
13
|
+
Facter::Util::Config.is_windows?.should be_true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should not detect windows if Ruby RbConfig::CONFIG['host_os'] returns a non-windows OS" do
|
18
|
+
host_os = ["darwin","linux"]
|
19
|
+
host_os.each do |h|
|
20
|
+
RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
|
21
|
+
Facter::Util::Config.is_windows?.should be_false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "is_mac? function" do
|
27
|
+
it "should detect mac if Ruby RbConfig::CONFIG['host_os'] returns darwin" do
|
28
|
+
host_os = ["darwin"]
|
29
|
+
host_os.each do |h|
|
30
|
+
RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
|
31
|
+
Facter::Util::Config.is_mac?.should be_true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "external_facts_dirs" do
|
37
|
+
before :each do
|
38
|
+
Facter::Util::Root.stubs(:root?).returns(true)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return the default value for linux" do
|
42
|
+
Facter::Util::Config.stubs(:is_windows?).returns(false)
|
43
|
+
Facter::Util::Config.stubs(:windows_data_dir).returns(nil)
|
44
|
+
Facter::Util::Config.setup_default_ext_facts_dirs
|
45
|
+
Facter::Util::Config.external_facts_dirs.should == ["/etc/facter/facts.d", "/etc/puppetlabs/facter/facts.d"]
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return the default value for windows 2008" do
|
49
|
+
Facter::Util::Config.stubs(:is_windows?).returns(true)
|
50
|
+
Facter::Util::Config.stubs(:windows_data_dir).returns("C:\\ProgramData")
|
51
|
+
Facter::Util::Config.setup_default_ext_facts_dirs
|
52
|
+
Facter::Util::Config.external_facts_dirs.should == [File.join("C:\\ProgramData", 'PuppetLabs', 'facter', 'facts.d')]
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return the default value for windows 2003R2" do
|
56
|
+
Facter::Util::Config.stubs(:is_windows?).returns(true)
|
57
|
+
Facter::Util::Config.stubs(:windows_data_dir).returns("C:\\Documents")
|
58
|
+
Facter::Util::Config.setup_default_ext_facts_dirs
|
59
|
+
Facter::Util::Config.external_facts_dirs.should == [File.join("C:\\Documents", 'PuppetLabs', 'facter', 'facts.d')]
|
60
|
+
end
|
61
|
+
|
62
|
+
it "returns the users home directory when not root" do
|
63
|
+
Facter::Util::Root.stubs(:root?).returns(false)
|
64
|
+
Facter::Util::Config.setup_default_ext_facts_dirs
|
65
|
+
Facter::Util::Config.external_facts_dirs.should == [File.expand_path(File.join("~", ".facter", "facts.d"))]
|
66
|
+
end
|
67
|
+
|
68
|
+
it "includes additional values when user appends to the list" do
|
69
|
+
Facter::Util::Config.setup_default_ext_facts_dirs
|
70
|
+
original_values = Facter::Util::Config.external_facts_dirs.dup
|
71
|
+
new_value = '/usr/share/newdir'
|
72
|
+
Facter::Util::Config.external_facts_dirs << new_value
|
73
|
+
Facter::Util::Config.external_facts_dirs.should == original_values + [new_value]
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should only output new values when explicitly set" do
|
77
|
+
Facter::Util::Config.setup_default_ext_facts_dirs
|
78
|
+
new_value = ['/usr/share/newdir']
|
79
|
+
Facter::Util::Config.external_facts_dirs = new_value
|
80
|
+
Facter::Util::Config.external_facts_dirs.should == new_value
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/confine'
|
5
|
+
require 'facter/util/values'
|
6
|
+
|
7
|
+
include Facter::Util::Values
|
8
|
+
|
9
|
+
describe Facter::Util::Confine do
|
10
|
+
it "should require a fact name" do
|
11
|
+
Facter::Util::Confine.new("yay", true).fact.should == "yay"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should accept a value specified individually" do
|
15
|
+
Facter::Util::Confine.new("yay", "test").values.should == ["test"]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should accept multiple values specified at once" do
|
19
|
+
Facter::Util::Confine.new("yay", "test", "other").values.should == ["test", "other"]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should fail if no fact name is provided" do
|
23
|
+
lambda { Facter::Util::Confine.new(nil, :test) }.should raise_error(ArgumentError)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should fail if no values were provided" do
|
27
|
+
lambda { Facter::Util::Confine.new("yay") }.should raise_error(ArgumentError)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should have a method for testing whether it matches" do
|
31
|
+
Facter::Util::Confine.new("yay", :test).should respond_to(:true?)
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "when evaluating" do
|
35
|
+
def confined(fact_value, *confines)
|
36
|
+
@fact.stubs(:value).returns fact_value
|
37
|
+
Facter::Util::Confine.new("yay", *confines).true?
|
38
|
+
end
|
39
|
+
|
40
|
+
before do
|
41
|
+
@fact = mock 'fact'
|
42
|
+
Facter.stubs(:[]).returns @fact
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return false if the fact does not exist" do
|
46
|
+
Facter.expects(:[]).with("yay").returns nil
|
47
|
+
|
48
|
+
Facter::Util::Confine.new("yay", "test").true?.should be_false
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should use the returned fact to get the value" do
|
52
|
+
Facter.expects(:[]).with("yay").returns @fact
|
53
|
+
|
54
|
+
@fact.expects(:value).returns nil
|
55
|
+
|
56
|
+
Facter::Util::Confine.new("yay", "test").true?
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should return false if the fact has no value" do
|
60
|
+
confined(nil, "test").should be_false
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should return true if any of the provided values matches the fact's value" do
|
64
|
+
confined("two", "two").should be_true
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should return true if any of the provided symbol values matches the fact's value" do
|
68
|
+
confined(:xy, :xy).should be_true
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should return true if any of the provided integer values matches the fact's value" do
|
72
|
+
confined(1, 1).should be_true
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should return true if any of the provided boolan values matches the fact's value" do
|
76
|
+
confined(true, true).should be_true
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should return true if any of the provided array values matches the fact's value" do
|
80
|
+
confined([3,4], [3,4]).should be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should return true if any of the provided symbol values matches the fact's string value" do
|
84
|
+
confined(:one, "one").should be_true
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should return true if any of the provided string values matches case-insensitive the fact's value" do
|
88
|
+
confined("four", "Four").should be_true
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should return true if any of the provided symbol values matches case-insensitive the fact's string value" do
|
92
|
+
confined(:four, "Four").should be_true
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should return true if any of the provided symbol values matches the fact's string value" do
|
96
|
+
confined("xy", :xy).should be_true
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should return true if any of the provided regexp values matches the fact's string value" do
|
100
|
+
confined("abc", /abc/).should be_true
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should return true if any of the provided ranges matches the fact's value" do
|
104
|
+
confined(6, (5..7)).should be_true
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should return false if none of the provided values matches the fact's value" do
|
108
|
+
confined("three", "two", "four").should be_false
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should return false if none of the provided integer values matches the fact's value" do
|
112
|
+
confined(2, 1, [3,4], (5..7)).should be_false
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should return false if none of the provided boolan values matches the fact's value" do
|
116
|
+
confined(false, true).should be_false
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should return false if none of the provided array values matches the fact's value" do
|
120
|
+
confined([1,2], [3,4]).should be_false
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should return false if none of the provided ranges matches the fact's value" do
|
124
|
+
confined(8, (5..7)).should be_false
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should accept and evaluate a block argument against the fact" do
|
128
|
+
@fact.expects(:value).returns 'foo'
|
129
|
+
confine = Facter::Util::Confine.new :yay do |f| f === 'foo' end
|
130
|
+
confine.true?.should be_true
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should return false if the block raises a StandardError when checking a fact" do
|
134
|
+
@fact.stubs(:value).returns 'foo'
|
135
|
+
confine = Facter::Util::Confine.new :yay do |f| raise StandardError end
|
136
|
+
confine.true?.should be_false
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should accept and evaluate only a block argument" do
|
140
|
+
Facter::Util::Confine.new { true }.true?.should be_true
|
141
|
+
Facter::Util::Confine.new { false }.true?.should be_false
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should return false if the block raises a StandardError" do
|
145
|
+
Facter::Util::Confine.new { raise StandardError }.true?.should be_false
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
require 'facter/util/directory_loader'
|
6
|
+
|
7
|
+
describe Facter::Util::DirectoryLoader do
|
8
|
+
include PuppetlabsSpec::Files
|
9
|
+
include FacterSpec::ConfigHelper
|
10
|
+
|
11
|
+
subject { Facter::Util::DirectoryLoader.new(tmpdir('directory_loader')) }
|
12
|
+
let(:collection) { Facter::Util::Collection.new(mock("internal loader"), subject) }
|
13
|
+
|
14
|
+
it "should make the directory available" do
|
15
|
+
subject.directory.should be_instance_of(String)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "can be created with a given directory" do
|
19
|
+
Facter::Util::DirectoryLoader.loader_for("ext").directory.should == "ext"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "raises an error when the directory does not exist" do
|
23
|
+
missing_dir = "missing"
|
24
|
+
File.stubs(:directory?).with(missing_dir).returns(false)
|
25
|
+
expect { Facter::Util::DirectoryLoader.loader_for(missing_dir) }.to raise_error Facter::Util::DirectoryLoader::NoSuchDirectoryError
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should do nothing bad when dir doesn't exist" do
|
29
|
+
fakepath = "/foobar/path"
|
30
|
+
my_loader = Facter::Util::DirectoryLoader.new(fakepath)
|
31
|
+
FileTest.exists?(my_loader.directory).should be_false
|
32
|
+
expect { my_loader.load(collection) }.to_not raise_error
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "when loading facts from disk" do
|
36
|
+
it "should be able to load files from disk and set facts" do
|
37
|
+
data = {"f1" => "one", "f2" => "two"}
|
38
|
+
write_to_file("data.yaml", YAML.dump(data))
|
39
|
+
|
40
|
+
subject.load(collection)
|
41
|
+
|
42
|
+
collection.value("f1").should == "one"
|
43
|
+
collection.value("f2").should == "two"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should ignore files that begin with '.'" do
|
47
|
+
not_to_be_used_collection = mock("collection should not be used")
|
48
|
+
not_to_be_used_collection.expects(:add).never
|
49
|
+
|
50
|
+
data = {"f1" => "one", "f2" => "two"}
|
51
|
+
write_to_file(".data.yaml", YAML.dump(data))
|
52
|
+
|
53
|
+
subject.load(not_to_be_used_collection)
|
54
|
+
end
|
55
|
+
|
56
|
+
%w{bak orig}.each do |ext|
|
57
|
+
it "should ignore files with an extension of '#{ext}'" do
|
58
|
+
Facter.expects(:warn).with(regexp_matches(/#{ext}/))
|
59
|
+
write_to_file("data" + ".#{ext}", "foo=bar")
|
60
|
+
|
61
|
+
subject.load(collection)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should warn when trying to parse unknown file types" do
|
66
|
+
write_to_file("file.unknownfiletype", "stuff=bar")
|
67
|
+
|
68
|
+
Facter.expects(:warn).with(regexp_matches(/file.unknownfiletype/))
|
69
|
+
|
70
|
+
subject.load(collection)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "external facts should almost always precedence over all other facts" do
|
74
|
+
Facter.add("f1", :value => "lower_weight_fact") { has_weight(Facter::Util::DirectoryLoader::EXTERNAL_FACT_WEIGHT - 1) }
|
75
|
+
data = {"f1" => "external_fact"}
|
76
|
+
write_to_file("data.yaml", YAML.dump(data))
|
77
|
+
|
78
|
+
subject.load(collection)
|
79
|
+
|
80
|
+
collection.value("f1").should == "external_fact"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def write_to_file(file_name, to_write)
|
85
|
+
file = File.join(subject.directory, file_name)
|
86
|
+
File.open(file, "w") { |f| f.print to_write}
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,180 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/ec2'
|
5
|
+
|
6
|
+
describe Facter::Util::EC2 do
|
7
|
+
# This is the standard prefix for making an API call in EC2 (or fake)
|
8
|
+
# environments.
|
9
|
+
let(:api_prefix) { "http://169.254.169.254" }
|
10
|
+
|
11
|
+
describe "is_ec2_arp? method" do
|
12
|
+
describe "on linux" do
|
13
|
+
before :each do
|
14
|
+
# Return fake kernel
|
15
|
+
Facter.stubs(:value).with(:kernel).returns("linux")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should succeed if arp table contains fe:ff:ff:ff:ff:ff" do
|
19
|
+
ec2arp = my_fixture_read("linux-arp-ec2.out")
|
20
|
+
Facter::Core::Execution.expects(:exec).with("arp -an").\
|
21
|
+
at_least_once.returns(ec2arp)
|
22
|
+
Facter::Util::EC2.has_ec2_arp?.should == true
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should succeed if arp table contains FE:FF:FF:FF:FF:FF" do
|
26
|
+
ec2arp = my_fixture_read("centos-arp-ec2.out")
|
27
|
+
Facter::Core::Execution.expects(:exec).with("arp -an").\
|
28
|
+
at_least_once.returns(ec2arp)
|
29
|
+
Facter::Util::EC2.has_ec2_arp?.should == true
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should fail if arp table does not contain fe:ff:ff:ff:ff:ff" do
|
33
|
+
ec2arp = my_fixture_read("linux-arp-not-ec2.out")
|
34
|
+
Facter::Core::Execution.expects(:exec).with("arp -an").
|
35
|
+
at_least_once.returns(ec2arp)
|
36
|
+
Facter::Util::EC2.has_ec2_arp?.should == false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "on windows" do
|
41
|
+
before :each do
|
42
|
+
# Return fake kernel
|
43
|
+
Facter.stubs(:value).with(:kernel).returns("windows")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should succeed if arp table contains fe-ff-ff-ff-ff-ff" do
|
47
|
+
ec2arp = my_fixture_read("windows-2008-arp-a.out")
|
48
|
+
Facter::Core::Execution.expects(:exec).with("arp -a").\
|
49
|
+
at_least_once.returns(ec2arp)
|
50
|
+
Facter::Util::EC2.has_ec2_arp?.should == true
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should fail if arp table does not contain fe-ff-ff-ff-ff-ff" do
|
54
|
+
ec2arp = my_fixture_read("windows-2008-arp-a-not-ec2.out")
|
55
|
+
Facter::Core::Execution.expects(:exec).with("arp -a").
|
56
|
+
at_least_once.returns(ec2arp)
|
57
|
+
Facter::Util::EC2.has_ec2_arp?.should == false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "on solaris" do
|
62
|
+
before :each do
|
63
|
+
Facter.stubs(:value).with(:kernel).returns("SunOS")
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should fail if arp table does not contain fe:ff:ff:ff:ff:ff" do
|
67
|
+
ec2arp = my_fixture_read("solaris8_arp_a_not_ec2.out")
|
68
|
+
|
69
|
+
Facter::Core::Execution.expects(:exec).with("arp -a").
|
70
|
+
at_least_once.returns(ec2arp)
|
71
|
+
|
72
|
+
Facter::Util::EC2.has_ec2_arp?.should == false
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "is_euca_mac? method" do
|
78
|
+
it "should return true when the mac is a eucalyptus one" do
|
79
|
+
Facter.expects(:value).with(:macaddress).\
|
80
|
+
at_least_once.returns("d0:0d:1a:b0:a1:00")
|
81
|
+
|
82
|
+
Facter::Util::EC2.has_euca_mac?.should == true
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should return false when the mac is not a eucalyptus one" do
|
86
|
+
Facter.expects(:value).with(:macaddress).\
|
87
|
+
at_least_once.returns("0c:1d:a0:bc:aa:02")
|
88
|
+
|
89
|
+
Facter::Util::EC2.has_euca_mac?.should == false
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "is_openstack_mac? method" do
|
94
|
+
it "should return true when the mac is an openstack one" do
|
95
|
+
Facter.expects(:value).with(:macaddress).\
|
96
|
+
at_least_once.returns("02:16:3e:54:89:fd")
|
97
|
+
|
98
|
+
Facter::Util::EC2.has_openstack_mac?.should == true
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should return true when the mac is a newer openstack mac" do
|
102
|
+
# https://github.com/openstack/nova/commit/b684d651f540fc512ced58acd5ae2ef4d55a885c#nova/utils.py
|
103
|
+
Facter.expects(:value).with(:macaddress).\
|
104
|
+
at_least_once.returns("fa:16:3e:54:89:fd")
|
105
|
+
|
106
|
+
Facter::Util::EC2.has_openstack_mac?.should == true
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should return true when the mac is a newer openstack mac and returned in upper case" do
|
110
|
+
# https://github.com/openstack/nova/commit/b684d651f540fc512ced58acd5ae2ef4d55a885c#nova/utils.py
|
111
|
+
Facter.expects(:value).with(:macaddress).\
|
112
|
+
at_least_once.returns("FA:16:3E:54:89:FD")
|
113
|
+
|
114
|
+
Facter::Util::EC2.has_openstack_mac?.should == true
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should return false when the mac is not a openstack one" do
|
118
|
+
Facter.expects(:value).with(:macaddress).\
|
119
|
+
at_least_once.returns("0c:1d:a0:bc:aa:02")
|
120
|
+
|
121
|
+
Facter::Util::EC2.has_openstack_mac?.should == false
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "can_connect? method" do
|
126
|
+
it "returns true if api responds" do
|
127
|
+
# Return something upon connecting to the root
|
128
|
+
Module.any_instance.expects(:open).with("#{api_prefix}:80/").
|
129
|
+
at_least_once.returns("2008-02-01\nlatest")
|
130
|
+
|
131
|
+
Facter::Util::EC2.can_connect?.should be_true
|
132
|
+
end
|
133
|
+
|
134
|
+
describe "when connection times out" do
|
135
|
+
it "should return false" do
|
136
|
+
# Emulate a timeout when connecting by throwing an exception
|
137
|
+
Module.any_instance.expects(:open).with("#{api_prefix}:80/").
|
138
|
+
at_least_once.raises(RuntimeError)
|
139
|
+
|
140
|
+
Facter::Util::EC2.can_connect?.should be_false
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "when connection is refused" do
|
145
|
+
it "should return false" do
|
146
|
+
# Emulate a connection refused
|
147
|
+
Module.any_instance.expects(:open).with("#{api_prefix}:80/").
|
148
|
+
at_least_once.raises(Errno::ECONNREFUSED)
|
149
|
+
|
150
|
+
Facter::Util::EC2.can_connect?.should be_false
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "Facter::Util::EC2.userdata" do
|
156
|
+
let :not_found_error do
|
157
|
+
OpenURI::HTTPError.new("404 Not Found", StringIO.new)
|
158
|
+
end
|
159
|
+
|
160
|
+
let :example_userdata do
|
161
|
+
"owner=jeff@puppetlabs.com\ngroup=platform_team"
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'returns nil when no userdata is present' do
|
165
|
+
Facter::Util::EC2.stubs(:read_uri).raises(not_found_error)
|
166
|
+
Facter::Util::EC2.userdata.should be_nil
|
167
|
+
end
|
168
|
+
|
169
|
+
it "returns the string containing the body" do
|
170
|
+
Facter::Util::EC2.stubs(:read_uri).returns(example_userdata)
|
171
|
+
Facter::Util::EC2.userdata.should == example_userdata
|
172
|
+
end
|
173
|
+
|
174
|
+
it "uses the specified API version" do
|
175
|
+
expected_uri = "http://169.254.169.254/2008-02-01/user-data/"
|
176
|
+
Facter::Util::EC2.expects(:read_uri).with(expected_uri).returns(example_userdata)
|
177
|
+
Facter::Util::EC2.userdata('2008-02-01').should == example_userdata
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|