rudy 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +32 -17
- data/README.rdoc +74 -40
- data/bin/rudy +66 -10
- data/bin/rudy-ec2 +3 -1
- data/examples/authorize.rb +15 -0
- data/examples/gem-test.rb +11 -5
- data/examples/solaris.rb +35 -0
- data/examples/windows.rb +101 -0
- data/lib/rudy.rb +7 -1
- data/lib/rudy/aws.rb +2 -2
- data/lib/rudy/aws/ec2.rb +29 -22
- data/lib/rudy/aws/ec2/group.rb +1 -1
- data/lib/rudy/aws/ec2/image.rb +1 -29
- data/lib/rudy/aws/ec2/instance.rb +4 -32
- data/lib/rudy/aws/ec2/keypair.rb +1 -6
- data/lib/rudy/aws/ec2/snapshot.rb +2 -20
- data/lib/rudy/aws/ec2/volume.rb +11 -19
- data/lib/rudy/aws/ec2/zone.rb +1 -6
- data/lib/rudy/aws/sdb.rb +1 -1
- data/lib/rudy/cli/aws/ec2/addresses.rb +4 -10
- data/lib/rudy/cli/aws/ec2/groups.rb +0 -1
- data/lib/rudy/cli/aws/ec2/images.rb +1 -4
- data/lib/rudy/cli/aws/ec2/info.rb +63 -0
- data/lib/rudy/cli/aws/ec2/instances.rb +3 -5
- data/lib/rudy/cli/aws/ec2/keypairs.rb +3 -5
- data/lib/rudy/cli/aws/ec2/snapshots.rb +2 -6
- data/lib/rudy/cli/aws/ec2/zones.rb +2 -4
- data/lib/rudy/cli/backups.rb +20 -9
- data/lib/rudy/cli/base.rb +60 -3
- data/lib/rudy/cli/candy.rb +1 -1
- data/lib/rudy/cli/disks.rb +65 -7
- data/lib/rudy/cli/execbase.rb +0 -2
- data/lib/rudy/cli/images.rb +97 -0
- data/lib/rudy/cli/info.rb +48 -0
- data/lib/rudy/cli/keypairs.rb +43 -0
- data/lib/rudy/cli/machines.rb +41 -36
- data/lib/rudy/cli/networks.rb +68 -0
- data/lib/rudy/cli/routines.rb +3 -10
- data/lib/rudy/config/objects.rb +0 -1
- data/lib/rudy/disks.rb +4 -0
- data/lib/rudy/global.rb +1 -1
- data/lib/rudy/huxtable.rb +9 -3
- data/lib/rudy/machines.rb +1 -1
- data/lib/rudy/metadata.rb +4 -1
- data/lib/rudy/metadata/backup.rb +2 -2
- data/lib/rudy/metadata/disk.rb +7 -4
- data/lib/rudy/metadata/machine.rb +66 -2
- data/lib/rudy/routines.rb +2 -1
- data/lib/rudy/routines/base.rb +4 -157
- data/lib/rudy/routines/handlers/base.rb +6 -3
- data/lib/rudy/routines/handlers/disks.rb +127 -42
- data/lib/rudy/routines/handlers/group.rb +45 -10
- data/lib/rudy/routines/handlers/host.rb +16 -10
- data/lib/rudy/routines/handlers/keypair.rb +26 -10
- data/lib/rudy/routines/handlers/rye.rb +171 -0
- data/lib/rudy/routines/handlers/script.rb +2 -1
- data/lib/rudy/routines/passthrough.rb +2 -2
- data/lib/rudy/routines/reboot.rb +2 -2
- data/lib/rudy/routines/shutdown.rb +2 -2
- data/lib/rudy/routines/startup.rb +4 -2
- data/rudy.gemspec +17 -10
- data/tryouts/10_require_time/10_rudy_tryouts.rb +1 -1
- data/tryouts/12_config/20_defaults_tryouts.rb +1 -1
- data/tryouts/12_config/40_machines_tryouts.rb +1 -1
- data/tryouts/15_huxtable/20_user_tryouts.rb +1 -1
- data/tryouts/25_ec2/10_keypairs_tryouts.rb +1 -0
- data/tryouts/30_metadata/10_include_tryouts.rb +1 -1
- data/tryouts/30_metadata/13_object_tryouts.rb +4 -0
- data/tryouts/30_metadata/50_disk_tryouts.rb +4 -2
- data/tryouts/30_metadata/51_disk_digest_tryouts.rb +1 -1
- data/tryouts/30_metadata/53_disk_list_tryouts.rb +2 -1
- data/tryouts/30_metadata/56_disk_volume_tryouts.rb +1 -1
- data/tryouts/30_metadata/60_backup_tryouts.rb +4 -2
- data/tryouts/30_metadata/63_backup_list_tryouts.rb +1 -1
- data/tryouts/30_metadata/64_backup_disk_tryouts.rb +3 -1
- data/tryouts/30_metadata/66_backup_snapshot_tryouts.rb +1 -1
- data/tryouts/30_metadata/70_machine_tryouts.rb +5 -2
- data/tryouts/30_metadata/73_machine_list_tryouts.rb +1 -1
- data/tryouts/30_metadata/76_machine_instance_tryouts.rb +15 -3
- data/tryouts/30_metadata/77_machines_tryouts.rb +1 -1
- data/tryouts/40_routines/10_keypair_handler_tryouts.rb +6 -5
- data/tryouts/40_routines/11_group_handler_tryouts.rb +1 -1
- metadata +14 -7
- 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
|
-
|
27
|
-
if registered?
|
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?(
|
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
|
-
|
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 =
|
7
|
+
@@rset = Rudy::Routines::Handlers::RyeTools.create_set @machines
|
8
8
|
end
|
9
9
|
|
10
10
|
def execute
|
11
|
-
|
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)
|
data/lib/rudy/routines/reboot.rb
CHANGED
@@ -12,7 +12,7 @@ module Rudy; module Routines;
|
|
12
12
|
def init(*args)
|
13
13
|
@routine ||= {}
|
14
14
|
@machines = Rudy::Machines.list
|
15
|
-
@@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
|
-
|
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 =
|
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
|
-
|
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
|
-
|
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 =
|
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? }
|
data/rudy.gemspec
CHANGED
@@ -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.
|
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://
|
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.
|
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.
|
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'
|
28
|
-
s.add_dependency 'highline', '>= 1.5.1'
|
29
|
-
s.add_dependency 'amazon-ec2', '>= 0.
|
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
|
@@ -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, "
|
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'
|
@@ -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
|