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