class Cloudit::Command::Validate

Constants

DEFAULT_REGION
DESCRIPTION
VALID_METHODS

Private Class Methods

setup_options() click to toggle source
# File lib/cloudit/command/validate.rb, line 34
def self.setup_options
  opts = Slop::Options.new
  opts.banner = 'Usage: cloudit validate'
  opts.separator ''
  opts.separator 'Validate options:'
  opts.string '-r', '--region', 'region used for validation', default: Cloudit::Config.region || DEFAULT_REGION
  opts.string '-d', '--directory', 'root directory to generate', default: DEFAULT_DIRECTORY
  opts.bool '-h', '--help', 'print usage', default: false

  self.slop_opts = opts
  self.parser = Slop::Parser.new(opts)
end

Public Instance Methods

index() click to toggle source
# File lib/cloudit/command/validate.rb, line 10
def index
  if @opts.help?
    $stdout.puts slop_opts
  else
    validate_template @opts[:region]
  end
end

Private Instance Methods

validate_template(region=DEFAULT_REGION) click to toggle source
# File lib/cloudit/command/validate.rb, line 20
def validate_template(region=DEFAULT_REGION)
  cf = Aws::CloudFormation::Client.new(
    region: region,
    access_key_id: Cloudit::Config.access_key_id,
    secret_access_key: Cloudit::Config.secret_access_key
  )

  json = Cloudit::Command::Generate.new.generate_json @opts[:directory]
  resp = cf.validate_template(template_body: json)
  $stdout.puts "Template is valid"
rescue Aws::CloudFormation::Errors::ValidationError => e
  $stdout.puts e.message
end