engineyard-metadata 0.2.3 → 0.2.4

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.
@@ -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: