summaryrefslogtreecommitdiffstats
path: root/lib/puppet/application
diff options
context:
space:
mode:
authorMax Martin <max@puppetlabs.com>2011-04-13 17:30:44 -0700
committerMax Martin <max@puppetlabs.com>2011-04-13 17:30:44 -0700
commit3dde838ac992571e13262ea29ba3a0eb8152e753 (patch)
tree90520cf62bfa2f1bb9c992bbfe1bc47ae10471f2 /lib/puppet/application
parentfe45c2417af580597cd39adec96a30a05a7cd66a (diff)
parent3ab44c7ce01ab86a995deb66228f5be95239c92a (diff)
downloadpuppet-3dde838ac992571e13262ea29ba3a0eb8152e753.tar.gz
puppet-3dde838ac992571e13262ea29ba3a0eb8152e753.tar.xz
puppet-3dde838ac992571e13262ea29ba3a0eb8152e753.zip
Merge branch 'next'
* next: (204 commits) Revert "(#6928) Removed --ignoreimport" Updated CHANGELOG for 2.6.8rc1 (#6928) Removed --ignoreimport (#6928) Remove --parseonly (#6928) Add a Parser face with Validate action (#6830) Fix sha1 to digest/sha1 require issue for Ruby 1.9 (#6830) Fix UTF-8 encoding issue for Ruby 1.9 (#6830) Fix string method sub call on a symbol for Ruby 1.9 (#2331) Remove darwinports pkg provider, replace with rewritten macports provider (#7059) handle inherited action binding scope maint: ensure we handle '-foo=' options correctly in faces. (#2150) Fix File const lookup when configuring routes Fixed #7082 - Added system support for groups maint: install erb templates under lib/ maint: clean up the spec test headers in bulk. (#7056) Use 'face' rather than 'faces' in the production code. maint: eliminate deprecated since 2008 code from Puppet. (#6117) Add POST support to indirector requests (#6962) Move option handling into #parse_options, not #preinit. maint: whitespace cleanup for puppet/util/command_line. ...
Diffstat (limited to 'lib/puppet/application')
-rw-r--r--lib/puppet/application/agent.rb3
-rw-r--r--lib/puppet/application/apply.rb26
-rw-r--r--lib/puppet/application/catalog.rb4
-rw-r--r--lib/puppet/application/cert.rb6
-rw-r--r--lib/puppet/application/certificate.rb18
-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/config.rb4
-rw-r--r--lib/puppet/application/configurer.rb23
-rw-r--r--lib/puppet/application/describe.rb3
-rw-r--r--lib/puppet/application/doc.rb3
-rw-r--r--lib/puppet/application/face_base.rb158
-rw-r--r--lib/puppet/application/faces.rb88
-rw-r--r--lib/puppet/application/facts.rb4
-rw-r--r--lib/puppet/application/file.rb4
-rw-r--r--lib/puppet/application/filebucket.rb3
-rw-r--r--lib/puppet/application/help.rb8
-rw-r--r--lib/puppet/application/indirection_base.rb4
-rw-r--r--lib/puppet/application/inspect.rb4
-rw-r--r--lib/puppet/application/key.rb4
-rw-r--r--lib/puppet/application/kick.rb3
-rw-r--r--lib/puppet/application/master.rb20
-rw-r--r--lib/puppet/application/node.rb4
-rw-r--r--lib/puppet/application/parser.rb5
-rw-r--r--lib/puppet/application/queue.rb3
-rw-r--r--lib/puppet/application/report.rb4
-rw-r--r--lib/puppet/application/resource.rb3
-rw-r--r--lib/puppet/application/resource_type.rb4
-rw-r--r--lib/puppet/application/status.rb4
29 files changed, 370 insertions, 55 deletions
diff --git a/lib/puppet/application/agent.rb b/lib/puppet/application/agent.rb
index 2ee40227e..fc8616817 100644
--- a/lib/puppet/application/agent.rb
+++ b/lib/puppet/application/agent.rb
@@ -288,8 +288,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005, 2006 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/apply.rb b/lib/puppet/application/apply.rb
index 2b7c9f8fb..5779e799c 100644
--- a/lib/puppet/application/apply.rb
+++ b/lib/puppet/application/apply.rb
@@ -26,6 +26,11 @@ class Puppet::Application::Apply < Puppet::Application
end
end
+ option("--parseonly") do
+ puts "--parseonly has been removed. Please use 'puppet parser validate <manifest>'"
+ exit 1
+ end
+
def help
<<-HELP
@@ -117,8 +122,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
@@ -126,8 +130,6 @@ License
def run_command
if options[:catalog]
apply
- elsif Puppet[:parseonly]
- parseonly
else
main
end
@@ -154,22 +156,6 @@ License
configurer.run :catalog => catalog
end
- def parseonly
- # Set our code or file to use.
- if options[:code] or command_line.args.length == 0
- Puppet[:code] = options[:code] || STDIN.read
- else
- Puppet[:manifest] = command_line.args.shift
- end
- begin
- Puppet::Node::Environment.new(Puppet[:environment]).known_resource_types
- rescue => detail
- Puppet.err detail
- exit 1
- end
- exit 0
- end
-
def main
# Set our code or file to use.
if options[:code] or command_line.args.length == 0
diff --git a/lib/puppet/application/catalog.rb b/lib/puppet/application/catalog.rb
new file mode 100644
index 000000000..10ce05be7
--- /dev/null
+++ b/lib/puppet/application/catalog.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Catalog < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/cert.rb b/lib/puppet/application/cert.rb
index f02fc893c..c08775380 100644
--- a/lib/puppet/application/cert.rb
+++ b/lib/puppet/application/cert.rb
@@ -48,7 +48,7 @@ class Puppet::Application::Cert < Puppet::Application
end
def help
- puts <<-HELP
+ <<-HELP
puppet-cert(8) -- Manage certificates and requests
========
@@ -163,11 +163,9 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
- exit
end
def main
diff --git a/lib/puppet/application/certificate.rb b/lib/puppet/application/certificate.rb
new file mode 100644
index 000000000..eacb830b2
--- /dev/null
+++ b/lib/puppet/application/certificate.rb
@@ -0,0 +1,18 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Certificate < Puppet::Application::IndirectionBase
+ def setup
+ unless options[:ca_location]
+ raise ArgumentError, "You must have a CA location specified;\n" +
+ "use --ca-location to specify the location (remote, local, only)"
+ end
+
+ location = Puppet::SSL::Host.ca_location
+ if location == :local && !Puppet::SSL::CertificateAuthority.ca?
+ self.class.run_mode("master")
+ self.set_run_mode self.class.run_mode
+ end
+
+ super
+ end
+end
diff --git a/lib/puppet/application/certificate_request.rb b/lib/puppet/application/certificate_request.rb
new file mode 100644
index 000000000..1b1b0830c
--- /dev/null
+++ b/lib/puppet/application/certificate_request.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+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
new file mode 100644
index 000000000..60b9d97d6
--- /dev/null
+++ b/lib/puppet/application/certificate_revocation_list.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Certificate_revocation_list < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/config.rb b/lib/puppet/application/config.rb
new file mode 100644
index 000000000..a94441e7f
--- /dev/null
+++ b/lib/puppet/application/config.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/face_base'
+
+class Puppet::Application::Config < Puppet::Application::FaceBase
+end
diff --git a/lib/puppet/application/configurer.rb b/lib/puppet/application/configurer.rb
new file mode 100644
index 000000000..6e86cd2d4
--- /dev/null
+++ b/lib/puppet/application/configurer.rb
@@ -0,0 +1,23 @@
+require 'puppet/application'
+require 'puppet/face'
+
+class Puppet::Application::Configurer < Puppet::Application
+ should_parse_config
+ run_mode :agent
+
+ option("--debug", "-d")
+ option("--verbose", "-v")
+
+ def setup
+ if options[:debug] or options[:verbose]
+ Puppet::Util::Log.level = options[:debug] ? :debug : :info
+ end
+
+ Puppet::Util::Log.newdestination(:console)
+ end
+
+ def run_command
+ report = Puppet::Face[:configurer, '0.0.1'].synchronize(Puppet[:certname])
+ Puppet::Face[:report, '0.0.1'].submit(report)
+ end
+end
diff --git a/lib/puppet/application/describe.rb b/lib/puppet/application/describe.rb
index 79643159e..8ce20b652 100644
--- a/lib/puppet/application/describe.rb
+++ b/lib/puppet/application/describe.rb
@@ -228,8 +228,7 @@ David Lutterkort
COPYRIGHT
---------
-Copyright (c) 2005 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/doc.rb b/lib/puppet/application/doc.rb
index 74811919e..a88f27c78 100644
--- a/lib/puppet/application/doc.rb
+++ b/lib/puppet/application/doc.rb
@@ -136,8 +136,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005-2007 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/face_base.rb b/lib/puppet/application/face_base.rb
new file mode 100644
index 000000000..2a048a532
--- /dev/null
+++ b/lib/puppet/application/face_base.rb
@@ -0,0 +1,158 @@
+require 'puppet/application'
+require 'puppet/face'
+require 'optparse'
+
+class Puppet::Application::FaceBase < Puppet::Application
+ should_parse_config
+ run_mode :agent
+
+ option("--debug", "-d") do |arg|
+ Puppet::Util::Log.level = :debug
+ end
+
+ option("--verbose", "-v") do
+ Puppet::Util::Log.level = :info
+ end
+
+ option("--format FORMAT") do |arg|
+ @format = arg.to_sym
+ 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)
+ set_run_mode self.class.run_mode
+ end
+
+
+ attr_accessor :face, :action, :type, :arguments, :format
+ attr_writer :exit_code
+
+ # This allows you to set the exit code if you don't want to just exit
+ # immediately but you need to indicate a failure.
+ def exit_code
+ @exit_code || 0
+ end
+
+ # Override this if you need custom rendering.
+ def render(result)
+ render_method = Puppet::Network::FormatHandler.format(format).render_method
+ if render_method == "to_pson"
+ jj result
+ exit(0)
+ else
+ result.send(render_method)
+ end
+ end
+
+ def preinit
+ super
+ Signal.trap(:INT) do
+ $stderr.puts "Cancelling Face"
+ exit(0)
+ end
+ end
+
+ def parse_options
+ # We need to parse enough of the command line out early, to identify what
+ # the action is, so that we can obtain the full set of options to parse.
+
+ # REVISIT: These should be configurable versions, through a global
+ # '--version' option, but we don't implement that yet... --daniel 2011-03-29
+ @type = self.class.name.to_s.sub(/.+:/, '').downcase.to_sym
+ @face = Puppet::Face[@type, :current]
+ @format = @face.default_format
+
+ # Now, walk the command line and identify the action. We skip over
+ # arguments based on introspecting the action and all, and find the first
+ # non-option word to use as the action.
+ action = nil
+ index = -1
+ until @action or (index += 1) >= command_line.args.length do
+ item = command_line.args[index]
+ if item =~ /^-/ then
+ option = @face.options.find do |name|
+ item =~ /^-+#{name.to_s.gsub(/[-_]/, '[-_]')}(?:[ =].*)?$/
+ end
+ if option then
+ option = @face.get_option(option)
+ # If we have an inline argument, just carry on. We don't need to
+ # care about optional vs mandatory in that case because we do a real
+ # parse later, and that will totally take care of raising the error
+ # when we get there. --daniel 2011-04-04
+ if option.takes_argument? and !item.index('=') then
+ index += 1 unless
+ (option.optional_argument? and command_line.args[index + 1] =~ /^-/)
+ end
+ elsif option = find_global_settings_argument(item) then
+ unless Puppet.settings.boolean? option.name then
+ # As far as I can tell, we treat non-bool options as always having
+ # a mandatory argument. --daniel 2011-04-05
+ index += 1 # ...so skip the argument.
+ end
+ else
+ raise OptionParser::InvalidOption.new(item.sub(/=.*$/, ''))
+ end
+ else
+ action = @face.get_action(item.to_sym)
+ if action.nil? then
+ raise OptionParser::InvalidArgument.new("#{@face} does not have an #{item} action")
+ end
+ @action = action
+ end
+ end
+
+ unless @action
+ raise OptionParser::MissingArgument.new("No action given on the command line")
+ end
+
+ # Now we can interact with the default option code to build behaviour
+ # around the full set of options we now know we support.
+ @action.options.each do |option|
+ option = @action.get_option(option) # make it the object.
+ self.class.option(*option.optparse) # ...and make the CLI parse it.
+ end
+
+ # ...and invoke our parent to parse all the command line options.
+ super
+ end
+
+ def find_global_settings_argument(item)
+ Puppet.settings.each do |name, object|
+ object.optparse_args.each do |arg|
+ next unless arg =~ /^-/
+ # sadly, we have to emulate some of optparse here...
+ pattern = /^#{arg.sub('[no-]', '').sub(/[ =].*$/, '')}(?:[ =].*)?$/
+ pattern.match item and return object
+ end
+ end
+ return nil # nothing found.
+ end
+
+ def setup
+ Puppet::Util::Log.newdestination :console
+
+ @arguments = command_line.args
+
+ # Note: because of our definition of where the action is set, we end up
+ # with it *always* being the first word of the remaining set of command
+ # line arguments. So, strip that off when we construct the arguments to
+ # pass down to the face action. --daniel 2011-04-04
+ @arguments.delete_at(0)
+
+ # We copy all of the app options to the end of the call; This allows each
+ # action to read in the options. This replaces the older model where we
+ # would invoke the action with options set as global state in the
+ # interface object. --daniel 2011-03-28
+ @arguments << options
+ end
+
+
+ def main
+ # Call the method associated with the provided action (e.g., 'find').
+ if result = @face.send(@action.name, *arguments)
+ puts render(result)
+ end
+ exit(exit_code)
+ end
+end
diff --git a/lib/puppet/application/faces.rb b/lib/puppet/application/faces.rb
new file mode 100644
index 000000000..3dd3f0312
--- /dev/null
+++ b/lib/puppet/application/faces.rb
@@ -0,0 +1,88 @@
+require 'puppet/application'
+require 'puppet/face'
+
+class Puppet::Application::Faces < Puppet::Application
+
+ should_parse_config
+ run_mode :agent
+
+ option("--debug", "-d") do |arg|
+ Puppet::Util::Log.level = :debug
+ end
+
+ option("--help", "-h") do |arg|
+ puts "Usage: puppet faces [actions|terminuses]
+Lists all available faces, and by default includes all available terminuses and actions.
+"
+ end
+
+ option("--verbose", "-v") do
+ Puppet::Util::Log.level = :info
+ end
+
+ def list(*arguments)
+ if arguments.empty?
+ arguments = %w{terminuses actions}
+ end
+ faces.each do |name|
+ str = "#{name}:\n"
+ if arguments.include?("terminuses")
+ begin
+ terms = terminus_classes(name.to_sym)
+ str << "\tTerminuses: #{terms.join(", ")}\n"
+ rescue => detail
+ puts detail.backtrace if Puppet[:trace]
+ $stderr.puts "Could not load terminuses for #{name}: #{detail}"
+ end
+ end
+
+ if arguments.include?("actions")
+ begin
+ actions = actions(name.to_sym)
+ str << "\tActions: #{actions.join(", ")}\n"
+ rescue => detail
+ puts detail.backtrace if Puppet[:trace]
+ $stderr.puts "Could not load actions for #{name}: #{detail}"
+ end
+ end
+
+ print str
+ end
+ end
+
+ attr_accessor :name, :arguments
+
+ def main
+ list(*arguments)
+ end
+
+ def setup
+ Puppet::Util::Log.newdestination :console
+
+ load_applications # Call this to load all of the apps
+
+ @arguments = command_line.args
+ @arguments ||= []
+ end
+
+ def faces
+ Puppet::Face.faces
+ end
+
+ def terminus_classes(indirection)
+ Puppet::Indirector::Terminus.terminus_classes(indirection).collect { |t| t.to_s }.sort
+ end
+
+ def actions(indirection)
+ return [] unless face = Puppet::Face[indirection, '0.0.1']
+ face.load_actions
+ return face.actions.sort { |a, b| a.to_s <=> b.to_s }
+ end
+
+ def load_applications
+ command_line.available_subcommands.each do |app|
+ command_line.require_application app
+ end
+ end
+end
+
diff --git a/lib/puppet/application/facts.rb b/lib/puppet/application/facts.rb
new file mode 100644
index 000000000..d18b21ea7
--- /dev/null
+++ b/lib/puppet/application/facts.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Facts < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/file.rb b/lib/puppet/application/file.rb
new file mode 100644
index 000000000..32a81c7c6
--- /dev/null
+++ b/lib/puppet/application/file.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::File < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/filebucket.rb b/lib/puppet/application/filebucket.rb
index 063d97db8..6d59ae40b 100644
--- a/lib/puppet/application/filebucket.rb
+++ b/lib/puppet/application/filebucket.rb
@@ -108,8 +108,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/help.rb b/lib/puppet/application/help.rb
new file mode 100644
index 000000000..0d7767632
--- /dev/null
+++ b/lib/puppet/application/help.rb
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+require 'puppet/application/face_base'
+
+class Puppet::Application::Help < Puppet::Application::FaceBase
+ # Meh. Disable the default behaviour, which is to inspect the
+ # string and return that – not so helpful. --daniel 2011-04-11
+ def render(result) result end
+end
diff --git a/lib/puppet/application/indirection_base.rb b/lib/puppet/application/indirection_base.rb
new file mode 100644
index 000000000..580a0999a
--- /dev/null
+++ b/lib/puppet/application/indirection_base.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/face_base'
+
+class Puppet::Application::IndirectionBase < Puppet::Application::FaceBase
+end
diff --git a/lib/puppet/application/inspect.rb b/lib/puppet/application/inspect.rb
index e448cb9e8..30865cfc1 100644
--- a/lib/puppet/application/inspect.rb
+++ b/lib/puppet/application/inspect.rb
@@ -68,9 +68,7 @@ Puppet Labs
COPYRIGHT
---------
-
-Copyright (c) 2011 Puppet Labs, LLC
-Licensed under the GNU General Public License version 2
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/key.rb b/lib/puppet/application/key.rb
new file mode 100644
index 000000000..57835b627
--- /dev/null
+++ b/lib/puppet/application/key.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Key < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/kick.rb b/lib/puppet/application/kick.rb
index da93c0182..536699442 100644
--- a/lib/puppet/application/kick.rb
+++ b/lib/puppet/application/kick.rb
@@ -172,8 +172,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/master.rb b/lib/puppet/application/master.rb
index 78499a92a..a90829ae0 100644
--- a/lib/puppet/application/master.rb
+++ b/lib/puppet/application/master.rb
@@ -25,6 +25,11 @@ class Puppet::Application::Master < Puppet::Application
end
end
+ option("--parseonly") do
+ puts "--parseonly has been removed. Please use 'puppet parser validate <manifest>'"
+ exit 1
+ end
+
def help
<<-HELP
@@ -105,8 +110,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
@@ -126,8 +130,6 @@ License
def run_command
if options[:node]
compile
- elsif Puppet[:parseonly]
- parseonly
else
main
end
@@ -149,16 +151,6 @@ License
exit(0)
end
- def parseonly
- begin
- Puppet::Node::Environment.new(Puppet[:environment]).known_resource_types
- rescue => detail
- Puppet.err detail
- exit 1
- end
- exit(0)
- end
-
def main
require 'etc'
require 'puppet/file_serving/content'
diff --git a/lib/puppet/application/node.rb b/lib/puppet/application/node.rb
new file mode 100644
index 000000000..38c1f8610
--- /dev/null
+++ b/lib/puppet/application/node.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Node < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/parser.rb b/lib/puppet/application/parser.rb
new file mode 100644
index 000000000..b6ec3c185
--- /dev/null
+++ b/lib/puppet/application/parser.rb
@@ -0,0 +1,5 @@
+require 'puppet/application/face_base'
+require 'puppet/face'
+
+class Puppet::Application::Parser < Puppet::Application::FaceBase
+end
diff --git a/lib/puppet/application/queue.rb b/lib/puppet/application/queue.rb
index de8aea32a..e56fde281 100644
--- a/lib/puppet/application/queue.rb
+++ b/lib/puppet/application/queue.rb
@@ -104,8 +104,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2009 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/report.rb b/lib/puppet/application/report.rb
new file mode 100644
index 000000000..f7f961edd
--- /dev/null
+++ b/lib/puppet/application/report.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Report < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/resource.rb b/lib/puppet/application/resource.rb
index 3995c285b..6ef87d68f 100644
--- a/lib/puppet/application/resource.rb
+++ b/lib/puppet/application/resource.rb
@@ -132,8 +132,7 @@ Luke Kanies
COPYRIGHT
---------
-Copyright (c) 2005-2007 Puppet Labs, LLC Licensed under the GNU Public
-License
+Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
HELP
end
diff --git a/lib/puppet/application/resource_type.rb b/lib/puppet/application/resource_type.rb
new file mode 100644
index 000000000..59594262c
--- /dev/null
+++ b/lib/puppet/application/resource_type.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Resource_type < Puppet::Application::IndirectionBase
+end
diff --git a/lib/puppet/application/status.rb b/lib/puppet/application/status.rb
new file mode 100644
index 000000000..1c3ca054e
--- /dev/null
+++ b/lib/puppet/application/status.rb
@@ -0,0 +1,4 @@
+require 'puppet/application/indirection_base'
+
+class Puppet::Application::Status < Puppet::Application::IndirectionBase
+end