Sha256: 51998012068b2d79c50216adba15ce32c53268ecf1ca9c0808c27ad3b9c9a942

Contents?: true

Size: 1.21 KB

Versions: 8

Compression:

Stored size: 1.21 KB

Contents

class TerraspacePluginAws::Interfaces::Backend
  class Bucket < Base
    include Secure

    def create
      bucket = @info["bucket"]
      unless bucket # not bucket provided
        logger.error "ERROR: no bucket value provided in your terraform backend config".color(:red)
        exit 1
      end
      if exist?(bucket)
        logger.debug "Bucket already exist: #{bucket}"
        c = TerraspacePluginAws::Interfaces::Config.instance.config
        secure(bucket) if c.s3.secure_existing
        tag(bucket) if c.tag_existing
      else
        logger.info "Creating bucket: #{bucket}"
        s3.create_bucket(bucket: bucket)
        secure(bucket)
        tag(bucket)
      end
    end

    def exist?(name)
      s3.head_bucket(bucket: name, use_accelerate_endpoint: false)
      true  # Bucket exist
    rescue Aws::S3::Errors::NotFound
      false # Bucket does not exist
    rescue Aws::S3::Errors::Forbidden => e
      logger.error "#{e.class}: #{e.message}"
      logger.error "ERROR: Bucket is not available: #{name}".color(:red)
      logger.error "Bucket might be owned by someone else or is on another one of your AWS accounts."
      exit 1
    end

    def tag(bucket)
      Tagging.new(@info).tag
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
terraspace_plugin_aws-0.6.1 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb
terraspace_plugin_aws-0.6.0 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb
terraspace_plugin_aws-0.5.1 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb
terraspace_plugin_aws-0.5.0 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb
terraspace_plugin_aws-0.4.2 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb
terraspace_plugin_aws-0.4.1 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb
terraspace_plugin_aws-0.4.0 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb
terraspace_plugin_aws-0.3.8 lib/terraspace_plugin_aws/interfaces/backend/bucket.rb