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.
@@ -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
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source :rubygems
2
2
 
3
3
  # Specify your gem's dependencies in engineyard-dns.gemspec
4
4
  gemspec
@@ -1,16 +1,15 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
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 and your DNSimple domain.}
13
- s.description = %q{Easily configure your DNS with Engine Yard AppCloud via DNSimple.}
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.3.20")
23
- s.add_dependency("fog", "~> 0.8.2")
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 amongst your DNS providers...
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
- Created A record for myapp.com
21
+ A record for myapp.com created.
22
22
  Assigning www.myapp.com --> 127.0.0.0 (main/giblets)
23
- Created A record for www.myapp.com
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 amongst your DNS providers...
40
- Found myapp.com in DNSimple account
41
-
42
- Deleted myapp.com
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
- Created A record for myapp.com
45
- Deleted www.myapp.com
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
- Created A record for www.myapp.com
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 staging --account main --environment giblets"
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 amongst your DNS providers...
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
- Created A record for staging.myapp.com
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
-
@@ -11,7 +11,5 @@ Feature: List available domains
11
11
  DNSimple:
12
12
  myapp.com - 0 records
13
13
  myotherapp.com - 0 records
14
-
14
+
15
15
  """
16
-
17
-
@@ -8,10 +8,6 @@ Feature: Missing credentials
8
8
  """
9
9
  ERROR: Missing credentials for DNS providers.
10
10
  An example ~/.fog credentials file has been created for you.
11
-
11
+
12
12
  """
13
13
  And file "~/.fog" is created
14
-
15
-
16
-
17
-
@@ -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 = { ENV['CLOUD_URL'] => {
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(Spec::Helpers)
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
@@ -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 DOMAIN [SUBDOMAIN]", "Assign DNS domain/tld (or name.tld) to your AppCloud environment"
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(domain_name, subdomain = "")
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} amongst your DNS providers..."
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 #{domain_name} in #{provider_name} account"
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.select {|z| z.domain == domain_name}.first
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 "Deleted #{domain_name domain, subdomain}"
141
+ say "#{combined_domain_name} deleted."
124
142
  else
125
- error "Cannot replace existing #{domain_name domain, subdomain} DNS"
143
+ error "Cannot replace existing #{combined_domain_name} DNS."
126
144
  end
127
145
  end
128
146
  say "Assigning "
129
- say "#{domain_name domain, subdomain} ", :green
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(:ip => public_ip, :name => subdomain, :type => record_type(public_ip), :ttl => "60")
135
- say "Created #{record.type} record for #{domain_name domain, subdomain}"
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 domain_name(domain, name = nil)
158
- if name && name.length > 0
159
- "#{name}.#{domain.domain}"
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
- return if File.exist?(Fog.credentials_path)
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 #{pretty_path} credentials file has been created for you.
207
- HELP
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
@@ -1,5 +1,5 @@
1
1
  module EngineYard
2
2
  module DNS
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  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
- hash: 23
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
- date: 2011-05-27 00:00:00 -07:00
19
- default_executable:
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
- prerelease: false
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
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- requirement: &id002 !ruby/object:Gem::Requirement
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
- hash: 59
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
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- requirement: &id003 !ruby/object:Gem::Requirement
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
- hash: 27
60
- segments:
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
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- requirement: &id004 !ruby/object:Gem::Requirement
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
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
85
- requirement: &id005 !ruby/object:Gem::Requirement
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
- hash: 31
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
- version_requirements: *id005
99
- - !ruby/object:Gem::Dependency
100
- requirement: &id006 !ruby/object:Gem::Requirement
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
- hash: 9
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
- version_requirements: *id006
114
- - !ruby/object:Gem::Dependency
115
- requirement: &id007 !ruby/object:Gem::Requirement
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
- version_requirements: *id008
144
- - !ruby/object:Gem::Dependency
145
- requirement: &id009 !ruby/object:Gem::Requirement
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
- type: :development
173
- version_requirements: *id010
174
- - !ruby/object:Gem::Dependency
175
- requirement: &id011 !ruby/object:Gem::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
- hash: 3
181
- segments:
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
- version_requirements: *id011
188
- - !ruby/object:Gem::Dependency
189
- requirement: &id012 !ruby/object:Gem::Requirement
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
- version_requirements: *id012
204
- description: Easily configure your DNS with Engine Yard AppCloud via DNSimple.
205
- email:
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
- executables:
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
- hash: 3
254
- segments:
201
+ requirements:
202
+ - - ! '>='
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ segments:
255
206
  - 0
256
- version: "0"
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
- hash: 3
263
- segments:
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ segments:
264
215
  - 0
265
- version: "0"
216
+ hash: 2345930780459198008
266
217
  requirements: []
267
-
268
218
  rubyforge_project: engineyard-dns
269
- rubygems_version: 1.5.0
219
+ rubygems_version: 1.8.10
270
220
  signing_key:
271
221
  specification_version: 3
272
- summary: Configure your Engine Yard AppCloud environment and your DNSimple domain.
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