rudy 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
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