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.
- data/CHANGES.txt +55 -14
- data/README.rdoc +26 -34
- data/Rudyfile +27 -32
- data/bin/rudy +47 -27
- data/bin/rudy-ec2 +2 -16
- data/bin/rudy-s3 +0 -10
- data/bin/rudy-sdb +11 -12
- data/lib/rudy.rb +49 -89
- data/lib/rudy/aws.rb +2 -43
- data/lib/rudy/aws/ec2.rb +57 -20
- data/lib/rudy/aws/ec2/address.rb +10 -11
- data/lib/rudy/aws/ec2/group.rb +10 -9
- data/lib/rudy/aws/ec2/image.rb +8 -8
- data/lib/rudy/aws/ec2/instance.rb +15 -16
- data/lib/rudy/aws/ec2/keypair.rb +14 -19
- data/lib/rudy/aws/ec2/snapshot.rb +16 -9
- data/lib/rudy/aws/ec2/volume.rb +37 -24
- data/lib/rudy/aws/ec2/zone.rb +5 -4
- data/lib/rudy/aws/s3.rb +2 -1
- data/lib/rudy/aws/sdb.rb +35 -86
- data/lib/rudy/backups.rb +24 -0
- data/lib/rudy/cli.rb +5 -131
- data/lib/rudy/cli/aws/ec2/addresses.rb +19 -27
- data/lib/rudy/cli/aws/ec2/candy.rb +32 -7
- data/lib/rudy/cli/aws/ec2/groups.rb +9 -13
- data/lib/rudy/cli/aws/ec2/images.rb +5 -133
- data/lib/rudy/cli/aws/ec2/instances.rb +25 -25
- data/lib/rudy/cli/aws/ec2/keypairs.rb +7 -11
- data/lib/rudy/cli/aws/ec2/snapshots.rb +5 -9
- data/lib/rudy/cli/aws/ec2/volumes.rb +22 -23
- data/lib/rudy/cli/aws/ec2/zones.rb +2 -3
- data/lib/rudy/cli/aws/sdb/domains.rb +5 -6
- data/lib/rudy/cli/aws/sdb/objects.rb +33 -0
- data/lib/rudy/cli/aws/sdb/select.rb +23 -0
- data/lib/rudy/cli/backups.rb +38 -0
- data/lib/rudy/cli/base.rb +98 -0
- data/lib/rudy/cli/candy.rb +1 -2
- data/lib/rudy/cli/config.rb +7 -4
- data/lib/rudy/cli/disks.rb +6 -8
- data/lib/rudy/cli/execbase.rb +53 -0
- data/lib/rudy/cli/machines.rb +14 -18
- data/lib/rudy/cli/metadata.rb +24 -10
- data/lib/rudy/cli/routines.rb +31 -5
- data/lib/rudy/config.rb +17 -22
- data/lib/rudy/config/objects.rb +44 -30
- data/lib/rudy/disks.rb +25 -0
- data/lib/rudy/exceptions.rb +95 -0
- data/lib/rudy/global.rb +46 -23
- data/lib/rudy/guidelines.rb +3 -2
- data/lib/rudy/huxtable.rb +66 -57
- data/lib/rudy/machines.rb +41 -263
- data/lib/rudy/metadata.rb +212 -38
- data/lib/rudy/metadata/backup.rb +123 -78
- data/lib/rudy/metadata/disk.rb +152 -170
- data/lib/rudy/metadata/machine.rb +179 -0
- data/lib/rudy/mixins.rb +2 -1
- data/lib/rudy/mixins/hash.rb +3 -1
- data/lib/rudy/mixins/symbol.rb +8 -0
- data/lib/rudy/routines.rb +127 -344
- data/lib/rudy/routines/base.rb +226 -0
- data/lib/rudy/routines/handlers/base.rb +48 -0
- data/lib/rudy/routines/handlers/depends.rb +49 -0
- data/lib/rudy/routines/handlers/disks.rb +239 -0
- data/lib/rudy/routines/handlers/group.rb +42 -0
- data/lib/rudy/routines/handlers/host.rb +72 -0
- data/lib/rudy/routines/handlers/keypair.rb +70 -0
- data/lib/rudy/routines/handlers/machines.rb +15 -0
- data/lib/rudy/routines/handlers/script.rb +85 -0
- data/lib/rudy/routines/handlers/user.rb +41 -0
- data/lib/rudy/routines/passthrough.rb +19 -23
- data/lib/rudy/routines/reboot.rb +82 -51
- data/lib/rudy/routines/shutdown.rb +61 -14
- data/lib/rudy/routines/startup.rb +111 -17
- data/lib/rudy/utils.rb +12 -59
- data/rudy.gemspec +85 -25
- data/tryouts/01_mixins/01_hash_tryouts.rb +20 -0
- data/tryouts/10_require_time/10_rudy_tryouts.rb +33 -0
- data/tryouts/10_require_time/15_global_tryouts.rb +58 -0
- data/tryouts/12_config/10_load_config_tryouts.rb +43 -0
- data/tryouts/12_config/20_defaults_tryouts.rb +16 -0
- data/tryouts/12_config/30_accounts_tryouts.rb +17 -0
- data/tryouts/12_config/40_machines_tryouts.rb +53 -0
- data/tryouts/12_config/50_commands_tryouts.rb +17 -0
- data/tryouts/12_config/60_routines_tryouts.rb +16 -0
- data/tryouts/15_huxtable/10_huxtable_tryouts.rb +47 -0
- data/tryouts/15_huxtable/20_user_tryouts.rb +47 -0
- data/tryouts/20_simpledb/10_domains_tryouts.rb +36 -0
- data/tryouts/20_simpledb/20_objects_tryouts.rb +56 -0
- data/tryouts/25_ec2/10_keypairs_tryouts.rb +54 -0
- data/tryouts/25_ec2/20_groups_tryouts.rb +56 -0
- data/tryouts/25_ec2/21_groups_authorize_address_tryouts.rb +53 -0
- data/tryouts/25_ec2/22_groups_authorize_account_tryouts.rb +54 -0
- data/tryouts/25_ec2/30_addresses_tryouts.rb +42 -0
- data/tryouts/25_ec2/40_volumes_tryouts.rb +53 -0
- data/tryouts/25_ec2/50_snapshots_tryouts.rb +75 -0
- data/tryouts/26_ec2_instances/10_instance_tryouts.rb +107 -0
- data/tryouts/26_ec2_instances/50_images_tryouts.rb +7 -0
- data/tryouts/30_metadata/10_include_tryouts.rb +45 -0
- data/tryouts/30_metadata/13_object_tryouts.rb +19 -0
- data/tryouts/30_metadata/50_disk_tryouts.rb +115 -0
- data/tryouts/30_metadata/51_disk_digest_tryouts.rb +24 -0
- data/tryouts/30_metadata/53_disk_list_tryouts.rb +35 -0
- data/tryouts/30_metadata/56_disk_volume_tryouts.rb +68 -0
- data/tryouts/30_metadata/60_backup_tryouts.rb +101 -0
- data/tryouts/30_metadata/63_backup_list_tryouts.rb +38 -0
- data/tryouts/30_metadata/64_backup_disk_tryouts.rb +65 -0
- data/tryouts/30_metadata/66_backup_snapshot_tryouts.rb +76 -0
- data/tryouts/30_metadata/70_machine_tryouts.rb +85 -0
- data/tryouts/30_metadata/73_machine_list_tryouts.rb +58 -0
- data/tryouts/30_metadata/76_machine_instance_tryouts.rb +64 -0
- data/tryouts/30_metadata/77_machines_tryouts.rb +45 -0
- data/tryouts/40_routines/10_keypair_handler_tryouts.rb +52 -0
- data/tryouts/40_routines/11_group_handler_tryouts.rb +36 -0
- data/tryouts/80_cli/10_rudyec2_tryouts.rb +8 -0
- data/tryouts/80_cli/60_rudy_tryouts.rb +41 -0
- data/tryouts/failer +6 -0
- data/tryouts/misc/console_tryout.rb +91 -0
- data/tryouts/misc/disks_tryout.rb +48 -0
- data/tryouts/misc/drydock_tryout.rb +48 -0
- data/tryouts/misc/nested_methods.rb +103 -0
- data/tryouts/misc/session_tryout.rb +46 -0
- data/tryouts/misc/tryouts.rb +33 -0
- data/tryouts/misc/usage_tryout.rb +23 -0
- metadata +119 -31
- data/bin/ird +0 -153
- data/lib/rudy/metadata/backups.rb +0 -67
- data/lib/rudy/metadata/debug.rb +0 -38
- data/lib/rudy/metadata/disks.rb +0 -67
- data/lib/rudy/metadata/objectbase.rb +0 -108
- data/lib/rudy/routines/helper.rb +0 -76
- data/lib/rudy/routines/helpers/dependshelper.rb +0 -34
- data/lib/rudy/routines/helpers/diskhelper.rb +0 -403
- data/lib/rudy/routines/helpers/scripthelper.rb +0 -197
- data/lib/rudy/routines/helpers/userhelper.rb +0 -37
- 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
|
-
@
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
49
|
+
|
50
|
+
@machines
|
21
51
|
end
|
22
|
-
|
52
|
+
|
23
53
|
# Called by generic_machine_runner
|
24
54
|
def raise_early_exceptions
|
25
|
-
|
26
|
-
|
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
|
12
|
+
@routine ||= {}
|
8
13
|
end
|
9
14
|
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
21
|
-
machines
|
94
|
+
|
95
|
+
@machines
|
22
96
|
end
|
23
97
|
|
24
98
|
# Called by generic_machine_runner
|
25
99
|
def raise_early_exceptions
|
26
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
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
|
data/lib/rudy/utils.rb
CHANGED
@@ -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
|
-
#
|
47
|
-
# where
|
48
|
-
|
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
|
-
|
52
|
-
|
53
|
-
|
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:
|
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=
|
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
|
data/rudy.gemspec
CHANGED
@@ -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.
|
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.
|
15
|
+
s.rubygems_version = '1.3.0'
|
16
16
|
|
17
|
-
s.add_dependency '
|
18
|
-
s.add_dependency '
|
19
|
-
s.add_dependency '
|
20
|
-
s.add_dependency '
|
21
|
-
s.add_dependency '
|
22
|
-
s.add_dependency '
|
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 '
|
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
|
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/
|
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/
|
110
|
-
lib/rudy/routines/
|
111
|
-
lib/rudy/routines/
|
112
|
-
lib/rudy/routines/
|
113
|
-
lib/rudy/routines/
|
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
|
|