class Ebfly::Environment
Public Instance Methods
create(name)
click to toggle source
# File lib/ebfly/command/env.rb, line 13 def create(name) app = options[:a] puts "Create environment: #{env_name(app, name)} ..." opts = { application_name: app, environment_name: env_name(app, name), solution_stack_name: solution_stack(options[:s]), tier: tier(options[:t]) } opts.merge!(description: options[:d]) if options[:d] opts.merge!(version_label: options[:l]) if options[:l] opts.merge!(option_settings: parse_option_values(options[:o])) if options[:o] and !options[:o].empty? debug opts ret = run { eb.create_environment(opts) } show_env_info(ret) end
delete(name)
click to toggle source
# File lib/ebfly/command/env.rb, line 33 def delete(name) app = options[:a] puts "Delete environment: #{env_name(app, name)} ..." opts = { environment_name: env_name(app, name) } run { eb.terminate_environment(opts) } puts "Done" end
info(name)
click to toggle source
# File lib/ebfly/command/env.rb, line 66 def info(name) app = options[:a] begin inf = env_info(app, name) debug inf show_env_info(inf) rescue => err style_err err exit 1 end if options[:r] res = env_resources(app, name) debug res show_env_resources(res) end end
open(name)
click to toggle source
# File lib/ebfly/command/env.rb, line 86 def open(name) raise "This feature can run on Mac OS Only" unless exist_command?('open') inf = env_info(options[:a], name) url = "http://#{inf[:cname]}" system "open #{url}" end
push(name, branch)
click to toggle source
# File lib/ebfly/command/env.rb, line 96 def push(name, branch) raise "git must be installed" unless exist_command?('git') app = options[:a] puts "push #{branch} to #{env_name(app, name)}" inf = env_info(app, name) show_env_info(inf) raise "Environment named #{env_name(app, name)} is in an invalid state for this operation. Must be Ready." if inf[:status] != "Ready" puts "" ish, e, s = Open3.capture3("git", "rev-parse", branch) ish.strip! time = Time.now.to_i version = "#{ish}-#{time}" file_name = "git-#{version}.zip" begin create_archive(file_name, ish) upload_archive(file_name) create_application_version(app, version, ish, file_name) ret = update_environment(app, name, version) debug(ret) show_env_info(ret) rescue => err style_err err exit 1 ensure File.delete file_name if File.exist? file_name end end
update(name)
click to toggle source
# File lib/ebfly/command/env.rb, line 48 def update(name) app = options[:a] puts "Update environment: #{env_name(app, name)} ..." opts = { environment_name: env_name(app, name) } opts.merge!(description: options[:d]) if options[:d] opts.merge!(version_label: options[:l]) if options[:l] opts.merge!(option_settings: parse_option_values(options[:o])) if options[:o] and !options[:o].empty? debug(opts) ret = run { eb.update_environment(opts) } show_env_info(ret) end
Private Instance Methods
create_application_version(app, version, ish, file_name)
click to toggle source
# File lib/ebfly/command/env.rb, line 159 def create_application_version(app, version, ish, file_name) puts "Create application version: #{version}" opts = { application_name: app, version_label: version, description: ish, source_bundle: { s3_bucket: s3_bucket, s3_key: file_name } } run { eb.create_application_version(opts) } end
create_archive(file_name, ish)
click to toggle source
# File lib/ebfly/command/env.rb, line 147 def create_archive(file_name, ish) puts "Create archive: #{file_name}" Open3.capture3("git", "archive", "--format", "zip", "--output", file_name, ish) end
env_info(app, env)
click to toggle source
# File lib/ebfly/command/env.rb, line 129 def env_info(app, env) opts = { application_name: app, environment_names: [ env_name(app, env) ] } ret = run { eb.describe_environments(opts) } raise "Environment named #{env_name(app, env)} not found" unless ret[:environments][0] ret[:environments][0] end
env_resources(app, env)
click to toggle source
# File lib/ebfly/command/env.rb, line 139 def env_resources(app, env) opts = { environment_name: env_name(app, env) } ret = run { eb.describe_environment_resources(opts) } ret[:environment_resources] end
show_env_info(res)
click to toggle source
# File lib/ebfly/command/env.rb, line 182 def show_env_info(res) puts "" puts "=== environment info ===" puts "application name:\t#{res[:application_name]}" puts "environment id:\t\t#{res[:environment_id]}" puts "environment name:\t#{res[:environment_name]}" puts "description:\t\t#{res[:description]}" puts "status:\t\t\t#{res[:status]}" puts "health:\t\t\t#{res[:health]}" puts "tier:\t\t\t#{res[:tier][:name]} #{res[:tier][:type]} #{res[:tier][:version]}" puts "solution stack name:\t#{res[:solution_stack_name]}" puts "endpoint url:\t\t#{res[:endpoint_url]}" if res[:endpoint_url] puts "cname:\t\t\t#{res[:cname]}" if res[:cname] puts "version label:\t\t#{res[:version_label]}" if res[:version_label] puts "updated at:\t\t#{res[:date_updated]}" end
show_env_resources(res)
click to toggle source
# File lib/ebfly/command/env.rb, line 199 def show_env_resources(res) puts "" puts "=== environment resources ===" puts "auto scaling groups:\t#{res[:auto_scaling_groups]}" puts "instances:\t\t#{res[:instances]}" puts "launch configurations:\t#{res[:launch_configurations]}" puts "load balancers:\t\t#{res[:load_balancers]}" puts "triggers:\t\t#{res[:triggers]}" puts "queues:\t\t\t#{res[:queues]}" end
update_environment(app, env, version)
click to toggle source
# File lib/ebfly/command/env.rb, line 173 def update_environment(app, env, version) puts "Update environment: #{env_name(app, env)} to #{version}" opts = { environment_name: env_name(app, env), version_label: version } run { eb.update_environment(opts) } end
upload_archive(file_name)
click to toggle source
# File lib/ebfly/command/env.rb, line 152 def upload_archive(file_name) puts "Upload archive #{file_name} to s3://#{s3_bucket}" bucket = s3.buckets[s3_bucket] obj = bucket.objects[file_name] obj.write(Pathname.new(file_name)) end