Class: Stackit::ManagedStackService

Inherits:
Object
  • Object
show all
Defined in:
lib/stackit/stack/managed_stack_service.rb

Direct Known Subclasses

OpsWorksManagedStackService

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ ManagedStackService

Returns a new instance of ManagedStackService.



9
10
11
# File 'lib/stackit/stack/managed_stack_service.rb', line 9

def initialize(options)
  self.options = options || {}
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



5
6
7
# File 'lib/stackit/stack/managed_stack_service.rb', line 5

def options
  @options
end

#stack_actionObject

Returns the value of attribute stack_action.



7
8
9
# File 'lib/stackit/stack/managed_stack_service.rb', line 7

def stack_action
  @stack_action
end

#stacksObject

Returns the value of attribute stacks.



6
7
8
# File 'lib/stackit/stack/managed_stack_service.rb', line 6

def stacks
  @stacks
end

Instance Method Details

#capabilitiesObject



102
103
104
# File 'lib/stackit/stack/managed_stack_service.rb', line 102

def capabilities
  options[:capabilities]
end

#change_set!Object



28
29
30
31
# File 'lib/stackit/stack/managed_stack_service.rb', line 28

def change_set!
  self.stack_action = :change_set!
  final_stack.change_set!
end

#change_set_nameObject



122
123
124
# File 'lib/stackit/stack/managed_stack_service.rb', line 122

def change_set_name
  options[:change_set_name]
end

#create!Object



13
14
15
16
# File 'lib/stackit/stack/managed_stack_service.rb', line 13

def create!
  self.stack_action = :create!
  final_stack.create!
end

#debugObject



90
91
92
# File 'lib/stackit/stack/managed_stack_service.rb', line 90

def debug
  !!options[:debug]
end

#delete!Object



23
24
25
26
# File 'lib/stackit/stack/managed_stack_service.rb', line 23

def delete!
  self.stack_action = :delete!
  final_stack.delete!
end

#dependsObject



54
55
56
# File 'lib/stackit/stack/managed_stack_service.rb', line 54

def depends
  options[:depends]
end

#depends_on(deps) ⇒ Object



58
59
60
# File 'lib/stackit/stack/managed_stack_service.rb', line 58

def depends_on(deps)
  options[:depends] = deps
end

#depends_stacksObject



151
152
153
154
155
156
157
158
159
# File 'lib/stackit/stack/managed_stack_service.rb', line 151

def depends_stacks
  return @depends_stacks unless @depends_stacks.nil?
  @depends_stacks = []
  return @depends_stacks unless options[:depends]
  options[:depends].each do |stack|
    @depends_stacks << Stackit::Stack.new(stack_name: stack)
  end
  @depends_stacks
end

#disable_rollbackObject



74
75
76
# File 'lib/stackit/stack/managed_stack_service.rb', line 74

def disable_rollback
  !!options[:debug] ? true : !!options[:disable_rollback]
end

#dry_runObject



86
87
88
# File 'lib/stackit/stack/managed_stack_service.rb', line 86

def dry_run
   options[:dry_run]
end

#forceObject



82
83
84
# File 'lib/stackit/stack/managed_stack_service.rb', line 82

def force
  options[:force]
end

#notification_arnsObject



98
99
100
# File 'lib/stackit/stack/managed_stack_service.rb', line 98

def notification_arns
  options[:notification_arns]
end

#on_failureObject



110
111
112
# File 'lib/stackit/stack/managed_stack_service.rb', line 110

def on_failure
  options[:on_failure]
end

#parameter_mappingsObject



62
63
64
# File 'lib/stackit/stack/managed_stack_service.rb', line 62

def parameter_mappings
  {}
end

#parameters_fileObject



49
50
51
52
# File 'lib/stackit/stack/managed_stack_service.rb', line 49

def parameters_file
  return options[:parameters_file] ||
    File.expand_path("#{options[:stack_name]}.parameters", template_dir)
end

#resolve_parameter(key) ⇒ Object



165
166
167
168
# File 'lib/stackit/stack/managed_stack_service.rb', line 165

def resolve_parameter(key)
  Stackit.logger.debug "Resolving parameter: #{key}"
  Stackit::ParameterResolver.new(depends_stacks).resolve(key)
end

#resolve_parameters(keys) ⇒ Object



170
171
172
173
# File 'lib/stackit/stack/managed_stack_service.rb', line 170

def resolve_parameters(keys)
  Stackit.logger.debug "Resolving parameters: #{keys.join(', ')}"
  Stackit::ParameterResolver.new(depends_stacks).resolve(keys)
end

#retain_resourcesObject



114
115
116
# File 'lib/stackit/stack/managed_stack_service.rb', line 114

def retain_resources
  options[:retain_resources]
end

#stackObject



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/stackit/stack/managed_stack_service.rb', line 126

def stack
  @stack ||= ManagedStack.new(
    template: template,
    stack_name: stack_name,
    stack_policy: stack_policy,
    stack_policy_during_update: stack_policy_during_update,
    depends: depends,
    parameters_file: parameters_file,
    parameter_map: parameter_mappings,
    disable_rollback: disable_rollback,
    wait: wait,
    force: force,
    dry_run: dry_run,
    debug: debug,
    timeout_in_minutes: timeout_in_minutes,
    notification_arns: notification_arns,
    capabilities: capabilities,
    tags: tags,
    on_failure: on_failure,
    use_previous_template: use_previous_template,
    retain_resources: retain_resources,
    change_set_name: change_set_name
  )
end

#stack_nameObject



33
34
35
# File 'lib/stackit/stack/managed_stack_service.rb', line 33

def stack_name
  options[:stack_name] || "#{Stackit.environment}-#{options[:stack_name]}"
end

#stack_policyObject



41
42
43
# File 'lib/stackit/stack/managed_stack_service.rb', line 41

def stack_policy
  options[:template]
end

#stack_policy_during_updateObject



45
46
47
# File 'lib/stackit/stack/managed_stack_service.rb', line 45

def stack_policy_during_update
  options[:stack_policy_during_update]
end

#tagsObject



106
107
108
# File 'lib/stackit/stack/managed_stack_service.rb', line 106

def tags
  options[:tags]
end

#templateObject



37
38
39
# File 'lib/stackit/stack/managed_stack_service.rb', line 37

def template
  options[:template] || File.expand_path("#{options[:stack_name]}.json", template_dir)
end

#template_dirObject



70
71
72
# File 'lib/stackit/stack/managed_stack_service.rb', line 70

def template_dir
  dir = options[:template_dir] ? options[:template_dir] : __dir__
end

#timeout_in_minutesObject



94
95
96
# File 'lib/stackit/stack/managed_stack_service.rb', line 94

def timeout_in_minutes
  options[:timeout_in_minutes]
end

#update!Object



18
19
20
21
# File 'lib/stackit/stack/managed_stack_service.rb', line 18

def update!
  self.stack_action = :update!
  final_stack.update!
end

#use_previous_templateObject



118
119
120
# File 'lib/stackit/stack/managed_stack_service.rb', line 118

def use_previous_template
  options[:use_previous_template]
end

#user_defined_parametersObject



66
67
68
# File 'lib/stackit/stack/managed_stack_service.rb', line 66

def user_defined_parameters
  {}
end

#waitObject



78
79
80
# File 'lib/stackit/stack/managed_stack_service.rb', line 78

def wait
  options[:wait]
end