[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5

Daniel Pittman daniel at puppetlabs.com
Tue May 10 08:15:50 UTC 2011


The following commit has been merged in the experimental branch:
commit c00e03d41b0bd1174b51eddf5e593aec3bbdd84d
Author: Daniel Pittman <daniel at puppetlabs.com>
Date:   Fri Apr 15 13:19:11 2011 -0700

    (#7059) Set the CA location using option hooks.
    
    Now that we support option hooks, we can use those to set the CA location
    rather than open-coding each chunk of support.  As a side benefit we also set
    the CA location for inherited actions, as we should.
    
    Reviewed-By: Max Martin <max at puppetlabs.com>

diff --git a/lib/puppet/face/certificate.rb b/lib/puppet/face/certificate.rb
index 77e80f0..4c2950f 100644
--- a/lib/puppet/face/certificate.rb
+++ b/lib/puppet/face/certificate.rb
@@ -2,24 +2,16 @@ require 'puppet/face/indirector'
 require 'puppet/ssl/host'
 
 Puppet::Face::Indirector.define(:certificate, '0.0.1') do
-  # REVISIT: This should use a pre-invoke hook to run the common code that
-  # needs to happen before we invoke any action; that would be much nicer than
-  # the "please repeat yourself" stuff found in here right now.
-  #
-  # option "--ca-location LOCATION" do
-  #   type [:whatever, :location, :symbols]
-  #   hook :before do |value|
-  #     Puppet::SSL::Host.ca_location = value
-  #   end
-  # end
-  #
-  # ...but should I pass the arguments as well?
-  # --daniel 2011-04-05
-  option "--ca-location LOCATION"
+  option "--ca-location LOCATION" do
+    before_action do |action, args, options|
+      Puppet::SSL::Host.ca_location = options[:ca_location].to_sym
+    end
+  end
 
   action :generate do
+    summary "Generate a new Certificate Signing Request for HOST"
+
     when_invoked do |name, options|
-      Puppet::SSL::Host.ca_location = options[:ca_location].to_sym
       host = Puppet::SSL::Host.new(name)
       host.generate_certificate_request
       host.certificate_request.class.indirection.save(host.certificate_request)
@@ -27,8 +19,9 @@ Puppet::Face::Indirector.define(:certificate, '0.0.1') do
   end
 
   action :list do
+    summary "List all Certificate Signing Requests"
+
     when_invoked do |options|
-      Puppet::SSL::Host.ca_location = options[:ca_location].to_sym
       Puppet::SSL::Host.indirection.search("*", {
         :for => :certificate_request,
       }).map { |h| h.inspect }
@@ -36,8 +29,9 @@ Puppet::Face::Indirector.define(:certificate, '0.0.1') do
   end
 
   action :sign do
+    summary "Sign a Certificate Signing Request for HOST"
+
     when_invoked do |name, options|
-      Puppet::SSL::Host.ca_location = options[:ca_location].to_sym
       host = Puppet::SSL::Host.new(name)
       host.desired_state = 'signed'
       Puppet::SSL::Host.indirection.save(host)
diff --git a/spec/unit/face/certificate_spec.rb b/spec/unit/face/certificate_spec.rb
index dbcc888..b0bbf1a 100755
--- a/spec/unit/face/certificate_spec.rb
+++ b/spec/unit/face/certificate_spec.rb
@@ -6,9 +6,14 @@ describe Puppet::Face[:certificate, '0.0.1'] do
   end
 
   it "should set the ca location when invoked" do
-    pending "#6983: This is broken in the actual face..."
     Puppet::SSL::Host.expects(:ca_location=).with(:foo)
     Puppet::SSL::Host.indirection.expects(:save)
-    subject.sign :ca_location => :foo
+    subject.sign "hello, friend", :ca_location => :foo
+  end
+
+  it "(#7059) should set the ca location when an inherited action is invoked" do
+    Puppet::SSL::Host.expects(:ca_location=).with(:foo)
+    subject.indirection.expects(:find)
+    subject.find "hello, friend", :ca_location => :foo
   end
 end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list