capify-ec2 1.2.6.pre → 1.2.6.pre.2

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/Changelog.md CHANGED
@@ -1,4 +1,4 @@
1
- ## 1.2.6 (Jan 29, 2012)
1
+ ## 1.2.6 (Mar 06, 2012)
2
2
 
3
3
  Notes:
4
4
 
data/lib/capify-ec2.rb CHANGED
@@ -9,8 +9,16 @@ class CapifyEc2
9
9
  attr_accessor :load_balancer, :instances
10
10
  SLEEP_COUNT = 5
11
11
 
12
- def initialize()
13
- @ec2_config = YAML.load(File.new("config/ec2.yml"))
12
+ def initialize(ec2_config = "config/ec2.yml")
13
+ case ec2_config
14
+ when Hash
15
+ @ec2_config = ec2_config
16
+ when String
17
+ @ec2_config = YAML.load_file ec2_config
18
+ else
19
+ raise ArgumentError, "Invalid ec2_config: #{ec2_config.inspect}"
20
+ end
21
+
14
22
  regions = determine_regions()
15
23
 
16
24
  @instances = []
@@ -29,10 +37,11 @@ class CapifyEc2
29
37
 
30
38
  def display_instances
31
39
  desired_instances.each_with_index do |instance, i|
32
- puts sprintf "%-11s: %-40s %-20s %-20s %-62s %-20s (%s)",
40
+ puts sprintf "%-11s: %-40s %-20s %-20s %-62s %-20s (%s) (%s)",
33
41
  i.to_s.magenta, instance.name, instance.id.red, instance.flavor_id.cyan,
34
- instance.contact_point.blue, instance.availability_zone.green, (instance.tags["Roles"] || "").yellow
35
- end
42
+ instance.contact_point.blue, instance.availability_zone.green, (instance.tags["Roles"] || "").yellow,
43
+ (instance.tags["Options"] || "").yellow
44
+ end
36
45
  end
37
46
 
38
47
  def server_names
@@ -48,7 +57,7 @@ class CapifyEc2
48
57
  end
49
58
 
50
59
  def get_instances_by_role(role)
51
- desired_instances.select {|instance| instance.tags['Roles'].split(%r{\W+}).include?(role.to_s) rescue false}
60
+ desired_instances.select {|instance| instance.tags['Roles'].split(%r{[, ]+}).include?(role.to_s) rescue false}
52
61
  end
53
62
 
54
63
  def get_instances_by_region(roles, region)
@@ -121,4 +130,4 @@ class CapifyEc2
121
130
  STDERR.puts "#{instance.name}: tests timed out after #{time_elapsed} seconds."
122
131
  end
123
132
  end
124
- end
133
+ end
@@ -2,24 +2,28 @@ require File.join(File.dirname(__FILE__), '../capify-ec2')
2
2
  require 'colored'
3
3
 
4
4
  Capistrano::Configuration.instance(:must_exist).load do
5
+ def capify_ec2
6
+ @capify_ec2 ||= CapifyEc2.new(fetch(:ec2_config, 'config/ec2.yml'))
7
+ end
8
+
5
9
  namespace :ec2 do
6
10
 
7
11
  desc "Prints out all ec2 instances. index, name, instance_id, size, DNS/IP, region, tags"
8
12
  task :status do
9
- CapifyEc2.new.display_instances
13
+ capify_ec2.display_instances
10
14
  end
11
15
 
12
16
  desc "Deregisters instance from its ELB"
13
17
  task :deregister_instance do
14
18
  instance_name = variables[:logger].instance_variable_get("@options")[:actions].first
15
- CapifyEc2.new.deregister_instance_from_elb(instance_name)
19
+ capify_ec2.deregister_instance_from_elb(instance_name)
16
20
  end
17
21
 
18
22
  desc "Registers an instance with an ELB."
19
23
  task :register_instance do
20
24
  instance_name = variables[:logger].instance_variable_get("@options")[:actions].first
21
25
  load_balancer_name = variables[:logger].instance_variable_get("@options")[:vars][:loadbalancer]
22
- CapifyEc2.new.register_instance_in_elb(instance_name, load_balancer_name)
26
+ capify_ec2.register_instance_in_elb(instance_name, load_balancer_name)
23
27
  end
24
28
 
25
29
  task :date do
@@ -28,13 +32,13 @@ Capistrano::Configuration.instance(:must_exist).load do
28
32
 
29
33
  desc "Prints list of ec2 server names"
30
34
  task :server_names do
31
- puts CapifyEc2.new.server_names.sort
35
+ puts capify_ec2.server_names.sort
32
36
  end
33
37
 
34
38
  desc "Allows ssh to instance by id. cap ssh <INSTANCE NAME>"
35
39
  task :ssh do
36
40
  server = variables[:logger].instance_variable_get("@options")[:actions][1]
37
- instance = numeric?(server) ? CapifyEc2.new.desired_instances[server.to_i] : CapifyEc2.new.get_instance_by_name(server)
41
+ instance = numeric?(server) ? capify_ec2.desired_instances[server.to_i] : capify_ec2.get_instance_by_name(server)
38
42
  port = ssh_options[:port] || 22
39
43
  command = "ssh -p #{port} #{user}@#{instance.contact_point}"
40
44
  puts "Running `#{command}`"
@@ -49,9 +53,8 @@ Capistrano::Configuration.instance(:must_exist).load do
49
53
  end
50
54
 
51
55
  def ec2_roles(*roles)
52
- @capify_ec2 = CapifyEc2.new
53
56
  server_name = variables[:logger].instance_variable_get("@options")[:actions].first unless variables[:logger].instance_variable_get("@options")[:actions][1].nil?
54
- named_instance = @capify_ec2.get_instance_by_name(server_name)
57
+ named_instance = capify_ec2.get_instance_by_name(server_name)
55
58
 
56
59
  task named_instance.name.to_sym do
57
60
  remove_default_roles
@@ -68,13 +71,13 @@ Capistrano::Configuration.instance(:must_exist).load do
68
71
  role = role_name_or_hash.is_a?(Hash) ? role_name_or_hash : {:name => role_name_or_hash,:options => {}}
69
72
  @roles[role[:name]]
70
73
 
71
- instances = @capify_ec2.get_instances_by_role(role[:name])
74
+ instances = capify_ec2.get_instances_by_role(role[:name])
72
75
  if role[:options].delete(:default)
73
76
  instances.each do |instance|
74
77
  define_role(role, instance)
75
78
  end
76
79
  end
77
- regions = @capify_ec2.determine_regions
80
+ regions = capify_ec2.determine_regions
78
81
  regions.each do |region|
79
82
  define_regions(region, role)
80
83
  end unless regions.nil?
@@ -87,7 +90,7 @@ Capistrano::Configuration.instance(:must_exist).load do
87
90
  def define_regions(region, role)
88
91
  instances = []
89
92
  @roles.each do |role_name, junk|
90
- region_instances = @capify_ec2.get_instances_by_region(role_name, region)
93
+ region_instances = capify_ec2.get_instances_by_region(role_name, region)
91
94
  region_instances.each {|instance| instances << instance} unless region_instances.nil?
92
95
  end
93
96
  task region.to_sym do
@@ -120,7 +123,7 @@ Capistrano::Configuration.instance(:must_exist).load do
120
123
  options = role[:options]
121
124
  new_options = {}
122
125
  options.each {|key, value| new_options[key] = true if value.to_s == instance.name}
123
- instance.tags["Options"].split(%r{\W+}).each { |option| new_options[option.to_sym] = true} rescue false
126
+ instance.tags["Options"].split(%r{[, ]+}).each { |option| new_options[option.to_sym] = true} rescue false
124
127
 
125
128
  if new_options
126
129
  role role[:name].to_sym, instance.contact_point, new_options
@@ -138,4 +141,4 @@ Capistrano::Configuration.instance(:must_exist).load do
138
141
  end
139
142
 
140
143
 
141
- end
144
+ end
@@ -1,5 +1,5 @@
1
1
  module Capify
2
2
  module Ec2
3
- VERSION = "1.2.6.pre"
3
+ VERSION = "1.2.6.pre.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capify-ec2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6.pre
4
+ version: 1.2.6.pre.2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-29 00:00:00.000000000Z
13
+ date: 2012-03-06 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fog
17
- requirement: &2153339760 !ruby/object:Gem::Requirement
17
+ requirement: &2156458380 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - =
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.1.1
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2153339760
25
+ version_requirements: *2156458380
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: colored
28
- requirement: &2153339220 !ruby/object:Gem::Requirement
28
+ requirement: &2156513440 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - =
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '1.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2153339220
36
+ version_requirements: *2156513440
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: capistrano
39
- requirement: &2153338840 !ruby/object:Gem::Requirement
39
+ requirement: &2156513060 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2153338840
47
+ version_requirements: *2156513060
48
48
  description: Grabs roles from ec2's tags and autogenerates capistrano tasks
49
49
  email:
50
50
  - noah.cantor@forward.co.uk