Class: Stacco::Layer

Inherits:
Object
  • Object
show all
Defined in:
lib/stacco/layer.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(stack, name, config) ⇒ Layer

Returns a new instance of Layer.



8
9
10
11
12
13
# File 'lib/stacco/layer.rb', line 8

def initialize(stack, name, config)
  @stack = stack
  @name = name.gsub(/^task-/, '')
  @is_task = (not name.scan(/^task-/).empty?)
  @config = config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



19
20
21
# File 'lib/stacco/layer.rb', line 19

def config
  @config
end

#nameObject (readonly)

Returns the value of attribute name.



19
20
21
# File 'lib/stacco/layer.rb', line 19

def name
  @name
end

#stackObject (readonly)

Returns the value of attribute stack.



19
20
21
# File 'lib/stacco/layer.rb', line 19

def stack
  @stack
end

Class Method Details

.load(stack, name) ⇒ Object



4
5
6
# File 'lib/stacco/layer.rb', line 4

def self.load(stack, name)
  self.new(stack, name, Stacco::Resources::LayerTemplates[name])
end

Instance Method Details

#condition_definitionsObject



58
59
60
# File 'lib/stacco/layer.rb', line 58

def condition_definitions
  @config['Conditions'] || {}
end

#enabled?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/stacco/layer.rb', line 15

def enabled?
  @stack.enabled_layer_names.include? self.name
end

#full_nameObject



33
34
35
# File 'lib/stacco/layer.rb', line 33

def full_name
  [@stack.name, self.name].join('/')
end

#has_live_resources?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/stacco/layer.rb', line 41

def has_live_resources?
  not self.resource_summaries.empty?
end

#inspectObject



37
38
39
# File 'lib/stacco/layer.rb', line 37

def inspect
  "#<layer #{self.full_name}: #{self.resource_definitions.length} resource(s) defined>"
end

#output_definitionsObject



71
72
73
# File 'lib/stacco/layer.rb', line 71

def output_definitions
  @config['Outputs'] || {}
end

#parameter_definitionsObject



75
76
77
# File 'lib/stacco/layer.rb', line 75

def parameter_definitions
  @config['Parameters'] || {}
end

#resource_definitionsObject



62
63
64
# File 'lib/stacco/layer.rb', line 62

def resource_definitions
  @config['Resources'] || {}
end

#resource_summariesObject



66
67
68
69
# File 'lib/stacco/layer.rb', line 66

def resource_summaries
  provided_resource_names = self.resource_definitions.keys
  @stack.resource_summaries.find_all{ |rsum| provided_resource_names.include? rsum[:logical_resource_id] }
end

#service?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/stacco/layer.rb', line 25

def service?
  not @is_task
end

#stateObject



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/stacco/layer.rb', line 45

def state
  case [self.enabled?, self.has_live_resources?]
  when [false, false]
    :down
  when [false, true]
    :zombie
  when [true, false]
    :queued
  when [true, true]
    :healthy
  end
end

#task?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/stacco/layer.rb', line 21

def task?
  @is_task
end

#to_sObject



29
30
31
# File 'lib/stacco/layer.rb', line 29

def to_s
  [('task' if @is_task), @name].compact.join('-')
end