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