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