engineyard-metadata 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,7 +8,6 @@ To define a simple interface to useful metadata (passwords, IP addresses, etc.)
8
8
 
9
9
  == Examples
10
10
 
11
- * Get a dynamically updated list of all running app servers so that you can pool memcached over all of them. (<tt>EY.metadata.app_servers</tt>)
12
11
  * Get the current database password so that you can write a script that connects to it. (<tt>EY.metadata.database_password</tt>)
13
12
 
14
13
  Here's the current method list:
@@ -41,6 +40,15 @@ Here's the current method list:
41
40
  EY.metadata.stack_name
42
41
  EY.metadata.utilities
43
42
 
43
+ == public_hostname, amazon_id, etc.
44
+
45
+ Thanks to Nick Marden, you can do things like:
46
+
47
+ ?> EY.metadata.app_servers('amazon_id')
48
+ >> [ 'i-ff17d493', 'i-c217d423' ]
49
+
50
+ By default, you get the public hostname.
51
+
44
52
  == Use
45
53
 
46
54
  See the rdoc at {the engineyard-metadata rdoc}[http://rubydoc.info/gems/engineyard-metadata].
@@ -49,6 +57,16 @@ See the rdoc at {the engineyard-metadata rdoc}[http://rubydoc.info/gems/engineya
49
57
 
50
58
  When you're executing the gem from your instances, you don't have to configure anything. Just require the gem.
51
59
 
60
+ If you see
61
+
62
+ Errno::EACCES: Permission denied - /etc/chef/dna.json
63
+
64
+ then I suggest adding something like this to `deploy/before_bundle.rb`
65
+
66
+ sudo 'chmod a+r /etc/chef/dna.json'
67
+
68
+ or find some other way to make the file readable.
69
+
52
70
  === When you're executing this gem from OUTSIDE the cloud
53
71
 
54
72
  You must...
@@ -1,4 +1,4 @@
1
- require 'eat'
1
+ require 'open-uri'
2
2
 
3
3
  module EY
4
4
  class Metadata
@@ -6,12 +6,12 @@ module EY
6
6
  class AmazonEc2Api
7
7
  # The present instance's Amazon Ec2 instance id.
8
8
  def present_instance_id
9
- @present_instance_id ||= eat 'http://169.254.169.254/latest/meta-data/instance-id'
9
+ @present_instance_id ||= open('http://169.254.169.254/latest/meta-data/instance-id').read
10
10
  end
11
11
 
12
12
  # The present instance's Amazon Ec2 security group.
13
13
  def present_security_group
14
- @present_security_group ||= eat 'http://169.254.169.254/latest/meta-data/security-groups'
14
+ @present_security_group ||= open('http://169.254.169.254/latest/meta-data/security-groups').read
15
15
  end
16
16
  end
17
17
  end
@@ -5,7 +5,6 @@ require 'active_support/version'
5
5
  }.each do |active_support_3_requirement|
6
6
  require active_support_3_requirement
7
7
  end if ActiveSupport::VERSION::MAJOR == 3
8
- require 'eat'
9
8
 
10
9
  module EY
11
10
  class Metadata
@@ -16,7 +15,7 @@ module EY
16
15
  include SshAliasHelper
17
16
 
18
17
  def dna # :nodoc:
19
- @dna ||= ActiveSupport::JSON.decode eat(PATH)
18
+ @dna ||= ActiveSupport::JSON.decode File.read(PATH)
20
19
  end
21
20
 
22
21
  def application # :nodoc:
@@ -70,63 +69,63 @@ module EY
70
69
  dna['engineyard']['environment']['ssh_password']
71
70
  end
72
71
 
73
- # The public hostnames of all the app servers.
72
+ # An identifying attribute of each app server. Defaults to public_hostname.
74
73
  #
75
74
  # If you're on a solo app, it counts the solo as an app server.
76
- def app_servers
77
- dna['engineyard']['environment']['instances'].select { |i| %w{ app_master app solo }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
75
+ def app_servers(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
76
+ dna['engineyard']['environment']['instances'].select { |i| %w{ app_master app solo }.include? i['role'] }.map { |i| i[normalize_identifier(identifier)] }.sort
78
77
  end
79
-
80
- # The public hostnames of all the app slaves.
81
- def app_slaves
82
- dna['engineyard']['environment']['instances'].select { |i| %w{ app }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
78
+
79
+ # An identifying attribute of each app slave. Defaults to public_hostname.
80
+ def app_slaves(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
81
+ dna['engineyard']['environment']['instances'].select { |i| %w{ app }.include? i['role'] }.map { |i| i[normalize_identifier(identifier)] }.sort
83
82
  end
84
-
85
- # The public hostnames of all the db servers.
83
+
84
+ # An identifying attribute of each DB server. Defaults to public_hostname.
86
85
  #
87
86
  # If you're on a solo app, it counts the solo as a db server.
88
- def db_servers
89
- dna['engineyard']['environment']['instances'].select { |i| %w{ db_master db_slave solo }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
87
+ def db_servers(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
88
+ dna['engineyard']['environment']['instances'].select { |i| %w{ db_master db_slave solo }.include? i['role'] }.map { |i| i[normalize_identifier(identifier)] }.sort
90
89
  end
91
90
 
92
- # The public hostnames of all the db slaves.
93
- def db_slaves
94
- dna['engineyard']['environment']['instances'].select { |i| %w{ db_slave }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
91
+ # An identifying attribute of each DB slave. Defaults to public_hostname.
92
+ def db_slaves(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
93
+ dna['engineyard']['environment']['instances'].select { |i| %w{ db_slave }.include? i['role'] }.map { |i| i[normalize_identifier(identifier)] }.sort
95
94
  end
96
95
 
97
- # The public hostnames of all the utility servers.
96
+ # An identifying attribute of each utility server. Defaults to public_hostname.
98
97
  #
99
98
  # If you're on a solo app, it counts the solo as a utility.
100
- def utilities
101
- dna['engineyard']['environment']['instances'].select { |i| %w{ util solo }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
99
+ def utilities(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
100
+ dna['engineyard']['environment']['instances'].select { |i| %w{ util solo }.include? i['role'] }.map { |i| i[normalize_identifier(identifier)] }.sort
102
101
  end
103
102
 
104
- # The public hostname of the app_master.
103
+ # An identifying attribute of the app_master. Defaults to public_hostname.
105
104
  #
106
105
  # If you're on a solo app, it counts the solo as the app_master.
107
- def app_master
106
+ def app_master(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
108
107
  if x = dna['engineyard']['environment']['instances'].detect { |i| i['role'] == 'app_master' }
109
- x['public_hostname']
108
+ x[normalize_identifier(identifier)]
110
109
  else
111
- solo
110
+ solo(identifier)
112
111
  end
113
112
  end
114
113
 
115
- # The public hostname of the db_master.
114
+ # An identifying attribute of the db_master. Defaults to public_hostname.
116
115
  #
117
- # If you're on a solo app, it counts the solo as the app_master.
118
- def db_master
116
+ # If you're on a solo app, it counts the solo as the db_master.
117
+ def db_master(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
119
118
  if x = dna['engineyard']['environment']['instances'].detect { |i| i['role'] == 'db_master' }
120
- x['public_hostname']
119
+ x[normalize_identifier(identifier)]
121
120
  else
122
- solo
121
+ solo(identifier)
123
122
  end
124
123
  end
125
124
 
126
- # The public hostname of the solo.
127
- def solo
125
+ # An identifying attribute of the solo. Defaults to public_hostname.
126
+ def solo(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
128
127
  if x = dna['engineyard']['environment']['instances'].detect { |i| i['role'] == 'solo' }
129
- x['public_hostname']
128
+ x[normalize_identifier(identifier)]
130
129
  end
131
130
  end
132
131
 
@@ -149,6 +148,10 @@ module EY
149
148
  def stack_name
150
149
  dna['engineyard']['environment']['stack_name']
151
150
  end
151
+
152
+ def normalize_identifier(identifier)
153
+ (identifier == 'amazon_id') ? 'id' : identifier
154
+ end
152
155
  end
153
156
  end
154
157
  end
@@ -46,63 +46,63 @@ module EY
46
46
  db_master
47
47
  end
48
48
 
49
- # The public hostname of the db_master.
49
+ # An identifying attribute of the db_master. Defaults to public_hostname.
50
50
  #
51
- # If you're on a solo app, it counts the solo as the app_master.
52
- def db_master
51
+ # If you're on a solo app, it counts the solo as the db_master.
52
+ def db_master(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
53
53
  if x = environment['instances'].detect { |i| i['role'] == 'db_master' }
54
- x['public_hostname']
54
+ x[identifier]
55
55
  else
56
- solo
56
+ solo(identifier)
57
57
  end
58
58
  end
59
59
 
60
- # The public hostnames of all the app servers.
60
+ # An identifying attribute of each app server. Defaults to public_hostname.
61
61
  #
62
62
  # If you're on a solo app, it counts the solo as an app server.
63
- def app_servers
64
- environment['instances'].select { |i| %w{ app_master app solo }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
63
+ def app_servers(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
64
+ environment['instances'].select { |i| %w{ app_master app solo }.include? i['role'] }.map { |i| i[identifier] }.sort
65
65
  end
66
66
 
67
- # The public hostnames of all the db servers.
67
+ # An identifying attribute of each DB server. Defaults to public_hostname.
68
68
  #
69
69
  # If you're on a solo app, it counts the solo as a db server.
70
- def db_servers
71
- environment['instances'].select { |i| %w{ db_master db_slave solo }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
70
+ def db_servers(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
71
+ environment['instances'].select { |i| %w{ db_master db_slave solo }.include? i['role'] }.map { |i| i[identifier] }.sort
72
72
  end
73
73
 
74
- # The public hostnames of all the utility servers.
74
+ # An identifying attribute of each utility server. Defaults to public_hostname.
75
75
  #
76
76
  # If you're on a solo app, it counts the solo as a utility.
77
- def utilities
78
- environment['instances'].select { |i| %w{ util solo }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
77
+ def utilities(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
78
+ environment['instances'].select { |i| %w{ util solo }.include? i['role'] }.map { |i| i[identifier] }.sort
79
79
  end
80
80
 
81
- # The public hostnames of all the app slaves.
82
- def app_slaves
83
- environment['instances'].select { |i| %w{ app }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
81
+ # An identifying attribute of each app slave. Defaults to public_hostname.
82
+ def app_slaves(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
83
+ environment['instances'].select { |i| %w{ app }.include? i['role'] }.map { |i| i[identifier] }.sort
84
84
  end
85
85
 
86
- # The public hostnames of all the db slaves.
87
- def db_slaves
88
- environment['instances'].select { |i| %w{ db_slave }.include? i['role'] }.map { |i| i['public_hostname'] }.sort
86
+ # An identifying attribute of each DB slave. Defaults to public_hostname.
87
+ def db_slaves(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
88
+ environment['instances'].select { |i| %w{ db_slave }.include? i['role'] }.map { |i| i[identifier] }.sort
89
89
  end
90
90
 
91
- # The public hostname of the app_master.
91
+ # An identifying attribute of the app_master. Defaults to public_hostname.
92
92
  #
93
93
  # If you're on a solo app, it counts the solo as the app_master.
94
- def app_master
94
+ def app_master(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
95
95
  if x = environment['instances'].detect { |i| i['role'] == 'app_master' }
96
- x['public_hostname']
96
+ x[identifier]
97
97
  else
98
- solo
98
+ solo(identifier)
99
99
  end
100
100
  end
101
101
 
102
- # The public hostname of the solo.
103
- def solo
102
+ # An identifying attribute of the solo. Defaults to public_hostname.
103
+ def solo(identifier = EY::Metadata::DEFAULT_IDENTIFIER)
104
104
  if x = environment['instances'].detect { |i| i['role'] == 'solo' }
105
- x['public_hostname']
105
+ x[identifier]
106
106
  end
107
107
  end
108
108
 
@@ -36,14 +36,14 @@ module EY
36
36
  DELEGATED_TO_CHEF_DNA = METHODS - instance_methods.map { |m| m.to_s } - DELEGATED_TO_AMAZON_EC2_API
37
37
 
38
38
  DELEGATED_TO_AMAZON_EC2_API.each do |name|
39
- define_method name do
40
- amazon_ec2_api.send name
39
+ define_method name do |*args|
40
+ amazon_ec2_api.send name, *args
41
41
  end
42
42
  end
43
43
 
44
44
  DELEGATED_TO_CHEF_DNA.each do |name|
45
- define_method name do
46
- chef_dna.send name
45
+ define_method name do |*args|
46
+ chef_dna.send name, *args
47
47
  end
48
48
  end
49
49
  end
@@ -16,6 +16,9 @@ module EY
16
16
  class CannotGetFromHere < RuntimeError
17
17
  end
18
18
 
19
+ # The default instance identifier for selector methods
20
+ DEFAULT_IDENTIFIER = 'public_hostname'
21
+
19
22
  attr_writer :app_name
20
23
 
21
24
  METHODS = %w{
@@ -80,8 +80,8 @@ module EY
80
80
  end
81
81
 
82
82
  GETTABLE.each do |name|
83
- define_method name do
84
- engine_yard_cloud_api.send name
83
+ define_method name do |*args|
84
+ engine_yard_cloud_api.send name, *args
85
85
  end
86
86
  end
87
87
  end
@@ -1,5 +1,5 @@
1
1
  module EY
2
2
  class Metadata
3
- VERSION = '0.2.3'
3
+ VERSION = '0.2.4'
4
4
  end
5
5
  end
@@ -21,14 +21,27 @@ shared_examples_for "it does in all execution environments" do
21
21
  EY.metadata.app_servers.should == ["ec2-174-129-212-130.compute-1.amazonaws.com"]
22
22
  end
23
23
 
24
+ it 'by getting the app server IDs' do
25
+ EY.metadata.app_servers('amazon_id').should == ['i-ff17d493']
26
+ end
27
+
24
28
  it 'by getting the db server hostnames' do
25
29
  EY.metadata.db_servers.should == ["ec2-67-202-19-255.compute-1.amazonaws.com"]
26
30
  end
27
31
 
32
+ it 'by getting the db server instance IDs' do
33
+ EY.metadata.db_servers('amazon_id').should == ['i-f917d495']
34
+ end
35
+
36
+
28
37
  it 'by getting the utilities hostnames' do
29
38
  EY.metadata.utilities.should == []
30
39
  end
31
40
 
41
+ it 'by getting the utilities IDs' do
42
+ EY.metadata.utilities('amazon_id').should == []
43
+ end
44
+
32
45
  it 'by getting the app master hostname' do
33
46
  EY.metadata.app_master.should == 'ec2-174-129-212-130.compute-1.amazonaws.com'
34
47
  end
@@ -37,14 +50,26 @@ shared_examples_for "it does in all execution environments" do
37
50
  EY.metadata.db_master.should == 'ec2-67-202-19-255.compute-1.amazonaws.com'
38
51
  end
39
52
 
53
+ it 'by getting the db master instance ID' do
54
+ EY.metadata.db_master('amazon_id').should == 'i-f917d495'
55
+ end
56
+
40
57
  it 'by getting the db slave hostnames' do
41
58
  EY.metadata.db_slaves.should == []
42
59
  end
43
60
 
61
+ it 'by getting the db slave instance IDs' do
62
+ EY.metadata.db_slaves('amazon_id').should == []
63
+ end
64
+
44
65
  it 'by getting the app slave hostnames' do
45
66
  EY.metadata.app_slaves.should == []
46
67
  end
47
68
 
69
+ it 'by getting the app slave hostnames' do
70
+ EY.metadata.app_slaves('amazon_id').should == []
71
+ end
72
+
48
73
  it 'by getting the solo hostname' do
49
74
  EY.metadata.solo.should == nil
50
75
  end
@@ -216,6 +241,7 @@ describe 'EY.metadata' do
216
241
  end
217
242
  describe "depending on .eyrc" do
218
243
  before do
244
+ FileUtils.mkdir_p File.dirname(EY.metadata.eyrc_path)
219
245
  File.open(EY.metadata.eyrc_path, 'w') { |f| f.write({'api_token' => FAKE_CLOUD_TOKEN + 'ccc'}.to_yaml) }
220
246
  EY.metadata.environment_name = 'cm1_production_blue'
221
247
  EY.metadata.ey_cloud_token.should == FAKE_CLOUD_TOKEN + 'ccc' # sanity check
@@ -5,7 +5,6 @@ require 'rspec'
5
5
  require 'active_support/json/encoding'
6
6
  require 'fakeweb'
7
7
  require 'fakefs/safe'
8
- require 'eat' # otherwise it's loaded when fakefs is already active
9
8
  $LOAD_PATH.unshift(File.dirname(__FILE__))
10
9
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
11
10
  require 'engineyard-metadata'
metadata CHANGED
@@ -1,122 +1,91 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: engineyard-metadata
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 3
10
- version: 0.2.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Seamus Abshere
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-03-31 00:00:00 -05:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-03 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: activesupport
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2153302620 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 11
30
- segments:
31
- - 2
32
- - 3
33
- - 4
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 2.3.4
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: nap
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2153302620
25
+ - !ruby/object:Gem::Dependency
26
+ name: nap
27
+ requirement: &2153289780 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- - 4
49
- version: "0.4"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0.4'
50
33
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: eat
54
34
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2153289780
36
+ - !ruby/object:Gem::Dependency
37
+ name: eat
38
+ requirement: &2153287620 !ruby/object:Gem::Requirement
56
39
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 21
61
- segments:
62
- - 0
63
- - 0
64
- - 5
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
65
43
  version: 0.0.5
66
44
  type: :runtime
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: fakeweb
70
45
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2153287620
47
+ - !ruby/object:Gem::Dependency
48
+ name: fakeweb
49
+ requirement: &2153286600 !ruby/object:Gem::Requirement
72
50
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
80
55
  type: :development
81
- version_requirements: *id004
82
- - !ruby/object:Gem::Dependency
83
- name: fakefs
84
56
  prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2153286600
58
+ - !ruby/object:Gem::Dependency
59
+ name: fakefs
60
+ requirement: &2153285120 !ruby/object:Gem::Requirement
86
61
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
94
66
  type: :development
95
- version_requirements: *id005
96
- - !ruby/object:Gem::Dependency
97
- name: rspec
98
67
  prerelease: false
99
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *2153285120
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &2153283100 !ruby/object:Gem::Requirement
100
72
  none: false
101
- requirements:
73
+ requirements:
102
74
  - - ~>
103
- - !ruby/object:Gem::Version
104
- hash: 7
105
- segments:
106
- - 2
107
- version: "2"
75
+ - !ruby/object:Gem::Version
76
+ version: '2'
108
77
  type: :development
109
- version_requirements: *id006
110
- description: Pulls metadata from EC2 and EngineYard so that your EngineYard AppCloud (Amazon EC2) instances know about each other.
111
- email:
78
+ prerelease: false
79
+ version_requirements: *2153283100
80
+ description: Pulls metadata from EC2 and EngineYard so that your EngineYard AppCloud
81
+ (Amazon EC2) instances know about each other.
82
+ email:
112
83
  - seamus@abshere.net
113
- executables:
84
+ executables:
114
85
  - ey_ssh_aliases
115
86
  extensions: []
116
-
117
87
  extra_rdoc_files: []
118
-
119
- files:
88
+ files:
120
89
  - .document
121
90
  - .gitignore
122
91
  - Gemfile
@@ -139,43 +108,34 @@ files:
139
108
  - spec/support/dna.json
140
109
  - spec/support/dot.git.config
141
110
  - spec/support/engine_yard_cloud_api_response.json
142
- has_rdoc: true
143
111
  homepage: https://github.com/seamusabshere/engineyard-metadata
144
112
  licenses: []
145
-
146
113
  post_install_message:
147
114
  rdoc_options: []
148
-
149
- require_paths:
115
+ require_paths:
150
116
  - lib
151
- required_ruby_version: !ruby/object:Gem::Requirement
117
+ required_ruby_version: !ruby/object:Gem::Requirement
152
118
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 3
157
- segments:
158
- - 0
159
- version: "0"
160
- required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
124
  none: false
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- hash: 3
166
- segments:
167
- - 0
168
- version: "0"
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
169
129
  requirements: []
170
-
171
130
  rubyforge_project: engineyard-metadata
172
- rubygems_version: 1.6.2
131
+ rubygems_version: 1.8.10
173
132
  signing_key:
174
133
  specification_version: 3
175
134
  summary: Make your EngineYard AppCloud (Amazon EC2) instances aware of each other.
176
- test_files:
135
+ test_files:
177
136
  - spec/metadata_spec.rb
178
137
  - spec/spec_helper.rb
179
138
  - spec/support/dna.json
180
139
  - spec/support/dot.git.config
181
140
  - spec/support/engine_yard_cloud_api_response.json
141
+ has_rdoc: