solutious-rudy 0.8.5 → 0.9.0

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.
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