solutious-rudy 0.8.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. data/CHANGES.txt +55 -14
  2. data/README.rdoc +26 -34
  3. data/Rudyfile +27 -32
  4. data/bin/rudy +47 -27
  5. data/bin/rudy-ec2 +2 -16
  6. data/bin/rudy-s3 +0 -10
  7. data/bin/rudy-sdb +11 -12
  8. data/lib/rudy.rb +49 -89
  9. data/lib/rudy/aws.rb +2 -43
  10. data/lib/rudy/aws/ec2.rb +57 -20
  11. data/lib/rudy/aws/ec2/address.rb +10 -11
  12. data/lib/rudy/aws/ec2/group.rb +10 -9
  13. data/lib/rudy/aws/ec2/image.rb +8 -8
  14. data/lib/rudy/aws/ec2/instance.rb +15 -16
  15. data/lib/rudy/aws/ec2/keypair.rb +14 -19
  16. data/lib/rudy/aws/ec2/snapshot.rb +16 -9
  17. data/lib/rudy/aws/ec2/volume.rb +37 -24
  18. data/lib/rudy/aws/ec2/zone.rb +5 -4
  19. data/lib/rudy/aws/s3.rb +2 -1
  20. data/lib/rudy/aws/sdb.rb +35 -86
  21. data/lib/rudy/backups.rb +24 -0
  22. data/lib/rudy/cli.rb +5 -131
  23. data/lib/rudy/cli/aws/ec2/addresses.rb +19 -27
  24. data/lib/rudy/cli/aws/ec2/candy.rb +32 -7
  25. data/lib/rudy/cli/aws/ec2/groups.rb +9 -13
  26. data/lib/rudy/cli/aws/ec2/images.rb +5 -133
  27. data/lib/rudy/cli/aws/ec2/instances.rb +25 -25
  28. data/lib/rudy/cli/aws/ec2/keypairs.rb +7 -11
  29. data/lib/rudy/cli/aws/ec2/snapshots.rb +5 -9
  30. data/lib/rudy/cli/aws/ec2/volumes.rb +22 -23
  31. data/lib/rudy/cli/aws/ec2/zones.rb +2 -3
  32. data/lib/rudy/cli/aws/sdb/domains.rb +5 -6
  33. data/lib/rudy/cli/aws/sdb/objects.rb +33 -0
  34. data/lib/rudy/cli/aws/sdb/select.rb +23 -0
  35. data/lib/rudy/cli/backups.rb +38 -0
  36. data/lib/rudy/cli/base.rb +98 -0
  37. data/lib/rudy/cli/candy.rb +1 -2
  38. data/lib/rudy/cli/config.rb +7 -4
  39. data/lib/rudy/cli/disks.rb +6 -8
  40. data/lib/rudy/cli/execbase.rb +53 -0
  41. data/lib/rudy/cli/machines.rb +14 -18
  42. data/lib/rudy/cli/metadata.rb +24 -10
  43. data/lib/rudy/cli/routines.rb +31 -5
  44. data/lib/rudy/config.rb +17 -22
  45. data/lib/rudy/config/objects.rb +44 -30
  46. data/lib/rudy/disks.rb +25 -0
  47. data/lib/rudy/exceptions.rb +95 -0
  48. data/lib/rudy/global.rb +46 -23
  49. data/lib/rudy/guidelines.rb +3 -2
  50. data/lib/rudy/huxtable.rb +66 -57
  51. data/lib/rudy/machines.rb +41 -263
  52. data/lib/rudy/metadata.rb +212 -38
  53. data/lib/rudy/metadata/backup.rb +123 -78
  54. data/lib/rudy/metadata/disk.rb +152 -170
  55. data/lib/rudy/metadata/machine.rb +179 -0
  56. data/lib/rudy/mixins.rb +2 -1
  57. data/lib/rudy/mixins/hash.rb +3 -1
  58. data/lib/rudy/mixins/symbol.rb +8 -0
  59. data/lib/rudy/routines.rb +127 -344
  60. data/lib/rudy/routines/base.rb +226 -0
  61. data/lib/rudy/routines/handlers/base.rb +48 -0
  62. data/lib/rudy/routines/handlers/depends.rb +49 -0
  63. data/lib/rudy/routines/handlers/disks.rb +239 -0
  64. data/lib/rudy/routines/handlers/group.rb +42 -0
  65. data/lib/rudy/routines/handlers/host.rb +72 -0
  66. data/lib/rudy/routines/handlers/keypair.rb +70 -0
  67. data/lib/rudy/routines/handlers/machines.rb +15 -0
  68. data/lib/rudy/routines/handlers/script.rb +85 -0
  69. data/lib/rudy/routines/handlers/user.rb +41 -0
  70. data/lib/rudy/routines/passthrough.rb +19 -23
  71. data/lib/rudy/routines/reboot.rb +82 -51
  72. data/lib/rudy/routines/shutdown.rb +61 -14
  73. data/lib/rudy/routines/startup.rb +111 -17
  74. data/lib/rudy/utils.rb +12 -59
  75. data/rudy.gemspec +85 -25
  76. data/tryouts/01_mixins/01_hash_tryouts.rb +20 -0
  77. data/tryouts/10_require_time/10_rudy_tryouts.rb +33 -0
  78. data/tryouts/10_require_time/15_global_tryouts.rb +58 -0
  79. data/tryouts/12_config/10_load_config_tryouts.rb +43 -0
  80. data/tryouts/12_config/20_defaults_tryouts.rb +16 -0
  81. data/tryouts/12_config/30_accounts_tryouts.rb +17 -0
  82. data/tryouts/12_config/40_machines_tryouts.rb +53 -0
  83. data/tryouts/12_config/50_commands_tryouts.rb +17 -0
  84. data/tryouts/12_config/60_routines_tryouts.rb +16 -0
  85. data/tryouts/15_huxtable/10_huxtable_tryouts.rb +47 -0
  86. data/tryouts/15_huxtable/20_user_tryouts.rb +47 -0
  87. data/tryouts/20_simpledb/10_domains_tryouts.rb +36 -0
  88. data/tryouts/20_simpledb/20_objects_tryouts.rb +56 -0
  89. data/tryouts/25_ec2/10_keypairs_tryouts.rb +54 -0
  90. data/tryouts/25_ec2/20_groups_tryouts.rb +56 -0
  91. data/tryouts/25_ec2/21_groups_authorize_address_tryouts.rb +53 -0
  92. data/tryouts/25_ec2/22_groups_authorize_account_tryouts.rb +54 -0
  93. data/tryouts/25_ec2/30_addresses_tryouts.rb +42 -0
  94. data/tryouts/25_ec2/40_volumes_tryouts.rb +53 -0
  95. data/tryouts/25_ec2/50_snapshots_tryouts.rb +75 -0
  96. data/tryouts/26_ec2_instances/10_instance_tryouts.rb +107 -0
  97. data/tryouts/26_ec2_instances/50_images_tryouts.rb +7 -0
  98. data/tryouts/30_metadata/10_include_tryouts.rb +45 -0
  99. data/tryouts/30_metadata/13_object_tryouts.rb +19 -0
  100. data/tryouts/30_metadata/50_disk_tryouts.rb +115 -0
  101. data/tryouts/30_metadata/51_disk_digest_tryouts.rb +24 -0
  102. data/tryouts/30_metadata/53_disk_list_tryouts.rb +35 -0
  103. data/tryouts/30_metadata/56_disk_volume_tryouts.rb +68 -0
  104. data/tryouts/30_metadata/60_backup_tryouts.rb +101 -0
  105. data/tryouts/30_metadata/63_backup_list_tryouts.rb +38 -0
  106. data/tryouts/30_metadata/64_backup_disk_tryouts.rb +65 -0
  107. data/tryouts/30_metadata/66_backup_snapshot_tryouts.rb +76 -0
  108. data/tryouts/30_metadata/70_machine_tryouts.rb +85 -0
  109. data/tryouts/30_metadata/73_machine_list_tryouts.rb +58 -0
  110. data/tryouts/30_metadata/76_machine_instance_tryouts.rb +64 -0
  111. data/tryouts/30_metadata/77_machines_tryouts.rb +45 -0
  112. data/tryouts/40_routines/10_keypair_handler_tryouts.rb +52 -0
  113. data/tryouts/40_routines/11_group_handler_tryouts.rb +36 -0
  114. data/tryouts/80_cli/10_rudyec2_tryouts.rb +8 -0
  115. data/tryouts/80_cli/60_rudy_tryouts.rb +41 -0
  116. data/tryouts/failer +6 -0
  117. data/tryouts/misc/console_tryout.rb +91 -0
  118. data/tryouts/misc/disks_tryout.rb +48 -0
  119. data/tryouts/misc/drydock_tryout.rb +48 -0
  120. data/tryouts/misc/nested_methods.rb +103 -0
  121. data/tryouts/misc/session_tryout.rb +46 -0
  122. data/tryouts/misc/tryouts.rb +33 -0
  123. data/tryouts/misc/usage_tryout.rb +23 -0
  124. metadata +119 -31
  125. data/bin/ird +0 -153
  126. data/lib/rudy/metadata/backups.rb +0 -67
  127. data/lib/rudy/metadata/debug.rb +0 -38
  128. data/lib/rudy/metadata/disks.rb +0 -67
  129. data/lib/rudy/metadata/objectbase.rb +0 -108
  130. data/lib/rudy/routines/helper.rb +0 -76
  131. data/lib/rudy/routines/helpers/dependshelper.rb +0 -34
  132. data/lib/rudy/routines/helpers/diskhelper.rb +0 -403
  133. data/lib/rudy/routines/helpers/scripthelper.rb +0 -197
  134. data/lib/rudy/routines/helpers/userhelper.rb +0 -37
  135. data/support/rudy-ec2-startup +0 -200
@@ -3,34 +3,81 @@
3
3
  module Rudy; module Routines;
4
4
  class Shutdown < Rudy::Routines::Base
5
5
 
6
+ Rudy::Routines.add_routine :shutdown, self
7
+
8
+ @@allowed_actions = [:before, :disks, :adduser, :authorize,
9
+ :local, :remote, :after_local, :after]
10
+
6
11
  def init(*args)
7
- @routine = fetch_routine_config(:shutdown)
12
+ @machines = Rudy::Machines.list || []
13
+ @@rset = create_rye_set @machines unless defined?(@@rset)
14
+ @routine ||= {}
8
15
  end
9
16
 
17
+ # Startup routines run in the following order:
18
+ # * before dependencies
19
+ # * all other actions (except after_local)
20
+ # * Shutdown instances
21
+ # * after_local (if present)
22
+ # * after dependencies
10
23
  def execute
11
- routine_separator(:list)
12
- unless @routine
13
- STDERR.puts "[this is a generic shutdown routine]"
14
- @routine = {}
15
- end
16
-
17
- machines = generic_machine_runner(:list) do |machine|
18
- machine.destroy
24
+ ld "Executing routine: #{@name}"
25
+ ld "[this is a generic routine]" if @routine.empty?
26
+
27
+ # We need to remove after_local so the runner doesn't see it
28
+ after_local = @routine.delete(:after_local)
29
+
30
+ if run?
31
+ Rudy::Routines::Handlers::Depends.execute_all @before
32
+
33
+ # This is the meat of the sandwich
34
+ Rudy::Routines.runner(@routine, @@rset, @@lbox, @argv)
35
+
36
+ @machines.each do |machine|
37
+ Rudy::Routines.rescue { machine.destroy }
38
+ end
39
+
40
+ if after_local
41
+ handler = Rudy::Routines.get_handler :local
42
+ Rudy::Routines.rescue {
43
+ handler.execute(:local, after_local, nil, @@lbox, @argv)
44
+ }
45
+ end
46
+
47
+ Rudy::Routines::Handlers::Depends.execute_all @after
19
48
  end
20
- machines
49
+
50
+ @machines
21
51
  end
22
-
52
+
23
53
  # Called by generic_machine_runner
24
54
  def raise_early_exceptions
25
- rmach = Rudy::Machines.new
26
- raise MachineGroupNotRunning, current_machine_group unless rmach.running?
55
+ raise NoMachinesConfig unless @@config.machines
56
+
57
+ # If this is a test run we don't care if the group is running
58
+ if run?
59
+ if @@global.position.nil?
60
+ raise MachineGroupNotRunning, current_machine_group unless Rudy::Machines.running?
61
+ else
62
+ unless Rudy::Machines.running? @@global.position
63
+ m = Rudy::Machine.new @@global.position
64
+ raise MachineNotRunning, m.name
65
+ end
66
+ end
67
+ end
68
+
27
69
  ## NOTE: This check is disabled for now. If the private key doesn't exist
28
70
  ## it prevents shutting down.
29
71
  # Check private key after machine group, otherwise we could get an error
30
72
  # about there being no key which doesn't make sense if the group isn't running.
31
73
  ##raise Rudy::PrivateKeyNotFound, root_keypairpath unless has_keypair?(:root)
74
+ if @routine
75
+ bad = @routine.keys - @@allowed_actions
76
+ raise UnsupportedActions.new(@name, bad) unless bad.empty?
77
+ end
32
78
  end
33
79
 
34
80
  end
35
81
 
36
- end; end
82
+ end; end
83
+
@@ -3,34 +3,128 @@
3
3
  module Rudy; module Routines;
4
4
  class Startup < Rudy::Routines::Base
5
5
 
6
+ Rudy::Routines.add_routine :startup, self
7
+
8
+ @@allowed_actions = [:before, :before_local, :disks, :adduser,
9
+ :authorize, :local, :remote, :after]
10
+
6
11
  def init(*args)
7
- @routine = fetch_routine_config(:startup) # NOTE: could use @cmdname here
12
+ @routine ||= {}
8
13
  end
9
14
 
10
- # * +each_mach+ is an optional block which is executed between
11
- # disk creation and the after scripts. The will receives two
12
- # arguments: instances of Rudy::Machine and Rye::Box.
13
- # Returns an Array of Rudy::Machine objects
14
- def execute(&each_mach)
15
- routine_separator(:startup)
16
- unless @routine
17
- STDERR.puts "[this is a generic startup routine]"
18
- @routine = {}
15
+ # Startup routines run in the following order:
16
+ # * before dependencies
17
+ # * before_local (if present)
18
+ # * Startup instances
19
+ # * Set hostname
20
+ # * all other actions
21
+ # * after dependencies
22
+ def execute
23
+ ld "Executing routine: #{@name}"
24
+ ld "[this is a generic routine]" if @routine.empty?
25
+
26
+
27
+ if run?
28
+ Rudy::Routines::Handlers::Depends.execute_all @before
29
+
30
+ if @routine.has_key? :before_local
31
+ handler = Rudy::Routines.get_handler :local
32
+ Rudy::Routines.rescue {
33
+ handler.execute(:local, @routine.delete(:before_local), nil, @@lbox, @argv)
34
+ }
35
+ end
36
+
37
+ Rudy::Routines.rescue {
38
+ unless Rudy::Routines::Handlers::Group.exists?
39
+ Rudy::Routines::Handlers::Group.create
40
+ end
41
+ # Run this every startup incase the ip address has changed.
42
+ # If there's an exception it's probably b/c the address is
43
+ # already authorized for port 22.
44
+ Rudy::Routines::Handlers::Group.authorize rescue nil
45
+ }
46
+
47
+ Rudy::Routines.rescue {
48
+ unless Rudy::Routines::Handlers::Keypair.exists?
49
+ Rudy::Routines::Handlers::Keypair.create
50
+ end
51
+ }
52
+
53
+ end
54
+
55
+ ## puts Rudy::Routines.machine_separator(machine.name, machine.awsid)
56
+
57
+ # If this is a testrun we won't create new instances
58
+ # we'll just grab the list of machines in this group.
59
+ # NOTE: Expect errors if there are no machines.
60
+ Rudy::Routines.rescue {
61
+ @machines = run? ? Rudy::Machines.create : Rudy::Machines.list
62
+ @@rset = create_rye_set @machines unless defined?(@@rset)
63
+ }
64
+
65
+ Rudy::Routines.rescue {
66
+ if !Rudy::Routines::Handlers::Host.is_running? @@rset
67
+ a = @@rset.boxes.select { |box| !box.stash.running? }
68
+ raise GroupNotRunning, a
69
+ end
70
+ }
71
+
72
+ # This is important b/c the machines will not
73
+ # have DNS info until after they are running.
74
+ Rudy::Routines.rescue { Rudy::Routines::Handlers::Host.update_dns @@rset }
75
+ Rudy::Routines.rescue {
76
+ if !Rudy::Routines::Handlers::Host.is_available? @@rset
77
+ a = @@rset.boxes.select { |box| !box.stash.available? }
78
+ raise GroupNotAvailable, a
79
+ end
80
+ }
81
+ Rudy::Routines.rescue {
82
+ Rudy::Routines::Handlers::Host.set_hostname @@rset
83
+ }
84
+
85
+ if run?
86
+ # This is the meat of the sandwich
87
+ Rudy::Routines.runner @routine, @@rset, @@lbox, @argv
88
+
89
+ Rudy::Routines.rescue {
90
+ Rudy::Routines::Handlers::Depends.execute_all @after
91
+ }
92
+
19
93
  end
20
- machines = generic_machine_runner(:create)
21
- machines
94
+
95
+ @machines
22
96
  end
23
97
 
24
98
  # Called by generic_machine_runner
25
99
  def raise_early_exceptions
26
- rmach = Rudy::Machines.new
100
+ raise NoMachinesConfig unless @@config.machines
27
101
  # There's no keypair check here because Rudy::Machines will create one
28
102
  raise MachineGroupNotDefined, current_machine_group unless known_machine_group?
29
- # We don't check @@global.offline b/c we can't create EC2 instances
30
- # without an internet connection. Use passthrough for routine tests.
31
- raise MachineGroupAlreadyRunning, current_machine_group if rmach.running?
103
+
104
+ unless (1..MAX_INSTANCES).member?(current_machine_count)
105
+ raise "Instance count must be more than 0, less than #{MAX_INSTANCES}"
106
+ end
107
+
108
+ # If this is a testrun, we don't create instances anyway so
109
+ # it doesn't matter if there are already instances running.
110
+ if run? && !@@global.force
111
+ if @@global.position.nil?
112
+ raise MachineGroupAlreadyRunning, current_machine_group if Rudy::Machines.running?
113
+ raise MachineGroupMetadataExists, current_machine_group if Rudy::Machines.exists?
114
+ else
115
+ if Rudy::Machines.running? @@global.position
116
+ m = Rudy::Machine.new @@global.position
117
+ raise MachineAlreadyRunning, m.name
118
+ end
119
+ end
120
+ end
121
+
122
+ if @routine
123
+ bad = @routine.keys - @@allowed_actions
124
+ raise UnsupportedActions.new(@name, bad) unless bad.empty?
125
+ end
32
126
  end
33
127
 
34
128
  end
35
129
 
36
- end; end
130
+ end; end
@@ -25,7 +25,6 @@ module Rudy
25
25
  rescue SocketError, Errno::ETIMEDOUT => ex
26
26
  STDERR.puts "Connection Error. Check your internets!"
27
27
  end
28
- ip += "/32" if ip
29
28
  ip
30
29
  end
31
30
 
@@ -36,47 +35,34 @@ module Rudy
36
35
  # turn off reverse DNS resolution temporarily
37
36
  orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true
38
37
  ip = UDPSocket.open {|s| s.connect('75.101.137.7', 1); s.addr.last } # Solutious IP
39
- ip += "/24" if ip
40
38
  ip
41
39
  ensure
42
40
  Socket.do_not_reverse_lookup = orig
43
41
  end
44
42
 
45
43
  # Generates a canonical tag name in the form:
46
- # rudy-2009-12-31-01
47
- # where r1 refers to the revision number that day
48
- def generate_tag(revision=1)
44
+ # 2009-12-31-USER-SUFFIX
45
+ # where USER is equal to the user executing the Rudy process and
46
+ # SUFFIX is equal to +suffix+ (optional)
47
+ def generate_tag(suffix=nil)
49
48
  n = DateTime.now
50
- y = n.year.to_s.rjust(4, "20")
51
- m = n.month.to_s.rjust(2, "0")
52
- d = n.mday.to_s.rjust(2, "0")
53
- "rudy-%4s-%2s-%2s-r%s" % [y, m, d, revision.to_s.rjust(2, "0")]
49
+ y, m = n.year.to_s.rjust(4, "20"), n.month.to_s.rjust(2, "0")
50
+ d, u = n.mday.to_s.rjust(2, "0"), Rudy.sysinfo.user
51
+ criteria = [y, m, d, u]
52
+ criteria << suffix unless suffix.nil? || suffix.empty?
53
+ criteria.join Rudy::DELIM
54
54
  end
55
55
 
56
-
57
-
58
-
59
- # Determine if we're running directly on EC2 or
60
- # "some other machine". We do this by checking if
61
- # the file /etc/ec2/instance-id exists. This
62
- # file is written by /etc/init.d/rudy-ec2-startup.
63
- # NOTE: Is there a way to know definitively that this is EC2?
64
- # We could make a request to the metadata IP addresses.
65
- def Rudy.in_situ?
66
- File.exists?('/etc/ec2/instance-id')
67
- end
68
-
69
-
70
56
  # Wait for something to happen.
71
57
  # * +duration+ seconds to wait between tries (default: 2).
72
- # * +max+ maximum time to wait (default: 120). Throws an exception when exceeded.
58
+ # * +max+ maximum time to wait (default: 240). Throws an exception when exceeded.
73
59
  # * +logger+ IO object to print +dot+ to.
74
60
  # * +msg+ the message to print before executing the block.
75
61
  # * +bells+ number of terminal bells to ring. Set to nil or false to keep the waiter silent
76
62
  #
77
63
  # The +check+ block must return false while waiting. Once it returns true
78
64
  # the waiter will return true too.
79
- def waiter(duration=2, max=120, logger=STDOUT, msg=nil, bells=0, &check)
65
+ def waiter(duration=2, max=240, logger=STDOUT, msg=nil, bells=0, &check)
80
66
  # TODO: Move to Drydock. [ed-why?]
81
67
  raise "The waiter needs a block!" unless check
82
68
  duration = 1 if duration < 1
@@ -100,7 +86,6 @@ module Rudy
100
86
  end
101
87
 
102
88
  if msg && logger
103
- logger.puts " done"
104
89
  logger.flush
105
90
  end
106
91
 
@@ -279,42 +264,10 @@ module Rudy
279
264
  str.gsub(/^[[:blank:]]{#{indent}}/, '')
280
265
  end
281
266
 
282
-
283
-
284
-
285
- ######### Everything below here is TO BE REMOVED.
286
-
287
- # (TO BE REMOVED)
288
- # TODO: This is old and nasty.
289
- def scp_command(host, keypair, user, paths, to_path, to_local=false, verbose=false, printonly=false)
290
-
291
- paths = [paths] unless paths.is_a?(Array)
292
- from_paths = ""
293
- if to_local
294
- paths.each do |path|
295
- from_paths << "#{user}@#{host}:#{path} "
296
- end
297
- #puts "Copying FROM remote TO this machine", $/
298
-
299
- else
300
- to_path = "#{user}@#{host}:#{to_path}"
301
- from_paths = paths.join(' ')
302
- #puts "Copying FROM this machine TO remote", $/
303
- end
304
-
305
-
306
- cmd = "scp -r "
307
- cmd << "-i #{keypair}" if keypair
308
- cmd << " #{from_paths} #{to_path}"
309
-
310
- puts cmd if verbose
311
- printonly ? (puts cmd) : system(cmd)
312
- end
313
-
314
267
  end
315
268
  end
316
269
 
317
- # = RSSReader
270
+ # = Rudy::Utils::RSSReader
318
271
  #
319
272
  # A rudimentary way to read an RSS feed as a hash.
320
273
  # Adapted from: http://snippets.dzone.com/posts/show/68
@@ -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.8.5"
4
+ s.version = "0.9.0"
5
5
  s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
@@ -12,26 +12,29 @@
12
12
  s.has_rdoc = true
13
13
  s.rdoc_options = ["--line-numbers", "--title", s.summary, "--main", "README.rdoc"]
14
14
  s.require_paths = %w[lib]
15
- s.rubygems_version = '1.1.1'
15
+ s.rubygems_version = '1.3.0'
16
16
 
17
- s.add_dependency 'drydock', '>= 0.6.5'
18
- s.add_dependency 'caesars', '>= 0.7.1'
19
- s.add_dependency 'rye', '>= 0.7.4'
20
- s.add_dependency 'sysinfo', '>= 0.5.1'
21
- s.add_dependency 'storable', '>= 0.5.3'
22
- s.add_dependency 'annoy', '>= 0.5.2'
17
+ s.add_dependency 'rye', '>= 0.8.5'
18
+ s.add_dependency 'attic', '>= 0.4.0'
19
+ s.add_dependency 'annoy', '>= 0.5.5'
20
+ s.add_dependency 'drydock', '>= 0.6.6'
21
+ s.add_dependency 'caesars', '>= 0.7.3'
22
+ s.add_dependency 'sysinfo', '>= 0.6.2'
23
+ s.add_dependency 'gibbler', '>= 0.6.0'
24
+ s.add_dependency 'tryouts', '>= 0.8.4'
25
+ s.add_dependency 'storable', '>= 0.5.6'
23
26
 
24
- s.add_dependency 'echoe'
27
+ s.add_dependency 'aws-s3', '>= 0.6.1' # Ruby 1.9.1 compatability
28
+ s.add_dependency 'highline', '>= 1.5.1' # Ruby 1.9.1 compatability
25
29
  s.add_dependency 'amazon-ec2', '>= 0.3.8' # Region fix
26
- s.add_dependency 'aws-s3', '>= 0.6.1' # Ruby 1.9.1 compatability
27
- s.add_dependency 'highline', '>= 1.5.1'
28
30
 
29
- # One of the other dependencies needs these gems but doesn't seem
30
- # to specify them. Why I outta!
31
+ # One of the other dependencies needs these gems
32
+ # but doesn't seem to specify them. Why I outta!
33
+ s.add_dependency 'tenderlove-frex'
31
34
  s.add_dependency 'archive-tar-minitar'
32
35
  s.add_dependency 'nokogiri'
36
+ s.add_dependency 'echoe'
33
37
  s.add_dependency 'racc'
34
- s.add_dependency 'tenderlove-frex'
35
38
  s.add_dependency 'hoe'
36
39
 
37
40
  # libxml2 libxml2-dev libxslt-dev
@@ -52,7 +55,6 @@
52
55
  README.rdoc
53
56
  Rakefile
54
57
  Rudyfile
55
- bin/ird
56
58
  bin/rudy
57
59
  bin/rudy-ec2
58
60
  bin/rudy-s3
@@ -71,6 +73,7 @@
71
73
  lib/rudy/aws/s3.rb
72
74
  lib/rudy/aws/sdb.rb
73
75
  lib/rudy/aws/sdb/error.rb
76
+ lib/rudy/backups.rb
74
77
  lib/rudy/cli.rb
75
78
  lib/rudy/cli/aws/ec2/addresses.rb
76
79
  lib/rudy/cli/aws/ec2/candy.rb
@@ -84,33 +87,43 @@
84
87
  lib/rudy/cli/aws/s3/buckets.rb
85
88
  lib/rudy/cli/aws/s3/store.rb
86
89
  lib/rudy/cli/aws/sdb/domains.rb
90
+ lib/rudy/cli/aws/sdb/objects.rb
91
+ lib/rudy/cli/aws/sdb/select.rb
92
+ lib/rudy/cli/backups.rb
93
+ lib/rudy/cli/base.rb
87
94
  lib/rudy/cli/candy.rb
88
95
  lib/rudy/cli/config.rb
89
96
  lib/rudy/cli/disks.rb
97
+ lib/rudy/cli/execbase.rb
90
98
  lib/rudy/cli/machines.rb
91
99
  lib/rudy/cli/metadata.rb
92
100
  lib/rudy/cli/routines.rb
93
101
  lib/rudy/config.rb
94
102
  lib/rudy/config/objects.rb
103
+ lib/rudy/disks.rb
104
+ lib/rudy/exceptions.rb
95
105
  lib/rudy/global.rb
96
106
  lib/rudy/guidelines.rb
97
107
  lib/rudy/huxtable.rb
98
108
  lib/rudy/machines.rb
99
109
  lib/rudy/metadata.rb
100
110
  lib/rudy/metadata/backup.rb
101
- lib/rudy/metadata/backups.rb
102
- lib/rudy/metadata/debug.rb
103
111
  lib/rudy/metadata/disk.rb
104
- lib/rudy/metadata/disks.rb
105
- lib/rudy/metadata/objectbase.rb
112
+ lib/rudy/metadata/machine.rb
106
113
  lib/rudy/mixins.rb
107
114
  lib/rudy/mixins/hash.rb
115
+ lib/rudy/mixins/symbol.rb
108
116
  lib/rudy/routines.rb
109
- lib/rudy/routines/helper.rb
110
- lib/rudy/routines/helpers/dependshelper.rb
111
- lib/rudy/routines/helpers/diskhelper.rb
112
- lib/rudy/routines/helpers/scripthelper.rb
113
- lib/rudy/routines/helpers/userhelper.rb
117
+ lib/rudy/routines/base.rb
118
+ lib/rudy/routines/handlers/base.rb
119
+ lib/rudy/routines/handlers/depends.rb
120
+ lib/rudy/routines/handlers/disks.rb
121
+ lib/rudy/routines/handlers/group.rb
122
+ lib/rudy/routines/handlers/host.rb
123
+ lib/rudy/routines/handlers/keypair.rb
124
+ lib/rudy/routines/handlers/machines.rb
125
+ lib/rudy/routines/handlers/script.rb
126
+ lib/rudy/routines/handlers/user.rb
114
127
  lib/rudy/routines/passthrough.rb
115
128
  lib/rudy/routines/reboot.rb
116
129
  lib/rudy/routines/shutdown.rb
@@ -119,8 +132,55 @@
119
132
  rudy.gemspec
120
133
  support/mailtest
121
134
  support/randomize-root-password
122
- support/rudy-ec2-startup
123
135
  support/update-ec2-ami-tools
136
+ tryouts/01_mixins/01_hash_tryouts.rb
137
+ tryouts/10_require_time/10_rudy_tryouts.rb
138
+ tryouts/10_require_time/15_global_tryouts.rb
139
+ tryouts/12_config/10_load_config_tryouts.rb
140
+ tryouts/12_config/20_defaults_tryouts.rb
141
+ tryouts/12_config/30_accounts_tryouts.rb
142
+ tryouts/12_config/40_machines_tryouts.rb
143
+ tryouts/12_config/50_commands_tryouts.rb
144
+ tryouts/12_config/60_routines_tryouts.rb
145
+ tryouts/15_huxtable/10_huxtable_tryouts.rb
146
+ tryouts/15_huxtable/20_user_tryouts.rb
147
+ tryouts/20_simpledb/10_domains_tryouts.rb
148
+ tryouts/20_simpledb/20_objects_tryouts.rb
149
+ tryouts/25_ec2/10_keypairs_tryouts.rb
150
+ tryouts/25_ec2/20_groups_tryouts.rb
151
+ tryouts/25_ec2/21_groups_authorize_address_tryouts.rb
152
+ tryouts/25_ec2/22_groups_authorize_account_tryouts.rb
153
+ tryouts/25_ec2/30_addresses_tryouts.rb
154
+ tryouts/25_ec2/40_volumes_tryouts.rb
155
+ tryouts/25_ec2/50_snapshots_tryouts.rb
156
+ tryouts/26_ec2_instances/10_instance_tryouts.rb
157
+ tryouts/26_ec2_instances/50_images_tryouts.rb
158
+ tryouts/30_metadata/10_include_tryouts.rb
159
+ tryouts/30_metadata/13_object_tryouts.rb
160
+ tryouts/30_metadata/50_disk_tryouts.rb
161
+ tryouts/30_metadata/51_disk_digest_tryouts.rb
162
+ tryouts/30_metadata/53_disk_list_tryouts.rb
163
+ tryouts/30_metadata/56_disk_volume_tryouts.rb
164
+ tryouts/30_metadata/60_backup_tryouts.rb
165
+ tryouts/30_metadata/63_backup_list_tryouts.rb
166
+ tryouts/30_metadata/64_backup_disk_tryouts.rb
167
+ tryouts/30_metadata/66_backup_snapshot_tryouts.rb
168
+ tryouts/30_metadata/70_machine_tryouts.rb
169
+ tryouts/30_metadata/73_machine_list_tryouts.rb
170
+ tryouts/30_metadata/76_machine_instance_tryouts.rb
171
+ tryouts/30_metadata/77_machines_tryouts.rb
172
+ tryouts/40_routines/10_keypair_handler_tryouts.rb
173
+ tryouts/40_routines/11_group_handler_tryouts.rb
174
+ tryouts/80_cli/10_rudyec2_tryouts.rb
175
+ tryouts/80_cli/60_rudy_tryouts.rb
176
+ tryouts/failer
177
+ tryouts/misc/console_tryout.rb
178
+ tryouts/misc/disks_tryout.rb
179
+ tryouts/misc/drydock_tryout.rb
180
+ tryouts/misc/nested_methods.rb
181
+ tryouts/misc/session_tryout.rb
182
+ tryouts/misc/tryouts.rb
183
+ tryouts/misc/usage_tryout.rb
124
184
  )
125
185
 
126
186