Project

General

Profile

Download (2.09 KB) Statistics
| Branch: | Tag: | Revision:
class SmartProxy
def puppet_setup(opts = {})
raise "Smart Proxy is not configured to support Puppet runs" unless SETTINGS.puppet
case SETTINGS.puppet_provider
when "puppetrun"
require 'proxy/puppet/puppetrun'
@server = Proxy::Puppet::PuppetRun.new(opts)
when "mcollective"
require 'proxy/puppet/mcollective'
@server = Proxy::Puppet::MCollective.new(opts)
when "puppetssh"
require 'proxy/puppet/puppet_ssh'
@server = Proxy::Puppet::PuppetSSH.new(opts)
when "salt"
require 'proxy/puppet/salt'
@server = Proxy::Puppet::Salt.new(opts)
when "customrun"
require 'proxy/puppet/customrun'
@server = Proxy::Puppet::CustomRun.new(opts)
else
log_halt 400, "Unrecognized or missing puppet_provider: #{SETTINGS.puppet_provider || "MISSING"}"
end
rescue => e
log_halt 400, e
end

post "/puppet/run" do
nodes = params[:nodes]
begin
log_halt 400, "Failed puppet run: No nodes defined" unless nodes
log_halt 500, "Failed puppet run: Check Log files" unless puppet_setup(:nodes => [nodes].flatten).run
rescue => e
log_halt 500, "Failed puppet run: #{e}"
end
end

get "/puppet/environments" do
content_type :json
begin
Proxy::Puppet::Environment.all.map(&:name).to_json
rescue => e
log_halt 406, "Failed to list puppet environments: #{e}"
end
end

get "/puppet/environments/:environment" do
content_type :json
begin
env = Proxy::Puppet::Environment.find(params[:environment])
log_halt 404, "Not found" unless env
{:name => env.name, :paths => env.paths}.to_json
rescue => e
log_halt 406, "Failed to show puppet environment: #{e}"
end
end

get "/puppet/environments/:environment/classes" do
content_type :json
begin
env = Proxy::Puppet::Environment.find(params[:environment])
log_halt 404, "Not found" unless env
env.classes.map{|k| {k.to_s => { :name => k.name, :module => k.module, :params => k.params} } }.to_json
rescue => e
log_halt 406, "Failed to show puppet classes: #{e}"
end
end
end
(11-11/16)