ey_cloud_awareness 0.1.11 → 0.1.12
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/Rakefile +3 -1
- data/VERSION +1 -1
- data/ey_cloud_awareness.gemspec +12 -9
- data/lib/engine_yard_cloud_instance.rb +30 -19
- data/lib/ey_cloud_awareness.rb +10 -2
- metadata +53 -20
data/Rakefile
CHANGED
@@ -11,7 +11,9 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/seamusabshere/ey_cloud_awareness"
|
12
12
|
gem.authors = ["Seamus Abshere"]
|
13
13
|
# gem.rubyforge_project = "ey_cloud_awareness"
|
14
|
-
|
14
|
+
gem.add_dependency 'json', '>=1.2.3'
|
15
|
+
gem.add_dependency 'activesupport', '>=2.3.4'
|
16
|
+
gem.add_dependency 'right_aws', '1.10.0' # static because of my hack
|
15
17
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
16
18
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
17
19
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.12
|
data/ey_cloud_awareness.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ey_cloud_awareness}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.12"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Seamus Abshere"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-07}
|
13
13
|
s.description = %q{Make your EngineYard cloud instances aware of each other.}
|
14
14
|
s.email = %q{seamus@abshere.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
s.homepage = %q{http://github.com/seamusabshere/ey_cloud_awareness}
|
36
36
|
s.rdoc_options = ["--charset=UTF-8"]
|
37
37
|
s.require_paths = ["lib"]
|
38
|
-
s.rubygems_version = %q{1.3.
|
38
|
+
s.rubygems_version = %q{1.3.6}
|
39
39
|
s.summary = %q{Make your EngineYard cloud instances aware of each other.}
|
40
40
|
s.test_files = [
|
41
41
|
"spec/ey_cloud_awareness_spec.rb",
|
@@ -47,17 +47,20 @@ Gem::Specification.new do |s|
|
|
47
47
|
s.specification_version = 3
|
48
48
|
|
49
49
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
50
|
-
s.add_runtime_dependency(%q<
|
51
|
-
s.add_runtime_dependency(%q<
|
50
|
+
s.add_runtime_dependency(%q<json>, [">= 1.2.3"])
|
51
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
|
52
|
+
s.add_runtime_dependency(%q<right_aws>, ["= 1.10.0"])
|
52
53
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
53
54
|
else
|
54
|
-
s.add_dependency(%q<
|
55
|
-
s.add_dependency(%q<
|
55
|
+
s.add_dependency(%q<json>, [">= 1.2.3"])
|
56
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
57
|
+
s.add_dependency(%q<right_aws>, ["= 1.10.0"])
|
56
58
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
57
59
|
end
|
58
60
|
else
|
59
|
-
s.add_dependency(%q<
|
60
|
-
s.add_dependency(%q<
|
61
|
+
s.add_dependency(%q<json>, [">= 1.2.3"])
|
62
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
63
|
+
s.add_dependency(%q<right_aws>, ["= 1.10.0"])
|
61
64
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
62
65
|
end
|
63
66
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class EngineYardCloudInstance
|
2
|
-
CURRENT_INSTANCE_ID_CACHE_PATH =
|
3
|
-
CURRENT_SECURITY_GROUPS_CACHE_PATH =
|
4
|
-
INSTANCE_DESCRIPTIONS_CACHE_PATH =
|
2
|
+
CURRENT_INSTANCE_ID_CACHE_PATH = File.expand_path '~/.ey_cloud_awareness/engine_yard_cloud_instance_id'
|
3
|
+
CURRENT_SECURITY_GROUPS_CACHE_PATH = File.expand_path '~/.ey_cloud_awareness/engine_yard_cloud_security_groups'
|
4
|
+
INSTANCE_DESCRIPTIONS_CACHE_PATH = File.expand_path '~/.ey_cloud_awareness/engine_yard_cloud_instance_descriptions.yml'
|
5
5
|
DNA_PATH = '/etc/chef/dna.json'
|
6
6
|
|
7
7
|
attr_reader :instance_id
|
@@ -152,23 +152,33 @@ class EngineYardCloudInstance
|
|
152
152
|
|
153
153
|
private
|
154
154
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
File.open(#{name.upcase}_CACHE_PATH, 'w') { |f| f.write @_cached_#{name} }
|
165
|
-
rescue Errno::EACCES
|
166
|
-
$stderr.puts "[EY CLOUD AWARENESS GEM] Not caching #{name.humanize.downcase} because \#{#{name.upcase}_CACHE_PATH} can't be written to"
|
167
|
-
end
|
168
|
-
end
|
169
|
-
@_cached_#{name} ||= IO.read(#{name.upcase}_CACHE_PATH)
|
155
|
+
def cached_current_instance_id(refresh = false)
|
156
|
+
raise "[EY CLOUD AWARENESS GEM] Can't call current_instance_id if we used from_hash" if self.proxy
|
157
|
+
if refresh or !File.readable?(CURRENT_INSTANCE_ID_CACHE_PATH)
|
158
|
+
@_cached_current_instance_id = open("http://169.254.169.254/latest/meta-data/instance-id").gets
|
159
|
+
begin
|
160
|
+
FileUtils.mkdir_p File.dirname(CURRENT_INSTANCE_ID_CACHE_PATH)
|
161
|
+
File.open(CURRENT_INSTANCE_ID_CACHE_PATH, 'w') { |f| f.write @_cached_current_instance_id }
|
162
|
+
rescue Errno::EACCES
|
163
|
+
$stderr.puts "[EY CLOUD AWARENESS GEM] Not caching current instance because #{CURRENT_INSTANCE_ID_CACHE_PATH} can't be written to"
|
170
164
|
end
|
171
|
-
|
165
|
+
end
|
166
|
+
@_cached_current_instance_id ||= IO.read(CURRENT_INSTANCE_ID_CACHE_PATH)
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
def cached_current_security_groups(refresh = false)
|
171
|
+
raise "[EY CLOUD AWARENESS GEM] Can't call current_security_groups if we used from_hash" if self.proxy
|
172
|
+
if refresh or !File.readable?(CURRENT_SECURITY_GROUPS_CACHE_PATH)
|
173
|
+
@_cached_current_security_groups = open("http://169.254.169.254/latest/meta-data/security-groups").gets
|
174
|
+
begin
|
175
|
+
FileUtils.mkdir_p File.dirname(CURRENT_SECURITY_GROUPS_CACHE_PATH)
|
176
|
+
File.open(CURRENT_SECURITY_GROUPS_CACHE_PATH, 'w') { |f| f.write @_cached_current_security_groups }
|
177
|
+
rescue Errno::EACCES
|
178
|
+
$stderr.puts "[EY CLOUD AWARENESS GEM] Not caching current security groups because #{CURRENT_SECURITY_GROUPS_CACHE_PATH} can't be written to"
|
179
|
+
end
|
180
|
+
end
|
181
|
+
@_cached_current_security_groups ||= IO.read(CURRENT_SECURITY_GROUPS_CACHE_PATH)
|
172
182
|
end
|
173
183
|
|
174
184
|
def cached_instance_descriptions(refresh = false)
|
@@ -177,6 +187,7 @@ class EngineYardCloudInstance
|
|
177
187
|
ec2 = RightAws::Ec2.new dna[:aws_secret_id], dna[:aws_secret_key]
|
178
188
|
@_cached_instance_descriptions = ec2.describe_instances.map(&:recursive_symbolize_keys!)
|
179
189
|
begin
|
190
|
+
FileUtils.mkdir_p File.dirname(INSTANCE_DESCRIPTIONS_CACHE_PATH)
|
180
191
|
File.open(INSTANCE_DESCRIPTIONS_CACHE_PATH, 'w') { |f| f.write @_cached_instance_descriptions.to_yaml }
|
181
192
|
rescue Errno::EACCES
|
182
193
|
$stderr.puts "[EY CLOUD AWARENESS GEM] Not caching instance data because #{INSTANCE_DESCRIPTIONS_CACHE_PATH} can't be written to"
|
data/lib/ey_cloud_awareness.rb
CHANGED
@@ -1,8 +1,16 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
require 'set'
|
3
|
-
require '
|
3
|
+
require 'fileutils'
|
4
|
+
require 'json'
|
5
|
+
require 'yaml'
|
4
6
|
require 'right_aws' # See aws-s3 compatibility hack below
|
5
|
-
require
|
7
|
+
require 'active_support'
|
8
|
+
begin; require 'active_support/core_ext/class/inheritable_attributes'; rescue MissingSourceFile; end
|
9
|
+
begin; require 'active_support/inflector/inflections'; rescue MissingSourceFile; end
|
10
|
+
begin; require 'active_support/core_ext/string/inflections'; rescue MissingSourceFile; end
|
11
|
+
begin; require 'active_support/core_ext/hash/keys'; rescue MissingSourceFile; end
|
12
|
+
begin; require 'active_support/core_ext/array/wrap'; rescue MissingSourceFile; end
|
13
|
+
require 'engine_yard_cloud_instance'
|
6
14
|
|
7
15
|
class Hash
|
8
16
|
# http://pragmatig.wordpress.com/2009/04/14/recursive-symbolize_keys/
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ey_cloud_awareness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 12
|
9
|
+
version: 0.1.12
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Seamus Abshere
|
@@ -9,39 +14,65 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-04-07 00:00:00 -04:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
21
|
+
name: json
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 3
|
31
|
+
version: 1.2.3
|
17
32
|
type: :runtime
|
18
|
-
|
19
|
-
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: activesupport
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
20
38
|
requirements:
|
21
39
|
- - ">="
|
22
40
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
41
|
+
segments:
|
42
|
+
- 2
|
43
|
+
- 3
|
44
|
+
- 4
|
45
|
+
version: 2.3.4
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
25
48
|
- !ruby/object:Gem::Dependency
|
26
49
|
name: right_aws
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
30
52
|
requirements:
|
31
|
-
- - "
|
53
|
+
- - "="
|
32
54
|
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
|
55
|
+
segments:
|
56
|
+
- 1
|
57
|
+
- 10
|
58
|
+
- 0
|
59
|
+
version: 1.10.0
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
35
62
|
- !ruby/object:Gem::Dependency
|
36
63
|
name: rspec
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
40
66
|
requirements:
|
41
67
|
- - ">="
|
42
68
|
- !ruby/object:Gem::Version
|
69
|
+
segments:
|
70
|
+
- 1
|
71
|
+
- 2
|
72
|
+
- 9
|
43
73
|
version: 1.2.9
|
44
|
-
|
74
|
+
type: :development
|
75
|
+
version_requirements: *id004
|
45
76
|
description: Make your EngineYard cloud instances aware of each other.
|
46
77
|
email: seamus@abshere.net
|
47
78
|
executables: []
|
@@ -79,18 +110,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
110
|
requirements:
|
80
111
|
- - ">="
|
81
112
|
- !ruby/object:Gem::Version
|
113
|
+
segments:
|
114
|
+
- 0
|
82
115
|
version: "0"
|
83
|
-
version:
|
84
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
117
|
requirements:
|
86
118
|
- - ">="
|
87
119
|
- !ruby/object:Gem::Version
|
120
|
+
segments:
|
121
|
+
- 0
|
88
122
|
version: "0"
|
89
|
-
version:
|
90
123
|
requirements: []
|
91
124
|
|
92
125
|
rubyforge_project:
|
93
|
-
rubygems_version: 1.3.
|
126
|
+
rubygems_version: 1.3.6
|
94
127
|
signing_key:
|
95
128
|
specification_version: 3
|
96
129
|
summary: Make your EngineYard cloud instances aware of each other.
|