breeze 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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