engineyard-dnsimple 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +7 -2
- data/README.md +4 -3
- data/features/assign_dns_to_environment.feature +9 -10
- data/features/step_definitions/common_steps.rb +7 -0
- data/features/step_definitions/dnsimple_steps.rb +6 -6
- data/features/support/dnsimple.rb +25 -0
- data/features/support/env.rb +2 -0
- data/lib/engineyard-dnsimple/cli.rb +2 -2
- data/lib/engineyard-dnsimple/version.rb +1 -1
- metadata +5 -3
data/ChangeLog.md
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
# ChangeLog
|
2
2
|
|
3
|
-
## v0.1.
|
3
|
+
## v0.1.2 - 2011/5/22
|
4
|
+
|
5
|
+
* Cucumber scenario is now working against http://test.dnsimple.com
|
6
|
+
* Worth rereleasing gem just to celebrate
|
7
|
+
|
8
|
+
## v0.1.1 - 2011/5/22
|
4
9
|
|
5
10
|
* Create .myapp.com and www.myapp.com A records
|
6
11
|
|
7
|
-
## v0.1.0
|
12
|
+
## v0.1.0 - 2011/5/22
|
8
13
|
|
9
14
|
* Initial release
|
10
15
|
* Basic implementation of `ey-dnsimple assign DOMAIN`
|
data/README.md
CHANGED
@@ -9,10 +9,11 @@ Setup `ey` and `dnsimple` gems and credentials (see below).
|
|
9
9
|
|
10
10
|
$ ey-dnsimple assign myapp.com
|
11
11
|
Assigning myapp.com --> 1.2.3.4 (drnic/myapp_production)
|
12
|
-
|
13
|
-
|
14
|
-
Found
|
12
|
+
Assigning www.myapp.com --> 1.2.3.4 (drnic/myapp_production)
|
13
|
+
|
14
|
+
Found 2 records for myapp.com
|
15
15
|
.myapp.com (A)-> 1.2.3.4 (ttl:, id:12345)
|
16
|
+
www.myapp.com (A)-> 1.2.3.4 (ttl:, id:12346)
|
16
17
|
|
17
18
|
If an AppCloud environment cannot be automatically detected, explicitly pass -e or -a flags
|
18
19
|
like the `ey` CLI itself:
|
@@ -4,24 +4,23 @@ Feature: Assign DNS to environment IP address
|
|
4
4
|
Background:
|
5
5
|
Given I have setup my engineyard email/password for API access
|
6
6
|
And I have "two apps" in AppCloud
|
7
|
-
And I
|
8
|
-
|
9
|
-
| content | 174.129.7.113 |
|
10
|
-
| record_type | A |
|
7
|
+
And I have setup my dnsimple credentials
|
8
|
+
And I have DNSimple domain "myapp.com"
|
11
9
|
|
12
10
|
Scenario: Assign DNS A Record to an environment
|
13
11
|
When I run local executable "ey-dnsimple" with arguments "assign myapp.com --account main --environment giblets"
|
14
|
-
Then I should see
|
12
|
+
Then I should see matching
|
15
13
|
"""
|
16
|
-
Fetching environment information...
|
14
|
+
Fetching AppCloud environment information...
|
15
|
+
Found environment giblets on account main with IP 174.129.7.113
|
17
16
|
Assigning myapp.com --> 174.129.7.113 (main/giblets)
|
18
|
-
Created A record for
|
17
|
+
Created A record for myapp.com (id:\d+)
|
19
18
|
Assigning www.myapp.com --> 174.129.7.113 (main/giblets)
|
20
|
-
Created A record for
|
19
|
+
Created A record for myapp.com (id:\d+)
|
21
20
|
Complete!
|
22
21
|
Found 2 records for myapp.com
|
23
|
-
.myapp.com (A)-> 174.129.7.113 (ttl:
|
24
|
-
www.myapp.com (A)-> 174.129.7.113 (ttl:
|
22
|
+
.myapp.com (A)-> 174.129.7.113 (ttl:60, id:\d+)
|
23
|
+
www.myapp.com (A)-> 174.129.7.113 (ttl:60, id:\d+)
|
25
24
|
"""
|
26
25
|
|
27
26
|
|
@@ -123,6 +123,13 @@ Then /^I should see exactly$/ do |text|
|
|
123
123
|
actual_output.should == text
|
124
124
|
end
|
125
125
|
|
126
|
+
Then /^I should see matching$/ do |text|
|
127
|
+
regexp = Regexp.new(text.gsub("(", '\(').gsub(")", '\)'))
|
128
|
+
actual_output = File.read(@stdout)
|
129
|
+
actual_output.should match(regexp)
|
130
|
+
end
|
131
|
+
|
132
|
+
|
126
133
|
Then /^I should see all (\d+) tests pass/ do |expected_test_count|
|
127
134
|
expected = %r{^#{expected_test_count} tests, \d+ assertions, 0 failures, 0 errors}
|
128
135
|
actual_output = File.read(@stdout)
|
@@ -1,9 +1,9 @@
|
|
1
|
-
Given /^I
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
Given /^I have setup my dnsimple credentials$/ do
|
2
|
+
setup_dnsimple_credentials
|
3
|
+
end
|
4
|
+
|
5
|
+
Given /^I have DNSimple domain "([^"]*)"$/ do |domain|
|
6
|
+
create_dnsimple_domain domain
|
7
7
|
end
|
8
8
|
|
9
9
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module DNSimpleHelpers
|
2
|
+
def setup_dnsimple_credentials
|
3
|
+
config_file = File.expand_path('~/.dnsimple')
|
4
|
+
unless File.exists? config_file
|
5
|
+
File.open(config_file, "w") do |file|
|
6
|
+
file << <<-EOS.gsub(/^\s{8}/, '')
|
7
|
+
username: ossgrants+dnsimple@engineyard.com
|
8
|
+
password: dnsimple1
|
9
|
+
site: https://test.dnsimple.com/
|
10
|
+
EOS
|
11
|
+
end
|
12
|
+
end
|
13
|
+
require "dnsimple"
|
14
|
+
DNSimple::Client.load_credentials(config_file)
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_dnsimple_domain(domain)
|
18
|
+
begin
|
19
|
+
::DNSimple::Commands::DeleteDomain.new.execute([domain])
|
20
|
+
rescue
|
21
|
+
end
|
22
|
+
::DNSimple::Commands::CreateDomain.new.execute([domain])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
World(DNSimpleHelpers)
|
data/features/support/env.rb
CHANGED
@@ -24,9 +24,10 @@ module EngineYard
|
|
24
24
|
method_option :environment, :aliases => ["-e"], :desc => "Environment in which to deploy this application", :type => :string
|
25
25
|
method_option :account, :aliases => ["-c"], :desc => "Name of the account you want to deploy in"
|
26
26
|
def assign(domain)
|
27
|
-
say "Fetching environment information..."; $stdout.flush
|
27
|
+
say "Fetching AppCloud environment information..."; $stdout.flush
|
28
28
|
|
29
29
|
environment = fetch_environment(options[:environment], options[:account])
|
30
|
+
account_name, env_name = environment.account.name, environment.name
|
30
31
|
unless environment.instances.first
|
31
32
|
error "Environment #{account_name}/#{env_name} has no booted instances."
|
32
33
|
end
|
@@ -36,7 +37,6 @@ module EngineYard
|
|
36
37
|
error "Cannot determine public IP from current hostname #{public_hostname}"
|
37
38
|
end
|
38
39
|
|
39
|
-
account_name, env_name = environment.account.name, environment.name
|
40
40
|
public_ip = "#{$1}.#{$2}.#{$3}.#{$4}"
|
41
41
|
|
42
42
|
say "Found environment #{env_name} on account #{account_name} with IP #{public_ip}"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-dnsimple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dr Nic Williams
|
@@ -220,6 +220,7 @@ files:
|
|
220
220
|
- features/step_definitions/dnsimple_steps.rb
|
221
221
|
- features/step_definitions/ey_api_steps.rb
|
222
222
|
- features/support/common.rb
|
223
|
+
- features/support/dnsimple.rb
|
223
224
|
- features/support/engineyard.rb
|
224
225
|
- features/support/env.rb
|
225
226
|
- features/support/matchers.rb
|
@@ -267,6 +268,7 @@ test_files:
|
|
267
268
|
- features/step_definitions/dnsimple_steps.rb
|
268
269
|
- features/step_definitions/ey_api_steps.rb
|
269
270
|
- features/support/common.rb
|
271
|
+
- features/support/dnsimple.rb
|
270
272
|
- features/support/engineyard.rb
|
271
273
|
- features/support/env.rb
|
272
274
|
- features/support/matchers.rb
|