Class: WebPuppet::App
- Inherits:
-
Object
- Object
- WebPuppet::App
- Defined in:
- lib/web-puppet.rb
Class Method Summary collapse
Instance Method Summary collapse
- #add_auth(conf) ⇒ Object
- #call(env) ⇒ Object
-
#initialize(filters = []) ⇒ App
constructor
A new instance of App.
Constructor Details
#initialize(filters = []) ⇒ App
Returns a new instance of App.
10 11 12 |
# File 'lib/web-puppet.rb', line 10 def initialize(filters=[]) @filters = filters end |
Class Method Details
.run!(options) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/web-puppet.rb', line 54 def self.run!() conf = [:config] ? ParseConfig.new([:config]) : false if conf && conf.get_value('filters') application = self.new(conf.get_value('filters').split(',')) else application = self.new end daemonize = [:daemonize] port = [:port] if conf application = application.add_auth(conf) if conf.get_value('password') daemonize = conf.get_value('daemonize') ? conf.get_value('daemonize') == "true" : daemonize port = conf.get_value('port') ? conf.get_value('port') : port end Rack::Server.new(:app => application, :Port => port, :daemonize => daemonize).start end |
Instance Method Details
#add_auth(conf) ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/web-puppet.rb', line 43 def add_auth(conf) application = Rack::Auth::Basic.new(self) do |username, password| stored_username = conf.get_value('username') username_check = stored_username ? stored_username == username : true password_check = conf.get_value('password') == password username_check && password_check end application.realm = 'Web Puppet' application end |
#call(env) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/web-puppet.rb', line 14 def call env Puppet[:config] = "/etc/puppet/puppet.conf" Puppet.parse_config Puppet[:clientyamldir] = Puppet[:yamldir] Puppet::Node.indirection.terminus_class = :yaml nodes = Puppet::Node.indirection.search("*") data = {} nodes.each do |n| facts = Puppet::Node::Facts.indirection.find(n.name) = Puppet::Resource::Catalog.indirection.find(n.name). @filters.each do |filter| facts.values.delete(filter.strip) end data[n.name] = { :facts => facts.values, :tags => } end response = Rack::Response.new response.header['Content-Type'] = 'application/json' response.write JSON.pretty_generate(data) response.finish end |