rudy 0.8.1 → 0.8.2
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 +21 -8
- data/README.rdoc +43 -1
- data/Rudyfile +28 -27
- data/bin/rudy +8 -15
- data/lib/rudy.rb +2 -2
- data/lib/rudy/cli/routines.rb +4 -20
- data/lib/rudy/config.rb +1 -0
- data/lib/rudy/config/objects.rb +29 -33
- data/lib/rudy/huxtable.rb +9 -1
- data/lib/rudy/routines.rb +113 -96
- data/lib/rudy/routines/helper.rb +3 -3
- data/lib/rudy/routines/helpers/dependshelper.rb +1 -1
- data/lib/rudy/routines/helpers/diskhelper.rb +3 -3
- data/lib/rudy/routines/helpers/scripthelper.rb +41 -39
- data/lib/rudy/routines/helpers/userhelper.rb +5 -5
- data/lib/rudy/routines/passthrough.rb +11 -11
- data/lib/rudy/routines/startup.rb +1 -1
- data/rudy.gemspec +4 -37
- metadata +5 -38
- data/examples/README.md +0 -10
- data/examples/debian-sinatra-passenger/commands.rb +0 -19
- data/examples/debian-sinatra-passenger/machines.rb +0 -32
- data/examples/debian-sinatra-passenger/routines.rb +0 -30
- data/examples/debian-sinatra-thin/commands.rb +0 -17
- data/examples/debian-sinatra-thin/machines.rb +0 -35
- data/examples/debian-sinatra-thin/routines.rb +0 -72
- data/lib/rudy/routines/helpers/scmhelper.rb +0 -39
- data/lib/rudy/routines/release.rb +0 -48
- data/lib/rudy/scm.rb +0 -75
- data/lib/rudy/scm/git.rb +0 -217
- data/lib/rudy/scm/svn.rb +0 -110
- data/test/01_mixins/10_hash_test.rb +0 -25
- data/test/10_config/00_setup_test.rb +0 -20
- data/test/10_config/30_machines_test.rb +0 -69
- data/test/15_scm/00_setup_test.rb +0 -20
- data/test/15_scm/20_git_test.rb +0 -61
- data/test/20_sdb/00_setup_test.rb +0 -16
- data/test/20_sdb/10_domains_test.rb +0 -115
- data/test/25_ec2/00_setup_test.rb +0 -29
- data/test/25_ec2/10_keypairs_test.rb +0 -41
- data/test/25_ec2/20_groups_test.rb +0 -131
- data/test/25_ec2/30_addresses_test.rb +0 -38
- data/test/25_ec2/40_volumes_test.rb +0 -49
- data/test/25_ec2/50_snapshots_test.rb +0 -74
- data/test/26_ec2_instances/00_setup_test.rb +0 -28
- data/test/26_ec2_instances/10_instances_test.rb +0 -83
- data/test/26_ec2_instances/50_images_test.rb +0 -13
- data/test/30_sdb_metadata/00_setup_test.rb +0 -21
- data/test/30_sdb_metadata/10_disks_test.rb +0 -109
- data/test/30_sdb_metadata/20_backups_test.rb +0 -102
- data/test/coverage.txt +0 -51
- data/test/helper.rb +0 -36
@@ -1,38 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rudy::Test
|
3
|
-
|
4
|
-
class Case_25_EC2
|
5
|
-
|
6
|
-
context "#{name}_30 Addresses" do
|
7
|
-
setup do
|
8
|
-
@ec2add = Rudy::AWS::EC2::Addresses.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
9
|
-
end
|
10
|
-
|
11
|
-
should "(00) not be existing addresses" do
|
12
|
-
stop_test @ec2add.any?, "Destroy the existing addresses"
|
13
|
-
end
|
14
|
-
|
15
|
-
should "(01) create address" do
|
16
|
-
address = @ec2add.create
|
17
|
-
assert address.is_a?(Rudy::AWS::EC2::Address), "Did not create"
|
18
|
-
assert address.ipaddress.size > 0, "Address length is 0"
|
19
|
-
end
|
20
|
-
|
21
|
-
should "(10) list available addresses" do
|
22
|
-
assert @ec2add.any?, "No addresses"
|
23
|
-
assert @ec2add.list_as_hash.is_a?(Hash), "Not a Hash"
|
24
|
-
assert @ec2add.list.is_a?(Array), "Not an Array"
|
25
|
-
assert_equal 1, @ec2add.list.size, "More than one address"
|
26
|
-
end
|
27
|
-
|
28
|
-
should "(50) destroy address" do
|
29
|
-
assert @ec2add.any?, "No addresses"
|
30
|
-
@ec2add.list.each do |address|
|
31
|
-
assert @ec2add.destroy(address), "Did not destroy"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rudy::Test
|
3
|
-
class Case_25_EC2
|
4
|
-
|
5
|
-
context "#{name}_40 Volumes" do
|
6
|
-
setup do
|
7
|
-
@ec2vol = Rudy::AWS::EC2::Volumes.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
8
|
-
end
|
9
|
-
|
10
|
-
should "(00) not be existing volumes" do
|
11
|
-
volume_hash = @ec2vol.list_as_hash
|
12
|
-
volume_hash.reject! { |volid, vol| !vol.available? }
|
13
|
-
stop_test !volume_hash.empty?, "Destroy the existing volumes"
|
14
|
-
end
|
15
|
-
|
16
|
-
should "(10) create volume" do
|
17
|
-
volume_size = 2
|
18
|
-
volume = @ec2vol.create(volume_size, @@zone)
|
19
|
-
assert volume.is_a?(Rudy::AWS::EC2::Volume), "Not a Volume"
|
20
|
-
assert_equal @@zone, volume.zone, "Zone incorrect: #{volume.zone}"
|
21
|
-
assert_equal volume_size.to_i, volume.size.to_i, "Size incorrect: #{volume.size}"
|
22
|
-
assert volume.creating? || volume.available?, "Volume not creating or available (#{volume.status})"
|
23
|
-
end
|
24
|
-
|
25
|
-
should "(20) list volumes" do
|
26
|
-
volume_list = @ec2vol.list
|
27
|
-
assert volume_list.is_a?(Array), "Not an Array"
|
28
|
-
assert volume_list.size > 0, "No Volumes in Array"
|
29
|
-
|
30
|
-
volume_hash = @ec2vol.list_as_hash
|
31
|
-
assert volume_hash.is_a?(Hash), "Not a Hash"
|
32
|
-
assert volume_hash.keys.size > 0, "No Volumes in Hash"
|
33
|
-
|
34
|
-
assert_equal volume_list.size.to_i, volume_hash.keys.size.to_i, "Hash and Array not equal size"
|
35
|
-
end
|
36
|
-
|
37
|
-
should "(50) destroy volumes" do
|
38
|
-
assert @ec2vol.any?, "No volumes"
|
39
|
-
volume_list = @ec2vol.list
|
40
|
-
volume_list.each do |vol|
|
41
|
-
next unless vol.available?
|
42
|
-
assert @ec2vol.destroy(vol.awsid), "Not destroyed (#{vol.awsid})"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rudy::Test
|
3
|
-
class Case_25_EC2
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
context "#{name}_50 Snapshots" do
|
8
|
-
setup do
|
9
|
-
@ec2vol = Rudy::AWS::EC2::Volumes.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
10
|
-
@ec2snap = Rudy::AWS::EC2::Snapshots.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
should "(00) be no snapshots" do
|
15
|
-
stop_test @ec2snap.any?, "Destroy existing snapshots"
|
16
|
-
end
|
17
|
-
|
18
|
-
should "(01) create a volume to work off of" do
|
19
|
-
@@volumes ||= []
|
20
|
-
@@volumes << @ec2vol.create(1, @@zone)
|
21
|
-
stop_test !@@volumes.first.is_a?(Rudy::AWS::EC2::Volume), "No volume to work off of."
|
22
|
-
end
|
23
|
-
|
24
|
-
should "(01) create snapshot" do
|
25
|
-
stop_test !@@volumes.first.is_a?(Rudy::AWS::EC2::Volume), "No volume to work off of."
|
26
|
-
assert !@@volumes.first.awsid.empty?, "No volume ID"
|
27
|
-
@ec2snap.create(@@volumes.first.awsid)
|
28
|
-
end
|
29
|
-
|
30
|
-
should "(10) list snapshots" do
|
31
|
-
snap_list = @ec2snap.list
|
32
|
-
assert snap_list.is_a?(Array), "Not an Array"
|
33
|
-
assert snap_list.size > 0, "No Snapshots in Array"
|
34
|
-
|
35
|
-
snap_hash = @ec2snap.list_as_hash
|
36
|
-
assert snap_hash.is_a?(Hash), "Not an Hash"
|
37
|
-
assert snap_hash.keys.size > 0, "No Snapshots in Hash"
|
38
|
-
end
|
39
|
-
|
40
|
-
should "(20) create volume from snapshot" do
|
41
|
-
volume_size = 2
|
42
|
-
snap_list = @ec2snap.list || []
|
43
|
-
assert !snap_list.empty?, "No snapshots"
|
44
|
-
|
45
|
-
volume = @ec2vol.create(volume_size, @@zone, snap_list.first.awsid)
|
46
|
-
#puts "#{volume.awsid} #{snap_list.first.awsid}"
|
47
|
-
|
48
|
-
assert volume.is_a?(Rudy::AWS::EC2::Volume), "Not a Volume"
|
49
|
-
assert_equal @@zone, volume.zone, "Zone incorrect: #{volume.zone}"
|
50
|
-
assert_equal snap_list.first.awsid, volume.snapid, "Snapshot mismatch: #{volume.snapid}"
|
51
|
-
assert_equal volume_size.to_i, volume.size.to_i, "Size incorrect: #{volume.size}"
|
52
|
-
assert volume.creating? || volume.available?, "Volume not creating or available (#{volume.status})"
|
53
|
-
|
54
|
-
@@volumes << volume # We put it here so it will be destoryed in teardown
|
55
|
-
end
|
56
|
-
|
57
|
-
should "(90) destroy snapshots" do
|
58
|
-
assert @ec2snap.any?, "No snapshots"
|
59
|
-
snap_list = @ec2snap.list
|
60
|
-
snap_list.each do |snap|
|
61
|
-
next unless snap.completed?
|
62
|
-
assert @ec2snap.destroy(snap.awsid), "Not destroyed (#{snap.awsid})"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
should "(99) cleanup created volumes" do
|
67
|
-
(@@volumes || []).each do |vol|
|
68
|
-
assert @ec2vol.destroy(vol), "Volume not destoryed (#{vol.awsid})"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
74
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'helper')
|
2
|
-
|
3
|
-
module Rudy::Test
|
4
|
-
# Expects:
|
5
|
-
# * There to be no pre-existing keypairs, addresses, etc... (except
|
6
|
-
# the default group)
|
7
|
-
# * It can destroy instances, images, etc...
|
8
|
-
#
|
9
|
-
# DO NOT RUN THIS TEST ON A PRODUCTION AWS ACCOUNT!!
|
10
|
-
#
|
11
|
-
class Case_26_EC2 < Test::Unit::TestCase
|
12
|
-
include Rudy::Huxtable
|
13
|
-
|
14
|
-
@@logger = STDERR #StringIO.new
|
15
|
-
@@zone = @@global.zone.to_s
|
16
|
-
|
17
|
-
context "#{name}_10 Setup" do
|
18
|
-
should "(10) have class variables setup" do
|
19
|
-
stop_test !@@global.is_a?(Rudy::Global), "We don't have Rudy::Global (#{@@global})"
|
20
|
-
stop_test !@@config.is_a?(Rudy::Config), "We don't have an instance of Rudy::Config (#{@@config})"
|
21
|
-
end
|
22
|
-
should "(11) be zone" do
|
23
|
-
stop_test !@@zone, "No zone"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,83 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rudy::Test
|
3
|
-
class Case_26_EC2
|
4
|
-
|
5
|
-
context "#{name}_10 Instances" do
|
6
|
-
|
7
|
-
setup do
|
8
|
-
@ec2inst = Rudy::AWS::EC2::Instances.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
9
|
-
@ec2add = Rudy::AWS::EC2::Addresses.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
10
|
-
@us_ami = @@config.machines.find(:"us-east-1b", :ami)
|
11
|
-
@eu_ami = @@config.machines.find(:"eu-west-1b", :ami)
|
12
|
-
end
|
13
|
-
|
14
|
-
should "(10) create instance" do
|
15
|
-
stop_test @ec2inst.any?(:running), "Destroy the existing instances"
|
16
|
-
instances = @ec2inst.create(:ami => 'ami-235fba4a', :group => "default") # Amazon Getting Started AMI
|
17
|
-
assert instances.is_a?(Array), "Not an Array of instances"
|
18
|
-
instances.each do |instance|
|
19
|
-
Rudy::Utils.waiter(2, 120, @@logger) { @ec2inst.running?(instance) }
|
20
|
-
assert instance.is_a?(Rudy::AWS::EC2::Instance), "Not an Rudy::AWS::EC2::Instance object"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
testnum = 20
|
25
|
-
Rudy::AWS::EC2::Instances::KNOWN_STATES.each do |state|
|
26
|
-
should "(#{testnum}) know instance is #{state}" do
|
27
|
-
instances = @ec2inst.list(state) || []
|
28
|
-
return skip("No instances are in #{state} state") if instances.empty?
|
29
|
-
instances.each do |inst|
|
30
|
-
assert @ec2inst.send("#{state}?", inst) # running?(inst)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
testnum += 1
|
34
|
-
end
|
35
|
-
|
36
|
-
should "(30) list instance" do
|
37
|
-
assert @ec2inst.list.is_a?(Array), "Not an Array of instances"
|
38
|
-
assert @ec2inst.list_as_hash.is_a?(Hash), "Not a Hash of instances"
|
39
|
-
end
|
40
|
-
|
41
|
-
should "(31) console" do
|
42
|
-
@ec2inst.list.each do |inst|
|
43
|
-
assert @ec2inst.console_output(inst).is_a?(String), "No console output for (#{inst.awsid})"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
should "(40) assign IP address to instance" do
|
48
|
-
assigned = 0
|
49
|
-
@ec2inst.list.each do |instance|
|
50
|
-
next if instance.terminated? || instance.shutting_down?
|
51
|
-
assigned += 1
|
52
|
-
address = @ec2add.create
|
53
|
-
assert @ec2add.associate(address, instance), "Did not assign"
|
54
|
-
end
|
55
|
-
assert assigned > 0, "No machine running"
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
|
-
should "(60) restart instance" do
|
60
|
-
instances = @ec2inst.list(:running)
|
61
|
-
instances.each do |instance|
|
62
|
-
assert @ec2inst.restart(instance), "Did not restart"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
should "(99) destroy instance" do
|
67
|
-
assert @ec2inst.any?(:running), "No instances running"
|
68
|
-
instances = @ec2inst.list(:running)
|
69
|
-
return skip("No running instances") unless instances
|
70
|
-
instances.each do |instance|
|
71
|
-
assert @ec2inst.destroy(instance), "Did not destroy"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
should "(99) clean created addresses" do
|
76
|
-
(@ec2add.list || []).each do |address|
|
77
|
-
assert @ec2add.destroy(address), "Address not destroyed (#{address})"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'helper')
|
2
|
-
|
3
|
-
module Rudy::Test
|
4
|
-
class Case_30_MetaData < Test::Unit::TestCase
|
5
|
-
include Rudy::Huxtable
|
6
|
-
|
7
|
-
@@logger = StringIO.new
|
8
|
-
|
9
|
-
context "#{name}_00 Setup" do
|
10
|
-
should "(00) have class variables setup" do
|
11
|
-
stop_test !@@global.is_a?(Rudy::Global), "We don't have global (#{@@global})"
|
12
|
-
stop_test !@@config.is_a?(Rudy::Config), "We don't have an instance of Rudy::Config (#{@@config})"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
at_exit {
|
17
|
-
@@logger.rewind
|
18
|
-
puts @@logger.read
|
19
|
-
}
|
20
|
-
end
|
21
|
-
end
|
@@ -1,109 +0,0 @@
|
|
1
|
-
module Rudy::Test
|
2
|
-
class Case_30_MetaData
|
3
|
-
|
4
|
-
|
5
|
-
context "#{name}_10 Disks" do
|
6
|
-
|
7
|
-
setup do
|
8
|
-
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
9
|
-
#@ami = @@config.machines.find(@@zone.to_sym, :ami)
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
should "(00) have global setup" do
|
14
|
-
[:region, :zone, :environment, :role, :position].each do |n|
|
15
|
-
assert @@global.respond_to?(n), "No global #{n}"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
should "(01) have domain" do
|
20
|
-
assert @sdb.create_domain(Rudy::DOMAIN), "Domain not created (#{Rudy::DOMAIN})"
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
should "(10) create a disk object" do
|
25
|
-
disk = Rudy::MetaData::Disk.new('/rudy/disk', 1, '/dev/sdh')
|
26
|
-
|
27
|
-
disk_name_elements = []
|
28
|
-
[:zone, :environment, :role, :position].each do |n|
|
29
|
-
disk_name_elements << @@global.send(n)
|
30
|
-
end
|
31
|
-
|
32
|
-
# disk-us-east-1b-stage-app-01-rudy-disk
|
33
|
-
disk_name = ['disk', disk_name_elements, 'rudy', 'disk'].join(Rudy::DELIM)
|
34
|
-
|
35
|
-
assert_equal disk_name, disk.name, "Unexpected disk name #{disk.name}"
|
36
|
-
assert disk.valid?, "Disk not valid"
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
should "(11) save a disk object" do
|
41
|
-
disk = Rudy::MetaData::Disk.new('/rudy/disk', 1, '/dev/sdh')
|
42
|
-
assert disk.is_a?(Rudy::MetaData::Disk), "Not a Rudy::MetaData::Disk (#{disk})"
|
43
|
-
assert disk.save, "Did not save #{disk.name}"
|
44
|
-
end
|
45
|
-
|
46
|
-
should "(20) list metadata with select" do
|
47
|
-
q = "select * from #{Rudy::DOMAIN}"
|
48
|
-
|
49
|
-
items = @sdb.select(q)
|
50
|
-
#p items
|
51
|
-
assert_equal Hash, items.class
|
52
|
-
assert items.size > 0, "No disks"
|
53
|
-
assert_equal @@global.zone.to_s, items.values.first['zone'].first.to_s
|
54
|
-
end
|
55
|
-
|
56
|
-
should "(22) list disk metadata with select" do
|
57
|
-
q = "select * from #{Rudy::DOMAIN} where rtype = 'disk'"
|
58
|
-
items = @sdb.select(q)
|
59
|
-
assert_equal Hash, items.class
|
60
|
-
assert items.size > 0, "No disks"
|
61
|
-
assert_equal @@global.zone.to_s, items.values.first['zone'].first.to_s
|
62
|
-
end
|
63
|
-
|
64
|
-
should "(23) list disk metadata with query" do
|
65
|
-
q = "select * from #{Rudy::DOMAIN} where rtype = 'disk'"
|
66
|
-
|
67
|
-
items = @sdb.query_with_attributes(Rudy::DOMAIN, "['rtype' = 'disk']")
|
68
|
-
assert_equal Hash, items.class
|
69
|
-
assert items.size > 0, "No disks"
|
70
|
-
assert_equal @@global.zone.to_s, items.values.first['zone'].first.to_s
|
71
|
-
end
|
72
|
-
|
73
|
-
should "(30) get disk from Rudy::Disks, modify, and save" do
|
74
|
-
disk_tmp = Rudy::MetaData::Disk.new('/rudy/disk', 1, '/dev/sdh')
|
75
|
-
rdisk = Rudy::Disks.new
|
76
|
-
disk_orig = rdisk.get(disk_tmp.name)
|
77
|
-
assert_equal Rudy::MetaData::Disk, disk_orig.class, "Not a Rudy::MetaData::Disk #{disk_orig}"
|
78
|
-
assert_equal @@global.zone.to_s, disk_orig.zone.to_s, "Unexpected zone #{disk_orig.zone}"
|
79
|
-
sleep 1
|
80
|
-
disk_orig.size = 2
|
81
|
-
assert disk_orig.save, "Did not save #{disk_orig.name}"
|
82
|
-
disk_new = rdisk.get(disk_orig.name)
|
83
|
-
assert_equal disk_orig.size, disk_new.size, "Different size #{disk_new.size}"
|
84
|
-
assert disk_new.destroy, "Did not destroy #{disk_new.name}"
|
85
|
-
end
|
86
|
-
|
87
|
-
|
88
|
-
xshould "(90) destroy all disk metadata" do
|
89
|
-
# disabled b/c there are disks at this point. Previous tests delete them.
|
90
|
-
q = "select * from #{Rudy::DOMAIN} where rtype = 'disk'"
|
91
|
-
items = @sdb.select(q)
|
92
|
-
p items
|
93
|
-
assert_equal Hash, items.class
|
94
|
-
items.keys.each do |item|
|
95
|
-
@sdb.destroy(Rudy::DOMAIN, item)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
should "(99) destroy domain" do
|
100
|
-
assert @sdb.destroy_domain(Rudy::DOMAIN), "Domain not destroyed (#{Rudy::DOMAIN})"
|
101
|
-
end
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
end
|
109
|
-
end
|
@@ -1,102 +0,0 @@
|
|
1
|
-
module Rudy::Test
|
2
|
-
class Case_30_MetaData
|
3
|
-
|
4
|
-
def create_backup
|
5
|
-
back = Rudy::MetaData::Backup.new
|
6
|
-
[:region, :zone, :environment, :role, :position].each do |n|
|
7
|
-
back.send("#{n}=", @@global.send(n))
|
8
|
-
end
|
9
|
-
|
10
|
-
back.path = "/rudy/disk"
|
11
|
-
back.size = 10
|
12
|
-
|
13
|
-
back
|
14
|
-
end
|
15
|
-
|
16
|
-
def format_timestamp(dat)
|
17
|
-
mon, day, hour, min, sec = [dat.mon, dat.day, dat.hour, dat.min, dat.sec].collect { |v| v.to_s.rjust(2, "0") }
|
18
|
-
[dat.year, mon, day, Rudy::DELIM, hour, min, Rudy::DELIM, sec].join
|
19
|
-
end
|
20
|
-
|
21
|
-
context "#{name}_20 Backups" do
|
22
|
-
|
23
|
-
should "(00) have global setup" do
|
24
|
-
[:region, :zone, :environment, :role, :position].each do |n|
|
25
|
-
assert @@global.respond_to?(n), "No global #{n}"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
should "(01) have domain" do
|
30
|
-
#assert @@sdb.domains.create(Rudy::DOMAIN), "Domain not created (#{Rudy::DOMAIN})"
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
should "(10) create a backup object" do
|
35
|
-
back = create_backup
|
36
|
-
|
37
|
-
back_name = []
|
38
|
-
[:region, :zone, :environment, :role, :position].each do |n|
|
39
|
-
back_name << @@global.send(n)
|
40
|
-
end
|
41
|
-
|
42
|
-
back_time = format_timestamp(Time.now.utc)
|
43
|
-
|
44
|
-
back_name.shift # don't use region in backup name, but add the backup identifier and path
|
45
|
-
back_name = ['back', back_name, 'rudy', 'disk', back_time].join(Rudy::DELIM)
|
46
|
-
assert_equal back_name, back.name
|
47
|
-
|
48
|
-
assert back.valid?, "Bcakup not valid"
|
49
|
-
|
50
|
-
back.save
|
51
|
-
end
|
52
|
-
|
53
|
-
should "(20) list metadata" do
|
54
|
-
q = "select * from #{Rudy::DOMAIN}"
|
55
|
-
|
56
|
-
items = @@sdb.select(q)
|
57
|
-
assert_equal Hash, items.class
|
58
|
-
assert items.size > 0, "No backups"
|
59
|
-
assert_equal @@global.zone.to_s, items.values.first['zone'].first.to_s
|
60
|
-
end
|
61
|
-
|
62
|
-
should "(22) list backup metadata with select" do
|
63
|
-
q = "select * from #{Rudy::DOMAIN} where rtype = 'back'"
|
64
|
-
items = @@sdb.select(q)
|
65
|
-
assert_equal Hash, items.class
|
66
|
-
assert items.size > 0, "No backups"
|
67
|
-
assert_equal @@global.zone.to_s, items.values.first['zone'].first.to_s
|
68
|
-
end
|
69
|
-
|
70
|
-
should "(23) list backup metadata with query" do
|
71
|
-
q = "select * from #{Rudy::DOMAIN} where rtype = 'back'"
|
72
|
-
|
73
|
-
items = @@sdb.query_with_attributes(Rudy::DOMAIN, "['rtype' = 'back']")
|
74
|
-
assert_equal Hash, items.class
|
75
|
-
assert items.size > 0, "No backups"
|
76
|
-
assert_equal @@global.zone.to_s, items.values.first['zone'].first.to_s
|
77
|
-
end
|
78
|
-
|
79
|
-
should "(30) get backup metadata" do
|
80
|
-
back_tmp = create_backup
|
81
|
-
back = Rudy::MetaData::Backup.get(back_tmp.name)
|
82
|
-
assert_equal Rudy::MetaData::Backup, back.class
|
83
|
-
assert_equal @@global.zone.to_s, back.zone.to_s
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
should "(40) destroy backup metadata" do
|
88
|
-
q = "select * from #{Rudy::DOMAIN} where rtype = 'back'"
|
89
|
-
items = @@sdb.select(q)
|
90
|
-
assert_equal Hash, items.class
|
91
|
-
items.keys.each do |item|
|
92
|
-
@@sdb.destroy(Rudy::DOMAIN, item)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
end
|
102
|
-
end
|