summaryrefslogtreecommitdiffstats
path: root/lib/puppet/interface
diff options
context:
space:
mode:
authorDaniel Pittman <daniel@puppetlabs.com>2011-03-26 00:12:17 -0700
committerDaniel Pittman <daniel@puppetlabs.com>2011-03-28 10:45:34 -0700
commitb859baa04737644e40002f511c5941d002a956e3 (patch)
treef8f4d581c3b0445df836d5e55945f62547239598 /lib/puppet/interface
parent88aeb04a50d8997b5e1e0ed7a5a2239508b174ee (diff)
downloadpuppet-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')
-rw-r--r--lib/puppet/interface/action.rb26
-rw-r--r--lib/puppet/interface/action_builder.rb27
-rw-r--r--lib/puppet/interface/action_manager.rb45
-rw-r--r--lib/puppet/interface/indirector.rb79
-rw-r--r--lib/puppet/interface/interface_collection.rb98
-rw-r--r--lib/puppet/interface/v0.0.1/catalog.rb40
-rw-r--r--lib/puppet/interface/v0.0.1/catalog/select.rb10
-rw-r--r--lib/puppet/interface/v0.0.1/certificate.rb28
-rw-r--r--lib/puppet/interface/v0.0.1/certificate_request.rb4
-rw-r--r--lib/puppet/interface/v0.0.1/certificate_revocation_list.rb4
-rw-r--r--lib/puppet/interface/v0.0.1/config.rb11
-rw-r--r--lib/puppet/interface/v0.0.1/configurer.rb12
-rw-r--r--lib/puppet/interface/v0.0.1/facts.rb18
-rw-r--r--lib/puppet/interface/v0.0.1/file.rb5
-rw-r--r--lib/puppet/interface/v0.0.1/key.rb4
-rw-r--r--lib/puppet/interface/v0.0.1/node.rb5
-rw-r--r--lib/puppet/interface/v0.0.1/report.rb15
-rw-r--r--lib/puppet/interface/v0.0.1/resource.rb4
-rw-r--r--lib/puppet/interface/v0.0.1/resource_type.rb4
-rw-r--r--lib/puppet/interface/v0.0.1/status.rb4
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