Class: YleTf::Action::VerifyTerraformVersion

Inherits:
Object
  • Object
show all
Defined in:
lib/yle_tf/action/verify_terraform_version.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ VerifyTerraformVersion

Returns a new instance of VerifyTerraformVersion.



9
10
11
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 9

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object

Raises:



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 13

def call(env)
  Logger.debug('Verifying Terraform version')

  version = env[:terraform_version] = terraform_version
  raise(Error, 'Terraform not found') if !version

  Logger.debug("Terraform version: #{version}")
  verify_version(env)

  @app.call(env)
end

#terraform_versionObject



25
26
27
28
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 25

def terraform_version
  v = YleTf::System.read_cmd('terraform', 'version', error_handler: proc {})
  Regexp.last_match(1) if v =~ /^Terraform v([^\s]+)/
end

#verify_version(env) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 30

def verify_version(env)
  version = env[:terraform_version]
  requirement = env[:config].fetch('terraform', 'version_requirement') { nil }

  if !VersionRequirement.new(requirement).satisfied_by?(version)
    raise Error, "Terraform version '#{requirement}' required, '#{version}' found"
  end
end