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



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

def capabilities
  options[:capabilities]
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



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

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



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

def depends
  options[:depends]
end

#depends_stacksObject



137
138
139
140
141
142
143
144
145
# File 'lib/stackit/stack/managed_stack_service.rb', line 137

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



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

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

#dry_runObject



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

def dry_run
   options[:dry_run]
end

#forceObject



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

def force
  options[:force]
end

#notification_arnsObject



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

def notification_arns
  options[:notification_arns]
end

#on_failureObject



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

def on_failure
  options[:on_failure]
end

#parameter_mappingsObject



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

def parameter_mappings
  {}
end

#parameters_fileObject



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

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

#resolve_parameter(key) ⇒ Object



151
152
153
# File 'lib/stackit/stack/managed_stack_service.rb', line 151

def resolve_parameter(key)
  Stackit::ParameterResolver.new(depends_stacks).resolve(key)
end

#resolve_parameters(keys) ⇒ Object



155
156
157
# File 'lib/stackit/stack/managed_stack_service.rb', line 155

def resolve_parameters(keys)
  Stackit::ParameterResolver.new(depends_stacks).resolve(keys)
end

#retain_resourcesObject



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

def retain_resources
  options[:retain_resources]
end

#stackObject



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/stackit/stack/managed_stack_service.rb', line 113

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
  )
end

#stack_nameObject



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

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

#stack_policyObject



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

def stack_policy
  options[:template]
end

#stack_policy_during_updateObject



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

def stack_policy_during_update
  options[:stack_policy_during_update]
end

#tagsObject



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

def tags
  options[:tags]
end

#templateObject



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

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

#template_dirObject



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

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

#timeout_in_minutesObject



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

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



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

def use_previous_template
  options[:use_previous_template]
end

#user_defined_parametersObject



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

def user_defined_parameters
  {}
end

#waitObject



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

def wait
  options[:wait]
end