rudy 0.9.1 → 0.9.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.
Files changed (84) hide show
  1. data/CHANGES.txt +32 -17
  2. data/README.rdoc +74 -40
  3. data/bin/rudy +66 -10
  4. data/bin/rudy-ec2 +3 -1
  5. data/examples/authorize.rb +15 -0
  6. data/examples/gem-test.rb +11 -5
  7. data/examples/solaris.rb +35 -0
  8. data/examples/windows.rb +101 -0
  9. data/lib/rudy.rb +7 -1
  10. data/lib/rudy/aws.rb +2 -2
  11. data/lib/rudy/aws/ec2.rb +29 -22
  12. data/lib/rudy/aws/ec2/group.rb +1 -1
  13. data/lib/rudy/aws/ec2/image.rb +1 -29
  14. data/lib/rudy/aws/ec2/instance.rb +4 -32
  15. data/lib/rudy/aws/ec2/keypair.rb +1 -6
  16. data/lib/rudy/aws/ec2/snapshot.rb +2 -20
  17. data/lib/rudy/aws/ec2/volume.rb +11 -19
  18. data/lib/rudy/aws/ec2/zone.rb +1 -6
  19. data/lib/rudy/aws/sdb.rb +1 -1
  20. data/lib/rudy/cli/aws/ec2/addresses.rb +4 -10
  21. data/lib/rudy/cli/aws/ec2/groups.rb +0 -1
  22. data/lib/rudy/cli/aws/ec2/images.rb +1 -4
  23. data/lib/rudy/cli/aws/ec2/info.rb +63 -0
  24. data/lib/rudy/cli/aws/ec2/instances.rb +3 -5
  25. data/lib/rudy/cli/aws/ec2/keypairs.rb +3 -5
  26. data/lib/rudy/cli/aws/ec2/snapshots.rb +2 -6
  27. data/lib/rudy/cli/aws/ec2/zones.rb +2 -4
  28. data/lib/rudy/cli/backups.rb +20 -9
  29. data/lib/rudy/cli/base.rb +60 -3
  30. data/lib/rudy/cli/candy.rb +1 -1
  31. data/lib/rudy/cli/disks.rb +65 -7
  32. data/lib/rudy/cli/execbase.rb +0 -2
  33. data/lib/rudy/cli/images.rb +97 -0
  34. data/lib/rudy/cli/info.rb +48 -0
  35. data/lib/rudy/cli/keypairs.rb +43 -0
  36. data/lib/rudy/cli/machines.rb +41 -36
  37. data/lib/rudy/cli/networks.rb +68 -0
  38. data/lib/rudy/cli/routines.rb +3 -10
  39. data/lib/rudy/config/objects.rb +0 -1
  40. data/lib/rudy/disks.rb +4 -0
  41. data/lib/rudy/global.rb +1 -1
  42. data/lib/rudy/huxtable.rb +9 -3
  43. data/lib/rudy/machines.rb +1 -1
  44. data/lib/rudy/metadata.rb +4 -1
  45. data/lib/rudy/metadata/backup.rb +2 -2
  46. data/lib/rudy/metadata/disk.rb +7 -4
  47. data/lib/rudy/metadata/machine.rb +66 -2
  48. data/lib/rudy/routines.rb +2 -1
  49. data/lib/rudy/routines/base.rb +4 -157
  50. data/lib/rudy/routines/handlers/base.rb +6 -3
  51. data/lib/rudy/routines/handlers/disks.rb +127 -42
  52. data/lib/rudy/routines/handlers/group.rb +45 -10
  53. data/lib/rudy/routines/handlers/host.rb +16 -10
  54. data/lib/rudy/routines/handlers/keypair.rb +26 -10
  55. data/lib/rudy/routines/handlers/rye.rb +171 -0
  56. data/lib/rudy/routines/handlers/script.rb +2 -1
  57. data/lib/rudy/routines/passthrough.rb +2 -2
  58. data/lib/rudy/routines/reboot.rb +2 -2
  59. data/lib/rudy/routines/shutdown.rb +2 -2
  60. data/lib/rudy/routines/startup.rb +4 -2
  61. data/rudy.gemspec +17 -10
  62. data/tryouts/10_require_time/10_rudy_tryouts.rb +1 -1
  63. data/tryouts/12_config/20_defaults_tryouts.rb +1 -1
  64. data/tryouts/12_config/40_machines_tryouts.rb +1 -1
  65. data/tryouts/15_huxtable/20_user_tryouts.rb +1 -1
  66. data/tryouts/25_ec2/10_keypairs_tryouts.rb +1 -0
  67. data/tryouts/30_metadata/10_include_tryouts.rb +1 -1
  68. data/tryouts/30_metadata/13_object_tryouts.rb +4 -0
  69. data/tryouts/30_metadata/50_disk_tryouts.rb +4 -2
  70. data/tryouts/30_metadata/51_disk_digest_tryouts.rb +1 -1
  71. data/tryouts/30_metadata/53_disk_list_tryouts.rb +2 -1
  72. data/tryouts/30_metadata/56_disk_volume_tryouts.rb +1 -1
  73. data/tryouts/30_metadata/60_backup_tryouts.rb +4 -2
  74. data/tryouts/30_metadata/63_backup_list_tryouts.rb +1 -1
  75. data/tryouts/30_metadata/64_backup_disk_tryouts.rb +3 -1
  76. data/tryouts/30_metadata/66_backup_snapshot_tryouts.rb +1 -1
  77. data/tryouts/30_metadata/70_machine_tryouts.rb +5 -2
  78. data/tryouts/30_metadata/73_machine_list_tryouts.rb +1 -1
  79. data/tryouts/30_metadata/76_machine_instance_tryouts.rb +15 -3
  80. data/tryouts/30_metadata/77_machines_tryouts.rb +1 -1
  81. data/tryouts/40_routines/10_keypair_handler_tryouts.rb +6 -5
  82. data/tryouts/40_routines/11_group_handler_tryouts.rb +1 -1
  83. metadata +14 -7
  84. data/lib/rudy/cli/status.rb +0 -60
@@ -23,17 +23,33 @@ module Rudy; module Routines; module Handlers;
23
23
  def create(name=:root)
24
24
  keyname = user_keypairname name
25
25
  kp_file = pkey name
26
- kp = nil
27
- if registered? keyname
28
- raise PrivateKeyNotFound, keyname if kp_file.nil?
26
+
27
+ if registered? name && !@@global.force
29
28
  raise PrivateKeyNotFound, kp_file if !File.exists?(kp_file)
30
- else
31
- raise PrivateKeyFileExists, kp_file if File.exists?(kp_file)
32
- li "Creating keypair: #{keyname}"
33
- kp = Rudy::AWS::EC2::Keypairs.create(keyname)
34
- li "Saving #{kp_file}"
35
- Rudy::Utils.write_to_file(kp_file, kp.private_key, 'w', 0600)
36
29
  end
30
+
31
+ if Rudy::AWS::EC2::Keypairs.exists? keyname
32
+ if @@global.force
33
+ li "Destroying existing keypair: #{keyname}"
34
+ Rudy::AWS::EC2::Keypairs.destroy keyname
35
+ else
36
+ raise Rudy::AWS::EC2::KeypairAlreadyDefined, keyname
37
+ end
38
+ end
39
+
40
+ if File.exists?(kp_file)
41
+ if @@global.force
42
+ delete_pkey name
43
+ else
44
+ raise PrivateKeyFileExists, kp_file
45
+ end
46
+ end
47
+
48
+ li "Creating keypair: #{keyname}"
49
+ kp = Rudy::AWS::EC2::Keypairs.create(keyname)
50
+ li "Saving #{kp_file}"
51
+ Rudy::Utils.write_to_file(kp_file, kp.private_key, 'w', 0600)
52
+
37
53
  kp
38
54
  end
39
55
 
@@ -55,7 +71,7 @@ module Rudy; module Routines; module Handlers;
55
71
 
56
72
  def registered?(name=:root)
57
73
  keyname = user_keypairname name
58
- Rudy::AWS::EC2::Keypairs.exists?( keyname) rescue false
74
+ Rudy::AWS::EC2::Keypairs.exists?(keyname)
59
75
  end
60
76
 
61
77
  def pkey(name=:root)
@@ -0,0 +1,171 @@
1
+ module Rudy::Routines::Handlers;
2
+ module RyeTools
3
+ include Rudy::Routines::Handlers::Base
4
+ extend self
5
+
6
+
7
+ # Create an instance of Rye::Box for +hostname+. +opts+ is
8
+ # an optional Hash of options. See Rye::Box.initialize
9
+ #
10
+ # This method should be used throughout the Rudy::Routines
11
+ # namespace rather than creating instances manually b/c it
12
+ # applies some fancy pants defaults like command hooks.
13
+ def create_box(hostname, opts={})
14
+ ld [:hostname, hostname, opts, caller[0]]
15
+ opts = {
16
+ :info => (@@global.verbose >= 3), # rudy -vvv
17
+ :debug => false,
18
+ :user => current_machine_user,
19
+ :ostype => current_machine_os || :unix,
20
+ :impltype => :linux
21
+ }.merge opts
22
+
23
+ nickname = hostname
24
+ if hostname.kind_of? Rudy::Machine
25
+ hostname, nickname = hostname.dns_public, hostname.name
26
+ end
27
+
28
+ box = ::Rye::Box.new hostname, opts
29
+ box.nickname = nickname
30
+
31
+ box.add_key user_keypairpath(opts[:user])
32
+
33
+ # We define hooks so we can still print each command and its output
34
+ # when running the command blocks. NOTE: We only print this in
35
+ # verbosity mode.
36
+ if @@global.verbose > 0 && !@@global.parallel
37
+ # This block gets called for every command method call.
38
+ box.pre_command_hook do |cmd, user, host, nickname|
39
+ print_command user, nickname, cmd
40
+ end
41
+ end
42
+
43
+ if @@global.verbose > 1
44
+ # And this one gets called after each command method call.
45
+ box.post_command_hook do |ret|
46
+ print_response ret
47
+ end
48
+ end
49
+
50
+ box.exception_hook(::Rye::CommandError, &rbox_exception_handler)
51
+ box.exception_hook(Exception, &rbox_exception_handler)
52
+
53
+ ## It'd better for unknown commands to be handled elsewhere
54
+ ## because it doesn't make sense to retry a method that doesn't exist
55
+ ##box.exception_hook(Rye::CommandNotFound, &rbox_exception_handler)
56
+
57
+ box
58
+ end
59
+
60
+
61
+
62
+ # Create an instance of Rye::Set from a list of +hostnames+.
63
+ # +hostnames+ can contain hostnames or Rudy::Machine objects.
64
+ # +opts+ is an optional Hash of options. See Rye::Box.initialize
65
+ #
66
+ # NOTE: Windows machines are skipped and not added to the set.
67
+ def create_set(hostnames, opts={})
68
+ hostnames ||= []
69
+
70
+ opts = {
71
+ :user => (current_machine_user).to_s,
72
+ :parallel => @@global.parallel
73
+ }.merge(opts)
74
+ set = ::Rye::Set.new current_machine_group, opts
75
+
76
+ opts.delete(:parallel) # Not used by Rye::Box.new
77
+
78
+ hostnames.each do |m|
79
+
80
+ if m.is_a?(Rudy::Machine)
81
+ m.refresh! if m.dns_public.nil? || m.dns_public.empty?
82
+ if m.dns_public.nil? || m.dns_public.empty?
83
+ ld "Cannot find public DNS for #{m.name} (continuing...)"
84
+ rbox = self.create_box('nohost', opts)
85
+ else
86
+ ld [:dns_public, m.dns_public, m.instid]
87
+ rbox = self.create_box(m.dns_public, opts)
88
+ end
89
+ rbox.stash = m # Store the machine instance in the stash
90
+ rbox.nickname = m.name
91
+ else
92
+ # Otherwise we assume it's a hostname
93
+ rbox = self.create_box(m)
94
+ end
95
+ rbox.add_key user_keypairpath(opts[:user])
96
+ set.add_box rbox
97
+ end
98
+
99
+ ld "Machines Set: %s" % [set.empty? ? '[empty]' : set.inspect]
100
+
101
+ set
102
+ end
103
+
104
+
105
+ private
106
+
107
+ # Returns a formatted string for printing command info
108
+ def print_command(user, host, cmd)
109
+ #return if @@global.parallel
110
+ cmd ||= ""
111
+ cmd, user = cmd.to_s, user.to_s
112
+ prompt = user == "root" ? "#" : "$"
113
+ li ("%s@%s%s %s" % [user, host, prompt, cmd.bright])
114
+ end
115
+
116
+ def print_response(rap)
117
+ # Non zero exit codes raise exceptions so
118
+ # the erorrs have already been handled.
119
+ return if rap.exit_code != 0
120
+
121
+ if @@global.parallel
122
+ cmd, user = cmd.to_s, user.to_s
123
+ prompt = user == "root" ? "#" : "$"
124
+ li "%s@%s%s %s%s%s" % [rap.box.user, rap.box.nickname, prompt, rap.cmd.bright, $/, rap.stdout.inspect]
125
+ unless rap.stderr.empty?
126
+ le "#{rap.box.nickname}: " << rap.stderr.join("#{rap.box.nickname}: ")
127
+ end
128
+ else
129
+ li ' ' << rap.stdout.join("#{$/} ") if !rap.stdout.empty?
130
+ colour = rap.exit_code != 0 ? :red : :normal
131
+ unless rap.stderr.empty?
132
+ le (" STDERR " << '-'*38).color(colour).bright
133
+ le " " << rap.stderr.join("#{$/} ").color(colour)
134
+ end
135
+ end
136
+ end
137
+
138
+
139
+ def rbox_exception_handler
140
+ Proc.new do |ex, cmd, user, host, nickname|
141
+ print_exception(user, host, cmd, nickname, ex)
142
+ unless @@global.parallel
143
+ choice = Annoy.get_user_input('(S)kip (R)etry (F)orce (A)bort: ', nil, 3600) || ''
144
+ if choice.match(/\AS/i)
145
+ :skip
146
+ elsif choice.match(/\AR/i)
147
+ :retry # Tells Rye::Box#run_command to retry
148
+ elsif choice.match(/\AF/i)
149
+ @@global.force = true
150
+ :retry
151
+ else
152
+ exit 12
153
+ end
154
+ end
155
+ end
156
+ end
157
+
158
+ def print_exception(user, host, cmd, nickname, ex)
159
+ prefix = @@global.parallel ? "#{nickname}: #{cmd}: " : ""
160
+ if ex.is_a?(::Rye::CommandError)
161
+ le prefix << ex.message.color(:red)
162
+ else
163
+ le prefix << "#{ex.class}: #{ex.message}".color(:red)
164
+ end
165
+ le *ex.backtrace if @@global.verbose > 2
166
+ end
167
+
168
+
169
+ end
170
+ end
171
+
@@ -46,7 +46,8 @@ module Rudy; module Routines; module Handlers;
46
46
 
47
47
  # The error doesn't apply to the local Rye::Box instance
48
48
  if robj.is_a?(Rye::Set) && !File.exists?(user_keypairpath(user) || '')
49
- le "Cannot find key for #{user}: #{user_keypairpath(user)}"
49
+ # TODO: This prints always even if an account is authorized with different keys.
50
+ #le "Cannot find key for #{user}: #{user_keypairpath(user)}"
50
51
  end
51
52
 
52
53
  if user.to_s != robj.user
@@ -4,11 +4,11 @@ module Rudy; module Routines;
4
4
 
5
5
  def init(*args)
6
6
  @machines = Rudy::Machines.list || []
7
- @@rset = create_rye_set @machines unless defined?(@@rset)
7
+ @@rset = Rudy::Routines::Handlers::RyeTools.create_set @machines
8
8
  end
9
9
 
10
10
  def execute
11
- ld "Executing routine: #{@name}"
11
+ li "Executing routine: #{@name}"
12
12
  return @machines unless run?
13
13
  Rudy::Routines::Handlers::Depends.execute_all @before
14
14
  Rudy::Routines.runner(@routine, @@rset, @@lbox, @argv)
@@ -12,7 +12,7 @@ module Rudy; module Routines;
12
12
  def init(*args)
13
13
  @routine ||= {}
14
14
  @machines = Rudy::Machines.list
15
- @@rset = create_rye_set @machines unless defined?(@@rset)
15
+ @@rset = Rudy::Routines::Handlers::RyeTools.create_set @machines
16
16
  end
17
17
 
18
18
  # Startup routines run in the following order:
@@ -24,7 +24,7 @@ module Rudy; module Routines;
24
24
  # * all other actions
25
25
  # * after dependencies
26
26
  def execute
27
- ld "Executing routine: #{@name}"
27
+ li "Executing routine: #{@name}"
28
28
  ld "[this is a generic routine]" if @routine.empty?
29
29
 
30
30
  if run?
@@ -10,7 +10,7 @@ module Rudy; module Routines;
10
10
 
11
11
  def init(*args)
12
12
  @machines = Rudy::Machines.list || []
13
- @@rset = create_rye_set @machines unless defined?(@@rset)
13
+ @@rset = Rudy::Routines::Handlers::RyeTools.create_set @machines
14
14
  @routine ||= {}
15
15
  end
16
16
 
@@ -21,7 +21,7 @@ module Rudy; module Routines;
21
21
  # * after_local (if present)
22
22
  # * after dependencies
23
23
  def execute
24
- ld "Executing routine: #{@name}"
24
+ li "Executing routine: #{@name}"
25
25
  ld "[this is a generic routine]" if @routine.empty?
26
26
 
27
27
  # We need to remove after_local so the runner doesn't see it
@@ -20,7 +20,7 @@ module Rudy; module Routines;
20
20
  # * all other actions
21
21
  # * after dependencies
22
22
  def execute
23
- ld "Executing routine: #{@name}"
23
+ li "Executing routine: #{@name}"
24
24
  ld "[this is a generic routine]" if @routine.empty?
25
25
 
26
26
 
@@ -59,9 +59,11 @@ module Rudy; module Routines;
59
59
  # NOTE: Expect errors if there are no machines.
60
60
  Rudy::Routines.rescue {
61
61
  @machines = run? ? Rudy::Machines.create : Rudy::Machines.list
62
- @@rset = create_rye_set @machines unless defined?(@@rset)
62
+ @@rset = Rudy::Routines::Handlers::RyeTools.create_set @machines
63
63
  }
64
64
 
65
+ sleep 1 # SimpleDB eventual consistency
66
+
65
67
  Rudy::Routines.rescue {
66
68
  if !Rudy::Routines::Handlers::Host.is_running? @@rset
67
69
  a = @@rset.boxes.select { |box| !box.stash.instance_running? }
@@ -1,12 +1,12 @@
1
1
  @spec = Gem::Specification.new do |s|
2
2
  s.name = "rudy"
3
3
  s.rubyforge_project = 'rudy'
4
- s.version = "0.9.1"
4
+ s.version = "0.9.2"
5
5
  s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
8
8
  s.email = "delano@solutious.com"
9
- s.homepage = "http://github.com/solutious/rudy"
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
@@ -14,21 +14,21 @@
14
14
  s.require_paths = %w[lib]
15
15
  s.rubygems_version = '1.3.0'
16
16
 
17
- s.add_dependency 'rye', '>= 0.8.6'
17
+ s.executables = %w[rudy rudy-ec2 rudy-sdb rudy-s3]
18
+
19
+ s.add_dependency 'rye', '>= 0.8.7'
18
20
  s.add_dependency 'attic', '>= 0.4.0'
19
21
  s.add_dependency 'annoy', '>= 0.5.5'
20
22
  s.add_dependency 'drydock', '>= 0.6.6'
21
23
  s.add_dependency 'caesars', '>= 0.7.3'
22
- s.add_dependency 'sysinfo', '>= 0.6.3'
24
+ s.add_dependency 'sysinfo', '>= 0.7.0'
23
25
  s.add_dependency 'gibbler', '>= 0.6.0'
24
26
  s.add_dependency 'tryouts', '>= 0.8.4'
25
27
  s.add_dependency 'storable', '>= 0.5.6'
26
28
 
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
29
- s.add_dependency 'amazon-ec2', '>= 0.3.8' # Region fix
30
-
31
- s.executables = %w[rudy rudy-ec2 rudy-sdb rudy-s3]
29
+ s.add_dependency 'aws-s3', '>= 0.6.1'
30
+ s.add_dependency 'highline', '>= 1.5.1'
31
+ s.add_dependency 'amazon-ec2', '>= 0.5.0'
32
32
 
33
33
  # = MANIFEST =
34
34
  # git ls-files
@@ -42,7 +42,10 @@
42
42
  bin/rudy-ec2
43
43
  bin/rudy-s3
44
44
  bin/rudy-sdb
45
+ examples/authorize.rb
45
46
  examples/gem-test.rb
47
+ examples/solaris.rb
48
+ examples/windows.rb
46
49
  lib/rudy.rb
47
50
  lib/rudy/aws.rb
48
51
  lib/rudy/aws/ec2.rb
@@ -63,6 +66,7 @@
63
66
  lib/rudy/cli/aws/ec2/candy.rb
64
67
  lib/rudy/cli/aws/ec2/groups.rb
65
68
  lib/rudy/cli/aws/ec2/images.rb
69
+ lib/rudy/cli/aws/ec2/info.rb
66
70
  lib/rudy/cli/aws/ec2/instances.rb
67
71
  lib/rudy/cli/aws/ec2/keypairs.rb
68
72
  lib/rudy/cli/aws/ec2/snapshots.rb
@@ -79,11 +83,13 @@
79
83
  lib/rudy/cli/config.rb
80
84
  lib/rudy/cli/disks.rb
81
85
  lib/rudy/cli/execbase.rb
86
+ lib/rudy/cli/images.rb
87
+ lib/rudy/cli/info.rb
88
+ lib/rudy/cli/keypairs.rb
82
89
  lib/rudy/cli/machines.rb
83
90
  lib/rudy/cli/metadata.rb
84
91
  lib/rudy/cli/networks.rb
85
92
  lib/rudy/cli/routines.rb
86
- lib/rudy/cli/status.rb
87
93
  lib/rudy/config.rb
88
94
  lib/rudy/config/objects.rb
89
95
  lib/rudy/disks.rb
@@ -108,6 +114,7 @@
108
114
  lib/rudy/routines/handlers/host.rb
109
115
  lib/rudy/routines/handlers/keypair.rb
110
116
  lib/rudy/routines/handlers/machines.rb
117
+ lib/rudy/routines/handlers/rye.rb
111
118
  lib/rudy/routines/handlers/script.rb
112
119
  lib/rudy/routines/handlers/user.rb
113
120
  lib/rudy/routines/passthrough.rb
@@ -18,7 +18,7 @@ tryout "Rudy Initialization" do
18
18
  drill "auto-yes is disabled", Rudy.auto?, false
19
19
 
20
20
  drill "debug can be enabled", true do
21
- Rudy.enable_debug
21
+ #Rudy.enable_debug
22
22
  Rudy.debug?
23
23
  end
24
24
 
@@ -8,7 +8,7 @@ tryout "Defaults" do
8
8
  @@config.look_and_load # looks for and loads config files
9
9
  end
10
10
 
11
- drill "has some defaults", ["environment", "role", "zone"].sort do
11
+ drill "has some defaults", ["color", "environment", "role", "zone"].sort do
12
12
  # Sorted so we can add new keys without breaking the test
13
13
  @@config.defaults.keys.collect { |v| v.to_s }.sort
14
14
  end
@@ -13,7 +13,7 @@ tryout "Machines" do
13
13
  end
14
14
 
15
15
  dream :class, Rudy::Config::Machines
16
- dream :gibbler, "b44ba542bd2aa382cf77fa64ffc610e5e992609a"
16
+ dream :gibbler, "16073d994b669dc51a7109f5165364dce516e707"
17
17
  drill "has instance of Rudy::Config::Machines" do
18
18
  @@config.machines
19
19
  end
@@ -9,7 +9,7 @@ tryout "User related methods" do
9
9
  set :global, Rudy::Huxtable.global
10
10
  set :config, Rudy::Huxtable.config
11
11
  setup do
12
- Rudy.enable_debug
12
+ #Rudy.enable_debug
13
13
  Rudy::Huxtable.update_config # Read config files
14
14
  config.defaults[:keydir] = keydir
15
15
  Rudy::Huxtable.global.zone = 'us-east-1b'
@@ -9,6 +9,7 @@ tryouts "Keypairs" do
9
9
 
10
10
  setup do
11
11
  Rudy::Huxtable.update_config
12
+ #Rudy::Huxtable.global.region = :'eu-west-1'
12
13
  Rudy::AWS::EC2.connect global.accesskey, global.secretkey, global.region
13
14
  end
14
15
 
@@ -32,7 +32,7 @@ tryouts "include Rudy::Metadata" do
32
32
  Rudy::Metadata.create_domain test_domain
33
33
  end
34
34
 
35
- dream [:environment, :region, :role, :zone]
35
+ dream [:environment, :region, :role, :rtype, :zone]
36
36
  drill "can build a default criteria" do
37
37
  Rudy::Metadata.build_criteria(Rudy::Machines::RTYPE).keys.sort
38
38
  end