Class: Ufo::Cfn::Stack::Builder::Resources::TaskDefinition::Reconstructor

Inherits:
Object
  • Object
show all
Includes:
AwsServices
Defined in:
lib/ufo/cfn/stack/builder/resources/task_definition/reconstructor.rb

Instance Method Summary collapse

Methods included from AwsServices

#acm, #applicationautoscaling, #aws_options, #cfn, #cloudwatchlogs, #ec2, #ecr, #ecs, #elb, #s3, #ssm_client, #waf_client

Methods included from AwsServices::Concerns

#find_stack, #find_stack_resources, #stack_resources, #status, #task_definition_arns

Constructor Details

#initialize(task_definition, rollback = false) ⇒ Reconstructor

Returns a new instance of Reconstructor.



5
6
7
# File 'lib/ufo/cfn/stack/builder/resources/task_definition/reconstructor.rb', line 5

def initialize(task_definition, rollback=false)
  @task_definition, @rollback = task_definition, rollback
end

Instance Method Details

#camelize(value, parent_keys = []) ⇒ Object

non-destructive



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ufo/cfn/stack/builder/resources/task_definition/reconstructor.rb', line 24

def camelize(value, parent_keys=[])
  case value
  when Array
    value.map { |v| camelize(v, parent_keys) }
  when Hash
    initializer = value.map do |k, v|
      new_key = camelize_key(k, parent_keys)
      [new_key, camelize(v, parent_keys+[new_key])]
    end
    Hash[initializer]
  else
    value # do not camelize values
  end
end

#camelize_key(k, parent_keys = []) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/ufo/cfn/stack/builder/resources/task_definition/reconstructor.rb', line 39

def camelize_key(k, parent_keys=[])
  k = k.to_s
  special = %w[Options] & parent_keys.map(&:to_s)
  if special.empty?
    k.camelize
  else
    k # pass through untouch
  end
end

#dataObject



13
14
15
16
17
18
19
20
21
# File 'lib/ufo/cfn/stack/builder/resources/task_definition/reconstructor.rb', line 13

def data
  if @rollback
    resp = ecs.describe_task_definition(task_definition: @task_definition.name)
    resp.task_definition.to_h
  else
    path = "#{Ufo.root}/.ufo/output/task_definition.json"
    JSON.load(IO.read(path))
  end
end

#reconstructObject



9
10
11
# File 'lib/ufo/cfn/stack/builder/resources/task_definition/reconstructor.rb', line 9

def reconstruct
  camelize(data)
end