module Inprovise::Infrastructure
Public Class Methods
deregister(tgt)
click to toggle source
# File lib/inprovise/infra.rb, line 51 def deregister(tgt) targets.synchronize do raise ArgumentError, "Invalid infrastructure target [#{tgt.to_s}]" unless targets.delete(Target === tgt ? tgt.name : tgt.to_s) targets.each_value {|t| t.remove_target(tgt) } end end
find(name)
click to toggle source
# File lib/inprovise/infra.rb, line 25 def find(name) return name if name.is_a?(Target) targets.synchronize do return targets[name] end end
init(path)
click to toggle source
# File lib/inprovise/infra.rb, line 66 def init(path) File.open(path, 'w') {|f| f << JSON.pretty_generate([]) } end
list(type=Target)
click to toggle source
# File lib/inprovise/infra.rb, line 38 def list(type=Target) targets.synchronize do targets.values.select {|t| type === t} end end
load()
click to toggle source
# File lib/inprovise/infra.rb, line 70 def load targets.synchronize do JSON.load(IO.read(Inprovise.infra)) if File.readable?(Inprovise.infra) end end
names()
click to toggle source
# File lib/inprovise/infra.rb, line 32 def names targets.synchronize do targets.keys.sort end end
register(tgt)
click to toggle source
# File lib/inprovise/infra.rb, line 44 def register(tgt) targets.synchronize do raise ArgumentError, "Existing [#{targets[tgt.name].to_s}] found" if targets.has_key?(tgt.name) targets[tgt.name] = tgt end end
save()
click to toggle source
# File lib/inprovise/infra.rb, line 58 def save targets.synchronize do data = [] targets.keys.sort.each {|t| targets[t].is_a?(Node) ? data.insert(0,targets[t]) : data.push(targets[t]) } File.open(Inprovise.infra, 'w') {|f| f << JSON.pretty_generate(data) } end end
symbolize_keys(hsh)
click to toggle source
# File lib/inprovise/infra.rb, line 14 def self.symbolize_keys(hsh) return hsh unless ::Hash === hsh hsh.reduce({}) {|h, (k,v)| h[k.to_sym] = symbolize_keys(v); h } end
Private Class Methods
targets()
click to toggle source
# File lib/inprovise/infra.rb, line 20 def targets @targets ||= ::Hash.new.extend(::MonitorMixin) end