diff options
author | Luke Kanies <luke@puppetlabs.com> | 2011-02-22 17:13:52 -0800 |
---|---|---|
committer | Luke Kanies <luke@puppetlabs.com> | 2011-02-22 17:13:52 -0800 |
commit | c2715c0f20d916de0284e2d161eb5de32e508244 (patch) | |
tree | 9a751a7f4256801026d73416546d17ae039ab7a1 /lib/puppet | |
parent | 7da0a26f1bd44ecfffe9f622ec9d560870506207 (diff) | |
download | puppet-c2715c0f20d916de0284e2d161eb5de32e508244.tar.gz puppet-c2715c0f20d916de0284e2d161eb5de32e508244.tar.xz puppet-c2715c0f20d916de0284e2d161eb5de32e508244.zip |
Splitting the Application base class
We now have an indirection_base class along
with interface_base.
I've also added some basic tests for most
of the interfaces.
Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/application/catalog.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/certificate.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/certificate_request.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/certificate_revocation_list.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/facts.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/file.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/indirection_base.rb | 27 | ||||
-rw-r--r-- | lib/puppet/application/interface_base.rb | 27 | ||||
-rw-r--r-- | lib/puppet/application/inventory.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/key.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/node.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/report.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/resource_type.rb | 4 | ||||
-rw-r--r-- | lib/puppet/application/status.rb | 4 | ||||
-rw-r--r-- | lib/puppet/interface/file.rb | 2 | ||||
-rw-r--r-- | lib/puppet/interface/inventory.rb | 4 |
16 files changed, 52 insertions, 56 deletions
diff --git a/lib/puppet/application/catalog.rb b/lib/puppet/application/catalog.rb index 0151781a4..10ce05be7 100644 --- a/lib/puppet/application/catalog.rb +++ b/lib/puppet/application/catalog.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Catalog < Puppet::Application::InterfaceBase +class Puppet::Application::Catalog < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/certificate.rb b/lib/puppet/application/certificate.rb index 5033372eb..4a2b3ef70 100644 --- a/lib/puppet/application/certificate.rb +++ b/lib/puppet/application/certificate.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Certificate < Puppet::Application::InterfaceBase +class Puppet::Application::Certificate < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/certificate_request.rb b/lib/puppet/application/certificate_request.rb index f92876e95..1b1b0830c 100644 --- a/lib/puppet/application/certificate_request.rb +++ b/lib/puppet/application/certificate_request.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Certificate_request < Puppet::Application::InterfaceBase +class Puppet::Application::Certificate_request < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/certificate_revocation_list.rb b/lib/puppet/application/certificate_revocation_list.rb index 9dd3bbba4..60b9d97d6 100644 --- a/lib/puppet/application/certificate_revocation_list.rb +++ b/lib/puppet/application/certificate_revocation_list.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Certificate_revocation_list < Puppet::Application::InterfaceBase +class Puppet::Application::Certificate_revocation_list < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/facts.rb b/lib/puppet/application/facts.rb index dfded58f7..d18b21ea7 100644 --- a/lib/puppet/application/facts.rb +++ b/lib/puppet/application/facts.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Facts < Puppet::Application::InterfaceBase +class Puppet::Application::Facts < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/file.rb b/lib/puppet/application/file.rb index abf6230a3..32a81c7c6 100644 --- a/lib/puppet/application/file.rb +++ b/lib/puppet/application/file.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::File < Puppet::Application::InterfaceBase +class Puppet::Application::File < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/indirection_base.rb b/lib/puppet/application/indirection_base.rb new file mode 100644 index 000000000..3e907696e --- /dev/null +++ b/lib/puppet/application/indirection_base.rb @@ -0,0 +1,27 @@ +require 'puppet/application/interface_base' +require 'puppet/interface' + +class Puppet::Application::IndirectionBase < Puppet::Application::InterfaceBase + option("--from TERMINUS", "-f") do |arg| + @from = arg + end + + attr_accessor :from, :indirection + + def main + # Call the method associated with the provided action (e.g., 'find'). + result = interface.send(verb, name, *arguments) + render_method = Puppet::Network::FormatHandler.format(format).render_method + puts result.send(render_method) if result + end + + def setup + super + + if interface.respond_to?(:indirection) + raise "Could not find data type #{type} for application #{self.class.name}" unless interface.indirection + + interface.set_terminus(from) if from + end + end +end diff --git a/lib/puppet/application/interface_base.rb b/lib/puppet/application/interface_base.rb index 9a6c8d9ec..9e8ea9948 100644 --- a/lib/puppet/application/interface_base.rb +++ b/lib/puppet/application/interface_base.rb @@ -21,28 +21,10 @@ class Puppet::Application::InterfaceBase < Puppet::Application Puppet::Util::Log.level = :info end - option("--from TERMINUS", "-f") do |arg| - @from = arg - end - option("--format FORMAT") do |arg| @format = arg.to_sym end - # XXX this doesn't work, I think - option("--list") do - indirections.each do |ind| - begin - classes = terminus_classes(ind.to_sym) - rescue => detail - $stderr.puts "Could not load terminuses for #{ind}: #{detail}" - next - end - puts "%-30s: #{classes.join(", ")}" % ind - end - exit(0) - end - option("--mode RUNMODE", "-r") do |arg| raise "Invalid run mode #{arg}; supported modes are user, agent, master" unless %w{user agent master}.include?(arg) self.class.run_mode(arg.to_sym) @@ -50,7 +32,7 @@ class Puppet::Application::InterfaceBase < Puppet::Application end - attr_accessor :interface, :from, :type, :verb, :name, :arguments, :indirection, :format + attr_accessor :interface, :type, :verb, :name, :arguments, :format def main # Call the method associated with the provided action (e.g., 'find'). @@ -60,7 +42,6 @@ class Puppet::Application::InterfaceBase < Puppet::Application end def setup - Puppet::Util::Log.newdestination :console @verb, @name, @arguments = command_line.args @@ -71,13 +52,9 @@ class Puppet::Application::InterfaceBase < Puppet::Application unless @interface = Puppet::Interface.interface(@type) raise "Could not find interface '#{@type}'" end - @format ||= @interface.default_format || :pson + @format ||= @interface.default_format validate - - raise "Could not find data type #{type} for application #{self.class.name}" unless interface.indirection - - @interface.set_terminus(from) if from end def validate diff --git a/lib/puppet/application/inventory.rb b/lib/puppet/application/inventory.rb deleted file mode 100644 index 8a7e466df..000000000 --- a/lib/puppet/application/inventory.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/application/interface_base' - -class Puppet::Application::Inventory < Puppet::Application::InterfaceBase -end diff --git a/lib/puppet/application/key.rb b/lib/puppet/application/key.rb index 1458b9466..57835b627 100644 --- a/lib/puppet/application/key.rb +++ b/lib/puppet/application/key.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Key < Puppet::Application::InterfaceBase +class Puppet::Application::Key < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/node.rb b/lib/puppet/application/node.rb index b5f566efc..38c1f8610 100644 --- a/lib/puppet/application/node.rb +++ b/lib/puppet/application/node.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Node < Puppet::Application::InterfaceBase +class Puppet::Application::Node < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/report.rb b/lib/puppet/application/report.rb index 994bc9ef1..f7f961edd 100644 --- a/lib/puppet/application/report.rb +++ b/lib/puppet/application/report.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Report < Puppet::Application::InterfaceBase +class Puppet::Application::Report < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/resource_type.rb b/lib/puppet/application/resource_type.rb index ecc9f11f6..59594262c 100644 --- a/lib/puppet/application/resource_type.rb +++ b/lib/puppet/application/resource_type.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Resource_type < Puppet::Application::InterfaceBase +class Puppet::Application::Resource_type < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/application/status.rb b/lib/puppet/application/status.rb index c34b89013..1c3ca054e 100644 --- a/lib/puppet/application/status.rb +++ b/lib/puppet/application/status.rb @@ -1,4 +1,4 @@ -require 'puppet/application/interface_base' +require 'puppet/application/indirection_base' -class Puppet::Application::Status < Puppet::Application::InterfaceBase +class Puppet::Application::Status < Puppet::Application::IndirectionBase end diff --git a/lib/puppet/interface/file.rb b/lib/puppet/interface/file.rb index 9060c4042..859f92ca4 100644 --- a/lib/puppet/interface/file.rb +++ b/lib/puppet/interface/file.rb @@ -1,5 +1,5 @@ require 'puppet/interface/indirector' -class Puppet::Interface::Indirector.new(:file) do +Puppet::Interface::Indirector.new(:file) do set_indirection_name :file_bucket_file end diff --git a/lib/puppet/interface/inventory.rb b/lib/puppet/interface/inventory.rb deleted file mode 100644 index 9b597c6ae..000000000 --- a/lib/puppet/interface/inventory.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.new(:inventory) do -end |