class Kelbim::DSL::EC2::LoadBalancer

Public Class Methods

new(context, name, vpc, internal, &block) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 8
def initialize(context, name, vpc, internal, &block)
  @name = name
  @vpc = vpc
  @error_identifier = "LoadBalancer `#{name}`"
  @context = context.merge(:load_balancer_name => name)

  @result = OpenStruct.new({
    :name      => name,
    :instances => [],
    :internal  => internal,
    :scheme    => internal ? 'internal' : 'internet-facing',
  })

  instance_eval(&block)
end

Public Instance Methods

any_instances() click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 54
def any_instances
  call_once(:instances)
  @result.any_instances = true
end
attributes(&block) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 69
def attributes(&block)
  call_once(:attributes)
  @result.attributes = Attributes.new(@context, @name, &block).result
end
availability_zones(*values) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 86
def availability_zones(*values)
  call_once(:availability_zone)
  raise "#{@error_identifier}: SecurityGroup cannot be specified in EC2-VPC" if @vpc
  @result.availability_zones = values
end
health_check(&block) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 64
def health_check(&block)
  call_once(:health_check)
  @result.health_check = HealthCheck.new(@context, @name, &block).result
end
instances(*values) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 44
def instances(*values)
  call_once(:instances)

  values.each do |instance_id_or_name|
    instance_id = instance_id_or_name
    not_include(instance_id_or_name, @result.instances)
    @result.instances << instance_id
  end
end
listeners(&block) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 59
def listeners(&block)
  call_once(:listeners)
  @result.listeners = Listeners.new(@context, @name, &block).result
end
result() click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 24
def result
  required(:listeners, @result.listeners)
  required(:health_check, @result.health_check)
  #required(:attributes, @result.attributes)

  if @vpc
    required(:subnets, @result.subnets)
    required(:security_groups, @result.security_groups)
  else
    required(:availability_zones, @result.availability_zones)
  end

  @result
end
security_groups(*values) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 80
def security_groups(*values)
  call_once(:security_groups)
  raise "#{@error_identifier}: SecurityGroup cannot be specified in EC2-Classic" unless @vpc
  @result.security_groups = values
end
spec(&block) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 39
def spec(&block)
  call_once(:spec)
  @result.spec = block
end
subnets(*values) click to toggle source
# File lib/kelbim/dsl/load-balancer.rb, line 74
def subnets(*values)
  call_once(:subnets)
  raise "#{@error_identifier}: Subnet cannot be specified in EC2-Classic" unless @vpc
  @result.subnets = values
end