Class: EbDeployer::Application
- Inherits:
-
Object
- Object
- EbDeployer::Application
- Defined in:
- lib/eb_deployer/application.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #clean_versions(version_prefix, retentions) ⇒ Object
- #create_version(version_label, package) ⇒ Object
- #delete(env_name_prefix) ⇒ Object
-
#initialize(name, eb_driver, s3_driver, bucket = nil) ⇒ Application
constructor
A new instance of Application.
- #remove(versions, delete_from_s3) ⇒ Object
- #versions ⇒ Object
Constructor Details
#initialize(name, eb_driver, s3_driver, bucket = nil) ⇒ Application
Returns a new instance of Application.
6 7 8 9 10 11 12 |
# 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 |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/eb_deployer/application.rb', line 4 def name @name end |
Instance Method Details
#clean_versions(version_prefix, retentions) ⇒ Object
79 80 81 |
# 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) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# 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) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 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) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 |
# 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.) rescue Aws::ElasticBeanstalk::Errors::OperationInProgressFailure => e log(e.) end end end |
#versions ⇒ Object
56 57 58 59 60 61 62 63 64 |
# 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 |