Project

General

Profile

Download (1.22 KB) Statistics
| Branch: | Tag: | Revision:
module ProxyAPI
class Puppet < ProxyAPI::Resource
def initialize(args)
@url = args[:url] + "/puppet"
super args
end

def environments
parse(get("environments"))
rescue => e
raise ProxyException.new(url, e, N_("Unable to get environments from Puppet"))
end

def environment(env)
parse(get("environments/#{env}"))
rescue => e
raise ProxyException.new(url, e, N_("Unable to get environment from Puppet"))
end

def classes(env)
return if env.blank?
pcs = parse(get("environments/#{env}/classes"))
Hash[pcs.map { |k| [k.keys.first, Foreman::ImporterPuppetclass.new(k.values.first)] }]
rescue RestClient::ResourceNotFound
{}
rescue => e
raise ProxyException.new(url, e, N_("Unable to get classes from Puppet for %s"), env)
end

def class_count(env)
return if env.blank?
pcs = parse(get("environments/#{env}/classes"))
pcs.length
rescue => e
raise ProxyException.new(url, e, N_("Unable to get classes from Puppet for %s"), env)
end

def run(hosts)
parse(post({:nodes => hosts}, "run"))
rescue => e
raise ProxyException.new(url, e, N_("Unable to execute Puppet run"))
end
end
end
(7-7/13)