class Inprovise::Infrastructure::Group
Public Class Methods
json_create(o)
click to toggle source
# File lib/inprovise/group.rb, line 67 def self.json_create(o) data = o['data'] new(data['name'], Inprovise::Infrastructure.symbolize_keys(data['config']), data['targets']) end
new(name, config={}, targets=[])
click to toggle source
Calls superclass method
Inprovise::Infrastructure::Target::new
# File lib/inprovise/group.rb, line 10 def initialize(name, config={}, targets=[]) @targets = targets.collect {|t| Inprovise::Infrastructure::Target === t ? t.name : t.to_s } super(name, config) end
Public Instance Methods
add_target(tgt)
click to toggle source
# File lib/inprovise/group.rb, line 19 def add_target(tgt) tgt = Inprovise::Infrastructure::Target === tgt ? tgt : Inprovise::Infrastructure.find(tgt.to_s) raise ArgumentError, "Circular reference detected in [#{tgt.to_s}] to [#{self.to_s}]" if tgt.includes?(self) @targets << (Inprovise::Infrastructure::Target === tgt ? tgt.name : tgt.to_s) end
includes?(tgt)
click to toggle source
# File lib/inprovise/group.rb, line 47 def includes?(tgt) tgtname = Inprovise::Infrastructure::Target === tgt ? tgt.name : tgt.to_s @targets.include?(tgtname) || @targets.any? {|t| Inprovise::Infrastructure.find(t).includes?(tgtname) } end
remove_target(tgt)
click to toggle source
# File lib/inprovise/group.rb, line 25 def remove_target(tgt) @targets.delete(Inprovise::Infrastructure::Target === tgt ? tgt.name : tgt.to_s) end
targets()
click to toggle source
# File lib/inprovise/group.rb, line 29 def targets @targets.collect {|t| Inprovise::Infrastructure.find(t).targets }.flatten.uniq end
targets_with_config()
click to toggle source
# File lib/inprovise/group.rb, line 33 def targets_with_config @targets.inject({}) do |hsh, t| Inprovise::Infrastructure.find(t).targets_with_config.each do |tgt, cfg| if hsh.has_key?(tgt) hsh[tgt].merge!(cfg) else hsh[tgt] = cfg end hsh[tgt].merge!(config) end hsh end end
to_json(*a)
click to toggle source
# File lib/inprovise/group.rb, line 56 def to_json(*a) { JSON.create_id => self.class.name, :data => { :name => name, :config => config, :targets => @targets } }.to_json(*a) end
to_s()
click to toggle source
# File lib/inprovise/group.rb, line 52 def to_s "Group:#{name}" end
unresolved_targets()
click to toggle source
# File lib/inprovise/group.rb, line 15 def unresolved_targets @targets.collect {|t| Inprovise::Infrastructure.find(t) } end