diff options
author | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-02-14 17:15:52 +0100 |
---|---|---|
committer | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-02-16 20:12:11 +0100 |
commit | e317fa9717e648435dbbc62497d73f803b7b2760 (patch) | |
tree | ecca31f78e118848ea83188368f980ec5e7ff6ad /bin | |
parent | 81f5438f663820748d3bd580d7436619ed57b6f0 (diff) | |
download | puppet-e317fa9717e648435dbbc62497d73f803b7b2760.tar.gz puppet-e317fa9717e648435dbbc62497d73f803b7b2760.tar.xz puppet-e317fa9717e648435dbbc62497d73f803b7b2760.zip |
Move ralsh to the Application Controller paradigm
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/ralsh | 187 |
1 files changed, 2 insertions, 185 deletions
@@ -85,188 +85,5 @@ # Copyright (c) 2005-2007 Reductive Labs, LLC # Licensed under the GNU Public License - -require 'getoptlong' -require 'puppet' - -options = [ - [ "--debug", "-d", GetoptLong::NO_ARGUMENT ], - [ "--verbose", "-v", GetoptLong::NO_ARGUMENT ], - [ "--types", "-t", GetoptLong::NO_ARGUMENT ], - [ "--param", "-p", GetoptLong::REQUIRED_ARGUMENT ], - [ "--host", "-H", GetoptLong::REQUIRED_ARGUMENT ], - [ "--edit", "-e", GetoptLong::NO_ARGUMENT ], - [ "--help", "-h", GetoptLong::NO_ARGUMENT ] -] - -# Add all of the config parameters as valid options. -Puppet.settings.addargs(options) - -result = GetoptLong.new(*options) - -debug = false -verbose = false -edit = false -extra_params = [] -host = nil - -result.each { |opt,arg| - case opt - when "--host" - host = arg - when "--types" - types = [] - Puppet::Type.loadall - Puppet::Type.eachtype do |t| - next if t.name == :component - types << t.name.to_s - end - puts types.sort - exit - when "--param" - extra_params << arg.to_sym - when "--edit" - edit = true - when "--help" - if Puppet.features.usage? - RDoc::usage - else - puts "install RDoc:usage for help" - end - exit - when "--verbose" - verbose = true - when "--debug" - debug = true - else - # Anything else is handled by the config stuff - Puppet.settings.handlearg(opt, arg) - end -} - -Puppet::Util::Log.newdestination(:console) - -# Now parse the config -Puppet.parse_config - -if debug - Puppet::Util::Log.level = :debug -elsif verbose - Puppet::Util::Log.level = :info -end - - -if ARGV.length > 0 - type = ARGV.shift -else - raise "You must specify the type to display" -end - -name = nil -params = {} -if ARGV.length > 0 - name = ARGV.shift -end - -if ARGV.length > 0 - ARGV.each do |setting| - if setting =~ /^(\w+)=(.+)$/ - params[$1] = $2 - else - raise "Invalid parameter setting %s" % setting - end - end -end - -if edit and host - raise "You cannot edit a remote host" -end - -typeobj = nil - -unless typeobj = Puppet::Type.type(type) - raise "Could not find type %s" % type -end - -properties = typeobj.properties.collect { |s| s.name } - -format = proc {|trans| - trans.dup.collect do |param, value| - if value.nil? or value.to_s.empty? - trans.delete(param) - elsif value.to_s == "absent" and param.to_s != "ensure" - trans.delete(param) - end - - unless properties.include?(param) or extra_params.include?(param) - trans.delete(param) - end - end - trans.to_manifest -} - -text = if host - client = Puppet::Network::Client.resource.new(:Server => host, :Port => Puppet[:puppetport]) - unless client.read_cert - raise "client.read_cert failed" - end - begin - # They asked for a single resource. - if name - transbucket = [client.describe(type, name)] - else - # Else, list the whole thing out. - transbucket = client.instances(type) - end - rescue Puppet::Network::XMLRPCClientError => exc - raise "client.list(#{type}) failed: #{exc.message}" - end - transbucket.sort { |a,b| a.name <=> b.name }.collect(&format) -else - if name - obj = typeobj.create(:name => name, :check => properties) - vals = obj.retrieve - - unless params.empty? - params.each do |param, value| - obj[param] = value - end - catalog = Puppet::Resource::Catalog.new - catalog.add_resource obj - begin - catalog.apply - rescue => detail - if Puppet[:trace] - puts detail.backtrace - end - end - - end - [format.call(obj.to_trans(true))] - else - typeobj.instances.collect do |obj| - next if ARGV.length > 0 and ! ARGV.include? obj.name - trans = obj.to_trans(true) - format.call(trans) - end - end -end.compact.join("\n") - -if edit - file = "/tmp/x2puppet-#{Process.pid}.pp" - begin - File.open(file, "w") do |f| - f.puts text - end - ENV["EDITOR"] ||= "vi" - system(ENV["EDITOR"], file) - system("puppet -v " + file) - ensure - #if FileTest.exists? file - # File.unlink(file) - #end - end -else - puts text -end - +require 'puppet/application/ralsh' +Puppet::Application[:ralsh].run |