[Pkg-puppet-devel] [facter] 279/352: (Maint) Handle NoMethodError on 2003

Stig Sandbeck Mathisen ssm at debian.org
Sun Apr 6 22:21:53 UTC 2014


This is an automated email from the git hooks/post-receive script.

ssm pushed a commit to branch master
in repository facter.

commit 832b59a5cebd08eca004fbf946bdae1037eb6142
Author: Josh Cooper <josh at puppetlabs.com>
Date:   Thu Feb 6 14:43:28 2014 -0800

    (Maint) Handle NoMethodError on 2003
    
    Commit b5a4c68f1 modified the operatingsystemrelease fact to return more
    meaningful Windows versions, e.g. 2003 instead of the kernelrelease fact
    value, 5.2.3790. However, on (some?) non-R2 versions of 2003, the
    othertypedescription method is not available on the WMI class
    Win32_OperatingSystem[1].
    
    As a result, facter would output to stderr the following message:
    
        Could not retrieve operatingsystemrelease: unknown property or method:
        `othertypedescription'
          HRESULT error code:0x80020006
            Unknown name.
    
    This commit simply rescues the NoMethodError and outputs 2003.
---
 lib/facter/operatingsystemrelease.rb     | 6 +++++-
 spec/unit/operatingsystemrelease_spec.rb | 8 ++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/facter/operatingsystemrelease.rb b/lib/facter/operatingsystemrelease.rb
index c057858..a57abe7 100644
--- a/lib/facter/operatingsystemrelease.rb
+++ b/lib/facter/operatingsystemrelease.rb
@@ -206,7 +206,11 @@ Facter.add(:operatingsystemrelease) do
           if os.producttype == 1
             "XP"
           else
-            os.othertypedescription == "R2" ? "2003 R2" : "2003"
+            begin
+              os.othertypedescription == "R2" ? "2003 R2" : "2003"
+            rescue NoMethodError
+              "2003"
+            end
           end
         else
           Facter[:kernelrelease].value
diff --git a/spec/unit/operatingsystemrelease_spec.rb b/spec/unit/operatingsystemrelease_spec.rb
index 4cf68c6..9a77dac 100755
--- a/spec/unit/operatingsystemrelease_spec.rb
+++ b/spec/unit/operatingsystemrelease_spec.rb
@@ -190,6 +190,14 @@ describe "Operating System Release fact" do
       end
     end
 
+    it "reports '2003' if the WMI method othertypedescription does not exist" do
+      os = mock('os', :version => '5.2.3790', :producttype => 2)
+      os.stubs(:othertypedescription).raises(NoMethodError)
+
+      Facter::Util::WMI.expects(:execquery).returns([os])
+      Facter.fact(:operatingsystemrelease).value.should == '2003'
+    end
+
     context "Unknown Windows version" do
       before :each do
         Facter.fact(:kernelrelease).stubs(:value).returns("X.Y.ZZZZ")

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-puppet/facter.git



More information about the Pkg-puppet-devel mailing list