solutious-rudy 0.7.1 → 0.7.2

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.
@@ -8,6 +8,13 @@ RUDY, CHANGES
8
8
  * TODO: Tests for AWS HTTPS
9
9
 
10
10
 
11
+ #### 0.7.2 (2009-04-04) ###############################
12
+
13
+ * FIXED: cli/routine.rb release method wasn't sending command alias (which broke rerelease)
14
+ * ADDED: global.offline for being cool when Internet is down
15
+ * ADDED: Better handling in aws/sdb when call returns nil (Internet is down)
16
+
17
+
11
18
  #### 0.7.1 (2009-04-04) ###############################
12
19
 
13
20
  * FIXED: rudy wasn't honouring -C option for specifying a config file
@@ -45,7 +45,7 @@ module Rudy
45
45
  unless defined?(MAJOR)
46
46
  MAJOR = 0.freeze
47
47
  MINOR = 7.freeze
48
- TINY = 1.freeze
48
+ TINY = 2.freeze
49
49
  end
50
50
  def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
51
51
  def self.to_f; self.to_s.to_f; end
@@ -23,6 +23,7 @@ module Rudy
23
23
  end
24
24
 
25
25
  module ObjectBase
26
+ include Rudy::Huxtable
26
27
 
27
28
  protected
28
29
 
@@ -52,9 +53,9 @@ module Rudy
52
53
  rescue Timeout::Error => ex
53
54
  STDERR.puts "Timeout (#{timeout}): #{ex.message}!"
54
55
  rescue SocketError => ex
55
- raise SocketError, "Check your Internets!"
56
56
  #STDERR.puts ex.message
57
57
  #STDERR.puts ex.backtrace
58
+ raise SocketError, "Check your Internets!" unless @@global.offline
58
59
  ensure
59
60
  response ||= default
60
61
  end
@@ -98,18 +98,20 @@ module Rudy
98
98
 
99
99
  doc = call(:get, params)
100
100
  results = []
101
- REXML::XPath.each(doc, "//Item") do |item|
102
- name = REXML::XPath.first(item, './Name/text()').to_s
101
+ if doc
102
+ REXML::XPath.each(doc, "//Item") do |item|
103
+ name = REXML::XPath.first(item, './Name/text()').to_s
103
104
 
104
- attributes = {'Name' => name}
105
- REXML::XPath.each(item, "./Attribute") do |attr|
106
- key = REXML::XPath.first(attr, './Name/text()').to_s
107
- value = REXML::XPath.first(attr, './Value/text()').to_s
108
- ( attributes[key] ||= [] ) << value
105
+ attributes = {'Name' => name}
106
+ REXML::XPath.each(item, "./Attribute") do |attr|
107
+ key = REXML::XPath.first(attr, './Name/text()').to_s
108
+ value = REXML::XPath.first(attr, './Value/text()').to_s
109
+ ( attributes[key] ||= [] ) << value
110
+ end
111
+ results << attributes
109
112
  end
110
- results << attributes
113
+ #return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
111
114
  end
112
- #return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
113
115
 
114
116
  hash_results = {}
115
117
  results.each do |item|
@@ -134,8 +136,10 @@ module Rudy
134
136
 
135
137
  doc = call(:get, params)
136
138
  results = []
137
- REXML::XPath.each(doc, '//ItemName/text()') do |item|
138
- results << item.to_s
139
+ if doc
140
+ REXML::XPath.each(doc, '//ItemName/text()') do |item|
141
+ results << item.to_s
142
+ end
139
143
  end
140
144
 
141
145
  #return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
@@ -159,18 +163,20 @@ module Rudy
159
163
 
160
164
  doc = call(:get, params)
161
165
  results = []
162
- REXML::XPath.each(doc, "//Item") do |item|
163
- name = REXML::XPath.first(item, './Name/text()').to_s
166
+ if doc
167
+ REXML::XPath.each(doc, "//Item") do |item|
168
+ name = REXML::XPath.first(item, './Name/text()').to_s
164
169
 
165
- attributes = {'Name' => name}
166
- REXML::XPath.each(item, "./Attribute") do |attr|
167
- key = REXML::XPath.first(attr, './Name/text()').to_s
168
- value = REXML::XPath.first(attr, './Value/text()').to_s
169
- ( attributes[key] ||= [] ) << value
170
+ attributes = {'Name' => name}
171
+ REXML::XPath.each(item, "./Attribute") do |attr|
172
+ key = REXML::XPath.first(attr, './Name/text()').to_s
173
+ value = REXML::XPath.first(attr, './Value/text()').to_s
174
+ ( attributes[key] ||= [] ) << value
175
+ end
176
+ results << attributes
170
177
  end
171
- results << attributes
178
+ #return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
172
179
  end
173
- #return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
174
180
 
175
181
  hash_results = {}
176
182
  results.each do |item|
@@ -216,10 +222,12 @@ module Rudy
216
222
  }
217
223
  )
218
224
  attributes = {}
219
- REXML::XPath.each(doc, "//Attribute") do |attr|
220
- key = REXML::XPath.first(attr, './Name/text()').to_s
221
- value = REXML::XPath.first(attr, './Value/text()').to_s
222
- ( attributes[key] ||= [] ) << value
225
+ if doc
226
+ REXML::XPath.each(doc, "//Attribute") do |attr|
227
+ key = REXML::XPath.first(attr, './Name/text()').to_s
228
+ value = REXML::XPath.first(attr, './Value/text()').to_s
229
+ ( attributes[key] ||= [] ) << value
230
+ end
223
231
  end
224
232
  attributes = nil if attributes.empty?
225
233
  attributes
@@ -154,6 +154,7 @@ module Rudy
154
154
  global :C, :config, String, "Specify another configuration file to read (ie: #{Rudy::CONFIG_FILE})"
155
155
  global :Y, :yes, "Assume a correct answer to confirmation questions"
156
156
  global :q, :quiet, "Run with less output"
157
+ global :O, :offline, "Be cool about the internet being down"
157
158
  global :v, :verbose, "Increase verbosity of output (i.e. -v or -vv or -vvv)" do
158
159
  @verbose ||= 0
159
160
  @verbose += 1
@@ -6,7 +6,7 @@ module AWS; module EC2;
6
6
 
7
7
  def status_valid?
8
8
  avail = Rudy::Utils.service_available?('status.aws.amazon.com', 80, 5)
9
- raise ServiceUnavailable, 'status.aws.amazon.com' unless avail
9
+ raise ServiceUnavailable, 'status.aws.amazon.com' unless @@global.offline || avail
10
10
  true
11
11
  end
12
12
  def status
@@ -31,7 +31,7 @@ module Rudy; module CLI;
31
31
  end
32
32
 
33
33
  def release_valid?
34
- @rr = Rudy::Routines::Release.new
34
+ @rr = Rudy::Routines::Release.new(@alias) # Important: could be rerelease
35
35
  @rr.raise_early_exceptions
36
36
  true
37
37
  end
@@ -34,6 +34,8 @@ module Rudy
34
34
  field :local_user
35
35
  field :local_hostname
36
36
 
37
+ field :offline
38
+
37
39
  field :config => String
38
40
 
39
41
  attr_accessor :print_header
@@ -91,7 +91,6 @@ module Rudy
91
91
  }
92
92
  end
93
93
 
94
-
95
94
  # TODO: trap rbox errors. We could get an authentication error.
96
95
  opts = { :keys => root_keypairpath, :user => 'root', :info => @@global.verbose > 0 }
97
96
  begin
@@ -125,12 +124,12 @@ module Rudy
125
124
  puts task_separator("AUTHORIZE USER")
126
125
  Rudy::Routines::UserHelper.authorize(@routine, machine, rbox)
127
126
  end
128
-
127
+ #puts 1
129
128
  if Rudy::Routines::ScriptHelper.before?(@routine) # before
130
129
  puts task_separator("REMOTE SHELL")
131
130
  Rudy::Routines::ScriptHelper.before(@routine, sconf, machine, rbox)
132
131
  end
133
-
132
+ #puts 2
134
133
  if Rudy::Routines::DiskHelper.disks?(@routine) # disk
135
134
  puts task_separator("DISKS")
136
135
  if rbox.ostype == "sunos"
@@ -139,7 +138,7 @@ module Rudy
139
138
  Rudy::Routines::DiskHelper.execute(@routine, machine, rbox)
140
139
  end
141
140
  end
142
-
141
+
143
142
  # Startup, shutdown, release, deploy, etc...
144
143
  routine_action.call(machine, rbox) if routine_action
145
144
 
@@ -21,7 +21,7 @@ module Rudy
21
21
  ip = /([0-9]{1,3}\.){3}[0-9]{1,3}/.match(ipstr).to_s
22
22
  break if ip && !ip.empty?
23
23
  end
24
- rescue SocketError, Errno::ETIMEDOUT
24
+ rescue SocketError, Errno::ETIMEDOUT => ex
25
25
  STDERR.puts "Connection Error. Check your internets!"
26
26
  end
27
27
  ip += "/32" if ip
@@ -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.7.1"
4
+ s.version = "0.7.2"
5
5
  s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solutious-rudy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum