engineyard-dns 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +6 -0
- data/Gemfile +1 -1
- data/engineyard-dns.gemspec +8 -8
- data/features/assign_dns_to_environment.feature +25 -27
- data/features/list_available_domains.feature +1 -3
- data/features/missing_credentials.feature +1 -5
- data/features/step_definitions/ey_api_steps.rb +1 -2
- data/features/support/engineyard.rb +2 -2
- data/lib/engineyard-dns/cli.rb +44 -44
- data/lib/engineyard-dns/credentials.rb +73 -0
- data/lib/engineyard-dns/version.rb +1 -1
- metadata +137 -187
data/ChangeLog.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# ChangeLog
|
2
2
|
|
3
|
+
## v1.1.0 - 2011-11-27
|
4
|
+
|
5
|
+
* `ey-dns subdomain.domain.com` now supported using domo-rb.
|
6
|
+
* Upgraded version of engineyard gem.
|
7
|
+
* Upgraded version of fog gem.
|
8
|
+
|
3
9
|
## v0.5.0 - 2011/5/24
|
4
10
|
|
5
11
|
* "ey-dns domains" lists the registered domains for each DNS provider (with a count of records for each)
|
data/Gemfile
CHANGED
data/engineyard-dns.gemspec
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require "engineyard-dns/version"
|
2
|
+
require File.join(File.dirname(__FILE__), 'lib', 'engineyard-dns', 'version')
|
4
3
|
|
5
4
|
Gem::Specification.new do |s|
|
6
5
|
s.name = "engineyard-dns"
|
7
6
|
s.version = EngineYard::DNS::VERSION
|
8
7
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = ["Dr Nic Williams"]
|
10
|
-
s.email = ["drnicwilliams@gmail.com"]
|
8
|
+
s.authors = ["Dr Nic Williams", "Martin Emde"]
|
9
|
+
s.email = ["drnicwilliams@gmail.com", "memde@engineyard.com"]
|
11
10
|
s.homepage = "https://github.com/engineyard/engineyard-dns#readme"
|
12
|
-
s.summary = %q{Configure your Engine Yard AppCloud environment
|
13
|
-
s.description = %q{Easily configure your DNS with Engine Yard AppCloud via
|
11
|
+
s.summary = %q{Configure DNS for your Engine Yard AppCloud environment.}
|
12
|
+
s.description = %q{Easily configure your DNS with Engine Yard AppCloud via Fog.}
|
14
13
|
|
15
14
|
s.rubyforge_project = "engineyard-dns"
|
16
15
|
|
@@ -19,9 +18,10 @@ Gem::Specification.new do |s|
|
|
19
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
19
|
s.require_paths = ["lib"]
|
21
20
|
|
22
|
-
s.add_dependency("engineyard", "1.
|
23
|
-
s.add_dependency("fog", "~> 0
|
21
|
+
s.add_dependency("engineyard", "1.4.10")
|
22
|
+
s.add_dependency("fog", "~> 1.0")
|
24
23
|
s.add_dependency("ipaddress", "~> 0.8")
|
24
|
+
s.add_dependency("domo-rb")
|
25
25
|
|
26
26
|
s.add_development_dependency("rake", ["~> 0.9.0"])
|
27
27
|
s.add_development_dependency("cucumber", ["~> 0.10"])
|
@@ -6,28 +6,28 @@ Feature: Assign DNS to environment IP address via DNSimple
|
|
6
6
|
And I have "two apps" in AppCloud
|
7
7
|
And I have setup my fog credentials for "DNSimple"
|
8
8
|
And I have DNS domain "myapp.com" with provider "DNSimple"
|
9
|
-
|
9
|
+
|
10
10
|
Scenario: Assign new DNS A Record to an environment
|
11
11
|
When I run local executable "ey-dns" with arguments "assign myapp.com --account main --environment giblets"
|
12
12
|
Then I should see exactly
|
13
13
|
"""
|
14
14
|
Fetching AppCloud environment information...
|
15
15
|
AppCloud environment main/giblets has IP 127.0.0.0
|
16
|
-
|
17
|
-
Searching for myapp.com
|
18
|
-
Found myapp.com in DNSimple account
|
19
|
-
|
16
|
+
|
17
|
+
Searching for myapp.com in your DNS providers...
|
18
|
+
Found myapp.com in DNSimple account.
|
19
|
+
|
20
20
|
Assigning myapp.com --> 127.0.0.0 (main/giblets)
|
21
|
-
|
21
|
+
A record for myapp.com created.
|
22
22
|
Assigning www.myapp.com --> 127.0.0.0 (main/giblets)
|
23
|
-
|
23
|
+
A record for www.myapp.com created.
|
24
24
|
Complete!
|
25
|
-
|
25
|
+
|
26
26
|
"""
|
27
27
|
# Found 2 records for myapp.com
|
28
28
|
# .myapp.com (A)-> 127.0.0.0 (ttl:60, id:\d+)
|
29
29
|
# www.myapp.com (A)-> 127.0.0.0 (ttl:60, id:\d+)
|
30
|
-
|
30
|
+
|
31
31
|
Scenario: Resssign DNS A Record to an environment
|
32
32
|
When I run local executable "ey-dns" with arguments "assign myapp.com --account main --environment giblets"
|
33
33
|
And I run local executable "ey-dns" with arguments "assign myapp.com --account main --environment giblets --force"
|
@@ -35,40 +35,38 @@ Feature: Assign DNS to environment IP address via DNSimple
|
|
35
35
|
"""
|
36
36
|
Fetching AppCloud environment information...
|
37
37
|
AppCloud environment main/giblets has IP 127.0.0.0
|
38
|
-
|
39
|
-
Searching for myapp.com
|
40
|
-
Found myapp.com in DNSimple account
|
41
|
-
|
42
|
-
|
38
|
+
|
39
|
+
Searching for myapp.com in your DNS providers...
|
40
|
+
Found myapp.com in DNSimple account.
|
41
|
+
|
42
|
+
myapp.com deleted.
|
43
43
|
Assigning myapp.com --> 127.0.0.0 (main/giblets)
|
44
|
-
|
45
|
-
|
44
|
+
A record for myapp.com created.
|
45
|
+
www.myapp.com deleted.
|
46
46
|
Assigning www.myapp.com --> 127.0.0.0 (main/giblets)
|
47
|
-
|
47
|
+
A record for www.myapp.com created.
|
48
48
|
Complete!
|
49
|
-
|
49
|
+
|
50
50
|
"""
|
51
51
|
# Found 2 records for myapp.com
|
52
52
|
# .myapp.com (A)-> 127.0.0.0 (ttl:60, id:\d+)
|
53
53
|
# www.myapp.com (A)-> 127.0.0.0 (ttl:60, id:\d+)
|
54
54
|
|
55
55
|
Scenario: Assign subdomain A Record to an environment
|
56
|
-
When I run local executable "ey-dns" with arguments "assign myapp.com
|
56
|
+
When I run local executable "ey-dns" with arguments "assign staging.myapp.com --account main --environment giblets"
|
57
57
|
Then I should see exactly
|
58
58
|
"""
|
59
59
|
Fetching AppCloud environment information...
|
60
60
|
AppCloud environment main/giblets has IP 127.0.0.0
|
61
|
-
|
62
|
-
Searching for myapp.com
|
63
|
-
Found myapp.com in DNSimple account
|
64
|
-
|
61
|
+
|
62
|
+
Searching for myapp.com in your DNS providers...
|
63
|
+
Found myapp.com in DNSimple account.
|
64
|
+
|
65
65
|
Assigning staging.myapp.com --> 127.0.0.0 (main/giblets)
|
66
|
-
|
66
|
+
A record for staging.myapp.com created.
|
67
67
|
Complete!
|
68
|
-
|
68
|
+
|
69
69
|
"""
|
70
70
|
# Found 1 records for myapp.com
|
71
71
|
# staging.myapp.com (A)-> 127.0.0.0 (ttl:60, id:\d+)
|
72
72
|
|
73
|
-
|
74
|
-
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Given /^I have setup my engineyard email\/password for API access$/ do
|
2
2
|
ENV['EYRC'] = File.join(@home_path, ".eyrc")
|
3
|
-
token = {
|
4
|
-
"api_token" => "f81a1706ddaeb148cfb6235ddecfc1cf"} }
|
3
|
+
token = { "api_token" => "f81a1706ddaeb148cfb6235ddecfc1cf"}
|
5
4
|
File.open(ENV['EYRC'], "w"){|f| YAML.dump(token, f) }
|
6
5
|
end
|
7
6
|
|
@@ -7,7 +7,7 @@ end
|
|
7
7
|
|
8
8
|
support = Dir[File.join(EY_ROOT,'/spec/support/*.rb')]
|
9
9
|
support.each{|helper| require helper }
|
10
|
-
World(
|
10
|
+
World(SpecHelpers)
|
11
11
|
|
12
12
|
require "fakeweb"
|
13
13
|
|
@@ -21,4 +21,4 @@ After do
|
|
21
21
|
ENV.delete('CLOUD_URL')
|
22
22
|
ENV.delete('EYRC')
|
23
23
|
ENV.delete('NO_SSH')
|
24
|
-
end
|
24
|
+
end
|
data/lib/engineyard-dns/cli.rb
CHANGED
@@ -3,9 +3,11 @@ require "engineyard/thor"
|
|
3
3
|
require "engineyard/cli"
|
4
4
|
require "engineyard/cli/ui"
|
5
5
|
require "engineyard/error"
|
6
|
+
require "engineyard-dns/credentials"
|
6
7
|
require "fog"
|
7
8
|
require "fog/bin"
|
8
9
|
require "ipaddress"
|
10
|
+
require "domo"
|
9
11
|
|
10
12
|
module EngineYard
|
11
13
|
module DNS
|
@@ -18,27 +20,35 @@ module EngineYard
|
|
18
20
|
super
|
19
21
|
end
|
20
22
|
|
21
|
-
desc "assign
|
23
|
+
desc "assign [SUBDOMAIN.]DOMAIN.TLD", "Assign DNS domain/tld (or name.tld) to your AppCloud environment"
|
22
24
|
method_option :environment, :aliases => ["-e"], :desc => "Environment containing the IP to which to resolve", :type => :string
|
23
25
|
method_option :account, :aliases => ["-c"], :desc => "Name of the account where the environment is found"
|
24
26
|
method_option :force, :aliases => ["-f"], :desc => "Override DNS records if they already exist", :type => :boolean
|
25
|
-
def assign(
|
27
|
+
def assign(full_domain, deprecated_sub_domain = nil)
|
26
28
|
$stdout.sync
|
27
29
|
validate_fog_credentials
|
28
|
-
|
30
|
+
|
31
|
+
if deprecated_sub_domain
|
32
|
+
full_domain = combine_domain_name(full_domain, deprecated_sub_domain)
|
33
|
+
say "Subdomain as second argument is deprecated. Please use:"
|
34
|
+
say "% ey assign #{full_domain}"
|
35
|
+
end
|
36
|
+
|
29
37
|
say "Fetching AppCloud environment information..."
|
30
38
|
environment = fetch_environment(options[:environment], options[:account])
|
31
39
|
|
32
40
|
public_ip = fetch_public_ip(environment)
|
33
41
|
|
42
|
+
subdomain, domain_name = split_subdomain(full_domain)
|
43
|
+
|
34
44
|
say ""
|
35
|
-
say "Searching for #{domain_name}
|
45
|
+
say "Searching for #{domain_name} in your DNS providers..."
|
36
46
|
|
37
47
|
domain, provider_name = find_domain(domain_name)
|
38
48
|
unless domain
|
39
|
-
error "Please register domain #{domain_name} with your DNS provider"
|
49
|
+
error "Please register domain #{domain_name} with your DNS provider."
|
40
50
|
end
|
41
|
-
say "Found #{
|
51
|
+
say "Found #{domain.domain} in #{provider_name} account."
|
42
52
|
say ""
|
43
53
|
|
44
54
|
assign_dns(domain, environment.account.name, environment.name, public_ip, subdomain, options[:force])
|
@@ -109,30 +119,38 @@ module EngineYard
|
|
109
119
|
def find_domain(domain_name)
|
110
120
|
dns_provider_names.each do |provider|
|
111
121
|
dns_provider = ::Fog::DNS.new({:provider => provider})
|
112
|
-
if domain = dns_provider.zones.
|
122
|
+
if domain = dns_provider.zones.detect {|z| z.domain == domain_name}
|
113
123
|
return [domain, provider]
|
114
124
|
end
|
115
125
|
end
|
116
126
|
[nil, nil]
|
117
127
|
end
|
118
128
|
|
129
|
+
def split_subdomain(full_domain)
|
130
|
+
domain = Domo.canonize(full_domain)
|
131
|
+
subdomain = full_domain.sub(/\.?#{Regexp.escape(domain)}/,'')
|
132
|
+
[subdomain, domain]
|
133
|
+
end
|
134
|
+
|
119
135
|
def assign_dns(domain, account_name, env_name, public_ip, subdomain = "", override = false)
|
136
|
+
combined_domain_name = combine_domain_name(domain, subdomain)
|
137
|
+
|
120
138
|
if record = domain.records.select {|r| r.name == subdomain}.first
|
121
139
|
if override || ask_override_dns?(domain, subdomain)
|
122
140
|
record.destroy
|
123
|
-
say "
|
141
|
+
say "#{combined_domain_name} deleted."
|
124
142
|
else
|
125
|
-
error "Cannot replace existing #{
|
143
|
+
error "Cannot replace existing #{combined_domain_name} DNS."
|
126
144
|
end
|
127
145
|
end
|
128
146
|
say "Assigning "
|
129
|
-
say "#{
|
147
|
+
say "#{combined_domain_name} ", :green
|
130
148
|
say "--> "
|
131
149
|
say "#{public_ip} ", :green
|
132
150
|
say "(#{account_name}/#{env_name})"
|
133
151
|
|
134
|
-
record = domain.records.create(:
|
135
|
-
say "
|
152
|
+
record = domain.records.create(:value => public_ip, :name => subdomain, :type => record_type(public_ip), :ttl => "60")
|
153
|
+
say "#{record.type} record for #{combined_domain_name} created."
|
136
154
|
end
|
137
155
|
|
138
156
|
# "A" for IPv4 and "AAAA" for IPv6; else display error and exit
|
@@ -143,7 +161,7 @@ module EngineYard
|
|
143
161
|
elsif address.ipv6?
|
144
162
|
"AAAA"
|
145
163
|
else
|
146
|
-
error "Cannot recognize IP #{public_ip} as either IPv4 or IPv6 format"
|
164
|
+
error "Cannot recognize IP #{public_ip} as either IPv4 or IPv6 format."
|
147
165
|
end
|
148
166
|
end
|
149
167
|
|
@@ -154,12 +172,9 @@ module EngineYard
|
|
154
172
|
|
155
173
|
# "myapp.com", "name" => "name.myapp.com"
|
156
174
|
# "myapp.com", "" => "myapp.com"
|
157
|
-
def
|
158
|
-
|
159
|
-
|
160
|
-
else
|
161
|
-
domain.domain
|
162
|
-
end
|
175
|
+
def combine_domain_name(domain, subdomain)
|
176
|
+
domain_name = domain.respond_to?(:domain) ? domain.domain : domain.to_s
|
177
|
+
subdomain && !subdomain.empty? ? "#{subdomain}.#{domain_name}" : domain_name
|
163
178
|
end
|
164
179
|
|
165
180
|
# Returns the list of DNS providers that the current user has access to
|
@@ -174,37 +189,22 @@ module EngineYard
|
|
174
189
|
def fog_dns_provider_names
|
175
190
|
['AWS', 'Bluebox', 'DNSimple', 'Linode', 'Slicehost', 'Zerigo'] & Fog.available_providers
|
176
191
|
end
|
177
|
-
|
192
|
+
|
178
193
|
def environment_display(environment)
|
179
194
|
"AppCloud environment #{environment.account.name}/#{environment.name}"
|
180
195
|
end
|
181
196
|
|
197
|
+
def credentials
|
198
|
+
EngineYard::DNS::Credentials.new(Fog.credentials_path)
|
199
|
+
end
|
200
|
+
|
182
201
|
def validate_fog_credentials
|
183
|
-
|
184
|
-
|
185
|
-
File.open(Fog.credentials_path, "w") do |file|
|
186
|
-
file << <<-CREDENTIALS
|
187
|
-
:default:
|
188
|
-
:aws_access_key_id: ACCESSKEY
|
189
|
-
:aws_secret_access_key: SECRETKEY
|
190
|
-
:bluebox_customer_id: ID
|
191
|
-
:bluebox_api_key: APITOKEN
|
192
|
-
:dnsimple_email: EMAIL
|
193
|
-
:dnsimple_password: PASSWORD
|
194
|
-
:linode_api_key: APITOKEN
|
195
|
-
:slicehost_password: APITOKEN
|
196
|
-
:zerigo_email: EMAIL
|
197
|
-
:zerigo_token: APITOKEN
|
198
|
-
CREDENTIALS
|
199
|
-
end
|
200
|
-
FileUtils.chmod(0600, Fog.credentials_path)
|
201
|
-
|
202
|
-
pretty_path = Fog.credentials_path
|
203
|
-
pretty_path = "~/.fog" if Fog.credentials_path == File.expand_path("~/.fog")
|
204
|
-
error <<-HELP
|
202
|
+
credentials.write_if_missing do |path|
|
203
|
+
error <<-HELP
|
205
204
|
Missing credentials for DNS providers.
|
206
|
-
An example #{
|
207
|
-
|
205
|
+
An example #{path} credentials file has been created for you.
|
206
|
+
HELP
|
207
|
+
end
|
208
208
|
end
|
209
209
|
end
|
210
210
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module EngineYard
|
4
|
+
module DNS
|
5
|
+
#
|
6
|
+
# Credentials allows you to take a credentials path and write an example
|
7
|
+
# credentials file if the file does not exist.
|
8
|
+
#
|
9
|
+
# Credentials.new(Fog.credentials_path).write_if_missing do |pretty_path|
|
10
|
+
# # only yielded if example file is written
|
11
|
+
# puts "We wrote your file to #{pretty_path}"
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
class Credentials
|
15
|
+
|
16
|
+
EXAMPLE = <<-CREDENTIALS
|
17
|
+
:default:
|
18
|
+
:aws_access_key_id: ACCESSKEY
|
19
|
+
:aws_secret_access_key: SECRETKEY
|
20
|
+
:bluebox_customer_id: ID
|
21
|
+
:bluebox_api_key: APITOKEN
|
22
|
+
:dnsimple_email: EMAIL
|
23
|
+
:dnsimple_password: PASSWORD
|
24
|
+
:linode_api_key: APITOKEN
|
25
|
+
:slicehost_password: APITOKEN
|
26
|
+
:zerigo_email: EMAIL
|
27
|
+
:zerigo_token: APITOKEN
|
28
|
+
CREDENTIALS
|
29
|
+
|
30
|
+
# fog_creds_path usually comes from Fog.credentials_path
|
31
|
+
def initialize(fog_creds_path)
|
32
|
+
self.path = fog_creds_path
|
33
|
+
end
|
34
|
+
|
35
|
+
attr_reader :path
|
36
|
+
|
37
|
+
# Assign the fog credential path.
|
38
|
+
#
|
39
|
+
# Converts input to a Pathname and expands it.
|
40
|
+
def path=(new_path)
|
41
|
+
@path = Pathname.new(new_path).expand_path
|
42
|
+
end
|
43
|
+
|
44
|
+
# Writes an example credentials file to the default Fog.credentials_path
|
45
|
+
#
|
46
|
+
# This method will yield the path to which the example file was written.
|
47
|
+
# If the credentials path exists, does nothing and does not yield.
|
48
|
+
def write_if_missing
|
49
|
+
unless path.exist?
|
50
|
+
write_example
|
51
|
+
yield pretty_path if block_given?
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
# Write the example credentials file to the initialized path.
|
58
|
+
def write_example
|
59
|
+
path.open("w") { |file| file << EXAMPLE }
|
60
|
+
path.chmod(0600)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Show the credentials path as ~/.fog instead of expanded /Users/me/.fog
|
64
|
+
def pretty_path
|
65
|
+
if Pathname.new("~/.fog").expand_path == path
|
66
|
+
"~/.fog"
|
67
|
+
else
|
68
|
+
path.to_s
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,216 +1,169 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-dns
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
version: 1.0.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Dr Nic Williams
|
9
|
+
- Martin Emde
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - "="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 51
|
28
|
-
segments:
|
29
|
-
- 1
|
30
|
-
- 3
|
31
|
-
- 20
|
32
|
-
version: 1.3.20
|
13
|
+
date: 2011-11-27 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
33
16
|
name: engineyard
|
34
|
-
|
17
|
+
requirement: &70207892889080 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - =
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.4.10
|
35
23
|
type: :runtime
|
36
|
-
|
37
|
-
|
38
|
-
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *70207892889080
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: fog
|
28
|
+
requirement: &70207892886560 !ruby/object:Gem::Requirement
|
39
29
|
none: false
|
40
|
-
requirements:
|
30
|
+
requirements:
|
41
31
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
- 8
|
47
|
-
- 2
|
48
|
-
version: 0.8.2
|
49
|
-
name: fog
|
50
|
-
prerelease: false
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
51
34
|
type: :runtime
|
52
|
-
|
53
|
-
|
54
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *70207892886560
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: ipaddress
|
39
|
+
requirement: &70207892908140 !ruby/object:Gem::Requirement
|
55
40
|
none: false
|
56
|
-
requirements:
|
41
|
+
requirements:
|
57
42
|
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
|
61
|
-
- 0
|
62
|
-
- 8
|
63
|
-
version: "0.8"
|
64
|
-
name: ipaddress
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0.8'
|
45
|
+
type: :runtime
|
65
46
|
prerelease: false
|
47
|
+
version_requirements: *70207892908140
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: domo-rb
|
50
|
+
requirement: &70207892906480 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
66
56
|
type: :runtime
|
67
|
-
|
68
|
-
|
69
|
-
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *70207892906480
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rake
|
61
|
+
requirement: &70207892904920 !ruby/object:Gem::Requirement
|
70
62
|
none: false
|
71
|
-
requirements:
|
63
|
+
requirements:
|
72
64
|
- - ~>
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
hash: 59
|
75
|
-
segments:
|
76
|
-
- 0
|
77
|
-
- 9
|
78
|
-
- 0
|
65
|
+
- !ruby/object:Gem::Version
|
79
66
|
version: 0.9.0
|
80
|
-
name: rake
|
81
|
-
prerelease: false
|
82
67
|
type: :development
|
83
|
-
|
84
|
-
|
85
|
-
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: *70207892904920
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: cucumber
|
72
|
+
requirement: &70207892922960 !ruby/object:Gem::Requirement
|
86
73
|
none: false
|
87
|
-
requirements:
|
74
|
+
requirements:
|
88
75
|
- - ~>
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
|
91
|
-
segments:
|
92
|
-
- 0
|
93
|
-
- 10
|
94
|
-
version: "0.10"
|
95
|
-
name: cucumber
|
96
|
-
prerelease: false
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0.10'
|
97
78
|
type: :development
|
98
|
-
|
99
|
-
|
100
|
-
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *70207892922960
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rspec
|
83
|
+
requirement: &70207892921080 !ruby/object:Gem::Requirement
|
101
84
|
none: false
|
102
|
-
requirements:
|
85
|
+
requirements:
|
103
86
|
- - ~>
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
segments:
|
107
|
-
- 2
|
108
|
-
- 5
|
109
|
-
version: "2.5"
|
110
|
-
name: rspec
|
111
|
-
prerelease: false
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '2.5'
|
112
89
|
type: :development
|
113
|
-
|
114
|
-
|
115
|
-
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *70207892921080
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: json
|
94
|
+
requirement: &70207892919820 !ruby/object:Gem::Requirement
|
116
95
|
none: false
|
117
|
-
requirements:
|
96
|
+
requirements:
|
118
97
|
- - ~>
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
hash: 7
|
121
|
-
segments:
|
122
|
-
- 1
|
123
|
-
- 4
|
124
|
-
- 0
|
98
|
+
- !ruby/object:Gem::Version
|
125
99
|
version: 1.4.0
|
126
|
-
name: json
|
127
|
-
prerelease: false
|
128
100
|
type: :development
|
129
|
-
version_requirements: *id007
|
130
|
-
- !ruby/object:Gem::Dependency
|
131
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
|
-
requirements:
|
134
|
-
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
hash: 3
|
137
|
-
segments:
|
138
|
-
- 0
|
139
|
-
version: "0"
|
140
|
-
name: awesome_print
|
141
101
|
prerelease: false
|
102
|
+
version_requirements: *70207892919820
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: awesome_print
|
105
|
+
requirement: &70207892918660 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
142
111
|
type: :development
|
143
|
-
|
144
|
-
|
145
|
-
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: *70207892918660
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: realweb
|
116
|
+
requirement: &70207892916720 !ruby/object:Gem::Requirement
|
146
117
|
none: false
|
147
|
-
requirements:
|
118
|
+
requirements:
|
148
119
|
- - ~>
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
hash: 23
|
151
|
-
segments:
|
152
|
-
- 0
|
153
|
-
- 1
|
154
|
-
- 6
|
120
|
+
- !ruby/object:Gem::Version
|
155
121
|
version: 0.1.6
|
156
|
-
name: realweb
|
157
|
-
prerelease: false
|
158
122
|
type: :development
|
159
|
-
version_requirements: *id009
|
160
|
-
- !ruby/object:Gem::Dependency
|
161
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
hash: 3
|
167
|
-
segments:
|
168
|
-
- 0
|
169
|
-
version: "0"
|
170
|
-
name: open4
|
171
123
|
prerelease: false
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
requirement: &
|
124
|
+
version_requirements: *70207892916720
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: open4
|
127
|
+
requirement: &70207892915840 !ruby/object:Gem::Requirement
|
176
128
|
none: false
|
177
|
-
requirements:
|
178
|
-
- -
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
|
181
|
-
|
182
|
-
- 0
|
183
|
-
version: "0"
|
184
|
-
name: sinatra
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
185
134
|
prerelease: false
|
135
|
+
version_requirements: *70207892915840
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
name: sinatra
|
138
|
+
requirement: &70207892930280 !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
186
144
|
type: :development
|
187
|
-
|
188
|
-
|
189
|
-
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: *70207892930280
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: fakeweb
|
149
|
+
requirement: &70207892929040 !ruby/object:Gem::Requirement
|
190
150
|
none: false
|
191
|
-
requirements:
|
151
|
+
requirements:
|
192
152
|
- - ~>
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
hash: 27
|
195
|
-
segments:
|
196
|
-
- 1
|
197
|
-
- 3
|
198
|
-
- 0
|
153
|
+
- !ruby/object:Gem::Version
|
199
154
|
version: 1.3.0
|
200
|
-
name: fakeweb
|
201
|
-
prerelease: false
|
202
155
|
type: :development
|
203
|
-
|
204
|
-
|
205
|
-
|
156
|
+
prerelease: false
|
157
|
+
version_requirements: *70207892929040
|
158
|
+
description: Easily configure your DNS with Engine Yard AppCloud via Fog.
|
159
|
+
email:
|
206
160
|
- drnicwilliams@gmail.com
|
207
|
-
|
161
|
+
- memde@engineyard.com
|
162
|
+
executables:
|
208
163
|
- ey-dns
|
209
164
|
extensions: []
|
210
|
-
|
211
165
|
extra_rdoc_files: []
|
212
|
-
|
213
|
-
files:
|
166
|
+
files:
|
214
167
|
- .gitignore
|
215
168
|
- .rspec
|
216
169
|
- .travis.yml
|
@@ -233,44 +186,41 @@ files:
|
|
233
186
|
- features/support/matchers.rb
|
234
187
|
- lib/engineyard-dns.rb
|
235
188
|
- lib/engineyard-dns/cli.rb
|
189
|
+
- lib/engineyard-dns/credentials.rb
|
236
190
|
- lib/engineyard-dns/version.rb
|
237
191
|
- posts/engineyard-2011-05-24.md
|
238
192
|
- spec/spec_helper.rb
|
239
|
-
has_rdoc: true
|
240
193
|
homepage: https://github.com/engineyard/engineyard-dns#readme
|
241
194
|
licenses: []
|
242
|
-
|
243
195
|
post_install_message:
|
244
196
|
rdoc_options: []
|
245
|
-
|
246
|
-
require_paths:
|
197
|
+
require_paths:
|
247
198
|
- lib
|
248
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
199
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
249
200
|
none: false
|
250
|
-
requirements:
|
251
|
-
- -
|
252
|
-
- !ruby/object:Gem::Version
|
253
|
-
|
254
|
-
segments:
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
segments:
|
255
206
|
- 0
|
256
|
-
|
257
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
|
+
hash: 2345930780459198008
|
208
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
258
209
|
none: false
|
259
|
-
requirements:
|
260
|
-
- -
|
261
|
-
- !ruby/object:Gem::Version
|
262
|
-
|
263
|
-
segments:
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
segments:
|
264
215
|
- 0
|
265
|
-
|
216
|
+
hash: 2345930780459198008
|
266
217
|
requirements: []
|
267
|
-
|
268
218
|
rubyforge_project: engineyard-dns
|
269
|
-
rubygems_version: 1.
|
219
|
+
rubygems_version: 1.8.10
|
270
220
|
signing_key:
|
271
221
|
specification_version: 3
|
272
|
-
summary: Configure your Engine Yard AppCloud environment
|
273
|
-
test_files:
|
222
|
+
summary: Configure DNS for your Engine Yard AppCloud environment.
|
223
|
+
test_files:
|
274
224
|
- features/assign_dns_to_environment.feature
|
275
225
|
- features/list_available_domains.feature
|
276
226
|
- features/missing_credentials.feature
|