summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorLuke Kanies <luke@puppetlabs.com>2011-02-22 17:13:52 -0800
committerLuke Kanies <luke@puppetlabs.com>2011-02-22 17:13:52 -0800
commitc2715c0f20d916de0284e2d161eb5de32e508244 (patch)
tree9a751a7f4256801026d73416546d17ae039ab7a1 /lib/puppet
parent7da0a26f1bd44ecfffe9f622ec9d560870506207 (diff)
downloadpuppet-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.rb4
-rw-r--r--lib/puppet/application/certificate.rb4
-rw-r--r--lib/puppet/application/certificate_request.rb4
-rw-r--r--lib/puppet/application/certificate_revocation_list.rb4
-rw-r--r--lib/puppet/application/facts.rb4
-rw-r--r--lib/puppet/application/file.rb4
-rw-r--r--lib/puppet/application/indirection_base.rb27
-rw-r--r--lib/puppet/application/interface_base.rb27
-rw-r--r--lib/puppet/application/inventory.rb4
-rw-r--r--lib/puppet/application/key.rb4
-rw-r--r--lib/puppet/application/node.rb4
-rw-r--r--lib/puppet/application/report.rb4
-rw-r--r--lib/puppet/application/resource_type.rb4
-rw-r--r--lib/puppet/application/status.rb4
-rw-r--r--lib/puppet/interface/file.rb2
-rw-r--r--lib/puppet/interface/inventory.rb4
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