class Gantree::Init
Attributes
bucket_name[R]
image[R]
options[R]
Public Class Methods
new(image, options)
click to toggle source
# File lib/gantree/init.rb, line 8 def initialize image, options check_credentials set_aws_keys @image = image @options = options @bucket_name = @options.bucket || default_bucket_name end
Public Instance Methods
run()
click to toggle source
# File lib/gantree/init.rb, line 17 def run puts "initialize image #{@image}" print_options FileUtils.rm("Dockerrun.aws.json") if File.exist?("Dockerrun.aws.json") create_docker_config_s3_bucket unless options[:dry_run] create_dockerrun upload_docker_config if options.user && !options[:dry_run] end
Private Instance Methods
create_docker_config_s3_bucket()
click to toggle source
# File lib/gantree/init.rb, line 32 def create_docker_config_s3_bucket bucket = s3.buckets.create(bucket_name) unless s3.buckets[bucket_name].exists? end
create_dockerrun()
click to toggle source
# File lib/gantree/init.rb, line 59 def create_dockerrun IO.write("Dockerrun.aws.json", JSON.pretty_generate(dockerrun_object)) end
default_bucket_name()
click to toggle source
# File lib/gantree/init.rb, line 28 def default_bucket_name [@options.user, "docker", "cfgs"].compact.join("-") end
dockercfg_file_exist?()
click to toggle source
# File lib/gantree/init.rb, line 71 def dockercfg_file_exist? File.exist?("#{ENV['HOME']}/.dockercfg") end
dockerrun_object()
click to toggle source
# File lib/gantree/init.rb, line 36 def dockerrun_object docker = { AWSEBDockerrunVersion: "1", Image: { Name: image, Update: true }, Logging: "/var/log/nginx", Ports: [ { ContainerPort: options.port } ] } if options.user docker["Authentication"] = { Bucket: bucket_name, Key: "#{options.user}.dockercfg" } end docker end
upload_docker_config()
click to toggle source
# File lib/gantree/init.rb, line 63 def upload_docker_config raise "You need to run 'docker login' to generate a .dockercfg file" unless dockercfg_file_exist? filename = "#{ENV['HOME']}/#{options.user}.dockercfg" FileUtils.cp("#{ENV['HOME']}/.dockercfg", "#{ENV['HOME']}/#{options.user}.dockercfg") key = File.basename(filename) s3.buckets[bucket_name].objects[key].write(:file => filename) end