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.
- data/README.rdoc +19 -1
- data/lib/engineyard-metadata/amazon_ec2_api.rb +3 -3
- data/lib/engineyard-metadata/chef_dna.rb +34 -31
- data/lib/engineyard-metadata/engine_yard_cloud_api.rb +27 -27
- data/lib/engineyard-metadata/insider.rb +4 -4
- data/lib/engineyard-metadata/metadata.rb +3 -0
- data/lib/engineyard-metadata/outsider.rb +2 -2
- data/lib/engineyard-metadata/version.rb +1 -1
- data/spec/metadata_spec.rb +26 -0
- data/spec/spec_helper.rb +0 -1
- metadata +70 -110
data/README.rdoc
CHANGED
@@ -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 '
|
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 ||=
|
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 ||=
|
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
|
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
|
-
#
|
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[
|
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
|
-
#
|
81
|
-
def app_slaves
|
82
|
-
dna['engineyard']['environment']['instances'].select { |i| %w{ app }.include? i['role'] }.map { |i| i[
|
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
|
-
#
|
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[
|
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
|
-
#
|
93
|
-
def db_slaves
|
94
|
-
dna['engineyard']['environment']['instances'].select { |i| %w{ db_slave }.include? i['role'] }.map { |i| i[
|
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
|
-
#
|
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[
|
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
|
-
#
|
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[
|
108
|
+
x[normalize_identifier(identifier)]
|
110
109
|
else
|
111
|
-
solo
|
110
|
+
solo(identifier)
|
112
111
|
end
|
113
112
|
end
|
114
113
|
|
115
|
-
#
|
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
|
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[
|
119
|
+
x[normalize_identifier(identifier)]
|
121
120
|
else
|
122
|
-
solo
|
121
|
+
solo(identifier)
|
123
122
|
end
|
124
123
|
end
|
125
124
|
|
126
|
-
#
|
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[
|
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
|
-
#
|
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
|
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[
|
54
|
+
x[identifier]
|
55
55
|
else
|
56
|
-
solo
|
56
|
+
solo(identifier)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
#
|
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[
|
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
|
-
#
|
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[
|
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
|
-
#
|
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[
|
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
|
-
#
|
82
|
-
def app_slaves
|
83
|
-
environment['instances'].select { |i| %w{ app }.include? i['role'] }.map { |i| i[
|
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
|
-
#
|
87
|
-
def db_slaves
|
88
|
-
environment['instances'].select { |i| %w{ db_slave }.include? i['role'] }.map { |i| i[
|
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
|
-
#
|
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[
|
96
|
+
x[identifier]
|
97
97
|
else
|
98
|
-
solo
|
98
|
+
solo(identifier)
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
-
#
|
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[
|
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
|
data/spec/metadata_spec.rb
CHANGED
@@ -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
|
data/spec/spec_helper.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
19
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
105
|
-
segments:
|
106
|
-
- 2
|
107
|
-
version: "2"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '2'
|
108
77
|
type: :development
|
109
|
-
|
110
|
-
|
111
|
-
|
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
|
-
|
157
|
-
|
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
|
-
|
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.
|
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:
|