breeze 0.0.5 → 0.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.
@@ -0,0 +1 @@
1
+ 1.9.3-p286
data/bin/breeze CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'thor'
4
+ require 'breeze'
4
5
 
5
6
  module Breeze
6
7
  class Runner < Thor
@@ -11,6 +12,18 @@ module Breeze
11
12
  invoke('breeze:initializer:init')
12
13
  end
13
14
 
15
+ # Display the version number if the default task (help) is invoked with:
16
+ # breeze --version
17
+ desc 'help [TASK]', 'Describe available tasks or one specific task'
18
+ method_option :version, :aliases => '-v', :desc => 'Display the version number'
19
+ def help(task=nil)
20
+ if options[:version]
21
+ puts "breeze version #{VERSION}"
22
+ else
23
+ super(task)
24
+ end
25
+ end
26
+
14
27
  end
15
28
  end
16
29
 
@@ -0,0 +1,16 @@
1
+ Feature: Manage DNS zones and records
2
+
3
+ DNS zones and records can be created and destroyed.
4
+ Records can also be imported from a file.
5
+
6
+ Scenario: Create a DNS zone
7
+ When I run `thor dns:zone:create example.com`
8
+ Then the output should look like:
9
+ """
10
+ Zone ID: .*
11
+ Name servers: .*
12
+ """
13
+
14
+ Scenario: Create a DNS record
15
+ Given I have created a DNS zone
16
+ Then I can add a record with `thor dns:record:create [ZONE ID] www.example.com. A 127.0.0.1`
@@ -12,3 +12,7 @@ Then /^the output should look like:$/ do |lines|
12
12
  all_output.should match(/#{line.strip}/)
13
13
  end
14
14
  end
15
+
16
+ Then /^show me the output$/ do
17
+ puts all_output
18
+ end
@@ -0,0 +1,8 @@
1
+ Given /^I have created a DNS zone$/ do
2
+ step 'I run `thor dns:zone:create example.com`'
3
+ @dns_zone_id = $1 if all_stdout =~ /Zone ID: (.*)/
4
+ end
5
+
6
+ When /^I can add a record with `thor dns:record:create \[ZONE ID\] www\.example\.com\. A 127\.0\.0\.1`$/ do
7
+ step "I run `thor dns:record:create #{@dns_zone_id} www.example.com. A 127.0.0.1`"
8
+ end
@@ -1,6 +1,6 @@
1
1
  module Breeze
2
2
 
3
- VERSION = "0.0.5"
3
+ VERSION = "0.1.0"
4
4
  autoload :Veur, 'breeze/veur'
5
5
 
6
6
  end
@@ -7,11 +7,12 @@ module Breeze
7
7
  module FogWrapper
8
8
 
9
9
  def self.connection(type)
10
- {:compute => Compute, :rds => RDS}[type].get_connection
10
+ {:compute => Compute, :dns => DNS, :rds => RDS}[type].get_connection
11
11
  end
12
12
 
13
13
  def self.flush_mock_data!
14
14
  Compute.new.flush_data!
15
+ DNS.new.flush_data!
15
16
  # RDS.new.flush_data!
16
17
  end
17
18
 
@@ -57,6 +58,15 @@ module Breeze
57
58
  def mock_class ; Fog::Compute::AWS::Mock ; end
58
59
  end
59
60
 
61
+ class DNS < AbstractConnectionWrapper
62
+ def self.direct_fog_connection
63
+ Fog::DNS.new(CONFIGURATION[:cloud_service])
64
+ end
65
+ private
66
+ def data_file ; 'fog_dns_data.yaml' ; end
67
+ def mock_class ; Fog::DNS::AWS::Mock ; end
68
+ end
69
+
60
70
  # TODO: add RDS mocks to fog so that we can start testing it
61
71
  class RDS < AbstractConnectionWrapper
62
72
  def self.direct_fog_connection
@@ -61,10 +61,14 @@ module Breeze
61
61
  puts("The new server should soon be available at: #{ip(new_server)}")
62
62
  if ask("Ready to continue and move the elastic_ip for #{public_server_name} to the new server? [YES/rollback] >") =~ /r|n/i
63
63
  new_server.destroy
64
- else
64
+ elsif old_server
65
65
  remote("nohup sudo shutdown -h +#{CONFIGURATION[:rollback_window]} > /dev/null 2>&1 &", :host => ip(old_server))
66
66
  old_server.spare_for_rollback!
67
67
  move_addresses(old_server, new_server)
68
+ else
69
+ puts('ERROR: Cannot move the IP because the current active server was not found.')
70
+ puts("Move it manually with: thor server:address:associate [IP] #{new_server.id}")
71
+ puts("or create a new elastic IP with: thor server:address:create #{new_server.id}")
68
72
  end
69
73
  end
70
74
 
@@ -9,6 +9,7 @@ module Breeze
9
9
  puts "Zone ID: #{zone.id}"
10
10
  puts "Change info: #{zone.change_info}"
11
11
  puts "Name servers: #{zone.nameservers}"
12
+ FogWrapper.flush_mock_data! if Fog.mocking?
12
13
  end
13
14
 
14
15
  desc 'destroy ZONE_ID', 'Destroy a DNS zone'
@@ -50,7 +51,8 @@ module Breeze
50
51
 
51
52
  desc 'create ZONE_ID NAME TYPE IP [TTL]', 'Create a new DNS record'
52
53
  def create(zone_id, name, type, ip, ttl=3600)
53
- get_zone(zone_id).records.create(:name => name, :type => type, :ip => ip, :ttl => ttl)
54
+ get_zone(zone_id).records.create(:name => name, :type => type, :value => ip, :ttl => ttl)
55
+ FogWrapper.flush_mock_data! if Fog.mocking?
54
56
  end
55
57
 
56
58
  desc 'destroy ZONE_ID NAME [TYPE]', 'Destroy a DNS record'
@@ -64,7 +64,7 @@ module Breeze
64
64
  puts table
65
65
  end
66
66
 
67
- # capture table in order to determine it's width
67
+ # capture table in order to determine its width
68
68
  def capture_table(table)
69
69
  return 'none' if table.size == 1 # the first row is for column titles
70
70
  $stdout = StringIO.new # start capturing the output
@@ -79,7 +79,7 @@ module Breeze
79
79
  end
80
80
 
81
81
  def dns
82
- @dns ||= Fog::DNS.new(CONFIGURATION[:cloud_service])
82
+ @dns ||= Breeze::FogWrapper.connection(:dns)
83
83
  end
84
84
 
85
85
  def rds
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: breeze
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-13 00:00:00.000000000 Z
12
+ date: 2012-10-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70318976130880 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70318976130880
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: fog
27
- requirement: &70318976130460 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70318976130460
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: cucumber
38
- requirement: &70318976146200 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70318976146200
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: aruba
49
- requirement: &70318976145400 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,7 +69,12 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70318976145400
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  description: ! 'Breeze makes it easy to automate server installation and configuration.
59
79
  It provides
60
80
 
@@ -72,15 +92,18 @@ extensions: []
72
92
  extra_rdoc_files: []
73
93
  files:
74
94
  - .gitignore
95
+ - .rbenv-version
75
96
  - Gemfile
76
97
  - LICENSE
77
98
  - README.md
78
99
  - Rakefile
79
100
  - bin/breeze
80
101
  - breeze.gemspec
102
+ - features/dns.feature
81
103
  - features/erb_conf.feature
82
104
  - features/getting_started.feature
83
105
  - features/step_definitions/application_steps.rb
106
+ - features/step_definitions/dns_steps.rb
84
107
  - features/step_definitions/server_steps.rb
85
108
  - features/support/env.rb
86
109
  - lib/breeze.rb
@@ -128,21 +151,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
151
  - - ! '>='
129
152
  - !ruby/object:Gem::Version
130
153
  version: '0'
154
+ segments:
155
+ - 0
156
+ hash: 4461246332485121240
131
157
  required_rubygems_version: !ruby/object:Gem::Requirement
132
158
  none: false
133
159
  requirements:
134
160
  - - ! '>='
135
161
  - !ruby/object:Gem::Version
136
162
  version: '0'
163
+ segments:
164
+ - 0
165
+ hash: 4461246332485121240
137
166
  requirements: []
138
167
  rubyforge_project: breeze
139
- rubygems_version: 1.8.11
168
+ rubygems_version: 1.8.23
140
169
  signing_key:
141
170
  specification_version: 3
142
171
  summary: Thor tasks to manage cloud computing resources and deployments
143
172
  test_files:
173
+ - features/dns.feature
144
174
  - features/erb_conf.feature
145
175
  - features/getting_started.feature
146
176
  - features/step_definitions/application_steps.rb
177
+ - features/step_definitions/dns_steps.rb
147
178
  - features/step_definitions/server_steps.rb
148
179
  - features/support/env.rb