Class: Gantree::Update
- Inherits:
-
Base
- Object
- Base
- Gantree::Update
show all
- Defined in:
- lib/gantree/update.rb
Instance Method Summary
collapse
Methods inherited from Base
#authenticate_librato, #cfm, #check_credentials, check_for_updates, #check_template_bucket, #create_default_env, #eb, #env_type, #error_msg, #escape_characters_in_string, #get_latest_docker_solution, #print_options, #s3, #set_aws_keys, #tag, update_configuration, #upload_templates
Constructor Details
#initialize(stack_name, options) ⇒ Update
Returns a new instance of Update.
6
7
8
9
10
11
12
13
14
|
# File 'lib/gantree/update.rb', line 6
def initialize stack_name,options
check_credentials
set_aws_keys
@options = options
@options[:stack_name] = stack_name
@options[:env] ||= create_default_env
@options[:env_type] ||= env_type
@templates = ['master','resources','beanstalk']
end
|
Instance Method Details
#add_role(name) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/gantree/update.rb', line 42
def add_role name
env = @options[:env].sub('app', name)
beanstalk = JSON.parse(IO.read("cfn/#{@options[:stack_name]}-beanstalk.cfn.json"))
unless beanstalk["Resources"][name] then
role = {
"Type" => "AWS::ElasticBeanstalk::Environment",
"Properties"=> {
"ApplicationName" => "#{@options[:stack_name]}",
"EnvironmentName" => "#{env}",
"Description" => "#{name} Environment",
"TemplateName" => {
"Ref" => "ConfigurationTemplate"
},
"OptionSettings" => []
}
}
beanstalk["Resources"]["#{name}".to_sym] = role
IO.write("cfn/#{@options[:stack_name]}-beanstalk.cfn.json", JSON.pretty_generate(beanstalk)) unless @options[:dry_run]
puts JSON.pretty_generate(beanstalk["Resources"].to_a.last)
puts "Added new #{name} role".green
else
puts "Role already exists".red
end
end
|
#change_solution_stack ⇒ Object
29
30
31
32
33
34
35
36
|
# File 'lib/gantree/update.rb', line 29
def change_solution_stack
beanstalk = JSON.parse(IO.read("cfn/#{@options[:stack_name]}-beanstalk.cfn.json"))
solution_stack = set_solution_stack
beanstalk["Resources"]["ConfigurationTemplate"]["Properties"]["SolutionStackName"] = solution_stack
beanstalk["Resources"]["ConfigurationTemplate"]["Properties"]["Description"] = solution_stack
IO.write("cfn/#{@options[:stack_name]}-beanstalk.cfn.json",JSON.pretty_generate(beanstalk))
puts "Updated solution to #{solution_stack}".green
end
|
#run ⇒ Object
16
17
18
19
20
21
22
23
|
# File 'lib/gantree/update.rb', line 16
def run
puts "Updating stack from local cfn repo"
add_role @options[:role] if @options[:role]
change_solution_stack if @options[:solution]
return if @options[:dry_run]
upload_templates
puts "Stack Updated".green if cfm.stacks[@options[:stack_name]].update(:template => stack_template)
end
|
#set_solution_stack ⇒ Object
38
39
40
|
# File 'lib/gantree/update.rb', line 38
def set_solution_stack
@options[:solution] == "latest" ? get_latest_docker_solution : @options[:solution]
end
|
#stack_template ⇒ Object
25
26
27
|
# File 'lib/gantree/update.rb', line 25
def stack_template
s3.buckets["#{@options[:cfn_bucket]}/#{@stack_name}"].objects["#{@stack_name}-master.cfn.json"]
end
|