Class: Jets::Stack
- Inherits:
-
Object
show all
- Extended by:
- Memoist
- Includes:
- Main::Dsl, Output::Dsl, Parameter::Dsl, Resource::Dsl
- Defined in:
- lib/jets/stack/output.rb,
lib/jets/stack.rb,
lib/jets/stack/main.rb,
lib/jets/stack/builder.rb,
lib/jets/stack/depends.rb,
lib/jets/stack/function.rb,
lib/jets/stack/main/dsl.rb,
lib/jets/stack/resource.rb,
lib/jets/stack/s3_event.rb,
lib/jets/stack/parameter.rb,
lib/jets/stack/definition.rb,
lib/jets/stack/output/dsl.rb,
lib/jets/stack/resource/dsl.rb,
lib/jets/stack/parameter/dsl.rb
Overview
Class that include Definition should implement:
template - method should use @definition to build a CloudFormation template section
Defined Under Namespace
Modules: Definition
Classes: Builder, Depends, Function, Main, Output, Parameter, Resource, S3Event
Class Method Summary
collapse
#resources
#outputs
#add_common_parameters, #add_depends_on_parameters, #dependency_outputs, #parameters
Methods included from Main::Dsl
included
Class Method Details
.build? ⇒ Boolean
Build it to figure out if we need to build the stack for the SharedBuilder
36
37
38
39
|
# File 'lib/jets/stack.rb', line 36
def build?
empty = template == {"Parameters"=>{"IamRole"=>{"Type"=>"String"}, "S3Bucket"=>{"Type"=>"String"}}}
!empty
end
|
.eager_load_shared_resources! ⇒ Object
76
77
78
|
# File 'lib/jets/stack.rb', line 76
def eager_load_shared_resources!
Jets::Autoloaders.main.eager_load
end
|
.functions ⇒ Object
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/jets/stack.rb', line 41
def functions
stack = new
templates = stack.resources&.map(&:template)&.select do |t|
attributes = t.values.first
attributes['Type'] == 'AWS::Lambda::Function'
end
templates ||= []
templates.map { |t| Function.new(t) }
end
|
.has_resources? ⇒ Boolean
68
69
70
71
72
73
74
|
# File 'lib/jets/stack.rb', line 68
def has_resources?
eager_load_shared_resources!
!!subclasses.detect do |subclass|
subclass.build?
end
end
|
.inherited(base) ⇒ Object
16
17
18
19
|
# File 'lib/jets/stack.rb', line 16
def inherited(base)
super
self.subclasses << base if base.name
end
|
.lookup(logical_id) ⇒ Object
80
81
82
|
# File 'lib/jets/stack.rb', line 80
def lookup(logical_id)
looker.output(logical_id)
end
|
.new_class(class_name, &block) ⇒ Object
klass = Jets::Stack.new_class(“Bucket3”)
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/jets/stack.rb', line 22
def new_class(class_name, &block)
klass = Class.new(Jets::Stack) klass = Object.const_set(class_name, klass) Jets::Stack.subclasses << klass
klass.class_eval(&block)
klass end
|
.output_keys ⇒ Object
89
90
91
92
|
# File 'lib/jets/stack.rb', line 89
def output_keys
outputs = new.outputs || []
outputs.map(&:template).map {|o| o.keys.first}
end
|
.subclasses ⇒ Object
Track all command subclasses.
12
13
14
|
# File 'lib/jets/stack.rb', line 12
def subclasses
@subclasses ||= []
end
|
.template ⇒ Object
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/jets/stack.rb', line 52
def template
builder = Jets::Stack::Builder.new(new)
builder.template
end
|