Add a service_provider fact

This returns the default provider Puppet will choose to manage services
on this system by instantiating a dummy service resource type and
returning the provider chosen.

Co-Authored-By: Simon Fraser University <asa188@sfu.ca>
This commit is contained in:
Ben Ford 2015-08-19 08:31:36 -07:00
parent 1d89df906e
commit 66e118a92a
2 changed files with 51 additions and 0 deletions

View file

@ -0,0 +1,14 @@
# Fact: service_provider
#
# Purpose: Returns the default provider Puppet will choose to manage services
# on this system
#
# Resolution: Instantiates a dummy service resource and return the provider
#
# Caveats:
#
Facter.add(:service_provider) do
setcode do
Puppet::Type.type(:service).newservice(:name => 'dummy')[:provider].to_s
end
end

View file

@ -0,0 +1,37 @@
#! /usr/bin/env ruby -S rspec
require 'spec_helper'
require 'puppet/type'
require 'puppet/type/service'
describe 'service_provider', :type => :fact do
before { Facter.clear }
after { Facter.clear }
context "macosx" do
it "should return launchd" do
provider = Puppet::Type.type(:service).provider(:launchd)
Puppet::Type.type(:service).stubs(:defaultprovider).returns provider
expect(Facter.fact(:service_provider).value).to eq('launchd')
end
end
context "systemd" do
it "should return systemd" do
provider = Puppet::Type.type(:service).provider(:systemd)
Puppet::Type.type(:service).stubs(:defaultprovider).returns provider
expect(Facter.fact(:service_provider).value).to eq('systemd')
end
end
context "redhat" do
it "should return redhat" do
provider = Puppet::Type.type(:service).provider(:redhat)
Puppet::Type.type(:service).stubs(:defaultprovider).returns provider
expect(Facter.fact(:service_provider).value).to eq('redhat')
end
end
end