class EbDeployer::Application
Attributes
name[R]
Public Class Methods
new(name, eb_driver, s3_driver, bucket = nil)
click to toggle source
# File lib/eb_deployer/application.rb, line 6 def initialize(name, eb_driver, s3_driver, bucket = nil) @name = name @eb_driver = eb_driver @s3_driver = s3_driver @bucket = bucket || @name raise "application name can only contain any combination of uppercase letters, lowercase letters, numbers, dashes (-)" unless @name =~ /^[a-zA-Z0-9.-]+$/ end
Public Instance Methods
clean_versions(version_prefix, retentions)
click to toggle source
# File lib/eb_deployer/application.rb, line 79 def clean_versions(version_prefix, retentions) VersionCleaner.new(self, retentions).clean(version_prefix) end
create_version(version_label, package)
click to toggle source
# File lib/eb_deployer/application.rb, line 14 def create_version(version_label, package) create_application_if_not_exists source_bundle = if File.exist?(package) if File.extname(package) == '.yml' YAML.load(File.read(package)) else package = Package.new(package, @bucket + ".packages", @s3_driver) package.upload package.source_bundle end elsif package =~ /:/ bucket, obj_key = package.split(':') {'s3_bucket' => bucket, 's3_key' => obj_key} else raise "Neither the file exists nor it is a valid s3 url: #{package.inspect}" end unless @eb_driver.application_version_labels(@name).include?(version_label) log("Create application version with label #{version_label}") @eb_driver.create_application_version(@name, version_label, source_bundle) end end
delete(env_name_prefix)
click to toggle source
# File lib/eb_deployer/application.rb, line 38 def delete(env_name_prefix) if @eb_driver.application_exists?(@name) available_envs = @eb_driver.environment_names_for_application(@name).select do |name| name =~ /^#{env_name_prefix}-/ end if available_envs.empty? log("Environment #{env_name_prefix.inspect} does not exist in application #{@name.inspect}. Skipping delete.") return end available_envs.each do |env| log("Terminating environment #{env}") @eb_driver.delete_environment(@name, env) end end end
remove(versions, delete_from_s3)
click to toggle source
# File lib/eb_deployer/application.rb, line 66 def remove(versions, delete_from_s3) versions.each do |version| begin log("Removing #{version}") @eb_driver.delete_application_version(@name, version, delete_from_s3) rescue Aws::ElasticBeanstalk::Errors::SourceBundleDeletionFailure => e log(e.message) rescue Aws::ElasticBeanstalk::Errors::OperationInProgressFailure => e log(e.message) end end end
versions()
click to toggle source
# File lib/eb_deployer/application.rb, line 56 def versions @eb_driver.application_versions(@name).map do |apv| { :version => apv[:version_label], :date_created => apv[:date_created], :date_updated => apv[:date_updated] } end end
Private Instance Methods
create_application_if_not_exists()
click to toggle source
# File lib/eb_deployer/application.rb, line 85 def create_application_if_not_exists unless @eb_driver.application_exists?(@name) log("Creating application") @eb_driver.create_application(@name) end end
log(msg)
click to toggle source
# File lib/eb_deployer/application.rb, line 92 def log(msg) puts "[#{Time.now.utc}][application:#{@name}] #{msg}" end