Class: Kelbim::DSL::EC2::LoadBalancer

Inherits:
Object
  • Object
show all
Includes:
Checker
Defined in:
lib/kelbim/dsl/listener.rb,
lib/kelbim/dsl/listeners.rb,
lib/kelbim/dsl/attributes.rb,
lib/kelbim/dsl/health-check.rb,
lib/kelbim/dsl/load-balancer.rb

Defined Under Namespace

Classes: Attributes, HealthCheck, Listeners

Instance Method Summary collapse

Constructor Details

#initialize(name, vpc, internal, &block) ⇒ LoadBalancer

Returns a new instance of LoadBalancer.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/kelbim/dsl/load-balancer.rb', line 13

def initialize(name, vpc, internal, &block)
  @name = name
  @vpc = vpc
  @error_identifier = "LoadBalancer `#{name}`"

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

  instance_eval(&block)
end

Instance Method Details

#attributes(&block) ⇒ Object



68
69
70
71
# File 'lib/kelbim/dsl/load-balancer.rb', line 68

def attributes(&block)
  call_once(:attributes)
  @result.attributes = Attributes.new(@name, &block).result
end

#availability_zones(*values) ⇒ Object



85
86
87
88
89
# File 'lib/kelbim/dsl/load-balancer.rb', line 85

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) ⇒ Object



63
64
65
66
# File 'lib/kelbim/dsl/load-balancer.rb', line 63

def health_check(&block)
  call_once(:health_check)
  @result.health_check = HealthCheck.new(@name, &block).result
end

#instances(*values) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/kelbim/dsl/load-balancer.rb', line 48

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) ⇒ Object



58
59
60
61
# File 'lib/kelbim/dsl/load-balancer.rb', line 58

def listeners(&block)
  call_once(:listeners)
  @result.listeners = Listeners.new(@name, &block).result
end

#resultObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/kelbim/dsl/load-balancer.rb', line 28

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) ⇒ Object



79
80
81
82
83
# File 'lib/kelbim/dsl/load-balancer.rb', line 79

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) ⇒ Object



43
44
45
46
# File 'lib/kelbim/dsl/load-balancer.rb', line 43

def spec(&block)
  call_once(:spec)
  @result.spec = block
end

#subnets(*values) ⇒ Object



73
74
75
76
77
# File 'lib/kelbim/dsl/load-balancer.rb', line 73

def subnets(*values)
  call_once(:subnets)
  raise "#{@error_identifier}: Subnet cannot be specified in EC2-Classic" unless @vpc
  @result.subnets = values
end