rudy 0.6.5 → 0.6.6
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.
- data/CHANGES.txt +6 -1
- data/README.rdoc +5 -3
- data/Rudyfile +2 -2
- data/bin/rudy +3 -3
- data/bin/rudy-s3 +76 -0
- data/lib/rudy/aws/sdb.rb +25 -17
- data/lib/rudy/aws.rb +5 -6
- data/lib/rudy.rb +2 -2
- data/rudy.gemspec +7 -5
- metadata +14 -2
data/CHANGES.txt
CHANGED
@@ -7,7 +7,12 @@ RUDY, CHANGES
|
|
7
7
|
* TODO: Support for product codes
|
8
8
|
* TODO: HTTPS
|
9
9
|
|
10
|
-
#### 0.6.
|
10
|
+
#### 0.6.6 (2009-04-22) ###############################
|
11
|
+
|
12
|
+
* ADDED: Better error handling for Rudy::AWS::SDB
|
13
|
+
* FIXED: Ruby 1.9.1 compatability (including requiring aws-s3 >=0.6.1)
|
14
|
+
|
15
|
+
#### 0.6.5 (2009-04-20) ###############################
|
11
16
|
|
12
17
|
* FIXED: Startup and Shutdown routines now check machine group status first
|
13
18
|
* FIXED: Misc release process issues between 0.6.0 and 0.6.4
|
data/README.rdoc
CHANGED
@@ -33,8 +33,8 @@ Via Rubygems, one of:
|
|
33
33
|
$ sudo gem install solutious-rudy --source http://gems.github.com/
|
34
34
|
|
35
35
|
or via download:
|
36
|
-
* rudy-0.6.
|
37
|
-
* rudy-0.6.
|
36
|
+
* rudy-0.6.6.tar.gz[http://github.com/solutious/rudy/tarball/rudy-0.6.6]
|
37
|
+
* rudy-0.6.6.zip[http://github.com/solutious/rudy/zipball/rudy-0.6.6]
|
38
38
|
|
39
39
|
NOTE: <em>If you are not installing via RubyGems, you need to make sure the dependencies are in your LOAD_PATH (<tt>$:</tt>). Ryan Tomayko wrote a gist[http://gist.github.com/54177] about it.</em>
|
40
40
|
|
@@ -85,7 +85,9 @@ The <tt>-u root</tt> tells Rudy to open a connection as the root user. If you cr
|
|
85
85
|
|
86
86
|
== Common Errors
|
87
87
|
|
88
|
-
* <tt>"
|
88
|
+
* <tt>"fingerprint ... does not match for 'ec2-11-22-33-44.compute-1.amazonaws.com,11.22.33.44'"</tt>
|
89
|
+
* This means the host SSH key for that machine does not match your +~/.ssh/known_hosts+ file. Most EC2 images generate new host SSH keys on the first boot so is the most likely cause for this error message (it's safe to continue). If this is not a new instance, you should tell Rudy not to continue and investigate manually.
|
90
|
+
* <tt>"`require': no such file to load -- logger (LoadError)"</tt>
|
89
91
|
* You're probably running a mix of Rubygem and non-Rubygem libraries. Ryan Tomayko has you covered: http://gist.github.com/54177
|
90
92
|
* <tt>"The request signature we calculated does not match the signature you provided."</tt>
|
91
93
|
* Check that your Amazon Web Service access key and secret key are correct
|
data/Rudyfile
CHANGED
data/bin/rudy
CHANGED
@@ -10,8 +10,8 @@
|
|
10
10
|
|
11
11
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place
|
12
12
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'vendor', 'highline-1.5.1', 'lib')
|
13
|
-
|
14
|
-
require 'rubygems'
|
13
|
+
#%w{amazon-ec2 rye}.each { |dir| $:.unshift File.join(File.dirname(__FILE__), '..', '..', dir, 'lib') }
|
14
|
+
#require 'rubygems'
|
15
15
|
|
16
16
|
#$SAFE = 1 # require is unsafe in Ruby 1.9??
|
17
17
|
|
@@ -251,7 +251,7 @@ class RudyCLI < Rudy::CLI::Base
|
|
251
251
|
|
252
252
|
# ------------------------------------------- UGLY STUFFS --------
|
253
253
|
# ------------------------------------------------------------------
|
254
|
-
debug :
|
254
|
+
debug :off
|
255
255
|
default :machines
|
256
256
|
|
257
257
|
|
data/bin/rudy-s3
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# = Rudy S3
|
4
|
+
#
|
5
|
+
# === A Rudy interface to Amazon Simple Storage Service
|
6
|
+
#
|
7
|
+
#
|
8
|
+
#
|
9
|
+
# See rudy-s3 -h for usage
|
10
|
+
#
|
11
|
+
|
12
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place
|
13
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'vendor', 'highline-1.5.1', 'lib')
|
14
|
+
#%w{amazon-ec2 caesars rye}.each { |dir| $:.unshift File.join(File.dirname(__FILE__), '..', '..', dir, 'lib') }
|
15
|
+
#require 'rubygems'
|
16
|
+
|
17
|
+
require 'rudy'
|
18
|
+
require 'rudy/cli'
|
19
|
+
require 'drydock'
|
20
|
+
|
21
|
+
# Command-line interface for bin/rudy-s3
|
22
|
+
module RudyCLI_S3
|
23
|
+
extend Drydock
|
24
|
+
|
25
|
+
# ------------------------------------ AMAZON S3 COMMANDS --------
|
26
|
+
# ------------------------------------------------------------------
|
27
|
+
|
28
|
+
desc "Amazon S3 Buckets"
|
29
|
+
usage "rudy-s3 buckets"
|
30
|
+
option :l, :list, "List bucket objects"
|
31
|
+
action :C, :create, "Create a bucket"
|
32
|
+
action :D, :destroy, "Destroy a bucket"
|
33
|
+
argv :name
|
34
|
+
command :buckets => Rudy::CLI::AWS::S3::Buckets
|
35
|
+
command_alias :buckets, :b
|
36
|
+
|
37
|
+
#desc "Amazon S3 Storage Interface"
|
38
|
+
#usage "rudy-s3 store file-path"
|
39
|
+
#option :b, :bucket, String, "Bucket name"
|
40
|
+
#argv :path
|
41
|
+
#command :store => Rudy::CLI::AWS::S3::Store
|
42
|
+
#command_alias :store, :s
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
# --------------------------------- RUDY-S3 MISCELLANEOUS --------
|
47
|
+
# ------------------------------------------------------------------
|
48
|
+
|
49
|
+
default :buckets
|
50
|
+
debug :off
|
51
|
+
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
#puts Rudy::Utils.banner("THIS IS RUBY #{RUBY_VERSION}") if Drydock.debug?
|
57
|
+
|
58
|
+
# We call Drydock specifically otherwise it will run at_exit. Rye also
|
59
|
+
# uses at_exit for shutting down the ssh-agent. Ruby executes at_exit
|
60
|
+
# blocks in reverse order so if Drydock is required first, it's block
|
61
|
+
# will run after Rye shuts down the ssh-agent.
|
62
|
+
begin
|
63
|
+
Drydock.run!(ARGV, STDIN) if Drydock.run? && !Drydock.has_run?
|
64
|
+
rescue Drydock::ArgError, Drydock::OptError=> ex
|
65
|
+
STDERR.puts ex.message
|
66
|
+
STDERR.puts ex.usage
|
67
|
+
rescue Rudy::Error => ex
|
68
|
+
STDERR.puts ex.message
|
69
|
+
rescue => ex
|
70
|
+
STDERR.puts "ERROR (#{ex.class.to_s}): #{ex.message}"
|
71
|
+
STDERR.puts ex.backtrace if Drydock.debug?
|
72
|
+
rescue SystemExit
|
73
|
+
# Don't balk
|
74
|
+
end
|
75
|
+
|
76
|
+
|
data/lib/rudy/aws/sdb.rb
CHANGED
@@ -13,7 +13,8 @@ module Rudy
|
|
13
13
|
class SDB
|
14
14
|
class NoAccessKey < RuntimeError; end
|
15
15
|
class NoSecretKey < RuntimeError; end
|
16
|
-
|
16
|
+
include Rudy::AWS::ObjectBase
|
17
|
+
|
17
18
|
require 'rudy/aws/sdb/error'
|
18
19
|
|
19
20
|
def initialize(access_key=nil, secret_key=nil, region=nil, debug=nil)
|
@@ -94,7 +95,7 @@ module Rudy
|
|
94
95
|
}
|
95
96
|
params['NextToken'] =
|
96
97
|
token unless token.nil? || token.empty?
|
97
|
-
|
98
|
+
|
98
99
|
doc = call(:get, params)
|
99
100
|
results = []
|
100
101
|
REXML::XPath.each(doc, "//Item") do |item|
|
@@ -268,24 +269,31 @@ module Rudy
|
|
268
269
|
uri = URI.parse(url)
|
269
270
|
@debug.puts("#{url}") if @debug
|
270
271
|
|
271
|
-
response =
|
272
|
+
response = execute_request(nil) {
|
272
273
|
Net::HTTP.new(uri.host, uri.port).send_request(method, uri.request_uri)
|
273
|
-
|
274
|
-
raise(ConnectionError.new(response)) unless (200..400).include?(
|
275
|
-
response.code.to_i
|
276
|
-
)
|
274
|
+
}
|
277
275
|
|
278
|
-
|
279
|
-
error = doc.get_elements('*/Errors/Error')[0]
|
280
|
-
raise(
|
281
|
-
Module.class_eval(
|
282
|
-
"AwsSdb::#{error.get_elements('Code')[0].text}Error"
|
283
|
-
).new(
|
284
|
-
error.get_elements('Message')[0].text,
|
285
|
-
doc.get_elements('*/RequestID')[0].text
|
286
|
-
)
|
287
|
-
) unless error.nil?
|
276
|
+
if !response.nil?
|
288
277
|
|
278
|
+
@debug.puts("#{response.code}\n#{response.body}") if @debug
|
279
|
+
raise(ConnectionError.new(response)) unless (200..400).include?(
|
280
|
+
response.code.to_i
|
281
|
+
)
|
282
|
+
|
283
|
+
|
284
|
+
doc = REXML::Document.new(response.body)
|
285
|
+
error = doc.get_elements('*/Errors/Error')[0]
|
286
|
+
raise(
|
287
|
+
Module.class_eval(
|
288
|
+
"AwsSdb::#{error.get_elements('Code')[0].text}Error"
|
289
|
+
).new(
|
290
|
+
error.get_elements('Message')[0].text,
|
291
|
+
doc.get_elements('*/RequestID')[0].text
|
292
|
+
)
|
293
|
+
) unless error.nil?
|
294
|
+
else
|
295
|
+
doc = nil
|
296
|
+
end
|
289
297
|
doc
|
290
298
|
end
|
291
299
|
end
|
data/lib/rudy/aws.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
require 'EC2' #
|
4
|
-
|
5
|
-
# Disabled b/c it's not Ruby 1.9 compatible
|
3
|
+
require 'EC2' # A
|
4
|
+
require 'aws_sdb' # motley
|
6
5
|
require 'aws/s3' # crew
|
7
6
|
|
8
7
|
module Rudy
|
@@ -53,9 +52,9 @@ module Rudy
|
|
53
52
|
rescue Timeout::Error => ex
|
54
53
|
STDERR.puts "Timeout (#{timeout}): #{ex.message}!"
|
55
54
|
rescue SocketError => ex
|
56
|
-
|
57
|
-
STDERR.puts ex.message
|
58
|
-
STDERR.puts ex.backtrace
|
55
|
+
raise SocketError, "Check your Internets!"
|
56
|
+
#STDERR.puts ex.message
|
57
|
+
#STDERR.puts ex.backtrace
|
59
58
|
ensure
|
60
59
|
response ||= default
|
61
60
|
end
|
data/lib/rudy.rb
CHANGED
@@ -9,6 +9,7 @@ require 'digest/md5'
|
|
9
9
|
require 'stringio'
|
10
10
|
require 'ostruct'
|
11
11
|
require 'yaml'
|
12
|
+
require 'logger'
|
12
13
|
require 'socket'
|
13
14
|
require 'timeout'
|
14
15
|
require 'tempfile'
|
@@ -26,7 +27,6 @@ require 'net/ssh/multi'
|
|
26
27
|
require 'net/ssh/gateway'
|
27
28
|
|
28
29
|
|
29
|
-
require 'logger'
|
30
30
|
|
31
31
|
# = Rudy
|
32
32
|
#
|
@@ -65,7 +65,7 @@ module Rudy
|
|
65
65
|
unless defined?(MAJOR)
|
66
66
|
MAJOR = 0.freeze
|
67
67
|
MINOR = 6.freeze
|
68
|
-
TINY =
|
68
|
+
TINY = 6.freeze
|
69
69
|
end
|
70
70
|
def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
|
71
71
|
def self.to_f; self.to_s.to_f; end
|
data/rudy.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
@spec = Gem::Specification.new do |s|
|
2
2
|
s.name = "rudy"
|
3
3
|
s.rubyforge_project = 'rudy'
|
4
|
-
s.version = "0.6.
|
4
|
+
s.version = "0.6.6"
|
5
5
|
s.summary = "Rudy: Not your grandparent's deployment tool."
|
6
6
|
s.description = s.summary
|
7
7
|
s.author = "Delano Mandelbaum"
|
@@ -19,9 +19,10 @@
|
|
19
19
|
s.add_dependency 'rye', '>= 0.5.3'
|
20
20
|
|
21
21
|
s.add_dependency 'echoe'
|
22
|
-
s.add_dependency 'amazon-ec2', '>= 0.3.8' #
|
23
|
-
s.add_dependency '
|
24
|
-
s.add_dependency 'net-
|
22
|
+
s.add_dependency 'amazon-ec2', '>= 0.3.8' # Region fix
|
23
|
+
s.add_dependency 'aws-s3', '>= 0.6.1' # Ruby 1.9.1 compatability
|
24
|
+
s.add_dependency 'net-ssh', '>= 2.0.9'
|
25
|
+
s.add_dependency 'net-scp', '>= 1.0.2'
|
25
26
|
s.add_dependency 'net-ssh-gateway'
|
26
27
|
s.add_dependency 'net-ssh-multi'
|
27
28
|
|
@@ -31,7 +32,7 @@
|
|
31
32
|
#s.add_development_dependency('jgre-monkeyspecdoc', '>= 0.1.0')
|
32
33
|
#s.add_development_dependency('thoughtbot-shoulda', '>= 0.1.0')
|
33
34
|
|
34
|
-
s.executables = %w[ird rudy rudy-ec2 rudy-sdb]
|
35
|
+
s.executables = %w[ird rudy rudy-ec2 rudy-sdb rudy-s3]
|
35
36
|
|
36
37
|
# = MANIFEST =
|
37
38
|
# git ls-files
|
@@ -44,6 +45,7 @@
|
|
44
45
|
bin/ird
|
45
46
|
bin/rudy
|
46
47
|
bin/rudy-ec2
|
48
|
+
bin/rudy-s3
|
47
49
|
bin/rudy-sdb
|
48
50
|
lib/annoy.rb
|
49
51
|
lib/console.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.6.
|
4
|
+
version: 0.6.6
|
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-04-
|
12
|
+
date: 2009-04-22 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -62,6 +62,16 @@ dependencies:
|
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: 0.3.8
|
64
64
|
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: aws-s3
|
67
|
+
type: :runtime
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 0.6.1
|
74
|
+
version:
|
65
75
|
- !ruby/object:Gem::Dependency
|
66
76
|
name: net-ssh
|
67
77
|
type: :runtime
|
@@ -109,6 +119,7 @@ executables:
|
|
109
119
|
- rudy
|
110
120
|
- rudy-ec2
|
111
121
|
- rudy-sdb
|
122
|
+
- rudy-s3
|
112
123
|
extensions: []
|
113
124
|
|
114
125
|
extra_rdoc_files:
|
@@ -125,6 +136,7 @@ files:
|
|
125
136
|
- bin/ird
|
126
137
|
- bin/rudy
|
127
138
|
- bin/rudy-ec2
|
139
|
+
- bin/rudy-s3
|
128
140
|
- bin/rudy-sdb
|
129
141
|
- lib/annoy.rb
|
130
142
|
- lib/console.rb
|