engineyard-dns 1.0.0 → 1.1.0
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/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
|