diff options
| author | Daniel Pittman <daniel@puppetlabs.com> | 2011-03-26 00:12:17 -0700 |
|---|---|---|
| committer | Daniel Pittman <daniel@puppetlabs.com> | 2011-03-28 10:45:34 -0700 |
| commit | b859baa04737644e40002f511c5941d002a956e3 (patch) | |
| tree | f8f4d581c3b0445df836d5e55945f62547239598 /lib/puppet/interface | |
| parent | 88aeb04a50d8997b5e1e0ed7a5a2239508b174ee (diff) | |
| download | puppet-b859baa04737644e40002f511c5941d002a956e3.tar.gz puppet-b859baa04737644e40002f511c5941d002a956e3.tar.xz puppet-b859baa04737644e40002f511c5941d002a956e3.zip | |
MAINT: the API is officially named "string" as of this moment.
Now that we have settled on the final public name for the API,
"Puppet::String", mass-rename and mass-edit all the files to follow.
Reviewed-By: Randall Hansen <randall@puppetlabs.com>
Diffstat (limited to 'lib/puppet/interface')
20 files changed, 0 insertions, 443 deletions
diff --git a/lib/puppet/interface/action.rb b/lib/puppet/interface/action.rb deleted file mode 100644 index 1a5730d1b..000000000 --- a/lib/puppet/interface/action.rb +++ /dev/null @@ -1,26 +0,0 @@ -require 'puppet/interface' - -class Puppet::Interface::Action - attr_reader :name - - def initialize(interface, name, attrs = {}) - name = name.to_s - raise "'#{name}' is an invalid action name" unless name =~ /^[a-z]\w*$/ - - @interface = interface - @name = name - attrs.each do |k,v| send("#{k}=", v) end - end - - def invoke(*args, &block) - @interface.method(name).call(*args,&block) - end - - def invoke=(block) - if @interface.is_a?(Class) - @interface.define_method(@name, &block) - else - @interface.meta_def(@name, &block) - end - end -end diff --git a/lib/puppet/interface/action_builder.rb b/lib/puppet/interface/action_builder.rb deleted file mode 100644 index e389ea3ea..000000000 --- a/lib/puppet/interface/action_builder.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'puppet/interface' -require 'puppet/interface/action' - -class Puppet::Interface::ActionBuilder - attr_reader :action - - def self.build(interface, name, &block) - name = name.to_s - raise "Action '#{name}' must specify a block" unless block - builder = new(interface, name, &block) - builder.action - end - - def initialize(interface, name, &block) - @interface = interface - @action = Puppet::Interface::Action.new(interface, name) - instance_eval(&block) - end - - # Ideally the method we're defining here would be added to the action, and a - # method on the interface would defer to it, but we can't get scope correct, - # so we stick with this. --daniel 2011-03-24 - def invoke(&block) - raise "Invoke called on an ActionBuilder with no corresponding Action" unless @action - @action.invoke = block - end -end diff --git a/lib/puppet/interface/action_manager.rb b/lib/puppet/interface/action_manager.rb deleted file mode 100644 index 8b2944bb1..000000000 --- a/lib/puppet/interface/action_manager.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'puppet/interface/action_builder' - -module Puppet::Interface::ActionManager - # Declare that this app can take a specific action, and provide - # the code to do so. - def action(name, &block) - @actions ||= {} - name = name.to_s.downcase.to_sym - - raise "Action #{name} already defined for #{self}" if action?(name) - - action = Puppet::Interface::ActionBuilder.build(self, name, &block) - - @actions[name] = action - end - - # This is the short-form of an action definition; it doesn't use the - # builder, just creates the action directly from the block. - def script(name, &block) - @actions ||= {} - name = name.to_s.downcase.to_sym - raise "Action #{name} already defined for #{self}" if action?(name) - @actions[name] = Puppet::Interface::Action.new(self, name, :invoke => block) - end - - def actions - @actions ||= {} - result = @actions.keys - - if self.is_a?(Class) and superclass.respond_to?(:actions) - result += superclass.actions - elsif self.class.respond_to?(:actions) - result += self.class.actions - end - result.sort - end - - def get_action(name) - @actions[name].dup - end - - def action?(name) - actions.include?(name.to_sym) - end -end diff --git a/lib/puppet/interface/indirector.rb b/lib/puppet/interface/indirector.rb deleted file mode 100644 index 485af4779..000000000 --- a/lib/puppet/interface/indirector.rb +++ /dev/null @@ -1,79 +0,0 @@ -require 'puppet' -require 'puppet/interface' - -class Puppet::Interface::Indirector < Puppet::Interface - def self.indirections - Puppet::Indirector::Indirection.instances.collect { |t| t.to_s }.sort - end - - def self.terminus_classes(indirection) - Puppet::Indirector::Terminus.terminus_classes(indirection.to_sym).collect { |t| t.to_s }.sort - end - - action :destroy do - invoke { |*args| call_indirection_method(:destroy, *args) } - end - - action :find do - invoke { |*args| call_indirection_method(:find, *args) } - end - - action :save do - invoke { |*args| call_indirection_method(:save, *args) } - end - - action :search do - invoke { |*args| call_indirection_method(:search, *args) } - end - - # Print the configuration for the current terminus class - action :info do - invoke do |*args| - if t = indirection.terminus_class - puts "Run mode '#{Puppet.run_mode.name}': #{t}" - else - $stderr.puts "No default terminus class for run mode '#{Puppet.run_mode.name}'" - end - end - end - - attr_accessor :from - - def indirection_name - @indirection_name || name.to_sym - end - - # Here's your opportunity to override the indirection name. By default - # it will be the same name as the interface. - def set_indirection_name(name) - @indirection_name = name - end - - # Return an indirection associated with an interface, if one exists - # One usually does. - def indirection - unless @indirection - Puppet.info("Could not find terminus for #{indirection_name}") unless @indirection = Puppet::Indirector::Indirection.instance(indirection_name) - end - @indirection - end - - def set_terminus(from) - begin - indirection.terminus_class = from - rescue => detail - raise "Could not set '#{indirection.name}' terminus to '#{from}' (#{detail}); valid terminus types are #{terminus_classes(indirection.name).join(", ") }" - end - end - - def call_indirection_method(method, *args) - begin - result = indirection.send(method, *args) - rescue => detail - puts detail.backtrace if Puppet[:trace] - raise "Could not call '#{method}' on '#{indirection_name}': #{detail}" - end - - result - end -end diff --git a/lib/puppet/interface/interface_collection.rb b/lib/puppet/interface/interface_collection.rb deleted file mode 100644 index 92e2933fe..000000000 --- a/lib/puppet/interface/interface_collection.rb +++ /dev/null @@ -1,98 +0,0 @@ -require 'puppet/interface' - -module Puppet::Interface::InterfaceCollection - SEMVER_VERSION = /^(\d+)\.(\d+)\.(\d+)([A-Za-z][0-9A-Za-z-]*|)$/ - - @interfaces = Hash.new { |hash, key| hash[key] = {} } - - def self.interfaces - unless @loaded - @loaded = true - $LOAD_PATH.each do |dir| - next unless FileTest.directory?(dir) - Dir.chdir(dir) do - Dir.glob("puppet/interface/v*/*.rb").collect { |f| f.sub(/\.rb/, '') }.each do |file| - iname = file.sub(/\.rb/, '') - begin - require iname - rescue Exception => detail - puts detail.backtrace if Puppet[:trace] - raise "Could not load #{iname} from #{dir}/#{file}: #{detail}" - end - end - end - end - end - return @interfaces.keys - end - - def self.versions(name) - versions = [] - $LOAD_PATH.each do |dir| - next unless FileTest.directory?(dir) - v_dir = File.join dir, %w[puppet interface v*] - Dir.glob(File.join v_dir, "#{name}{.rb,/*.rb}").each do |f| - v = f.sub(%r[.*/v([^/]+?)/#{name}(?:(?:/[^/]+)?.rb)$], '\1') - if validate_version(v) - versions << v - else - warn "'#{v}' (#{f}) is not a valid version string; skipping" - end - end - end - return versions.uniq.sort { |a, b| compare_versions(a, b) } - end - - def self.validate_version(version) - !!(SEMVER_VERSION =~ version.to_s) - end - - def self.compare_versions(a, b) - a, b = [a, b].map do |x| - parts = SEMVER_VERSION.match(x).to_a[1..4] - parts[0..2] = parts[0..2].map { |e| e.to_i } - parts - end - - cmp = a[0..2] <=> b[0..2] - if cmp == 0 - cmp = a[3] <=> b[3] - cmp = +1 if a[3].empty? && !b[3].empty? - cmp = -1 if b[3].empty? && !a[3].empty? - end - cmp - end - - def self.[](name, version) - version = versions(name).last if version == :latest - unless version.nil? - @interfaces[underscorize(name)][version] if interface?(name, version) - end - end - - def self.interface?(name, version) - version = versions(name).last if version == :latest - return false if version.nil? - - name = underscorize(name) - - unless @interfaces.has_key?(name) && @interfaces[name].has_key?(version) - require "puppet/interface/v#{version}/#{name}" - end - return @interfaces.has_key?(name) && @interfaces[name].has_key?(version) - rescue LoadError - return false - end - - def self.register(interface) - @interfaces[underscorize(interface.name)][interface.version] = interface - end - - def self.underscorize(name) - unless name.to_s =~ /^[-_a-z]+$/i then - raise ArgumentError, "#{name.inspect} (#{name.class}) is not a valid interface name" - end - - name.to_s.downcase.split(/[-_]/).join('_').to_sym - end -end diff --git a/lib/puppet/interface/v0.0.1/catalog.rb b/lib/puppet/interface/v0.0.1/catalog.rb deleted file mode 100644 index 7d61528bc..000000000 --- a/lib/puppet/interface/v0.0.1/catalog.rb +++ /dev/null @@ -1,40 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:catalog, '0.0.1') do - action(:apply) do - invoke do |catalog| - report = Puppet::Transaction::Report.new("apply") - report.configuration_version = catalog.version - - Puppet::Util::Log.newdestination(report) - - begin - benchmark(:notice, "Finished catalog run") do - catalog.apply(:report => report) - end - rescue => detail - puts detail.backtrace if Puppet[:trace] - Puppet.err "Failed to apply catalog: #{detail}" - end - - report.finalize_report - report - end - end - - action(:download) do - invoke do |certname,facts| - Puppet::Resource::Catalog.terminus_class = :rest - facts_to_upload = {:facts_format => :b64_zlib_yaml, :facts => CGI.escape(facts.render(:b64_zlib_yaml))} - catalog = nil - retrieval_duration = thinmark do - catalog = Puppet::Interface[:catalog, '0.0.1'].find(certname, facts_to_upload) - end - catalog = catalog.to_ral - catalog.finalize - catalog.retrieval_duration = retrieval_duration - catalog.write_class_file - catalog - end - end -end diff --git a/lib/puppet/interface/v0.0.1/catalog/select.rb b/lib/puppet/interface/v0.0.1/catalog/select.rb deleted file mode 100644 index 35f1a1e0b..000000000 --- a/lib/puppet/interface/v0.0.1/catalog/select.rb +++ /dev/null @@ -1,10 +0,0 @@ -# Select and show a list of resources of a given type. -Puppet::Interface.define(:catalog, '0.0.1') do - action :select do - invoke do |host,type| - catalog = Puppet::Resource::Catalog.indirection.find(host) - - catalog.resources.reject { |res| res.type != type }.each { |res| puts res } - end - end -end diff --git a/lib/puppet/interface/v0.0.1/certificate.rb b/lib/puppet/interface/v0.0.1/certificate.rb deleted file mode 100644 index 2615e3d86..000000000 --- a/lib/puppet/interface/v0.0.1/certificate.rb +++ /dev/null @@ -1,28 +0,0 @@ -require 'puppet/interface/indirector' -require 'puppet/ssl/host' - -Puppet::Interface::Indirector.define(:certificate, '0.0.1') do - - action :generate do - invoke do |name| - host = Puppet::SSL::Host.new(name) - host.generate_certificate_request - host.certificate_request.class.indirection.save(host.certificate_request) - end - end - - action :list do - invoke do - Puppet::SSL::Host.indirection.search("*", { - :for => :certificate_request, - }).map { |h| h.inspect } - end - end - - action :sign do - invoke do |name| - Puppet::SSL::Host.indirection.save(Puppet::SSL::Host.new(name)) - end - end - -end diff --git a/lib/puppet/interface/v0.0.1/certificate_request.rb b/lib/puppet/interface/v0.0.1/certificate_request.rb deleted file mode 100644 index e5ed1b51e..000000000 --- a/lib/puppet/interface/v0.0.1/certificate_request.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:certificate_request, '0.0.1') do -end diff --git a/lib/puppet/interface/v0.0.1/certificate_revocation_list.rb b/lib/puppet/interface/v0.0.1/certificate_revocation_list.rb deleted file mode 100644 index f6d8a3d6d..000000000 --- a/lib/puppet/interface/v0.0.1/certificate_revocation_list.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:certificate_revocation_list, '0.0.1') do -end diff --git a/lib/puppet/interface/v0.0.1/config.rb b/lib/puppet/interface/v0.0.1/config.rb deleted file mode 100644 index 7b74ce542..000000000 --- a/lib/puppet/interface/v0.0.1/config.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'puppet/interface' - -Puppet::Interface.define(:config, '0.0.1') do - action(:print) do - invoke do |*args| - Puppet.settings[:configprint] = args.join(",") - Puppet.settings.print_config_options - nil - end - end -end diff --git a/lib/puppet/interface/v0.0.1/configurer.rb b/lib/puppet/interface/v0.0.1/configurer.rb deleted file mode 100644 index 38536b684..000000000 --- a/lib/puppet/interface/v0.0.1/configurer.rb +++ /dev/null @@ -1,12 +0,0 @@ -require 'puppet/interface' - -Puppet::Interface.define(:configurer, '0.0.1') do - action(:synchronize) do - invoke do |certname| - facts = Puppet::Interface[:facts, '0.0.1'].find(certname) - catalog = Puppet::Interface[:catalog, '0.0.1'].download(certname, facts) - report = Puppet::Interface[:catalog, '0.0.1'].apply(catalog) - report - end - end -end diff --git a/lib/puppet/interface/v0.0.1/facts.rb b/lib/puppet/interface/v0.0.1/facts.rb deleted file mode 100644 index c4bbad845..000000000 --- a/lib/puppet/interface/v0.0.1/facts.rb +++ /dev/null @@ -1,18 +0,0 @@ -require 'puppet/interface/indirector' -require 'puppet/node/facts' - -Puppet::Interface::Indirector.define(:facts, '0.0.1') do - set_default_format :yaml - - # Upload our facts to the server - action(:upload) do - invoke do |*args| - Puppet::Node::Facts.indirection.terminus_class = :facter - facts = Puppet::Node::Facts.indirection.find(Puppet[:certname]) - Puppet::Node::Facts.indirection.terminus_class = :rest - Puppet::Node::Facts.indirection.save(facts) - Puppet.notice "Uploaded facts for '#{Puppet[:certname]}'" - nil - end - end -end diff --git a/lib/puppet/interface/v0.0.1/file.rb b/lib/puppet/interface/v0.0.1/file.rb deleted file mode 100644 index 91904e8e0..000000000 --- a/lib/puppet/interface/v0.0.1/file.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:file, '0.0.1') do - set_indirection_name :file_bucket_file -end diff --git a/lib/puppet/interface/v0.0.1/key.rb b/lib/puppet/interface/v0.0.1/key.rb deleted file mode 100644 index fbc9b67b1..000000000 --- a/lib/puppet/interface/v0.0.1/key.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:key, '0.0.1') do -end diff --git a/lib/puppet/interface/v0.0.1/node.rb b/lib/puppet/interface/v0.0.1/node.rb deleted file mode 100644 index 4ecec1478..000000000 --- a/lib/puppet/interface/v0.0.1/node.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:node, '0.0.1') do - set_default_format :yaml -end diff --git a/lib/puppet/interface/v0.0.1/report.rb b/lib/puppet/interface/v0.0.1/report.rb deleted file mode 100644 index bacb46e70..000000000 --- a/lib/puppet/interface/v0.0.1/report.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:report, '0.0.1') do - action(:submit) do - invoke do |report| - begin - Puppet::Transaction::Report.terminus_class = :rest - report.save - rescue => detail - puts detail.backtrace if Puppet[:trace] - Puppet.err "Could not send report: #{detail}" - end - end - end -end diff --git a/lib/puppet/interface/v0.0.1/resource.rb b/lib/puppet/interface/v0.0.1/resource.rb deleted file mode 100644 index 1a6f3b69d..000000000 --- a/lib/puppet/interface/v0.0.1/resource.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:resource, '0.0.1') do -end diff --git a/lib/puppet/interface/v0.0.1/resource_type.rb b/lib/puppet/interface/v0.0.1/resource_type.rb deleted file mode 100644 index 6f5547c4d..000000000 --- a/lib/puppet/interface/v0.0.1/resource_type.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:resource_type, '0.0.1') do -end diff --git a/lib/puppet/interface/v0.0.1/status.rb b/lib/puppet/interface/v0.0.1/status.rb deleted file mode 100644 index 7f4b56a2b..000000000 --- a/lib/puppet/interface/v0.0.1/status.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'puppet/interface/indirector' - -Puppet::Interface::Indirector.define(:status, '0.0.1') do -end |
