conan 0.4.10 → 0.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/conan/cloud/aws/autoscale.rb +49 -1
- data/lib/conan/cloud/aws/provision.rb +21 -4
- data/lib/conan/cloud/aws/utils.rb +1 -1
- data/lib/conan/cloud/tasks.rb +5 -0
- data/lib/conan/deployment.rb +4 -7
- data/lib/conan/deployment/git.rb +1 -0
- data/lib/conan/template/config/aws.json +2 -1
- data/lib/conan/version.rb +1 -1
- metadata +5 -21
@@ -67,7 +67,7 @@ module AWS
|
|
67
67
|
image_id = new_conf[:image_id]
|
68
68
|
end
|
69
69
|
else
|
70
|
-
image_id = create_ami_from_server(new_conf[:server_to_image], region)
|
70
|
+
image_id = create_ami_from_server(new_conf[:server_to_image], region)
|
71
71
|
end
|
72
72
|
|
73
73
|
autoscale = Fog::AWS::AutoScaling.new(:region => region)
|
@@ -102,6 +102,54 @@ module AWS
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
+
def launch_test_instances
|
106
|
+
autoscale_config.each do |type, resources|
|
107
|
+
case type
|
108
|
+
when "launch-config"
|
109
|
+
resources.each do |name, conf|
|
110
|
+
start_test_server(name, conf)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def start_test_server(name, config = {})
|
117
|
+
new_conf = config.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
118
|
+
region = new_conf[:region] || "us-east-1"
|
119
|
+
|
120
|
+
compute = Fog::Compute.new(:provider => :aws, :region => region)
|
121
|
+
|
122
|
+
autoscale = Fog::AWS::AutoScaling.new(:region => region)
|
123
|
+
asres = autoscale.describe_auto_scaling_groups({'AutoScalingGroupNames' => new_conf[:autoscale_groups]})
|
124
|
+
lcname = ""
|
125
|
+
#so aws APIs sometimes return a blank scaling group????? need to check if there is a LC
|
126
|
+
asres.body["DescribeAutoScalingGroupsResult"]["AutoScalingGroups"].each do |asgroup|
|
127
|
+
lcname = asgroup["LaunchConfigurationName"]
|
128
|
+
break if !lcname.nil? && lcname.length > 0
|
129
|
+
end
|
130
|
+
|
131
|
+
lcres = autoscale.describe_launch_configurations({'LaunchConfigurationNames' => [lcname]})
|
132
|
+
lc = lcres.body["DescribeLaunchConfigurationsResult"]["LaunchConfigurations"][0]
|
133
|
+
|
134
|
+
compute = Fog::Compute.new(:provider => :aws, :region => region)
|
135
|
+
server_params = {}
|
136
|
+
server_params[:groups] = lc["SecurityGroups"]
|
137
|
+
server_params[:key_name] = lc["KeyName"]
|
138
|
+
server_params[:image_id] = lc["ImageId"]
|
139
|
+
server_params[:monitoring] = false
|
140
|
+
server_params[:flavor_id] = lc["InstanceType"]
|
141
|
+
server_params[:root_device_type] = "ebs"
|
142
|
+
server_params[:availability_zone] = default_availability_zone(region)
|
143
|
+
|
144
|
+
|
145
|
+
puts "Creating test instance from image for launch configuration #{lcname}"
|
146
|
+
server = compute.servers.create(server_params)
|
147
|
+
server.wait_for { ready? }
|
148
|
+
|
149
|
+
puts "Created server #{server.dns_name} for testing. Please delete manually"
|
150
|
+
|
151
|
+
end
|
152
|
+
|
105
153
|
end
|
106
154
|
end
|
107
155
|
|
@@ -162,7 +162,11 @@ module AWS
|
|
162
162
|
|
163
163
|
rdssg_name = rds_name_tag(name)
|
164
164
|
|
165
|
-
rdssg =
|
165
|
+
rdssg = begin
|
166
|
+
rds.security_groups.get(rdssg_name)
|
167
|
+
rescue Excon::Errors::NotFound
|
168
|
+
nil
|
169
|
+
end
|
166
170
|
|
167
171
|
if rdssg.nil?
|
168
172
|
puts "Creating RDS Security Group #{rdssg_name}"
|
@@ -239,7 +243,12 @@ module AWS
|
|
239
243
|
|
240
244
|
elb_name = ec2_name_tag(name)
|
241
245
|
|
242
|
-
lb =
|
246
|
+
lb = begin
|
247
|
+
elb.load_balancers.get(elb_name)
|
248
|
+
rescue Excon::Errors::BadRequest, Excon::Errors::NotFound
|
249
|
+
nil
|
250
|
+
end
|
251
|
+
|
243
252
|
if lb.nil?
|
244
253
|
puts "Creating Elastic Load Balancer #{elb_name}"
|
245
254
|
|
@@ -365,7 +374,11 @@ module AWS
|
|
365
374
|
params[:security_group_names] = [rds_name_tag('default')]
|
366
375
|
end
|
367
376
|
|
368
|
-
server =
|
377
|
+
server = begin
|
378
|
+
rds.servers.get(params[:id])
|
379
|
+
rescue Excon::Errors::NotFound
|
380
|
+
nil
|
381
|
+
end
|
369
382
|
|
370
383
|
if server.nil?
|
371
384
|
puts "Creating RDS Server #{params[:id]}"
|
@@ -401,7 +414,11 @@ module AWS
|
|
401
414
|
|
402
415
|
cluster_name = ec2_name_tag(name)
|
403
416
|
|
404
|
-
cl =
|
417
|
+
cl = begin
|
418
|
+
elasticache.clusters.get(cluster_name)
|
419
|
+
rescue Excon::Errors::NotFound
|
420
|
+
nil
|
421
|
+
end
|
405
422
|
|
406
423
|
unless cl
|
407
424
|
puts "Creating ElastiCache cluster #{cluster_name}"
|
data/lib/conan/cloud/tasks.rb
CHANGED
@@ -41,5 +41,10 @@ namespace :aws do
|
|
41
41
|
AWS::Autoscale.new(stage, autoscale_config, application).update_autoscale
|
42
42
|
end
|
43
43
|
|
44
|
+
desc "create a test instance from an autoscale image after a deployment"
|
45
|
+
task :test_autoscale do
|
46
|
+
autoscale_config = JSON.parse(File.read("config/autoscale.json"))[stage] || {}
|
47
|
+
AWS::Autoscale.new(stage, autoscale_config, application).launch_test_instances
|
48
|
+
end
|
44
49
|
end
|
45
50
|
|
data/lib/conan/deployment.rb
CHANGED
@@ -31,13 +31,10 @@ module Conan
|
|
31
31
|
|
32
32
|
|
33
33
|
def git_log(from, to)
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
return run_locally("git log #{real_revision(to)}")
|
39
|
-
end
|
40
|
-
|
34
|
+
run_locally "git log #{real_revision(from)}..#{real_revision(to)}"
|
35
|
+
rescue RuntimeError
|
36
|
+
# there is probably no initial tag or no deploys have been done
|
37
|
+
return run_locally("git log #{real_revision(to)}")
|
41
38
|
end
|
42
39
|
|
43
40
|
def real_revision(tag)
|
data/lib/conan/deployment/git.rb
CHANGED
@@ -6,6 +6,7 @@ namespace :git do
|
|
6
6
|
|
7
7
|
before "git:tag_attempted_deploy", "git:deploy_commits" unless deploy_via == :copy
|
8
8
|
task :deploy_commits do
|
9
|
+
run_locally "git fetch origin --tags"
|
9
10
|
logs = git_log("#{stage}.#{application}.last-successful-deploy", branch)
|
10
11
|
puts "the following new commits for #{application} on #{stage} revision #{real_revision(branch)} will be deployed"
|
11
12
|
puts logs
|
data/lib/conan/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,16 +10,16 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2013-05-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: capistrano
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,23 +27,7 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ! '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: capistrano
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
|
-
requirements:
|
36
|
-
- - ~>
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: 2.12.0
|
39
|
-
type: :runtime
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 2.12.0
|
30
|
+
version: '0'
|
47
31
|
- !ruby/object:Gem::Dependency
|
48
32
|
name: fog
|
49
33
|
requirement: !ruby/object:Gem::Requirement
|