The host provider did not work on Windows because it didn't know where
to find its hosts file. The provider now uses Win32::Resolv, which is
part of the standard ruby library, to find it.

Several host type/provider spec tests were marked as fails_on_windows,
but now that the provider is working, I removed the tag from those
tests, and verified that the tests now pass. There are two tests in
resources_spec that fail because the user and exec providers are not
supported on Windows yet, so those tests are marked as fails_on_windows.

Reviewed-by: Pieter van de Bruggen <pie...@puppetlabs.com>
Signed-off-by: Josh Cooper <j...@puppetlabs.com>
---
Local-branch: ticket/master/8644-host-provider
 lib/puppet/provider/host/parsed.rb     |    3 +++
 spec/unit/provider/host/parsed_spec.rb |    2 +-
 spec/unit/type/host_spec.rb            |    2 +-
 spec/unit/type/resources_spec.rb       |    6 +++---
 4 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/lib/puppet/provider/host/parsed.rb 
b/lib/puppet/provider/host/parsed.rb
index 2ba01a4..1a2bdb4 100644
--- a/lib/puppet/provider/host/parsed.rb
+++ b/lib/puppet/provider/host/parsed.rb
@@ -3,6 +3,9 @@ require 'puppet/provider/parsedfile'
 hosts = nil
 case Facter.value(:operatingsystem)
 when "Solaris"; hosts = "/etc/inet/hosts"
+when "windows"
+  require 'win32/resolv'
+  hosts = Win32::Resolv.get_hosts_path
 else
   hosts = "/etc/hosts"
 end
diff --git a/spec/unit/provider/host/parsed_spec.rb 
b/spec/unit/provider/host/parsed_spec.rb
index fa41d82..9cb5890 100755
--- a/spec/unit/provider/host/parsed_spec.rb
+++ b/spec/unit/provider/host/parsed_spec.rb
@@ -6,7 +6,7 @@ require 'puppet_spec/files'
 
 provider_class = Puppet::Type.type(:host).provider(:parsed)
 
-describe provider_class, :fails_on_windows => true do
+describe provider_class do
   include PuppetSpec::Files
 
   before do
diff --git a/spec/unit/type/host_spec.rb b/spec/unit/type/host_spec.rb
index 145fb27..602c428 100755
--- a/spec/unit/type/host_spec.rb
+++ b/spec/unit/type/host_spec.rb
@@ -34,7 +34,7 @@ describe host do
 
   end
 
-  describe "when validating values", :fails_on_windows => true do
+  describe "when validating values" do
     it "should support present as a value for ensure" do
       proc { @class.new(:name => "foo", :ensure => :present) }.should_not 
raise_error
     end
diff --git a/spec/unit/type/resources_spec.rb b/spec/unit/type/resources_spec.rb
index 5e9396b..f596968 100755
--- a/spec/unit/type/resources_spec.rb
+++ b/spec/unit/type/resources_spec.rb
@@ -21,7 +21,7 @@ describe resources do
     end
   end
 
-  describe "#generate", :fails_on_windows => true do
+  describe "#generate" do
     before do
       @host1 = Puppet::Type.type(:host).new(:name => 'localhost', :ip => 
'127.0.0.1')
       @catalog = Puppet::Resource::Catalog.new
@@ -51,7 +51,7 @@ describe resources do
           @resources.generate.collect { |r| r.ref }.should_not 
include(@host1.ref)
         end
 
-        it "should not include the skipped users", :'fails_on_ruby_1.9.2' => 
true do
+        it "should not include the skipped users", :'fails_on_ruby_1.9.2' => 
true, :fails_on_windows => true do
           res = Puppet::Type.type(:resources).new :name => :user, :purge => 
true
           res.catalog = Puppet::Resource::Catalog.new
 
@@ -72,7 +72,7 @@ describe resources do
           end
         end
 
-        describe "when the instance's do not have an ensure property" do
+        describe "when the instance's do not have an ensure property", 
:fails_on_windows => true do
           it "should not be included in the generated resources" do
             @no_ensure_resource = Puppet::Type.type(:exec).new(:name => 
'/usr/bin/env echo')
             Puppet::Type.type(:host).stubs(:instances).returns 
[@no_ensure_resource]
-- 
1.7.5.4

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to puppet-dev@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to