+1

is there a reason why not to strip all facts?

Ohad

On Mon, Jan 11, 2010 at 1:25 AM, Paul Nasrat <[email protected]> wrote:

> In addition to the stripping of the output of these facts this patchset:
>
> Refactor - Extracted function to enable easier testing.
> Tests - data driven tests for the dmidecode/smbios fact.
>
> Paul
>
> Signed-off-by: Paul Nasrat <[email protected]>
> ---
>  lib/facter/util/manufacturer.rb            |   17 +++++---
>  spec/unit/data/linux_dmidecode_with_spaces |   60
> ++++++++++++++++++++++++++++
>  spec/unit/util/manufacturer.rb             |   26 ++++++++++++
>  3 files changed, 97 insertions(+), 6 deletions(-)
>  create mode 100644 spec/unit/data/linux_dmidecode_with_spaces
>  create mode 100644 spec/unit/util/manufacturer.rb
>
> diff --git a/lib/facter/util/manufacturer.rb
> b/lib/facter/util/manufacturer.rb
> index c609a12..dd503f9 100644
> --- a/lib/facter/util/manufacturer.rb
> +++ b/lib/facter/util/manufacturer.rb
> @@ -2,8 +2,8 @@
>  # Support methods for manufacturer specific facts
>
>  module Facter::Manufacturer
> -    def self.dmi_find_system_info(name)
> -        splitstr="Handle"
> +
> +    def self.get_dmi_table()
>         case Facter.value(:kernel)
>         when 'Linux'
>             return nil unless FileTest.exists?("/usr/sbin/dmidecode")
> @@ -19,18 +19,23 @@ module Facter::Manufacturer
>             output=%x{/usr/pkg/sbin/dmidecode 2>/dev/null}
>         when 'SunOS'
>             return nil unless FileTest.exists?("/usr/sbin/smbios")
> -            splitstr="ID    SIZE TYPE"
> -            output=%x{/usr/sbin/smbios 2>/dev/null}
>
> +            output=%x{/usr/sbin/smbios 2>/dev/null}
>         else
> -            return
> +            output=nil
>         end
> +        return output
> +    end
> +
> +    def self.dmi_find_system_info(name)
> +        splitstr=  Facter.value(:kernel) ==  'SunOS' ? "ID    SIZE TYPE" :
> "Handle"
> +        output = self.get_dmi_table()
>         name.each_pair do |key,v|
>             v.each do |v2|
>                 v2.each_pair do |value,facterkey|
>                     output.split(splitstr).each do |line|
>                         if line =~ /#{key}/ and ( line =~ /#{value} 0x\d+
> \(([-\w].*)\)\n*./ or line =~ /#{value} ([-\w].*)\n*./ )
> -                            result = $1
> +                            result = $1.strip
>                             Facter.add(facterkey) do
>                                 confine :kernel => [ :linux, :freebsd,
> :netbsd, :sunos ]
>                                 setcode do
> diff --git a/spec/unit/data/linux_dmidecode_with_spaces
> b/spec/unit/data/linux_dmidecode_with_spaces
> new file mode 100644
> index 0000000..0d77386
> --- /dev/null
> +++ b/spec/unit/data/linux_dmidecode_with_spaces
> @@ -0,0 +1,60 @@
> +# dmidecode 2.2
> +SMBIOS 2.3 present.
> +32 structures occupying 994 bytes.
> +Table at 0x000F0800.
> +Handle 0x0000
> +        DMI type 0, 20 bytes.
> +        BIOS Information
> +                Vendor: Award Software International, Inc.
> +                Version: 6.00 PG
> +                Release Date: 01/03/2003
> +                Address: 0xE0000
> +                Runtime Size: 128 kB
> +                ROM Size: 256 kB
> +                Characteristics:
> +                        ISA is supported
> +                        PCI is supported
> +                        PNP is supported
> +                        APM is supported
> +                        BIOS is upgradeable
> +                        BIOS shadowing is allowed
> +                        ESCD support is available
> +                        Boot from CD is supported
> +                        Selectable boot is supported
> +                        BIOS ROM is socketed
> +                        EDD is supported
> +                        5.25"/360 KB floppy services are supported (int
> 13h)
> +                        5.25"/1.2 MB floppy services are supported (int
> 13h)
> +                        3.5"/720 KB floppy services are supported (int
> 13h)
> +                        3.5"/2.88 MB floppy services are supported (int
> 13h)
> +                        Print screen service is supported (int 5h)
> +                        8042 keyboard services are supported (int 9h)
> +                        Serial services are supported (int 14h)
> +                        Printer services are supported (int 17h)
> +                        CGA/mono video services are supported (int 10h)
> +                        ACPI is supported
> +                        USB legacy is supported
> +                        AGP is supported
> +                        LS-120 boot is supported
> +                        ATAPI Zip drive boot is supported
> +Handle 0x0001
> +        DMI type 1, 25 bytes.
> +        System Information
> +                Manufacturer: MICRO-STAR INTERNATIONAL CO., LTD
> +                Product Name: MS-6754
> +                Version:
> +                Serial Number:
> +                UUID: Not Present
> +                Wake-up Type: Power Switch
> +Handle 0x0002
> +    DMI type 2, 8 bytes.
> +    Base Board Information
> +        Manufacturer: MICRO-STAR INTERNATIONAL CO., LTD
> +        Product Name: MS-6754
> +        Version:
> +        Serial Number:
> +
> +Handle 0x001F
> +    DMI type 127, 4 bytes.
> +    End Of Table
> +
> diff --git a/spec/unit/util/manufacturer.rb
> b/spec/unit/util/manufacturer.rb
> new file mode 100644
> index 0000000..47a0c98
> --- /dev/null
> +++ b/spec/unit/util/manufacturer.rb
> @@ -0,0 +1,26 @@
> +require File.dirname(__FILE__) + '/../../spec_helper'
> +
> +require 'facter/util/manufacturer'
> +
> +describe Facter::Manufacturer do
> +    it "should return the system DMI table" do
> +        Facter::Manufacturer.should respond_to(:get_dmi_table)
> +    end
> +
> +    it "should return nil on non-supported operating systems" do
> +        Facter.stubs(:value).with(:kernel).returns("SomeThing")
> +        Facter::Manufacturer.get_dmi_table().should be_nil
> +    end
> +
> +    it "should strip white space on dmi output with spaces" do
> +        sample_output_file = File.dirname(__FILE__) +
> "/../data/linux_dmidecode_with_spaces"
> +        dmidecode_output = File.new(sample_output_file).read()
> +
>  Facter::Manufacturer.expects(:get_dmi_table).returns(dmidecode_output)
> +        Facter.fact(:kernel).stubs(:value).returns("Linux")
> +
> +        query = { '[Ss]ystem [Ii]nformation' => [ { 'Product(?: Name)?:'
> => 'productname' } ] }
> +
> +        Facter::Manufacturer.dmi_find_system_info(query)
> +        Facter.value(:productname).should == "MS-6754"
> +    end
> +end
> \ No newline at end of file
> --
> 1.6.4.2
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<puppet-dev%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/puppet-dev?hl=en.
>
>
>
>
--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to