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 +110 -18
- data/README.rdoc +40 -44
- data/Rudyfile +35 -50
- data/bin/rudy +88 -57
- data/bin/rudy-ec2 +2 -16
- data/bin/rudy-s3 +0 -10
- data/bin/rudy-sdb +11 -12
- data/lib/rudy.rb +59 -91
- data/lib/rudy/aws.rb +4 -45
- 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 +18 -19
- 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 +39 -26
- 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 +45 -20
- 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 +104 -0
- data/lib/rudy/cli/candy.rb +1 -2
- data/lib/rudy/cli/config.rb +20 -7
- data/lib/rudy/cli/disks.rb +7 -9
- data/lib/rudy/cli/execbase.rb +56 -0
- data/lib/rudy/cli/machines.rb +242 -45
- data/lib/rudy/cli/metadata.rb +24 -10
- data/lib/rudy/cli/networks.rb +34 -0
- data/lib/rudy/cli/routines.rb +32 -6
- data/lib/rudy/cli/status.rb +60 -0
- data/lib/rudy/config.rb +55 -32
- data/lib/rudy/config/objects.rb +44 -30
- data/lib/rudy/disks.rb +25 -0
- data/lib/rudy/exceptions.rb +99 -0
- data/lib/rudy/global.rb +67 -28
- data/lib/rudy/guidelines.rb +3 -2
- data/lib/rudy/huxtable.rb +67 -58
- 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 +153 -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 +229 -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 +249 -0
- data/lib/rudy/routines/handlers/group.rb +44 -0
- data/lib/rudy/routines/handlers/host.rb +70 -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 +45 -0
- data/lib/rudy/routines/passthrough.rb +19 -23
- data/lib/rudy/routines/reboot.rb +98 -50
- data/lib/rudy/routines/shutdown.rb +65 -14
- data/lib/rudy/routines/startup.rb +112 -17
- data/lib/rudy/utils.rb +35 -68
- data/rudy.gemspec +82 -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/exploration/console.rb +91 -0
- data/tryouts/exploration/machine.rb +23 -0
- data/tryouts/failer +6 -0
- metadata +116 -32
- 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
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
group "Metadata"
|
3
|
+
library :rudy, 'lib'
|
4
|
+
tryouts "include Rudy::Metadata" do
|
5
|
+
set :test_domain, 'test_' #<< Rudy::Utils.strand
|
6
|
+
|
7
|
+
setup do
|
8
|
+
Rudy::Huxtable.global.offline = true
|
9
|
+
Rudy::Huxtable.update_config # Read config files
|
10
|
+
end
|
11
|
+
clean do
|
12
|
+
Rudy::Huxtable.global.offline = false
|
13
|
+
end
|
14
|
+
|
15
|
+
drill "has default domain", Rudy::DOMAIN do
|
16
|
+
Rudy::Metadata.domain
|
17
|
+
end
|
18
|
+
|
19
|
+
drill "can set domain", test_domain do
|
20
|
+
Rudy::Metadata.domain = test_domain
|
21
|
+
end
|
22
|
+
|
23
|
+
drill "can open simpledb connection", true do
|
24
|
+
global = Rudy::Huxtable.global
|
25
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
26
|
+
Rudy::Metadata.connect akey, skey, region
|
27
|
+
end
|
28
|
+
|
29
|
+
dream test_domain
|
30
|
+
drill "can create test domain (automatically sets new internal domain)" do
|
31
|
+
Rudy::Metadata.domain = Rudy::DOMAIN
|
32
|
+
Rudy::Metadata.create_domain test_domain
|
33
|
+
end
|
34
|
+
|
35
|
+
dream [:environment, :region, :role, :zone]
|
36
|
+
drill "can build a default criteria" do
|
37
|
+
Rudy::Metadata.build_criteria(Rudy::Machines::RTYPE).keys.sort
|
38
|
+
end
|
39
|
+
|
40
|
+
dream true
|
41
|
+
drill "can destroy domain (automatically returns to default)" do
|
42
|
+
Rudy::Metadata.destroy_domain test_domain
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
group "Metadata"
|
4
|
+
library :rudy, 'lib'
|
5
|
+
tryouts "Rudy::Metadata objects" do
|
6
|
+
set :test_domain, 'test_' #<< Rudy::Utils.strand
|
7
|
+
|
8
|
+
setup do
|
9
|
+
Rudy::Huxtable.update_config
|
10
|
+
global = Rudy::Huxtable.global
|
11
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
12
|
+
end
|
13
|
+
|
14
|
+
dream [:region, :zone, :environment, :role, :position]
|
15
|
+
drill "sets up common fields on include" do
|
16
|
+
Anything.field_names
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
|
2
|
+
group "Metadata"
|
3
|
+
library :rudy, 'lib'
|
4
|
+
|
5
|
+
tryout "Disk API" do
|
6
|
+
|
7
|
+
set :test_domain, Rudy::DOMAIN #'test_' << Rudy::Utils.strand(4)
|
8
|
+
set :test_env, 'stage' #'env_' << Rudy::Utils.strand(4)
|
9
|
+
|
10
|
+
setup do
|
11
|
+
Rudy.enable_debug
|
12
|
+
Rudy::Huxtable.global.offline = true
|
13
|
+
Rudy::Huxtable.update_config # Read config files
|
14
|
+
global = Rudy::Huxtable.global
|
15
|
+
global.environment = test_env
|
16
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
17
|
+
Rudy::Metadata.connect akey, skey, region
|
18
|
+
Rudy::AWS::EC2.connect akey, skey, region
|
19
|
+
end
|
20
|
+
|
21
|
+
clean do
|
22
|
+
if Rudy.debug?
|
23
|
+
puts $/, "Rudy Debugging:"
|
24
|
+
Rudy::Huxtable.logger.rewind
|
25
|
+
puts Rudy::Huxtable.logger.read unless Rudy::Huxtable.logger.closed_read?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
xdrill "can create test domain", test_domain do
|
30
|
+
Rudy::Metadata.create_domain test_domain
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
dream :class, Rudy::Disk
|
35
|
+
dream :name do
|
36
|
+
tmp = [Rudy::Huxtable.global.zone, Rudy::Huxtable.global.environment]
|
37
|
+
tmp += [Rudy::Huxtable.global.role, '01']
|
38
|
+
# disk-us-east-1b-env_xxxxxx-app-01-rudy-disk
|
39
|
+
['disk', tmp].join(Rudy::DELIM)
|
40
|
+
end
|
41
|
+
drill "can create disk object for root path" do
|
42
|
+
Rudy::Disk.new('/')
|
43
|
+
end
|
44
|
+
|
45
|
+
dream :name do
|
46
|
+
tmp = [Rudy::Huxtable.global.zone, Rudy::Huxtable.global.environment]
|
47
|
+
tmp += [Rudy::Huxtable.global.role, '01']
|
48
|
+
# disk-us-east-1b-env_xxxxxx-app-01-any-path
|
49
|
+
['disk', tmp, 'any', 'path'].join(Rudy::DELIM)
|
50
|
+
end
|
51
|
+
drill "can create disk object for an arbitrary path" do
|
52
|
+
Rudy::Disk.new('/any/path')
|
53
|
+
end
|
54
|
+
|
55
|
+
dream :size, 1
|
56
|
+
dream :device, '/dev/sdh'
|
57
|
+
dream :path, '/'
|
58
|
+
drill "has a default size and device" do
|
59
|
+
Rudy::Disk.new('/')
|
60
|
+
end
|
61
|
+
|
62
|
+
dream :path, '/anything'
|
63
|
+
dream :position, '09'
|
64
|
+
drill "can specify a position" do
|
65
|
+
Rudy::Disk.new '09', '/anything'
|
66
|
+
end
|
67
|
+
|
68
|
+
drill "save disk metadata", true do
|
69
|
+
Rudy::Disk.new('/any/path').save
|
70
|
+
end
|
71
|
+
|
72
|
+
drill "knows when an object exists", true do
|
73
|
+
Rudy::Disk.new('/any/path').exists?
|
74
|
+
end
|
75
|
+
|
76
|
+
drill "knows when an object doesn't exist", false do
|
77
|
+
Rudy::Disk.new('/no/such/disk').exists?
|
78
|
+
end
|
79
|
+
|
80
|
+
dream :exception, Rudy::Metadata::DuplicateRecord
|
81
|
+
drill "won't save over a disk with the same name" do
|
82
|
+
Rudy::Disk.new('/any/path').save
|
83
|
+
end
|
84
|
+
|
85
|
+
drill "will save over a disk with the same name if forced", true do
|
86
|
+
Rudy::Disk.new('/any/path').save(:replace)
|
87
|
+
end
|
88
|
+
|
89
|
+
dream :class, Rudy::Disk
|
90
|
+
drill "get disk metadata" do
|
91
|
+
Rudy::Disks.get '/any/path'
|
92
|
+
end
|
93
|
+
|
94
|
+
dream :class, Rudy::Disk
|
95
|
+
dream :mounted, false
|
96
|
+
drill "refresh disk metadata" do
|
97
|
+
d = Rudy::Disk.new('/any/path')
|
98
|
+
d.mounted = true
|
99
|
+
d.refresh!
|
100
|
+
d
|
101
|
+
end
|
102
|
+
|
103
|
+
dream true
|
104
|
+
drill "destroy disk metadata" do
|
105
|
+
d = Rudy::Disk.new('/any/path')
|
106
|
+
d.destroy
|
107
|
+
end
|
108
|
+
|
109
|
+
xdrill "destroy a domain (#{test_domain})" do
|
110
|
+
Rudy::Metadata.destroy_domain test_domain
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
group "Metadata"
|
3
|
+
library :rudy, 'lib'
|
4
|
+
|
5
|
+
Gibbler.enable_debug if Tryouts.verbose > 3
|
6
|
+
|
7
|
+
tryout "Disk API" do
|
8
|
+
|
9
|
+
setup do
|
10
|
+
Rudy.enable_debug
|
11
|
+
Rudy::Huxtable.update_config # Read config files
|
12
|
+
global = Rudy::Huxtable.global
|
13
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
14
|
+
Rudy::Metadata.connect akey, skey, region
|
15
|
+
Rudy::AWS::EC2.connect akey, skey, region
|
16
|
+
end
|
17
|
+
|
18
|
+
dream :class, Gibbler::Digest
|
19
|
+
drill "has gibbler digest" do
|
20
|
+
Rudy::Disk.new('/any/path').gibbler
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
group "Metadata"
|
3
|
+
library :rudy, 'lib'
|
4
|
+
|
5
|
+
Gibbler.enable_debug if Tryouts.verbose > 3
|
6
|
+
|
7
|
+
tryout "List Disks" do
|
8
|
+
|
9
|
+
setup do
|
10
|
+
Rudy.enable_debug
|
11
|
+
Rudy::Huxtable.update_config # Read config files
|
12
|
+
global = Rudy::Huxtable.global
|
13
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
14
|
+
Rudy::Metadata.connect akey, skey, region
|
15
|
+
Rudy::AWS::EC2.connect akey, skey, region
|
16
|
+
Rudy::Disk.new('/any/path1').save :replace
|
17
|
+
Rudy::Disk.new('/any/path2').save :replace
|
18
|
+
end
|
19
|
+
|
20
|
+
clean do
|
21
|
+
Rudy::Disk.new('/any/path1').destroy
|
22
|
+
Rudy::Disk.new('/any/path2').destroy
|
23
|
+
end
|
24
|
+
|
25
|
+
dream :class, Array
|
26
|
+
dream :empty?, false
|
27
|
+
drill "can list available disks" do
|
28
|
+
Rudy::Disks.list
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
group "Metadata"
|
2
|
+
library :rudy, 'lib'
|
3
|
+
|
4
|
+
tryout "Disk Volume API" do
|
5
|
+
|
6
|
+
set :test_domain, 'test_' #<< Rudy::Utils.strand(4)
|
7
|
+
set :test_env, 'stage' << Rudy::Utils.strand(4)
|
8
|
+
|
9
|
+
setup do
|
10
|
+
Rudy.enable_debug
|
11
|
+
Rudy::Huxtable.global.offline = true
|
12
|
+
Rudy::Huxtable.update_config # Read config files
|
13
|
+
global = Rudy::Huxtable.global
|
14
|
+
global.environment = test_env
|
15
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
16
|
+
Rudy::Metadata.connect akey, skey, region
|
17
|
+
Rudy::AWS::EC2.connect akey, skey, region
|
18
|
+
end
|
19
|
+
|
20
|
+
clean do
|
21
|
+
if Rudy.debug?
|
22
|
+
puts $/, "Rudy Debugging:"
|
23
|
+
Rudy::Huxtable.logger.rewind
|
24
|
+
puts Rudy::Huxtable.logger.read unless Rudy::Huxtable.logger.closed_read?
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
dream :volid, nil
|
29
|
+
drill "disk volid is nil by default" do
|
30
|
+
Rudy::Disk.new '/any/path'
|
31
|
+
end
|
32
|
+
|
33
|
+
dream :nil?, false
|
34
|
+
dream :class, String
|
35
|
+
drill "create disk instance with volume" do
|
36
|
+
disk = Rudy::Disk.new '/sergeant/disk'
|
37
|
+
disk.create
|
38
|
+
disk.volid
|
39
|
+
end
|
40
|
+
|
41
|
+
dream :nil?, false
|
42
|
+
drill "refresh disk" do
|
43
|
+
disk = Rudy::Disk.new '/sergeant/disk'
|
44
|
+
disk.refresh!
|
45
|
+
disk.volid
|
46
|
+
end
|
47
|
+
|
48
|
+
xdrill "can attach volume to instance"
|
49
|
+
xdrill "can mount volume"
|
50
|
+
xdrill "can detach volume from instance"
|
51
|
+
|
52
|
+
dream [true, false, false]
|
53
|
+
drill "knows about the state of the volume" do
|
54
|
+
disk = Rudy::Disk.new '/sergeant/disk'
|
55
|
+
disk.refresh!
|
56
|
+
[disk.volume_exists?, disk.volume_attached?, disk.volume_in_use?]
|
57
|
+
end
|
58
|
+
|
59
|
+
dream true
|
60
|
+
drill "destroy disk with volume" do
|
61
|
+
disk = Rudy::Disk.new '/sergeant/disk'
|
62
|
+
disk.refresh!
|
63
|
+
disk.destroy
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
|
2
|
+
group "Metadata"
|
3
|
+
library :rudy, 'lib'
|
4
|
+
|
5
|
+
tryout "Backup API" do
|
6
|
+
|
7
|
+
set :sample_time, Time.now.utc
|
8
|
+
set :test_domain, Rudy::DOMAIN #'test_' << Rudy::Utils.strand(4)
|
9
|
+
set :test_env, :stage #'env_' << Rudy::Utils.strand(4)
|
10
|
+
|
11
|
+
setup do
|
12
|
+
Rudy.enable_debug
|
13
|
+
Rudy::Huxtable.global.offline = true
|
14
|
+
Rudy::Huxtable.update_config # Read config files
|
15
|
+
global = Rudy::Huxtable.global
|
16
|
+
global.environment = test_env
|
17
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
18
|
+
Rudy::Metadata.connect akey, skey, region
|
19
|
+
Rudy::AWS::EC2.connect akey, skey, region
|
20
|
+
end
|
21
|
+
|
22
|
+
clean do
|
23
|
+
if Rudy.debug?
|
24
|
+
puts $/, "Rudy Debugging:"
|
25
|
+
Rudy::Huxtable.logger.rewind
|
26
|
+
puts Rudy::Huxtable.logger.read unless Rudy::Huxtable.logger.closed_read?
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
xdrill "can create test domain", test_domain do
|
31
|
+
Rudy::Metadata.create_domain test_domain
|
32
|
+
end
|
33
|
+
|
34
|
+
dream :class, Rudy::Backup
|
35
|
+
drill "can create an instance" do
|
36
|
+
Rudy::Backup.new
|
37
|
+
end
|
38
|
+
|
39
|
+
dream :class, Rudy::Backup
|
40
|
+
dream :name do
|
41
|
+
global = Rudy::Huxtable.global
|
42
|
+
tmp = [global.zone, global.environment, global.role, '01']
|
43
|
+
tmp += ['20090201', '0000', '00']
|
44
|
+
['back', tmp].join(Rudy::DELIM)
|
45
|
+
end
|
46
|
+
drill "can create backup object for root path" do
|
47
|
+
Rudy::Backup.new(1, '/', :created => Time.parse('2009-02-01'))
|
48
|
+
end
|
49
|
+
|
50
|
+
dream :class, Rudy::Backup
|
51
|
+
dream :name do
|
52
|
+
global = Rudy::Huxtable.global
|
53
|
+
tmp = [global.zone, global.environment, global.role, '01']
|
54
|
+
tmp += ['any', 'path', '20090201', '0000', '00']
|
55
|
+
['back', tmp].join(Rudy::DELIM)
|
56
|
+
end
|
57
|
+
drill "can create backup object for an arbitrary path" do
|
58
|
+
Rudy::Backup.new(1, '/any/path', :created => Time.parse('2009-02-01'))
|
59
|
+
end
|
60
|
+
|
61
|
+
dream :user, Rudy.sysinfo.user
|
62
|
+
drill "has a default user" do
|
63
|
+
Rudy::Backup.new(1, '/')
|
64
|
+
end
|
65
|
+
|
66
|
+
dream :class, Time
|
67
|
+
drill "has a default created time" do
|
68
|
+
Rudy::Backup.new(1, '/').created
|
69
|
+
end
|
70
|
+
|
71
|
+
drill "save metadata", true do
|
72
|
+
Rudy::Backup.new(1, '/any/path', :created => sample_time).save
|
73
|
+
end
|
74
|
+
|
75
|
+
drill "knows when an object exists", true do
|
76
|
+
Rudy::Backup.new(1, '/any/path', :created => sample_time).exists?
|
77
|
+
end
|
78
|
+
|
79
|
+
drill "knows when an object doesn't exist", false do
|
80
|
+
Rudy::Backup.new(1, '/no/such/disk', :created => sample_time).exists?
|
81
|
+
end
|
82
|
+
|
83
|
+
dream :class, Rudy::Disk
|
84
|
+
drill "creates associated disk object" do
|
85
|
+
Rudy::Backup.new(1, '/any/path', :created => sample_time).disk
|
86
|
+
end
|
87
|
+
|
88
|
+
dream :exception, Rudy::Backups::NoDisk
|
89
|
+
drill "raises exception when disk doesn't exist" do
|
90
|
+
Rudy::Backup.new(1, '/no/such/disk').create
|
91
|
+
end
|
92
|
+
|
93
|
+
drill "destroy all backups", false do
|
94
|
+
Rudy::Backups.list.each { |b| b.destroy }
|
95
|
+
Rudy::Backups.any?
|
96
|
+
end
|
97
|
+
|
98
|
+
xdrill "destroy a domain (#{test_domain})", true do
|
99
|
+
Rudy::Metadata.destroy_domain test_domain
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
group "Metadata"
|
3
|
+
library :rudy, 'lib'
|
4
|
+
|
5
|
+
Gibbler.enable_debug if Tryouts.verbose > 3
|
6
|
+
|
7
|
+
tryout "List Backups" do
|
8
|
+
|
9
|
+
set :sample_time, Time.now.utc
|
10
|
+
|
11
|
+
setup do
|
12
|
+
Rudy.enable_debug
|
13
|
+
Rudy::Huxtable.update_config # Read config files
|
14
|
+
global = Rudy::Huxtable.global
|
15
|
+
akey, skey, region = global.accesskey, global.secretkey, global.region
|
16
|
+
Rudy::Metadata.connect akey, skey, region
|
17
|
+
Rudy::AWS::EC2.connect akey, skey, region
|
18
|
+
Rudy::Backup.new(1, '/any/path1', :created => sample_time).save :replace
|
19
|
+
Rudy::Backup.new(2, '/any/path2', :created => sample_time).save :replace
|
20
|
+
end
|
21
|
+
|
22
|
+
clean do
|
23
|
+
Rudy::Backup.new(1, '/any/path1', :created => sample_time).destroy
|
24
|
+
Rudy::Backup.new(2, '/any/path2', :created => sample_time).destroy
|
25
|
+
end
|
26
|
+
|
27
|
+
dream :class, Array
|
28
|
+
dream :empty?, false
|
29
|
+
dream :size, 2
|
30
|
+
drill "can list available backups" do
|
31
|
+
Rudy::Backups.list
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
|