Class: Lono::Inspector::Summary

Inherits:
Base
  • Object
show all
Defined in:
lib/lono/inspector/summary.rb

Instance Method Summary collapse

Methods inherited from Base

#all_templates, #check_template_exists, #data, #generate_templates, #initialize, #run

Methods included from Blueprint::Root

#bundler_groups, #find_blueprint_root, #require_bundle_gems, #set_blueprint_root

Constructor Details

This class inherits a constructor from Lono::Inspector::Base

Instance Method Details

#optional_parametersObject



44
45
46
# File 'lib/lono/inspector/summary.rb', line 44

def optional_parameters
  parameters.select { |logical_id, p| p["Default"] }
end

#parametersObject



48
49
50
# File 'lib/lono/inspector/summary.rb', line 48

def parameters
  data["Parameters"] || []
end

#perform(template_name) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/lono/inspector/summary.rb', line 2

def perform(template_name)
  # little dirty but @template_name is used in data method
  # so we dont have to pass it to the data method
  @template_name = template_name

  puts "=> CloudFormation Template Summary for template #{@template_name.color(:sienna)}:"
  return if @options[:noop]

  print_parameters_summary

  puts "Resources:"
  print_resource_types
end


25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/lono/inspector/summary.rb', line 25

def print_parameters(label, parameters)
  puts "#{label}:"
  if parameters.empty?
    puts "  There are no #{label.downcase} parameters"
  else
    parameters.each do |logical_id, p|
      output = "  #{logical_id} (#{p["Type"]})"
      if p["Default"]
        output << " Default: #{p["Default"]}"
      end
      puts output
    end
  end
end


16
17
18
19
20
21
22
23
# File 'lib/lono/inspector/summary.rb', line 16

def print_parameters_summary
  if parameters.empty?
    puts "There are no parameters in this template."
  else
    print_parameters("Required Parameters", required_parameters)
    print_parameters("Optional Parameters", optional_parameters)
  end
end


63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/lono/inspector/summary.rb', line 63

def print_resource_types
  unless resource_types
    puts "No resources found."
    return
  end

  types = resource_types.sort_by {|r| r[1] * -1} # Hash -> 2D Array
  types.each do |a|
    type, count = a
    printf "%3s %s\n", count, type
  end
  printf "%3s %s\n", resource_types.size, "Total"
end

#required_parametersObject



40
41
42
# File 'lib/lono/inspector/summary.rb', line 40

def required_parameters
  parameters.reject { |logical_id, p| p["Default"] }
end

#resource_typesObject



52
53
54
55
56
57
58
59
60
61
# File 'lib/lono/inspector/summary.rb', line 52

def resource_types
  resources = data["Resources"]
  return unless resources

  types = Hash.new(0)
  resources.each do |logical_id, resource|
    types[resource["Type"]] += 1
  end
  types
end