From c8f38b7fee12eefb2bed00681b4952ac7ad3f14f Mon Sep 17 00:00:00 2001 From: luke Date: Wed, 31 Jan 2007 19:38:02 +0000 Subject: Renaming "pelement" to "resource". The old name is a holdover from before we had settled on "resource" as a term. git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2137 980ebf18-57e1-0310-9a29-db15c13687c0 --- lib/puppet/client.rb | 2 +- lib/puppet/client/pelement.rb | 65 -------------- lib/puppet/client/resource.rb | 65 ++++++++++++++ lib/puppet/server.rb | 2 +- lib/puppet/server/pelement.rb | 191 ------------------------------------------ lib/puppet/server/resource.rb | 191 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 258 insertions(+), 258 deletions(-) delete mode 100644 lib/puppet/client/pelement.rb create mode 100644 lib/puppet/client/resource.rb delete mode 100755 lib/puppet/server/pelement.rb create mode 100755 lib/puppet/server/resource.rb (limited to 'lib/puppet') diff --git a/lib/puppet/client.rb b/lib/puppet/client.rb index 4f2718b7d..de3b3eaec 100644 --- a/lib/puppet/client.rb +++ b/lib/puppet/client.rb @@ -187,7 +187,7 @@ module Puppet require 'puppet/client/runner' require 'puppet/client/status' require 'puppet/client/reporter' - require 'puppet/client/pelement' + require 'puppet/client/resource' end end diff --git a/lib/puppet/client/pelement.rb b/lib/puppet/client/pelement.rb deleted file mode 100644 index 087b61ee4..000000000 --- a/lib/puppet/client/pelement.rb +++ /dev/null @@ -1,65 +0,0 @@ -class Puppet::Client::PElement < Puppet::Client - @drivername = :PElementServer - - @handler = Puppet::Server::PElement - - def apply(bucket) - - case bucket - when Puppet::TransObject - tmp = Puppet::TransBucket.new - tmp.push bucket - bucket = tmp - bucket.name = Facter["hostname"].value - bucket.type = "pelement" - when Puppet::TransBucket - # nothing - else - raise Puppet::DevError, "You must pass a transportable object, not a %s" % - bucket.class - end - - unless @local - bucket = Base64.encode64(YAML::dump(bucket)) - end - report = @driver.apply(bucket, "yaml") - - return report - end - - def describe(type, name, retrieve = false, ignore = false) - Puppet.info "Describing %s[%s]" % [type.to_s.capitalize, name] - text = @driver.describe(type, name, retrieve, ignore, "yaml") - - object = nil - if @local - object = text - else - object = YAML::load(Base64.decode64(text)) - end - - return object - end - - def initialize(hash = {}) - if hash.include?(:PElementServer) - unless hash[:PElementServer].is_a?(Puppet::Server::PElement) - raise Puppet::DevError, "Must pass an actual PElement server object" - end - end - - super(hash) - end - - def list(type, ignore = false, base = false) - bucket = @driver.list(type, ignore, base, "yaml") - - unless @local - bucket = YAML::load(Base64.decode64(bucket)) - end - - return bucket - end -end - -# $Id$ diff --git a/lib/puppet/client/resource.rb b/lib/puppet/client/resource.rb new file mode 100644 index 000000000..6081b2b66 --- /dev/null +++ b/lib/puppet/client/resource.rb @@ -0,0 +1,65 @@ +class Puppet::Client::Resource < Puppet::Client + @drivername = :ResourceServer + + @handler = Puppet::Server::Resource + + def apply(bucket) + + case bucket + when Puppet::TransObject + tmp = Puppet::TransBucket.new + tmp.push bucket + bucket = tmp + bucket.name = Facter["hostname"].value + bucket.type = "resource" + when Puppet::TransBucket + # nothing + else + raise Puppet::DevError, "You must pass a transportable object, not a %s" % + bucket.class + end + + unless @local + bucket = Base64.encode64(YAML::dump(bucket)) + end + report = @driver.apply(bucket, "yaml") + + return report + end + + def describe(type, name, retrieve = false, ignore = false) + Puppet.info "Describing %s[%s]" % [type.to_s.capitalize, name] + text = @driver.describe(type, name, retrieve, ignore, "yaml") + + object = nil + if @local + object = text + else + object = YAML::load(Base64.decode64(text)) + end + + return object + end + + def initialize(hash = {}) + if hash.include?(:ResourceServer) + unless hash[:ResourceServer].is_a?(Puppet::Server::Resource) + raise Puppet::DevError, "Must pass an actual PElement server object" + end + end + + super(hash) + end + + def list(type, ignore = false, base = false) + bucket = @driver.list(type, ignore, base, "yaml") + + unless @local + bucket = YAML::load(Base64.decode64(bucket)) + end + + return bucket + end +end + +# $Id$ diff --git a/lib/puppet/server.rb b/lib/puppet/server.rb index 3720f25c8..aabc87b50 100644 --- a/lib/puppet/server.rb +++ b/lib/puppet/server.rb @@ -212,7 +212,7 @@ require 'puppet/server/master' require 'puppet/server/ca' require 'puppet/server/fileserver' require 'puppet/server/filebucket' -require 'puppet/server/pelement' +require 'puppet/server/resource' require 'puppet/server/runner' require 'puppet/server/logger' require 'puppet/server/report' diff --git a/lib/puppet/server/pelement.rb b/lib/puppet/server/pelement.rb deleted file mode 100755 index c97a9d4cc..000000000 --- a/lib/puppet/server/pelement.rb +++ /dev/null @@ -1,191 +0,0 @@ -require 'puppet' -require 'puppet/server' - -module Puppet - -# Serve Puppet elements. Useful for querying, copying, and, um, other stuff. -class Server::PElement < Server::Handler - attr_accessor :local - - @interface = XMLRPC::Service::Interface.new("pelementserver") { |iface| - iface.add_method("string apply(string, string)") - iface.add_method("string describe(string, string, array, array)") - iface.add_method("string list(string, array, string)") - } - - # Apply a TransBucket as a transaction. - def apply(bucket, format = "yaml", client = nil, clientip = nil) - unless @local - begin - case format - when "yaml": - bucket = YAML::load(Base64.decode64(bucket)) - else - raise Puppet::Error, "Unsupported format '%s'" % format - end - rescue => detail - raise Puppet::Error, "Could not load YAML TransBucket: %s" % detail - end - end - - component = bucket.to_type - - # Create a client, but specify the remote machine as the server - # because the class requires it, even though it's unused - client = Puppet::Client::MasterClient.new(:Server => client||"localhost") - - # Set the objects - client.objects = component - - # And then apply the configuration. This way we're reusing all - # the code in there. It should probably just be separated out, though. - transaction = client.apply - - # And then clean up - component.remove - - # It'd be nice to return some kind of report, but... at this point - # we have no such facility. - return "success" - end - - # Describe a given object. This returns the 'is' values for every state - # available on the object type. - def describe(type, name, retrieve = nil, ignore = [], format = "yaml", client = nil, clientip = nil) - Puppet.info "Describing %s[%s]" % [type.to_s.capitalize, name] - @local = true unless client - typeklass = nil - unless typeklass = Puppet.type(type) - raise Puppet::Error, "Puppet type %s is unsupported" % type - end - - obj = nil - - retrieve ||= :all - ignore ||= [] - - if obj = typeklass[name] - obj[:check] = retrieve - else - begin - obj = typeklass.create(:name => name, :check => retrieve) - rescue Puppet::Error => detail - raise Puppet::Error, "%s[%s] could not be created: %s" % - [type, name, detail] - end - end - - unless obj - raise XMLRPC::FaultException.new( - 1, "Could not create %s[%s]" % [type, name] - ) - end - - trans = obj.to_trans - - # Now get rid of any attributes they specifically don't want - ignore.each do |st| - if trans.include? st - trans.delete(st) - end - end - - # And get rid of any attributes that are nil - trans.each do |attr, value| - if value.nil? - trans.delete(attr) - end - end - - unless @local - case format - when "yaml": - trans = Base64.encode64(YAML::dump(trans)) - else - raise XMLRPC::FaultException.new( - 1, "Unavailable config format %s" % format - ) - end - end - - return trans - end - - # Create a new fileserving module. - def initialize(hash = {}) - if hash[:Local] - @local = hash[:Local] - else - @local = false - end - end - - # List all of the elements of a given type. - def list(type, ignore = [], base = nil, format = "yaml", client = nil, clientip = nil) - @local = true unless client - typeklass = nil - unless typeklass = Puppet.type(type) - raise Puppet::Error, "Puppet type %s is unsupported" % type - end - - # They can pass in false - ignore ||= [] - ignore = [ignore] unless ignore.is_a? Array - bucket = TransBucket.new - bucket.type = typeklass.name - - typeklass.list.each do |obj| - next if ignore.include? obj.name - - object = TransObject.new(obj.name, typeklass.name) - bucket << object - end - - unless @local - case format - when "yaml": - begin - bucket = Base64.encode64(YAML::dump(bucket)) - rescue => detail - Puppet.err detail - raise XMLRPC::FaultException.new( - 1, detail.to_s - ) - end - else - raise XMLRPC::FaultException.new( - 1, "Unavailable config format %s" % format - ) - end - end - - return bucket - end - - private - - def authcheck(file, mount, client, clientip) - unless mount.allowed?(client, clientip) - mount.warning "%s cannot access %s" % - [client, file] - raise Puppet::Server::AuthorizationError, "Cannot access %s" % mount - end - end - - # Deal with ignore parameters. - def handleignore(children, path, ignore) - ignore.each { |ignore| - Dir.glob(File.join(path,ignore), File::FNM_DOTMATCH) { |match| - children.delete(File.basename(match)) - } - } - return children - end - - def to_s - "pelementserver" - end -end -end - -# $Id$ diff --git a/lib/puppet/server/resource.rb b/lib/puppet/server/resource.rb new file mode 100755 index 000000000..12a188a18 --- /dev/null +++ b/lib/puppet/server/resource.rb @@ -0,0 +1,191 @@ +require 'puppet' +require 'puppet/server' + +module Puppet + +# Serve Puppet elements. Useful for querying, copying, and, um, other stuff. +class Server::Resource < Server::Handler + attr_accessor :local + + @interface = XMLRPC::Service::Interface.new("resource") { |iface| + iface.add_method("string apply(string, string)") + iface.add_method("string describe(string, string, array, array)") + iface.add_method("string list(string, array, string)") + } + + # Apply a TransBucket as a transaction. + def apply(bucket, format = "yaml", client = nil, clientip = nil) + unless @local + begin + case format + when "yaml": + bucket = YAML::load(Base64.decode64(bucket)) + else + raise Puppet::Error, "Unsupported format '%s'" % format + end + rescue => detail + raise Puppet::Error, "Could not load YAML TransBucket: %s" % detail + end + end + + component = bucket.to_type + + # Create a client, but specify the remote machine as the server + # because the class requires it, even though it's unused + client = Puppet::Client::MasterClient.new(:Server => client||"localhost") + + # Set the objects + client.objects = component + + # And then apply the configuration. This way we're reusing all + # the code in there. It should probably just be separated out, though. + transaction = client.apply + + # And then clean up + component.remove + + # It'd be nice to return some kind of report, but... at this point + # we have no such facility. + return "success" + end + + # Describe a given object. This returns the 'is' values for every state + # available on the object type. + def describe(type, name, retrieve = nil, ignore = [], format = "yaml", client = nil, clientip = nil) + Puppet.info "Describing %s[%s]" % [type.to_s.capitalize, name] + @local = true unless client + typeklass = nil + unless typeklass = Puppet.type(type) + raise Puppet::Error, "Puppet type %s is unsupported" % type + end + + obj = nil + + retrieve ||= :all + ignore ||= [] + + if obj = typeklass[name] + obj[:check] = retrieve + else + begin + obj = typeklass.create(:name => name, :check => retrieve) + rescue Puppet::Error => detail + raise Puppet::Error, "%s[%s] could not be created: %s" % + [type, name, detail] + end + end + + unless obj + raise XMLRPC::FaultException.new( + 1, "Could not create %s[%s]" % [type, name] + ) + end + + trans = obj.to_trans + + # Now get rid of any attributes they specifically don't want + ignore.each do |st| + if trans.include? st + trans.delete(st) + end + end + + # And get rid of any attributes that are nil + trans.each do |attr, value| + if value.nil? + trans.delete(attr) + end + end + + unless @local + case format + when "yaml": + trans = Base64.encode64(YAML::dump(trans)) + else + raise XMLRPC::FaultException.new( + 1, "Unavailable config format %s" % format + ) + end + end + + return trans + end + + # Create a new fileserving module. + def initialize(hash = {}) + if hash[:Local] + @local = hash[:Local] + else + @local = false + end + end + + # List all of the elements of a given type. + def list(type, ignore = [], base = nil, format = "yaml", client = nil, clientip = nil) + @local = true unless client + typeklass = nil + unless typeklass = Puppet.type(type) + raise Puppet::Error, "Puppet type %s is unsupported" % type + end + + # They can pass in false + ignore ||= [] + ignore = [ignore] unless ignore.is_a? Array + bucket = TransBucket.new + bucket.type = typeklass.name + + typeklass.list.each do |obj| + next if ignore.include? obj.name + + object = TransObject.new(obj.name, typeklass.name) + bucket << object + end + + unless @local + case format + when "yaml": + begin + bucket = Base64.encode64(YAML::dump(bucket)) + rescue => detail + Puppet.err detail + raise XMLRPC::FaultException.new( + 1, detail.to_s + ) + end + else + raise XMLRPC::FaultException.new( + 1, "Unavailable config format %s" % format + ) + end + end + + return bucket + end + + private + + def authcheck(file, mount, client, clientip) + unless mount.allowed?(client, clientip) + mount.warning "%s cannot access %s" % + [client, file] + raise Puppet::Server::AuthorizationError, "Cannot access %s" % mount + end + end + + # Deal with ignore parameters. + def handleignore(children, path, ignore) + ignore.each { |ignore| + Dir.glob(File.join(path,ignore), File::FNM_DOTMATCH) { |match| + children.delete(File.basename(match)) + } + } + return children + end + + def to_s + "resource" + end +end +end + +# $Id$ -- cgit