rudy 0.9.5 → 0.9.5.002

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.txt CHANGED
@@ -1,6 +1,11 @@
1
1
  RUDY, CHANGES
2
2
 
3
3
 
4
+ #### 0.9.6 (2009-10-16) ###########################
5
+
6
+ * FIXED: Include Gibbler for REXML
7
+
8
+
4
9
  #### 0.9.5 (2009-09-01) ###########################
5
10
 
6
11
  * FIXED: Unknown method error, 'li'
data/UPGRADING-0.9 ADDED
@@ -0,0 +1,115 @@
1
+ *Rudy 0.9 is not compatible with previous releases*. If you wish to upgrade, you will need to shutdown and relaunch machines and disks created with previous releases. There are several improvements to the configuration syntax and also disk backups will not be compatible between releases. If you rely on backups _you will need to make special arrangements_ (see Questions / Problems).
2
+
3
+
4
+ h2. The Process
5
+
6
+ _This describes the process for upgrading from 0.8. If you are using an earlier version of Rudy, see Questions & Problems below._
7
+
8
+
9
+ * Get everything you need off of your existing machines instances and disk volumes.
10
+ * Shutdown existing machines and destroy disks.
11
+ * Install Rudy 0.9
12
+ * Update your Rudy configuration.
13
+ * Startup your new machines.
14
+
15
+ h3. Shutdown
16
+
17
+ <pre><code> $ rudy -V
18
+ Rudy version: 0.8.5
19
+
20
+ $ rudy -vv shutdown
21
+ ...
22
+
23
+ $ rudy machines
24
+ No Machines
25
+ $ rudy disks
26
+ No disks
27
+
28
+ # Double check
29
+ $ rudy-ec2 instances
30
+ No instances running
31
+ $ rudy-ec2 volumes
32
+ No volumes
33
+ </pre></code>
34
+
35
+ h3. Install
36
+
37
+ <pre><code> $ sudo gem install rudy -V
38
+ $ rudy -V
39
+ Rudy version 0.9.1
40
+ </pre></code>
41
+
42
+ h3. Configuration Changes
43
+
44
+ You will need to make the following changes to your Rudy configuration:
45
+
46
+ h4. SSH commands in routines
47
+
48
+ The routine syntax has some minor improvements. The @before@ and @after@ keywords are now used exclusively for defining dependencies. Local and remote blocks are now simply, @local@ and @remote@.
49
+
50
+ *Old:*
51
+
52
+ <pre><code>routines do
53
+ sysupdate do
54
+ script_local do
55
+ uptime
56
+ end
57
+ before :root do
58
+ apt_get 'update'
59
+ apt_get 'install', 'build-essential'
60
+ end
61
+ end
62
+ end </pre></code>
63
+
64
+ *New:*
65
+
66
+ <pre><code>routines do
67
+ sysupdate do
68
+ local do
69
+ uptime
70
+ end
71
+ remote :root do
72
+ apt_get 'update'
73
+ apt_get 'install', 'build-essential'
74
+ end
75
+ end
76
+ end</pre></code>
77
+
78
+ For startup, shutdown, and reboot routines @before_remote@, @before_local@ and @after_remote@, @after_local@ are still available where appropriate (there's no @before_remote@ for startup).
79
+
80
+
81
+ h4. config block in machines config
82
+
83
+ This config block is no longer used. In 0.8 a YAML file containing this configuration would be uploaded to each machine during routines. This is also removed. However, it is now possible to upload any file you want inside the remote routine blocks.
84
+
85
+ *Old:*
86
+
87
+ <pre><code>machines do
88
+ config do
89
+ dbmaster 'localhost'
90
+ newparam 573114
91
+ end
92
+ end</pre></code>
93
+
94
+
95
+ *New:*
96
+
97
+ <pre><code>routines do
98
+ startup do
99
+ remote :root do
100
+ file_upload 'local/file/path', 'remote/path'
101
+ end
102
+ end
103
+ </pre></code>
104
+
105
+ h4. Startup
106
+
107
+ <pre><code>$ rudy startup
108
+ </pre></code>
109
+
110
+
111
+ h2. Questions / Problems
112
+
113
+ If you have any questions or problems either before or after you upgrade to Rudy 0.9, feel free to use the "discussion group":http://groups.google.com/group/rudy-deployment or email me directly (note: if my response could help others I will post it to the discussion group).
114
+
115
+ -- Delano (@solutious.com)
data/lib/rudy.rb CHANGED
@@ -4,8 +4,8 @@ unless defined?(RUDY_HOME)
4
4
  RUDY_LIB = File.join(File.dirname(__FILE__), '..', 'lib')
5
5
  end
6
6
 
7
- local_libs = %w{net-ssh net-scp aws-s3 caesars drydock rye storable sysinfo annoy gibbler}
8
- local_libs.each { |dir| $:.unshift File.join(RUDY_HOME, '..', dir, 'lib') }
7
+ #local_libs = %w{net-ssh net-scp aws-s3 caesars drydock rye storable sysinfo annoy gibbler}
8
+ #local_libs.each { |dir| $:.unshift File.join(RUDY_HOME, '..', dir, 'lib') }
9
9
  #require 'rubygems'
10
10
 
11
11
  begin; require 'json'; rescue LoadError; end # Silence!
@@ -13,20 +13,19 @@ begin; require 'json'; rescue LoadError; end # Silence!
13
13
  require 'digest/md5'
14
14
  require 'stringio'
15
15
  require 'ostruct'
16
- require 'yaml'
16
+ autoload :YAML, 'yaml'
17
17
  require 'logger'
18
18
  require 'socket'
19
19
  require 'resolv'
20
20
  require 'timeout'
21
- require 'gibbler'
21
+ autoload :Gibbler, 'gibbler/aliases'
22
22
  require 'tempfile'
23
23
  require 'rudy/mixins'
24
- require 'gibbler/aliases'
25
24
  require 'storable'
26
- require 'sysinfo'
25
+ autoload :SysInfo, 'sysinfo'
27
26
  require 'attic'
28
27
  require 'annoy'
29
- require 'rye'
28
+ autoload :Rye, 'rye'
30
29
 
31
30
  # = Rudy
32
31
  #
@@ -43,24 +42,31 @@ module Rudy
43
42
  MAJOR = 0.freeze
44
43
  MINOR = 9.freeze
45
44
  TINY = 5.freeze
45
+ PATCH = '002'.freeze
46
46
  end
47
- def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
47
+ def self.to_s; [MAJOR, MINOR, TINY, PATCH].join('.'); end
48
48
  def self.to_f; self.to_s.to_f; end
49
49
  end
50
50
 
51
+ def Rudy.sysinfo
52
+ @@sysinfo = SysInfo.new.freeze if @@sysinfo.nil?
53
+ @@sysinfo
54
+ end
55
+ def sysinfo; Rudy.sysinfo; end
56
+
51
57
  unless defined? Rudy::DOMAIN # We can assume all constants are defined
52
58
 
53
59
  @@quiet = false
54
60
  @@auto = false
55
61
  @@debug = false
56
- @@sysinfo = SysInfo.new.freeze
62
+ @@sysinfo = nil
57
63
 
58
64
  # SimpleDB accepts dashes in the domain name on creation and with the query syntax.
59
65
  # However, with select syntax it says: "The specified query expression syntax is not valid"
60
66
  DOMAIN = "rudy_state".freeze
61
67
  DELIM = '-'.freeze
62
68
 
63
- CONFIG_DIR = File.join(@@sysinfo.home, '.rudy').freeze
69
+ CONFIG_DIR = File.join(Rudy.sysinfo.home, '.rudy').freeze
64
70
  CONFIG_FILE = File.join(Rudy::CONFIG_DIR, 'config').freeze
65
71
  SSH_KEY_DIR = File.expand_path('~/.ssh').freeze
66
72
 
@@ -114,10 +120,6 @@ module Rudy
114
120
  def Rudy.enable_debug; @@debug = true; end
115
121
  def Rudy.disable_debug; @@debug = false; end
116
122
 
117
-
118
- def Rudy.sysinfo; @@sysinfo; end
119
- def sysinfo; @@sysinfo; end
120
-
121
123
  end
122
124
 
123
125
  if Rudy.sysinfo.vm == :java
data/lib/rudy/mixins.rb CHANGED
@@ -1,3 +1,4 @@
1
1
 
2
2
  require "rudy/mixins/hash"
3
- require "rudy/mixins/symbol"
3
+ require "rudy/mixins/symbol"
4
+ require "rudy/mixins/gibbler"
@@ -0,0 +1,7 @@
1
+
2
+
3
+ module REXML
4
+ module Node
5
+ include Gibbler::String
6
+ end
7
+ end
data/lib/rudy/routines.rb CHANGED
@@ -101,6 +101,7 @@ module Rudy
101
101
  rescue NameError, ArgumentError, RuntimeError, Errno::ECONNREFUSED => ex
102
102
  Rudy::Huxtable.le "#{ex.class}: #{ex.message}".color(:red)
103
103
  Rudy::Huxtable.le ex.backtrace if Rudy.debug?
104
+
104
105
  unless Rudy::Huxtable.global.parallel
105
106
  choice = Annoy.get_user_input('(S)kip (A)bort: ', nil, 3600) || ''
106
107
  if choice.match(/\AS/i)
@@ -51,7 +51,7 @@ module Rudy::Routines::Handlers;
51
51
 
52
52
  box.exception_hook(::Rye::CommandError, &rbox_exception_handler)
53
53
  box.exception_hook(Exception, &rbox_exception_handler)
54
-
54
+
55
55
  ## It'd better for unknown commands to be handled elsewhere
56
56
  ## because it doesn't make sense to retry a method that doesn't exist
57
57
  ##box.exception_hook(Rye::CommandNotFound, &rbox_exception_handler)
@@ -166,7 +166,7 @@ module Rudy::Routines::Handlers;
166
166
  else
167
167
  le prefix << "#{ex.class}: #{ex.message}".color(:red)
168
168
  end
169
- le ex.backtrace if @@global.verbose > 1
169
+ le ex.backtrace if Rudy.debug?
170
170
  end
171
171
 
172
172
 
@@ -68,6 +68,9 @@ module Rudy; module Routines; module Handlers;
68
68
  ### EXECUTE THE COMMANDS BLOCK
69
69
  begin
70
70
  robj.batch(argv, &proc)
71
+ rescue Rye::CommandError => ex
72
+ # No need to bubble exception up when in parallel mode
73
+ raise ex unless Rye::Set == robj
71
74
  ensure
72
75
  robj.enable_safe_mode # In case it was disabled
73
76
  robj.switch_user original_user # Return to the user it was provided with
@@ -78,8 +81,6 @@ module Rudy; module Routines; module Handlers;
78
81
  end
79
82
 
80
83
 
81
-
82
-
83
84
  end
84
85
  end
85
86
 
data/rudy.gemspec CHANGED
@@ -1,12 +1,12 @@
1
1
  @spec = Gem::Specification.new do |s|
2
- s.name = "rudy"
2
+ s.name = "rudy"
3
3
  s.rubyforge_project = 'rudy'
4
- s.version = "0.9.5"
5
- s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
6
- s.description = s.summary
7
- s.author = "Delano Mandelbaum"
8
- s.email = "delano@solutious.com"
9
- s.homepage = "http://solutious.com/projects/rudy/"
4
+ s.version = "0.9.5.002"
5
+ s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
6
+ s.description = s.summary
7
+ s.author = "Delano Mandelbaum"
8
+ s.email = "delano@solutious.com"
9
+ s.homepage = "http://solutious.com/projects/rudy/"
10
10
 
11
11
  s.extra_rdoc_files = %w[README.rdoc Rudyfile LICENSE.txt CHANGES.txt]
12
12
  s.has_rdoc = true
@@ -16,15 +16,15 @@
16
16
 
17
17
  s.executables = %w[rudy rudy-ec2 rudy-sdb rudy-s3]
18
18
 
19
- s.add_dependency 'rye', '>= 0.8.9'
19
+ s.add_dependency 'rye', '>= 0.8.11'
20
20
  s.add_dependency 'attic', '>= 0.4.0'
21
21
  s.add_dependency 'annoy', '>= 0.5.5'
22
22
  s.add_dependency 'drydock', '>= 0.6.6'
23
23
  s.add_dependency 'caesars', '>= 0.7.3'
24
24
  s.add_dependency 'sysinfo', '>= 0.7.0'
25
- s.add_dependency 'gibbler', '>= 0.6.0'
25
+ s.add_dependency 'gibbler', '>= 0.7.1'
26
26
  s.add_dependency 'tryouts', '>= 0.8.4'
27
- s.add_dependency 'storable', '>= 0.5.6'
27
+ s.add_dependency 'storable', '>= 0.5.8'
28
28
 
29
29
  s.add_dependency 'aws-s3', '>= 0.6.1'
30
30
  s.add_dependency 'highline', '>= 1.5.1'
@@ -38,6 +38,7 @@
38
38
  README.rdoc
39
39
  Rakefile
40
40
  Rudyfile
41
+ UPGRADING-0.9
41
42
  bin/rudy
42
43
  bin/rudy-ec2
43
44
  bin/rudy-s3
@@ -103,6 +104,7 @@
103
104
  lib/rudy/metadata/disk.rb
104
105
  lib/rudy/metadata/machine.rb
105
106
  lib/rudy/mixins.rb
107
+ lib/rudy/mixins/gibbler.rb
106
108
  lib/rudy/mixins/hash.rb
107
109
  lib/rudy/mixins/symbol.rb
108
110
  lib/rudy/routines.rb
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rudy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.5.002
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-01 00:00:00 -04:00
12
+ date: 2009-10-30 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.8.9
23
+ version: 0.8.11
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: attic
@@ -80,7 +80,7 @@ dependencies:
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: 0.6.0
83
+ version: 0.7.1
84
84
  version:
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: tryouts
@@ -100,7 +100,7 @@ dependencies:
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.5.6
103
+ version: 0.5.8
104
104
  version:
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: aws-s3
@@ -152,6 +152,7 @@ files:
152
152
  - README.rdoc
153
153
  - Rakefile
154
154
  - Rudyfile
155
+ - UPGRADING-0.9
155
156
  - bin/rudy
156
157
  - bin/rudy-ec2
157
158
  - bin/rudy-s3
@@ -217,6 +218,7 @@ files:
217
218
  - lib/rudy/metadata/disk.rb
218
219
  - lib/rudy/metadata/machine.rb
219
220
  - lib/rudy/mixins.rb
221
+ - lib/rudy/mixins/gibbler.rb
220
222
  - lib/rudy/mixins/hash.rb
221
223
  - lib/rudy/mixins/symbol.rb
222
224
  - lib/rudy/routines.rb
@@ -311,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
311
313
  requirements: []
312
314
 
313
315
  rubyforge_project: rudy
314
- rubygems_version: 1.3.2
316
+ rubygems_version: 1.3.5
315
317
  signing_key:
316
318
  specification_version: 3
317
319
  summary: "Rudy: Not your grandparents' EC2 deployment tool."