brighter_planet_deploy 0.0.1 → 0.0.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/bin/brighter_planet_deploy +35 -0
- data/brighter_planet_deploy.gemspec +3 -0
- data/lib/brighter_planet_deploy/authoritative_dns_resolver.rb +35 -0
- data/lib/brighter_planet_deploy/emission_estimate_service.rb +19 -4
- data/lib/brighter_planet_deploy/reads_from_local_filesystem.rb +3 -3
- data/lib/brighter_planet_deploy/version.rb +1 -1
- data/lib/brighter_planet_deploy.rb +1 -0
- data/support/empty_resolv.conf +0 -0
- data/test/helper.rb +5 -0
- data/test/test_cm1.rb +15 -6
- metadata +53 -8
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
unless RUBY_VERSION >= '1.9'
|
4
|
+
require 'rubygems'
|
5
|
+
end
|
6
|
+
require 'brighter_planet_deploy'
|
7
|
+
|
8
|
+
module BrighterPlanet
|
9
|
+
class Deploy
|
10
|
+
class CLI < ::Thor
|
11
|
+
desc 'write', 'takes a bunch of config options and saves them with brighter_planet_deploy'
|
12
|
+
method_option :rails_root, :type => :string, :default => ::Dir.pwd
|
13
|
+
method_option :resque_redis_url, :type => :string
|
14
|
+
method_option :incoming_queue, :type => :string
|
15
|
+
method_option :color, :type => :string
|
16
|
+
method_option :role, :type => :string
|
17
|
+
method_option :environment, :type => :string
|
18
|
+
method_option :log_dir, :type => :string
|
19
|
+
method_option :phase, :type => :string
|
20
|
+
method_option :carrier, :type => :string
|
21
|
+
method_option :ey_app, :type => :string
|
22
|
+
method_option :service, :type => :string
|
23
|
+
def write
|
24
|
+
me = ::BrighterPlanet.deploy.servers.me
|
25
|
+
me.rails_root = options[:rails_root]
|
26
|
+
options.each do |k, v|
|
27
|
+
me.send("#{k}=", v)
|
28
|
+
end
|
29
|
+
me.save
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
BrighterPlanet::Deploy::CLI.start
|
@@ -22,5 +22,8 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_development_dependency 'test-unit'
|
23
23
|
s.add_development_dependency 'fakeweb'
|
24
24
|
s.add_development_dependency 'fakefs'
|
25
|
+
s.add_development_dependency 'net-dns'
|
26
|
+
s.add_development_dependency 'activesupport'
|
27
|
+
s.add_development_dependency 'i18n'
|
25
28
|
s.add_dependency 'eat'
|
26
29
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'net/dns/resolver'
|
2
|
+
module BrighterPlanet
|
3
|
+
class Deploy
|
4
|
+
class AuthoritativeDnsResolver
|
5
|
+
# sabshere 5/4/11 last updated
|
6
|
+
NAMESERVERS = {
|
7
|
+
'ns1.easydns.com' => '66.225.199.10',
|
8
|
+
'ns2.easydns.com' => '72.52.2.1',
|
9
|
+
}
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def getaddress(domain)
|
13
|
+
new(domain).getaddress
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :domain
|
18
|
+
|
19
|
+
def initialize(domain)
|
20
|
+
@domain = domain
|
21
|
+
end
|
22
|
+
|
23
|
+
def getaddress
|
24
|
+
resolver = ::Net::DNS::Resolver.new :nameservers => NAMESERVERS.values, :use_tcp => false, :config_file => empty_config_file_path
|
25
|
+
packet = resolver.search domain, ::Net::DNS::A, ::Net::DNS::IN
|
26
|
+
packet.answer[0].address.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
# net-dns always looks for this, so give it something empty
|
30
|
+
def empty_config_file_path
|
31
|
+
::File.expand_path '../../../support/empty_resolv.conf', __FILE__
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -3,7 +3,9 @@ module BrighterPlanet
|
|
3
3
|
class EmissionEstimateService
|
4
4
|
include ::Singleton
|
5
5
|
include ReadsFromPublicUrl
|
6
|
-
|
6
|
+
|
7
|
+
RED_IP = '184.73.240.13'
|
8
|
+
|
7
9
|
WANTS = [
|
8
10
|
:resque_redis_url,
|
9
11
|
:incoming_queue,
|
@@ -14,16 +16,29 @@ module BrighterPlanet
|
|
14
16
|
:phase,
|
15
17
|
:carrier, # amazon
|
16
18
|
:ey_app, # cm1_edge_blue
|
19
|
+
:service
|
17
20
|
]
|
18
|
-
|
21
|
+
|
22
|
+
def domain
|
23
|
+
'carbon.brighterplanet.com'
|
24
|
+
end
|
25
|
+
|
19
26
|
def endpoint
|
20
|
-
|
27
|
+
"http://#{domain}"
|
21
28
|
end
|
22
29
|
|
23
30
|
def name
|
24
31
|
'EmissionEstimateService'
|
25
32
|
end
|
26
|
-
|
33
|
+
|
34
|
+
def color
|
35
|
+
if Deploy.instance.servers.me.service == 'EmissionEstimateService'
|
36
|
+
(AuthoritativeDnsResolver.getaddress(domain) == RED_IP) ? 'red' : 'blue'
|
37
|
+
else
|
38
|
+
from_public_url :color
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
27
42
|
def method_missing(method_id, *args)
|
28
43
|
if args.length == 0 and not block_given?
|
29
44
|
from_public_url method_id
|
@@ -13,7 +13,7 @@ module BrighterPlanet
|
|
13
13
|
from_file public_brighter_planet_deploy_path(k)
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
16
|
+
def write(config = {})
|
17
17
|
[ :public, :private ].each do |loc|
|
18
18
|
config[loc].each do |k, v|
|
19
19
|
path = send("#{loc}_brighter_planet_deploy_path", k)
|
@@ -23,7 +23,7 @@ module BrighterPlanet
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def save
|
27
27
|
public = {}
|
28
28
|
private = {}
|
29
29
|
instance_variables.each do |k|
|
@@ -37,7 +37,7 @@ module BrighterPlanet
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
write :public => public, :private => private
|
41
41
|
end
|
42
42
|
|
43
43
|
private
|
@@ -11,6 +11,7 @@ module BrighterPlanet
|
|
11
11
|
|
12
12
|
autoload :Server, 'brighter_planet_deploy/server'
|
13
13
|
autoload :EmissionEstimateService, 'brighter_planet_deploy/emission_estimate_service'
|
14
|
+
autoload :AuthoritativeDnsResolver, 'brighter_planet_deploy/authoritative_dns_resolver'
|
14
15
|
|
15
16
|
# mixins
|
16
17
|
autoload :ReadsFromLocalFilesystem, 'brighter_planet_deploy/reads_from_local_filesystem'
|
File without changes
|
data/test/helper.rb
CHANGED
data/test/test_cm1.rb
CHANGED
@@ -19,8 +19,8 @@ class TestCm1 < Test::Unit::TestCase
|
|
19
19
|
FileUtils.mkdir_p '/data/randomeyappname/current/public/brighter_planet_deploy'
|
20
20
|
File.open('/data/randomeyappname/current/public/brighter_planet_deploy/color', 'w') { |f| f.write 'blue' }
|
21
21
|
|
22
|
+
Rails.root = '/data/randomeyappname/current'
|
22
23
|
@me = BrighterPlanet.deploy.servers.me
|
23
|
-
@me.rails_root = '/data/randomeyappname/current'
|
24
24
|
end
|
25
25
|
|
26
26
|
def teardown
|
@@ -48,18 +48,17 @@ class TestCm1 < Test::Unit::TestCase
|
|
48
48
|
assert @me.resque_redis_url.include?('active')
|
49
49
|
end
|
50
50
|
|
51
|
-
def
|
52
|
-
@me.
|
51
|
+
def test_006_write
|
52
|
+
@me.write :public => { :color => '-bar-' }, :private => { :resque_redis_url => 'foo[COLOR]baz' }
|
53
53
|
assert_equal '-bar-', @me.color
|
54
54
|
assert_equal 'foo-bar-baz', @me.resque_redis_url
|
55
55
|
end
|
56
56
|
|
57
|
-
def
|
57
|
+
def test_007_save
|
58
58
|
@me.color = '-zzz-'
|
59
59
|
@me.resque_redis_url = 'fie[COLOR]bang'
|
60
|
-
@me.
|
60
|
+
@me.save
|
61
61
|
me2 = BrighterPlanet.deploy.servers.me
|
62
|
-
me2.rails_root = '/data/randomeyappname/current'
|
63
62
|
assert_equal '-zzz-', me2.color
|
64
63
|
assert_equal 'fie-zzz-bang', me2.resque_redis_url
|
65
64
|
end
|
@@ -68,4 +67,14 @@ class TestCm1 < Test::Unit::TestCase
|
|
68
67
|
def test_008_phase
|
69
68
|
assert_equal 'edge', @me.phase
|
70
69
|
end
|
70
|
+
|
71
|
+
def test_009_color_from_cm1_itself
|
72
|
+
FakeFS.deactivate!
|
73
|
+
Rails.root = File.expand_path("../tmp", __FILE__)
|
74
|
+
@me.service = 'EmissionEstimateService'
|
75
|
+
@me.save
|
76
|
+
assert_equal 'red', BrighterPlanet.deploy.emission_estimate_service.color
|
77
|
+
ensure
|
78
|
+
FileUtils.rm_rf File.expand_path("../tmp", __FILE__)
|
79
|
+
end
|
71
80
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brighter_planet_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Seamus Abshere
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-05-
|
19
|
+
date: 2011-05-05 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: test-unit
|
@@ -61,7 +61,7 @@ dependencies:
|
|
61
61
|
type: :development
|
62
62
|
version_requirements: *id003
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: net-dns
|
65
65
|
prerelease: false
|
66
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
@@ -72,13 +72,55 @@ dependencies:
|
|
72
72
|
segments:
|
73
73
|
- 0
|
74
74
|
version: "0"
|
75
|
-
type: :
|
75
|
+
type: :development
|
76
76
|
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: activesupport
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
type: :development
|
90
|
+
version_requirements: *id005
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: i18n
|
93
|
+
prerelease: false
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
103
|
+
type: :development
|
104
|
+
version_requirements: *id006
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: eat
|
107
|
+
prerelease: false
|
108
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
hash: 3
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
version: "0"
|
117
|
+
type: :runtime
|
118
|
+
version_requirements: *id007
|
77
119
|
description: Brighter Planet deployment system, published as the gem brighter_planet_deploy. Internal use.
|
78
120
|
email:
|
79
121
|
- seamus@abshere.net
|
80
|
-
executables:
|
81
|
-
|
122
|
+
executables:
|
123
|
+
- brighter_planet_deploy
|
82
124
|
extensions: []
|
83
125
|
|
84
126
|
extra_rdoc_files: []
|
@@ -87,13 +129,16 @@ files:
|
|
87
129
|
- .gitignore
|
88
130
|
- Gemfile
|
89
131
|
- Rakefile
|
132
|
+
- bin/brighter_planet_deploy
|
90
133
|
- brighter_planet_deploy.gemspec
|
91
134
|
- lib/brighter_planet_deploy.rb
|
135
|
+
- lib/brighter_planet_deploy/authoritative_dns_resolver.rb
|
92
136
|
- lib/brighter_planet_deploy/emission_estimate_service.rb
|
93
137
|
- lib/brighter_planet_deploy/reads_from_local_filesystem.rb
|
94
138
|
- lib/brighter_planet_deploy/reads_from_public_url.rb
|
95
139
|
- lib/brighter_planet_deploy/server.rb
|
96
140
|
- lib/brighter_planet_deploy/version.rb
|
141
|
+
- support/empty_resolv.conf
|
97
142
|
- test/helper.rb
|
98
143
|
- test/test_cm1.rb
|
99
144
|
homepage: ""
|