class TerraformDevKit::Aws::TerraformRemoteState
Constants
- ATTRIBUTES
- KEYS
Public Class Methods
new(dynamodb, s3)
click to toggle source
# File lib/TerraformDevKit/aws/terraform_remote_state.rb, line 20 def initialize(dynamodb, s3) @dynamodb = dynamodb @s3 = s3 end
Public Instance Methods
destroy(environment, project)
click to toggle source
# File lib/TerraformDevKit/aws/terraform_remote_state.rb, line 40 def destroy(environment, project) table_name = table_name(environment, project) @dynamodb.delete_table(table_name) @s3.delete_bucket(state_bucket_name(environment, project)) end
init(environment, project)
click to toggle source
# File lib/TerraformDevKit/aws/terraform_remote_state.rb, line 25 def init(environment, project) table_name = table_name(environment, project) return if lock_table_exists_and_is_active(table_name) @dynamodb.create_table(table_name, ATTRIBUTES, KEYS, 1, 1) begin @s3.create_bucket(state_bucket_name(environment, project)) rescue ::Aws::S3::Errors::BucketAlreadyOwnedByYou return end sleep(0.2) until lock_table_exists_and_is_active(table_name) end
Private Instance Methods
lock_table_exists_and_is_active(table_name)
click to toggle source
# File lib/TerraformDevKit/aws/terraform_remote_state.rb, line 48 def lock_table_exists_and_is_active(table_name) begin return @dynamodb.get_table_status(table_name) == 'ACTIVE' rescue ::Aws::DynamoDB::Errors::ResourceNotFoundException return false end end
state_bucket_name(environment, project)
click to toggle source
# File lib/TerraformDevKit/aws/terraform_remote_state.rb, line 62 def state_bucket_name(environment, project) "#{project.name}-#{environment.name}-state" end
table_name(environment, project)
click to toggle source
# File lib/TerraformDevKit/aws/terraform_remote_state.rb, line 57 def table_name(environment, project) "#{project.acronym}-#{environment.name}-lock-table" end