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