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,15 +3,14 @@
|
|
3
3
|
module Rudy; module CLI;
|
4
4
|
module AWS; module EC2;
|
5
5
|
|
6
|
-
class
|
6
|
+
class EC2::Keypairs < Rudy::CLI::CommandBase
|
7
7
|
|
8
8
|
def create_keypairs_valid?
|
9
9
|
raise Drydock::ArgError.new('name', @alias) unless @argv.name
|
10
10
|
true
|
11
11
|
end
|
12
12
|
def create_keypairs
|
13
|
-
|
14
|
-
kp = execute_action { rkey.create(@argv.name) }
|
13
|
+
kp = execute_action { Rudy::AWS::EC2::Keypairs.create(@argv.name) }
|
15
14
|
if [:s, :string].member?(@@global.format)
|
16
15
|
puts "Name: #{kp.name}"
|
17
16
|
puts "Fingerprint: #{kp.fingerprint}", $/
|
@@ -28,21 +27,18 @@ module AWS; module EC2;
|
|
28
27
|
true
|
29
28
|
end
|
30
29
|
def destroy_keypairs
|
31
|
-
|
32
|
-
|
33
|
-
kp = rkey.get(@argv.name)
|
30
|
+
raise "Keypair #{@argv.name} does not exist" unless Rudy::AWS::EC2::Keypairs.exists?(@argv.name)
|
31
|
+
kp = Rudy::AWS::EC2::Keypairs.get(@argv.name)
|
34
32
|
puts "Destroying: #{kp.name}"
|
35
33
|
execute_check(:medium)
|
36
|
-
execute_action {
|
37
|
-
keypairs
|
34
|
+
execute_action { Rudy::AWS::EC2::Keypairs.destroy(kp.name) }
|
38
35
|
end
|
39
36
|
|
40
37
|
def keypairs
|
41
|
-
|
42
|
-
(rkey.list || []).each do |kp|
|
38
|
+
(Rudy::AWS::EC2::Keypairs.list || []).each do |kp|
|
43
39
|
puts @@global.verbose > 0 ? kp.inspect : kp.dump(@@global.format)
|
44
40
|
end
|
45
|
-
puts "No keypairs" unless
|
41
|
+
puts "No keypairs" unless Rudy::AWS::EC2::Keypairs.any?
|
46
42
|
end
|
47
43
|
|
48
44
|
|
@@ -7,34 +7,30 @@ module AWS; module EC2;
|
|
7
7
|
|
8
8
|
def create_snapshots_valid?
|
9
9
|
raise Drydock::ArgError.new('volume ID', @alias) unless @option.volume
|
10
|
-
@
|
11
|
-
@volume = @rvol.get(@argv.volid)
|
10
|
+
@volume = Rudy::AWS::EC2::Volumes.get(@argv.volid)
|
12
11
|
raise "Volume #{@volume.awsid} does not exist" unless @volume
|
13
12
|
true
|
14
13
|
end
|
15
14
|
def create_snapshots
|
16
|
-
|
17
|
-
snap = execute_action { rsnap.create(@volume.awsid) }
|
15
|
+
snap = execute_action { Rudy::AWS::EC2::Snapshots.create(@volume.awsid) }
|
18
16
|
puts @@global.verbose > 0 ? snap.inspect : snap.dump(@@global.format)
|
19
17
|
end
|
20
18
|
|
21
19
|
def destroy_snapshots_valid?
|
22
20
|
raise Drydock::ArgError.new('snapshot ID', @alias) unless @argv.snapid
|
23
|
-
@
|
24
|
-
@snap = @rsnap.get(@argv.snapid)
|
21
|
+
@snap = Rudy::AWS::EC2::Snapshots.get(@argv.snapid)
|
25
22
|
raise "Snapshot #{@snap.awsid} does not exist" unless @snap
|
26
23
|
true
|
27
24
|
end
|
28
25
|
def destroy_snapshots
|
29
26
|
puts "Destroying: #{@snap.awsid}"
|
30
27
|
execute_check(:medium)
|
31
|
-
execute_action {
|
28
|
+
execute_action { Rudy::AWS::EC2::Snapshots.destroy(@snap.awsid) }
|
32
29
|
snapshots
|
33
30
|
end
|
34
31
|
|
35
32
|
def snapshots
|
36
|
-
|
37
|
-
snaps = rsnap.list || []
|
33
|
+
snaps = Rudy::AWS::EC2::Snapshots.list || []
|
38
34
|
snaps.each do |snap|
|
39
35
|
puts @@global.verbose > 0 ? snap.inspect : snap.dump(@@global.format)
|
40
36
|
end
|
@@ -13,23 +13,27 @@ module AWS; module EC2;
|
|
13
13
|
end
|
14
14
|
def volumes_create
|
15
15
|
puts "Creating #{@option.size}GB volume in #{@@global.zone}"
|
16
|
-
rvol = Rudy::AWS::EC2::Volumes.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
17
16
|
execute_check(:low)
|
18
17
|
vol = execute_action("Create Failed") {
|
19
|
-
|
18
|
+
Rudy::AWS::EC2::Volumes.create(@option.size, @@global.zone, @option.snapshot)
|
20
19
|
}
|
21
20
|
puts @global.verbose > 1 ? vol.inspect : vol.dump(@@global.format)
|
22
21
|
end
|
23
22
|
|
24
23
|
|
25
24
|
def destroy_volumes_valid?
|
26
|
-
raise "You must supply a volume ID. See rudy volume -h" unless @argv.volid
|
25
|
+
raise "You must supply a volume ID. See rudy volume -h" unless @argv.volid
|
26
|
+
|
27
|
+
unless Rudy::AWS::EC2::Volumes.exists? @argv.volid
|
28
|
+
raise Rudy::AWS::EC2::UnknownVolume, @argv.volid
|
29
|
+
end
|
27
30
|
true
|
28
31
|
end
|
29
32
|
|
30
33
|
def destroy_volumes
|
31
|
-
|
32
|
-
@volume =
|
34
|
+
|
35
|
+
@volume = Rudy::AWS::EC2::Volumes.get(@argv.volid)
|
36
|
+
|
33
37
|
raise "Volume #{@volume.awsid} does not exist" unless @volume
|
34
38
|
raise "Volume #{@volume.awsid} is still in-use" if @volume.in_use?
|
35
39
|
raise "Volume #{@volume.awsid} is still attached" if @volume.attached?
|
@@ -37,9 +41,10 @@ module AWS; module EC2;
|
|
37
41
|
|
38
42
|
puts "Destroying #{@volume.awsid}"
|
39
43
|
execute_check(:medium)
|
40
|
-
execute_action("Destroy Failed") {
|
44
|
+
execute_action("Destroy Failed") { Rudy::AWS::EC2::Volumes.destroy(@volume.awsid) }
|
41
45
|
|
42
|
-
vol =
|
46
|
+
vol = Rudy::AWS::EC2::Volumes.get(@volume.awsid)
|
47
|
+
|
43
48
|
puts @global.verbose > 1 ? vol.inspect : vol.dump(@@global.format)
|
44
49
|
end
|
45
50
|
|
@@ -51,20 +56,17 @@ module AWS; module EC2;
|
|
51
56
|
end
|
52
57
|
def volumes_attach
|
53
58
|
@option.device ||= "/dev/sdh"
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
raise "Volume #{@argv.volid} does not exist" unless rvol.exists?(@argv.volid)
|
58
|
-
raise "Volume #{@argv.volid} is already attached" if rvol.attached?(@argv.volid)
|
59
|
-
raise "Instance #{@option.instance} does not exist" unless rinst.exists?(@option.instance)
|
59
|
+
raise "Volume #{@argv.volid} does not exist" unless Rudy::AWS::EC2::Volumes.exists?(@argv.volid)
|
60
|
+
raise "Volume #{@argv.volid} is already attached" if Rudy::AWS::EC2::Volumes.attached?(@argv.volid)
|
61
|
+
raise "Instance #{@option.instance} does not exist" unless Rudy::AWS::EC2::Instances.exists?(@option.instance)
|
60
62
|
|
61
63
|
puts "Attaching #{@argv.volid} to #{@option.instance} on #{@option.device}"
|
62
64
|
execute_check(:low)
|
63
65
|
execute_action("Attach Failed") {
|
64
|
-
|
66
|
+
Rudy::AWS::EC2::Volumes.attach(@argv.volid, @option.instance, @option.device)
|
65
67
|
}
|
66
68
|
|
67
|
-
vol =
|
69
|
+
vol = Rudy::AWS::EC2::Volumes.get(@argv.volid)
|
68
70
|
puts @global.verbose > 1 ? vol.inspect : vol.dump(@@global.format)
|
69
71
|
end
|
70
72
|
|
@@ -74,24 +76,21 @@ module AWS; module EC2;
|
|
74
76
|
end
|
75
77
|
|
76
78
|
def volumes_detach
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
vol = rvol.get(@argv.volid)
|
79
|
+
raise "Volume #{@argv.volid} does not exist" unless Rudy::AWS::EC2::Volumes.exists?(@argv.volid)
|
80
|
+
vol = Rudy::AWS::EC2::Volumes.get(@argv.volid)
|
81
81
|
raise "Volume #{vol.awsid} is not attached" unless vol.attached?
|
82
82
|
|
83
83
|
puts "Detaching #{vol.awsid} from #{vol.instid}"
|
84
84
|
execute_check(:medium)
|
85
|
-
execute_action("Detach Failed") {
|
85
|
+
execute_action("Detach Failed") { Rudy::AWS::EC2::Volumes.detach(vol.awsid) }
|
86
86
|
|
87
|
-
vol =
|
87
|
+
vol = Rudy::AWS::EC2::Volumes.get(vol.awsid)
|
88
88
|
puts @global.verbose > 1 ? vol.inspect : vol.dump(@@global.format)
|
89
89
|
end
|
90
90
|
|
91
91
|
|
92
92
|
def volumes
|
93
|
-
|
94
|
-
volumes = rvol.list || []
|
93
|
+
volumes = Rudy::AWS::EC2::Volumes.list || []
|
95
94
|
volumes.each do |vol|
|
96
95
|
puts @global.verbose > 1 ? vol.inspect : vol.dump(@@global.format)
|
97
96
|
end
|
@@ -7,11 +7,10 @@ module AWS; module EC2;
|
|
7
7
|
|
8
8
|
|
9
9
|
def zones
|
10
|
-
|
11
|
-
rzone.list_as_hash(@argv.name).each_value do |zon|
|
10
|
+
Rudy::AWS::EC2::Zones.list_as_hash(@argv.name).each_value do |zon|
|
12
11
|
puts zon.dump(@@global.format)
|
13
12
|
end
|
14
|
-
puts "No zones" unless
|
13
|
+
puts "No zones" unless Rudy::AWS::EC2::Zones.any?
|
15
14
|
end
|
16
15
|
|
17
16
|
|
@@ -4,32 +4,31 @@ module Rudy; module CLI;
|
|
4
4
|
module AWS; module SDB;
|
5
5
|
|
6
6
|
class Domains < Rudy::CLI::CommandBase
|
7
|
-
|
8
|
-
|
7
|
+
|
9
8
|
def domains
|
10
|
-
sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
11
|
-
domains = sdb.list_domains
|
9
|
+
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
10
|
+
domains = @sdb.list_domains
|
12
11
|
puts domains
|
13
12
|
puts "No domains" if domains.nil? || domains.empty?
|
14
13
|
end
|
15
14
|
|
16
15
|
def domains_create_valid?
|
17
|
-
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
18
16
|
raise "No name specified" unless @argv.name
|
19
17
|
true
|
20
18
|
end
|
21
19
|
def domains_create
|
20
|
+
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
22
21
|
@sdb.create_domain @argv.name
|
23
22
|
execute_check(:low)
|
24
23
|
domains
|
25
24
|
end
|
26
25
|
|
27
26
|
def domains_destroy_valid?
|
28
|
-
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
29
27
|
raise "No name specified" unless @argv.name
|
30
28
|
true
|
31
29
|
end
|
32
30
|
def domains_destroy
|
31
|
+
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
33
32
|
execute_check(:medium)
|
34
33
|
@sdb.destroy_domain @argv.name
|
35
34
|
domains
|
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Rudy; module CLI;
|
4
|
+
module AWS; module SDB;
|
5
|
+
|
6
|
+
class Objects < Rudy::CLI::CommandBase
|
7
|
+
|
8
|
+
|
9
|
+
def objects_valid?
|
10
|
+
raise "Must supply domain" if @argv.empty?
|
11
|
+
true
|
12
|
+
end
|
13
|
+
def objects
|
14
|
+
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
15
|
+
|
16
|
+
if @argv.key.nil?
|
17
|
+
query = "select * from #{@argv.name}"
|
18
|
+
items = @sdb.select query
|
19
|
+
else
|
20
|
+
items = [@sdb.get( @argv.name, @argv.key)]
|
21
|
+
end
|
22
|
+
|
23
|
+
exit unless items
|
24
|
+
|
25
|
+
items.each do |i|
|
26
|
+
p i
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end; end
|
33
|
+
end; end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
module Rudy; module CLI;
|
3
|
+
module AWS; module SDB;
|
4
|
+
|
5
|
+
class Select < Rudy::CLI::CommandBase
|
6
|
+
|
7
|
+
def query_valid?
|
8
|
+
raise "No select query supplied" if @argv.empty?
|
9
|
+
true
|
10
|
+
end
|
11
|
+
|
12
|
+
def query
|
13
|
+
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
14
|
+
results = @sdb.select @argv.query
|
15
|
+
return if results.nil?
|
16
|
+
results.each do |r|
|
17
|
+
p r
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end; end
|
23
|
+
end; end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Rudy
|
4
|
+
module CLI
|
5
|
+
class Backups < Rudy::CLI::CommandBase
|
6
|
+
|
7
|
+
|
8
|
+
def backups
|
9
|
+
more, less = {}, []
|
10
|
+
less = [:environment, :role] if @option.all
|
11
|
+
# We first get the disk metadata
|
12
|
+
b_list = Rudy::Backups.list(more, less) || []
|
13
|
+
b_list.each do |back|
|
14
|
+
puts @global.verbose > 0 ? "#{back.name}: #{back.inspect}" : back.name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def backups_wash
|
19
|
+
dirt = (Rudy::Backups.list || []).select { |b| !b.snapshot_exists? }
|
20
|
+
if dirt.empty?
|
21
|
+
puts "Nothing to wash in #{current_machine_group}"
|
22
|
+
return
|
23
|
+
end
|
24
|
+
|
25
|
+
puts "The following backup metadata will be deleted:"
|
26
|
+
puts dirt.collect {|b| b.name }
|
27
|
+
|
28
|
+
execute_check(:medium)
|
29
|
+
|
30
|
+
dirt.each do |b|
|
31
|
+
b.destroy(:force)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Rudy::CLI
|
4
|
+
|
5
|
+
class CommandBase < Drydock::Command
|
6
|
+
include Rudy::Huxtable
|
7
|
+
|
8
|
+
attr_reader :config
|
9
|
+
|
10
|
+
protected
|
11
|
+
def init
|
12
|
+
|
13
|
+
if Drydock.debug?
|
14
|
+
#Caesars.enable_debug
|
15
|
+
Rudy.enable_debug
|
16
|
+
end
|
17
|
+
|
18
|
+
# The CLI wants output!
|
19
|
+
Rudy::Huxtable.update_logger STDOUT
|
20
|
+
|
21
|
+
# Send The Huxtables the global values from the command-line
|
22
|
+
Rudy::Huxtable.update_global @global
|
23
|
+
|
24
|
+
# Reload configuration. This must come after update_global
|
25
|
+
# so it will catch the @@global.config path (if supplied).
|
26
|
+
begin
|
27
|
+
Rudy::Huxtable.update_config
|
28
|
+
rescue Caesars::SyntaxError => ex
|
29
|
+
STDERR.puts ex.message
|
30
|
+
STDERR.puts ex.backtrace if @@global.verbose > 0
|
31
|
+
exit 81
|
32
|
+
end
|
33
|
+
|
34
|
+
@@global.nocolor ? String.disable_color : String.enable_color
|
35
|
+
@@global.yes ? Annoy.enable_skip : Annoy.disable_skip
|
36
|
+
|
37
|
+
unless @@global.accesskey && @@global.secretkey
|
38
|
+
STDERR.puts "No AWS credentials. Check your configs!"
|
39
|
+
STDERR.puts "Try: rudy init"
|
40
|
+
exit 1
|
41
|
+
end
|
42
|
+
|
43
|
+
if @@global.environment =~ /^prod/ && Rudy.debug?
|
44
|
+
puts Rudy::Utils.banner("PRODUCTION ACCESS IS DISABLED IN DEBUG MODE")
|
45
|
+
exit 1
|
46
|
+
end
|
47
|
+
|
48
|
+
if @@global.verbose >= 4 # -vvvv
|
49
|
+
format = @@global.format == :json ? :json : :yaml
|
50
|
+
gcopy = @@global.dup
|
51
|
+
gcopy.secretkey = "[HIDDEN]"
|
52
|
+
puts "# GLOBALS: ", gcopy.dump(format)
|
53
|
+
end
|
54
|
+
|
55
|
+
Rudy::Metadata.connect @@global.accesskey, @@global.secretkey, @@global.region
|
56
|
+
Rudy::AWS::EC2.connect @@global.accesskey, @@global.secretkey, @@global.region
|
57
|
+
end
|
58
|
+
|
59
|
+
def execute_action(emsg="Failed", &action)
|
60
|
+
begin
|
61
|
+
ret = action.call
|
62
|
+
raise emsg unless ret
|
63
|
+
ret
|
64
|
+
rescue Rudy::AWS::EC2::NoAMI => ex
|
65
|
+
raise Drydock::OptError.new('-a', @alias)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def execute_check(level=:medium)
|
70
|
+
ret = Annoy.are_you_sure?(level)
|
71
|
+
exit 0 unless ret
|
72
|
+
ret
|
73
|
+
end
|
74
|
+
|
75
|
+
# Print a default header to the screen for every command.
|
76
|
+
#
|
77
|
+
def print_header
|
78
|
+
|
79
|
+
# Send The Huxtables the global values again because they could be
|
80
|
+
# updated after initialization but before the command was executed
|
81
|
+
Rudy::Huxtable.update_global @global
|
82
|
+
|
83
|
+
puts Rudy::CLI.generate_header(@@global, @@config) if @@global.print_header
|
84
|
+
|
85
|
+
unless @@global.quiet
|
86
|
+
if @@global.environment == "prod"
|
87
|
+
msg = "YOU ARE PLAYING WITH PRODUCTION"
|
88
|
+
puts Rudy::Utils.banner(msg, :normal), $/
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def machine_separator(name, awsid)
|
94
|
+
('%s %-50s awsid: %s ' % [$/, name, awsid]).att(:reverse)
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
data/lib/rudy/cli/candy.rb
CHANGED
data/lib/rudy/cli/config.rb
CHANGED
@@ -24,14 +24,17 @@ module Rudy
|
|
24
24
|
# i.e. if [prod][app][ami] is not available, it will check [prod][ami]
|
25
25
|
# and then [ami].
|
26
26
|
#
|
27
|
-
# # Display the value for a specific machine.
|
28
|
-
# $ rudy -e prod -r db config param-name
|
29
|
-
#
|
30
27
|
# # Display all configuration
|
31
28
|
# $ rudy config --all
|
32
29
|
#
|
30
|
+
# # Display just machines
|
31
|
+
# $ rudy config --defaults
|
32
|
+
#
|
33
33
|
def config
|
34
|
-
|
34
|
+
|
35
|
+
# TODO: Re-enable:
|
36
|
+
# # Display the value for a specific machine.
|
37
|
+
# $ rudy -e prod -r db config param-name
|
35
38
|
|
36
39
|
if @@config.nil? || @@config.empty?
|
37
40
|
return if @@global.quiet
|