solutious-rudy 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +19 -1
- data/README.rdoc +66 -35
- data/Rakefile +1 -0
- data/Rudyfile +97 -6
- data/bin/ird +7 -4
- data/bin/rudy +120 -212
- data/bin/rudy-ec2 +240 -0
- data/bin/rudy-s3 +76 -0
- data/bin/rudy-sdb +67 -0
- data/lib/annoy.rb +61 -18
- data/lib/console.rb +10 -5
- data/lib/rudy/aws/ec2/address.rb +76 -40
- data/lib/rudy/aws/ec2/group.rb +138 -78
- data/lib/rudy/aws/ec2/image.rb +134 -12
- data/lib/rudy/aws/ec2/instance.rb +116 -89
- data/lib/rudy/aws/ec2/keypair.rb +26 -14
- data/lib/rudy/aws/ec2/snapshot.rb +23 -12
- data/lib/rudy/aws/ec2/volume.rb +198 -202
- data/lib/rudy/aws/ec2/zone.rb +77 -0
- data/lib/rudy/aws/ec2.rb +56 -25
- data/lib/rudy/aws/s3.rb +54 -0
- data/lib/rudy/aws/sdb/error.rb +46 -0
- data/lib/rudy/aws/sdb.rb +298 -0
- data/lib/rudy/aws.rb +29 -57
- data/lib/rudy/{metadata/backup.rb → backup.rb} +8 -8
- data/lib/rudy/cli/aws/ec2/addresses.rb +105 -0
- data/lib/rudy/cli/aws/ec2/candy.rb +208 -0
- data/lib/rudy/cli/aws/ec2/groups.rb +121 -0
- data/lib/rudy/cli/aws/ec2/images.rb +196 -0
- data/lib/rudy/cli/aws/ec2/instances.rb +194 -0
- data/lib/rudy/cli/aws/ec2/keypairs.rb +53 -0
- data/lib/rudy/cli/aws/ec2/snapshots.rb +49 -0
- data/lib/rudy/cli/aws/ec2/volumes.rb +104 -0
- data/lib/rudy/cli/aws/ec2/zones.rb +22 -0
- data/lib/rudy/cli/aws/s3/buckets.rb +50 -0
- data/lib/rudy/cli/aws/s3/store.rb +22 -0
- data/lib/rudy/cli/aws/sdb/domains.rb +41 -0
- data/lib/rudy/cli/{deploy.rb → candy.rb} +2 -6
- data/lib/rudy/cli/config.rb +25 -20
- data/lib/rudy/cli/disks.rb +18 -108
- data/lib/rudy/cli/machines.rb +94 -0
- data/lib/rudy/cli/routines.rb +47 -70
- data/lib/rudy/cli.rb +104 -89
- data/lib/rudy/config/objects.rb +5 -43
- data/lib/rudy/config.rb +8 -24
- data/lib/rudy/disks.rb +248 -0
- data/lib/rudy/global.rb +121 -0
- data/lib/rudy/huxtable.rb +232 -147
- data/lib/rudy/machines.rb +245 -0
- data/lib/rudy/metadata.rb +136 -0
- data/lib/rudy/routines/helpers/diskhelper.rb +101 -0
- data/lib/rudy/routines/helpers/scripthelper.rb +91 -0
- data/lib/rudy/routines/release.rb +27 -8
- data/lib/rudy/routines/shutdown.rb +47 -32
- data/lib/rudy/routines/startup.rb +47 -37
- data/lib/rudy/routines.rb +30 -37
- data/lib/rudy/scm/svn.rb +1 -1
- data/lib/rudy/utils.rb +262 -4
- data/lib/rudy.rb +76 -248
- data/lib/storable.rb +19 -16
- data/lib/sysinfo.rb +1 -1
- data/rudy.gemspec +88 -68
- data/support/rudy-ec2-startup +5 -5
- data/test/05_config/00_setup_test.rb +3 -7
- data/test/20_sdb/00_setup_test.rb +2 -17
- data/test/20_sdb/10_domains_test.rb +18 -16
- data/test/25_ec2/00_setup_test.rb +5 -10
- data/test/25_ec2/10_keypairs_test.rb +13 -5
- data/test/25_ec2/20_groups_test.rb +48 -56
- data/test/25_ec2/30_addresses_test.rb +13 -10
- data/test/25_ec2/40_volumes_test.rb +11 -8
- data/test/25_ec2/50_snapshots_test.rb +17 -12
- data/test/26_ec2_instances/00_setup_test.rb +3 -8
- data/test/26_ec2_instances/10_instances_test.rb +21 -19
- data/test/30_sdb_metadata/00_setup_test.rb +2 -9
- data/test/30_sdb_metadata/10_disks_test.rb +47 -37
- data/test/30_sdb_metadata/20_backups_test.rb +9 -9
- data/test/helper.rb +5 -3
- data/vendor/highline-1.5.1/CHANGELOG +222 -0
- data/vendor/highline-1.5.1/INSTALL +35 -0
- data/vendor/highline-1.5.1/LICENSE +7 -0
- data/vendor/highline-1.5.1/README +63 -0
- data/vendor/highline-1.5.1/Rakefile +82 -0
- data/vendor/highline-1.5.1/TODO +6 -0
- data/vendor/highline-1.5.1/examples/ansi_colors.rb +38 -0
- data/vendor/highline-1.5.1/examples/asking_for_arrays.rb +18 -0
- data/vendor/highline-1.5.1/examples/basic_usage.rb +75 -0
- data/vendor/highline-1.5.1/examples/color_scheme.rb +32 -0
- data/vendor/highline-1.5.1/examples/limit.rb +12 -0
- data/vendor/highline-1.5.1/examples/menus.rb +65 -0
- data/vendor/highline-1.5.1/examples/overwrite.rb +19 -0
- data/vendor/highline-1.5.1/examples/page_and_wrap.rb +322 -0
- data/vendor/highline-1.5.1/examples/password.rb +7 -0
- data/vendor/highline-1.5.1/examples/trapping_eof.rb +22 -0
- data/vendor/highline-1.5.1/examples/using_readline.rb +17 -0
- data/vendor/highline-1.5.1/lib/highline/color_scheme.rb +120 -0
- data/vendor/highline-1.5.1/lib/highline/compatibility.rb +17 -0
- data/vendor/highline-1.5.1/lib/highline/import.rb +43 -0
- data/vendor/highline-1.5.1/lib/highline/menu.rb +395 -0
- data/vendor/highline-1.5.1/lib/highline/question.rb +463 -0
- data/vendor/highline-1.5.1/lib/highline/system_extensions.rb +193 -0
- data/vendor/highline-1.5.1/lib/highline.rb +758 -0
- data/vendor/highline-1.5.1/setup.rb +1360 -0
- data/vendor/highline-1.5.1/test/tc_color_scheme.rb +56 -0
- data/vendor/highline-1.5.1/test/tc_highline.rb +823 -0
- data/vendor/highline-1.5.1/test/tc_import.rb +54 -0
- data/vendor/highline-1.5.1/test/tc_menu.rb +429 -0
- data/vendor/highline-1.5.1/test/ts_all.rb +15 -0
- metadata +81 -69
- data/lib/aws_sdb/error.rb +0 -42
- data/lib/aws_sdb/service.rb +0 -215
- data/lib/aws_sdb.rb +0 -3
- data/lib/rudy/aws/simpledb.rb +0 -71
- data/lib/rudy/cli/addresses.rb +0 -85
- data/lib/rudy/cli/backups.rb +0 -175
- data/lib/rudy/cli/domains.rb +0 -17
- data/lib/rudy/cli/groups.rb +0 -77
- data/lib/rudy/cli/images.rb +0 -111
- data/lib/rudy/cli/instances.rb +0 -142
- data/lib/rudy/cli/keypairs.rb +0 -47
- data/lib/rudy/cli/manager.rb +0 -51
- data/lib/rudy/cli/release.rb +0 -174
- data/lib/rudy/cli/volumes.rb +0 -121
- data/lib/rudy/command/addresses.rb +0 -69
- data/lib/rudy/command/backups.rb +0 -65
- data/lib/rudy/command/disks-old.rb +0 -322
- data/lib/rudy/command/disks.rb +0 -9
- data/lib/rudy/command/domains.rb +0 -34
- data/lib/rudy/command/groups.rb +0 -118
- data/lib/rudy/command/instances.rb +0 -278
- data/lib/rudy/command/keypairs.rb +0 -149
- data/lib/rudy/command/manager.rb +0 -65
- data/lib/rudy/command/volumes.rb +0 -127
- data/lib/rudy/metadata/disk.rb +0 -149
- data/lib/rudy/metadata/machine.rb +0 -34
- data/lib/rudy/routines/disk_handler.rb +0 -190
- data/lib/rudy/routines/script_runner.rb +0 -65
- data/test/50_commands/00_setup_test.rb +0 -11
- data/test/50_commands/10_keypairs_test.rb +0 -79
- data/test/50_commands/20_groups_test.rb +0 -77
- data/test/50_commands/40_volumes_test.rb +0 -55
- data/test/50_commands/50_instances_test.rb +0 -110
- data/tryouts/console_tryout.rb +0 -91
- data/tryouts/disks.rb +0 -55
- data/tryouts/nested_methods.rb +0 -36
- data/tryouts/session_tryout.rb +0 -46
data/rudy.gemspec
CHANGED
@@ -1,13 +1,38 @@
|
|
1
1
|
@spec = Gem::Specification.new do |s|
|
2
2
|
s.name = "rudy"
|
3
3
|
s.rubyforge_project = 'rudy'
|
4
|
-
s.version = "0.
|
5
|
-
s.summary = "Not your grandparent's deployment tool."
|
4
|
+
s.version = "0.6.0"
|
5
|
+
s.summary = "Rudy: Not your grandparent's deployment tool."
|
6
6
|
s.description = s.summary
|
7
7
|
s.author = "Delano Mandelbaum"
|
8
8
|
s.email = "delano@solutious.com"
|
9
9
|
s.homepage = "http://github.com/solutious/rudy"
|
10
|
-
|
10
|
+
|
11
|
+
s.extra_rdoc_files = %w[README.rdoc Rudyfile LICENSE.txt CHANGES.txt ]
|
12
|
+
s.has_rdoc = true
|
13
|
+
s.rdoc_options = ["--line-numbers", "--title", s.summary, "--main", "README.rdoc"]
|
14
|
+
s.require_paths = %w[lib]
|
15
|
+
s.rubygems_version = '1.1.1'
|
16
|
+
|
17
|
+
s.add_dependency 'drydock', '>= 0.5.5'
|
18
|
+
s.add_dependency 'caesars', '>= 0.5.4'
|
19
|
+
s.add_dependency 'rye', '>= 0.5.1'
|
20
|
+
|
21
|
+
s.add_dependency 'echoe'
|
22
|
+
s.add_dependency 'amazon-ec2', '>= 0.3.8' # region fix
|
23
|
+
s.add_dependency 'net-ssh', '>=2.0.9'
|
24
|
+
s.add_dependency 'net-scp', '>1.0.2'
|
25
|
+
s.add_dependency 'net-ssh-gateway'
|
26
|
+
s.add_dependency 'net-ssh-multi'
|
27
|
+
|
28
|
+
# http://bit.ly/2WaAgV
|
29
|
+
#s.add_runtime_dependency('xml-simple', '>= 1.0.11')
|
30
|
+
#s.add_dependency('xml-simple', '>= 1.0.11')
|
31
|
+
#s.add_development_dependency('jgre-monkeyspecdoc', '>= 0.1.0')
|
32
|
+
#s.add_development_dependency('thoughtbot-shoulda', '>= 0.1.0')
|
33
|
+
|
34
|
+
s.executables = %w[ird rudy rudy-ec2 rudy-sdb rudy-s3]
|
35
|
+
|
11
36
|
# = MANIFEST =
|
12
37
|
# git ls-files
|
13
38
|
s.files = %w(
|
@@ -18,10 +43,10 @@
|
|
18
43
|
Rudyfile
|
19
44
|
bin/ird
|
20
45
|
bin/rudy
|
46
|
+
bin/rudy-ec2
|
47
|
+
bin/rudy-s3
|
48
|
+
bin/rudy-sdb
|
21
49
|
lib/annoy.rb
|
22
|
-
lib/aws_sdb.rb
|
23
|
-
lib/aws_sdb/error.rb
|
24
|
-
lib/aws_sdb/service.rb
|
25
50
|
lib/console.rb
|
26
51
|
lib/escape.rb
|
27
52
|
lib/rudy.rb
|
@@ -34,43 +59,40 @@
|
|
34
59
|
lib/rudy/aws/ec2/keypair.rb
|
35
60
|
lib/rudy/aws/ec2/snapshot.rb
|
36
61
|
lib/rudy/aws/ec2/volume.rb
|
62
|
+
lib/rudy/aws/ec2/zone.rb
|
37
63
|
lib/rudy/aws/s3.rb
|
38
|
-
lib/rudy/aws/
|
64
|
+
lib/rudy/aws/sdb.rb
|
65
|
+
lib/rudy/aws/sdb/error.rb
|
66
|
+
lib/rudy/backup.rb
|
39
67
|
lib/rudy/cli.rb
|
40
|
-
lib/rudy/cli/addresses.rb
|
41
|
-
lib/rudy/cli/
|
68
|
+
lib/rudy/cli/aws/ec2/addresses.rb
|
69
|
+
lib/rudy/cli/aws/ec2/candy.rb
|
70
|
+
lib/rudy/cli/aws/ec2/groups.rb
|
71
|
+
lib/rudy/cli/aws/ec2/images.rb
|
72
|
+
lib/rudy/cli/aws/ec2/instances.rb
|
73
|
+
lib/rudy/cli/aws/ec2/keypairs.rb
|
74
|
+
lib/rudy/cli/aws/ec2/snapshots.rb
|
75
|
+
lib/rudy/cli/aws/ec2/volumes.rb
|
76
|
+
lib/rudy/cli/aws/ec2/zones.rb
|
77
|
+
lib/rudy/cli/aws/s3/buckets.rb
|
78
|
+
lib/rudy/cli/aws/s3/store.rb
|
79
|
+
lib/rudy/cli/aws/sdb/domains.rb
|
80
|
+
lib/rudy/cli/candy.rb
|
42
81
|
lib/rudy/cli/config.rb
|
43
|
-
lib/rudy/cli/deploy.rb
|
44
82
|
lib/rudy/cli/disks.rb
|
45
|
-
lib/rudy/cli/
|
46
|
-
lib/rudy/cli/groups.rb
|
47
|
-
lib/rudy/cli/images.rb
|
48
|
-
lib/rudy/cli/instances.rb
|
49
|
-
lib/rudy/cli/keypairs.rb
|
50
|
-
lib/rudy/cli/manager.rb
|
51
|
-
lib/rudy/cli/release.rb
|
83
|
+
lib/rudy/cli/machines.rb
|
52
84
|
lib/rudy/cli/routines.rb
|
53
|
-
lib/rudy/cli/volumes.rb
|
54
|
-
lib/rudy/command/addresses.rb
|
55
|
-
lib/rudy/command/backups.rb
|
56
|
-
lib/rudy/command/disks-old.rb
|
57
|
-
lib/rudy/command/disks.rb
|
58
|
-
lib/rudy/command/domains.rb
|
59
|
-
lib/rudy/command/groups.rb
|
60
|
-
lib/rudy/command/instances.rb
|
61
|
-
lib/rudy/command/keypairs.rb
|
62
|
-
lib/rudy/command/manager.rb
|
63
|
-
lib/rudy/command/volumes.rb
|
64
85
|
lib/rudy/config.rb
|
65
86
|
lib/rudy/config/objects.rb
|
87
|
+
lib/rudy/disks.rb
|
88
|
+
lib/rudy/global.rb
|
66
89
|
lib/rudy/huxtable.rb
|
67
|
-
lib/rudy/
|
68
|
-
lib/rudy/metadata
|
69
|
-
lib/rudy/metadata/machine.rb
|
90
|
+
lib/rudy/machines.rb
|
91
|
+
lib/rudy/metadata.rb
|
70
92
|
lib/rudy/routines.rb
|
71
|
-
lib/rudy/routines/
|
93
|
+
lib/rudy/routines/helpers/diskhelper.rb
|
94
|
+
lib/rudy/routines/helpers/scripthelper.rb
|
72
95
|
lib/rudy/routines/release.rb
|
73
|
-
lib/rudy/routines/script_runner.rb
|
74
96
|
lib/rudy/routines/shutdown.rb
|
75
97
|
lib/rudy/routines/startup.rb
|
76
98
|
lib/rudy/scm/svn.rb
|
@@ -99,42 +121,40 @@
|
|
99
121
|
test/30_sdb_metadata/00_setup_test.rb
|
100
122
|
test/30_sdb_metadata/10_disks_test.rb
|
101
123
|
test/30_sdb_metadata/20_backups_test.rb
|
102
|
-
test/50_commands/00_setup_test.rb
|
103
|
-
test/50_commands/10_keypairs_test.rb
|
104
|
-
test/50_commands/20_groups_test.rb
|
105
|
-
test/50_commands/40_volumes_test.rb
|
106
|
-
test/50_commands/50_instances_test.rb
|
107
124
|
test/coverage.txt
|
108
125
|
test/helper.rb
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
126
|
+
vendor/highline-1.5.1/CHANGELOG
|
127
|
+
vendor/highline-1.5.1/INSTALL
|
128
|
+
vendor/highline-1.5.1/LICENSE
|
129
|
+
vendor/highline-1.5.1/README
|
130
|
+
vendor/highline-1.5.1/Rakefile
|
131
|
+
vendor/highline-1.5.1/TODO
|
132
|
+
vendor/highline-1.5.1/examples/ansi_colors.rb
|
133
|
+
vendor/highline-1.5.1/examples/asking_for_arrays.rb
|
134
|
+
vendor/highline-1.5.1/examples/basic_usage.rb
|
135
|
+
vendor/highline-1.5.1/examples/color_scheme.rb
|
136
|
+
vendor/highline-1.5.1/examples/limit.rb
|
137
|
+
vendor/highline-1.5.1/examples/menus.rb
|
138
|
+
vendor/highline-1.5.1/examples/overwrite.rb
|
139
|
+
vendor/highline-1.5.1/examples/page_and_wrap.rb
|
140
|
+
vendor/highline-1.5.1/examples/password.rb
|
141
|
+
vendor/highline-1.5.1/examples/trapping_eof.rb
|
142
|
+
vendor/highline-1.5.1/examples/using_readline.rb
|
143
|
+
vendor/highline-1.5.1/lib/highline.rb
|
144
|
+
vendor/highline-1.5.1/lib/highline/color_scheme.rb
|
145
|
+
vendor/highline-1.5.1/lib/highline/compatibility.rb
|
146
|
+
vendor/highline-1.5.1/lib/highline/import.rb
|
147
|
+
vendor/highline-1.5.1/lib/highline/menu.rb
|
148
|
+
vendor/highline-1.5.1/lib/highline/question.rb
|
149
|
+
vendor/highline-1.5.1/lib/highline/system_extensions.rb
|
150
|
+
vendor/highline-1.5.1/setup.rb
|
151
|
+
vendor/highline-1.5.1/test/tc_color_scheme.rb
|
152
|
+
vendor/highline-1.5.1/test/tc_highline.rb
|
153
|
+
vendor/highline-1.5.1/test/tc_import.rb
|
154
|
+
vendor/highline-1.5.1/test/tc_menu.rb
|
155
|
+
vendor/highline-1.5.1/test/ts_all.rb
|
113
156
|
)
|
114
|
-
|
115
|
-
|
116
|
-
s.extra_rdoc_files = %w[README.rdoc LICENSE.txt CHANGES.txt]
|
117
|
-
s.has_rdoc = true
|
118
|
-
s.rdoc_options = ["--line-numbers", "--title", "Rudy: #{s.summary}", "--main", "README.rdoc"]
|
119
|
-
s.require_paths = %w[lib]
|
120
|
-
s.rubygems_version = '1.1.1'
|
121
|
-
|
122
|
-
s.add_dependency 'echoe'
|
123
|
-
s.add_dependency 'amazon-ec2'
|
124
|
-
s.add_dependency 'aws-sdb'
|
125
|
-
s.add_dependency 'net-ssh'
|
126
|
-
s.add_dependency 'net-scp'
|
127
|
-
s.add_dependency 'net-ssh-gateway'
|
128
|
-
s.add_dependency 'net-ssh-multi'
|
129
|
-
s.add_dependency 'drydock'
|
130
|
-
s.add_dependency 'caesars'
|
131
|
-
s.add_dependency 'rye'
|
132
|
-
|
133
|
-
# http://bit.ly/2WaAgV
|
134
|
-
#s.add_runtime_dependency('xml-simple', '>= 1.0.11')
|
135
|
-
#s.add_dependency('xml-simple', '>= 1.0.11')
|
136
|
-
#s.add_development_dependency('jgre-monkeyspecdoc', '>= 0.1.0')
|
137
|
-
#s.add_development_dependency('thoughtbot-shoulda', '>= 0.1.0')
|
157
|
+
|
138
158
|
|
139
|
-
|
140
|
-
|
159
|
+
end
|
160
|
+
|
data/support/rudy-ec2-startup
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
# Runs when an ec2 instance startups up.
|
11
11
|
# Grabs configuration from the run time user data and stores it locally.
|
12
|
-
# See Rudy::CLI::
|
12
|
+
# See Rudy::CLI::Machines#start_instance for the expected yaml format.
|
13
13
|
|
14
14
|
# Put this in /etc/init.d. Then:
|
15
15
|
# * chmod 755 rudy-ec2-startup
|
@@ -33,8 +33,8 @@ METADATA = 'http://169.254.169.254/2008-02-01/meta-data'
|
|
33
33
|
|
34
34
|
METADATAPARAMS = ['instance-id', 'instance-type']
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
Rudy::CONFIG_DIR=File.join('.rudy')
|
37
|
+
Rudy::CONFIG_FILE=File.join('config')
|
38
38
|
|
39
39
|
module Rudy
|
40
40
|
module EC2Startup
|
@@ -91,9 +91,9 @@ module Rudy
|
|
91
91
|
# (when we're not running as that user.)
|
92
92
|
config[:userdata].each_pair do |n,hash|
|
93
93
|
fileparts = (n == :root) ? ['/root'] : [user_home_dir(n)]
|
94
|
-
fileparts <<
|
94
|
+
fileparts << Rudy::CONFIG_DIR
|
95
95
|
dirpath = File.join(fileparts)
|
96
|
-
filepath = File.join(dirpath,
|
96
|
+
filepath = File.join(dirpath, Rudy::CONFIG_FILE)
|
97
97
|
|
98
98
|
# Backwards compatability
|
99
99
|
if !File.directory?(dirpath)
|
@@ -3,18 +3,14 @@ require File.join(File.dirname(__FILE__), '..', 'helper')
|
|
3
3
|
module Rudy::Test
|
4
4
|
|
5
5
|
class Case_05_Config < Test::Unit::TestCase
|
6
|
-
include Rudy::
|
6
|
+
include Rudy::Huxtable
|
7
7
|
|
8
8
|
@@logger = STDERR #StringIO.new
|
9
|
-
@@
|
10
|
-
@@global = @@rmach.global
|
11
|
-
@@config = @@rmach.config
|
12
|
-
@@zone = @@rmach.global.zone.to_s
|
9
|
+
@@zone = @@global.zone.to_s
|
13
10
|
|
14
11
|
context "#{name}_00 Setup" do
|
15
12
|
should "(00) have class variables setup" do
|
16
|
-
stop_test !@@
|
17
|
-
stop_test !@@global.is_a?(OpenStruct), "We don't have global (#{@@global})"
|
13
|
+
stop_test !@@global.is_a?(Rudy::Global), "We don't have global (#{@@global})"
|
18
14
|
stop_test !@@config.is_a?(Rudy::Config), "We don't have an instance of Rudy::Config (#{@@config})"
|
19
15
|
end
|
20
16
|
end
|
@@ -8,24 +8,9 @@ module Rudy::Test
|
|
8
8
|
#
|
9
9
|
# DO NOT RUN THIS TEST ON A PRODUCTION AWS ACCOUNT!!
|
10
10
|
#
|
11
|
-
class
|
12
|
-
include Rudy::
|
11
|
+
class Case_20_AWS_SDB < Test::Unit::TestCase
|
12
|
+
include Rudy::Huxtable
|
13
13
|
|
14
|
-
@@logger = STDERR #StringIO.new
|
15
|
-
@@rmach = Rudy::Instances.new(:logger => @@logger)
|
16
|
-
@@global = @@rmach.global
|
17
|
-
@@config = @@rmach.config
|
18
|
-
@@zone = @@rmach.global.zone.to_s
|
19
|
-
|
20
|
-
context "#{name}_00 Setup" do
|
21
|
-
should "(00) have class variables setup" do
|
22
|
-
stop_test !@@rmach.is_a?(Rudy::Instances), "We don't have an instance ofRudy::Instancess (#{@@rmach})"
|
23
|
-
stop_test !@@sdb.is_a?(Rudy::AWS::SimpleDB), "We don't have an instance of Rudy::AWS::EC2 (#{@@ec2})"
|
24
|
-
end
|
25
|
-
should "(01) be zone" do
|
26
|
-
stop_test !@@zone, "No zone"
|
27
|
-
end
|
28
|
-
end
|
29
14
|
end
|
30
15
|
|
31
16
|
end
|
@@ -1,25 +1,26 @@
|
|
1
1
|
module Rudy::Test
|
2
|
-
class
|
2
|
+
class Case_20_AWS_SDB
|
3
3
|
|
4
4
|
|
5
5
|
def get_domain
|
6
6
|
|
7
7
|
end
|
8
8
|
|
9
|
-
|
9
|
+
context "#{name}_10 Domains" do
|
10
10
|
|
11
11
|
setup do
|
12
|
-
@
|
12
|
+
@sdb = Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
13
|
+
@domain_list = @sdb.list_domains || []
|
13
14
|
@domain = @domain_list.first
|
14
15
|
end
|
15
16
|
|
16
17
|
should "(10) create domain" do
|
17
18
|
dname = 'test_' << Rudy::Utils.strand
|
18
|
-
assert
|
19
|
+
assert @sdb.create_domain(dname), "Domain not created (#{dname})"
|
19
20
|
end
|
20
21
|
|
21
22
|
should "(20) list domains" do
|
22
|
-
domain_list =
|
23
|
+
domain_list = @sdb.list_domains
|
23
24
|
assert domain_list.is_a?(Array), "Not an Array"
|
24
25
|
assert !domain_list.empty?, "No Domains"
|
25
26
|
end
|
@@ -36,8 +37,8 @@ module Rudy::Test
|
|
36
37
|
}
|
37
38
|
}
|
38
39
|
|
39
|
-
|
40
|
-
|
40
|
+
@sdb.put(@domain, 'produce1', produce.call, :replace)
|
41
|
+
@sdb.put(@domain, 'produce2', produce.call, :replace)
|
41
42
|
|
42
43
|
# TODO: Need assertion here!
|
43
44
|
|
@@ -45,7 +46,7 @@ module Rudy::Test
|
|
45
46
|
|
46
47
|
should "(40) get objects" do
|
47
48
|
assert !@domain.nil?, "No domain"
|
48
|
-
item =
|
49
|
+
item = @sdb.get(@domain, 'produce1')
|
49
50
|
assert_equal Hash, item.class # good stuff
|
50
51
|
assert_equal ['green'], item['grapes']
|
51
52
|
end
|
@@ -54,7 +55,7 @@ module Rudy::Test
|
|
54
55
|
|
55
56
|
assert !@domain.nil?, "No domain"
|
56
57
|
|
57
|
-
items =
|
58
|
+
items = @sdb.query(@domain, "[ 'grapes' = 'green' ]")
|
58
59
|
assert items.is_a?(Array), "Not an Array"
|
59
60
|
assert_equal 2, items.size, "More than 2 objects"
|
60
61
|
end
|
@@ -63,7 +64,7 @@ module Rudy::Test
|
|
63
64
|
|
64
65
|
assert !@domain.nil?, "No domain"
|
65
66
|
|
66
|
-
items =
|
67
|
+
items = @sdb.query_with_attributes(@domain, "[ 'grapes' = 'green' ]")
|
67
68
|
assert items.is_a?(Hash), "Not a Hash"
|
68
69
|
assert_equal 2, items.keys.size, "More than 2 objects"
|
69
70
|
assert items['produce1']['celery'].first.to_i > 1000, "Celery less than 1000"
|
@@ -73,7 +74,7 @@ module Rudy::Test
|
|
73
74
|
assert !@domain.nil?, "No domain"
|
74
75
|
q = "select * from #{@domain}"
|
75
76
|
|
76
|
-
items =
|
77
|
+
items = @sdb.select(q)
|
77
78
|
assert items.is_a?(Hash), "Not a Hash"
|
78
79
|
assert_equal 2, items.keys.size, "More than 2 objects"
|
79
80
|
|
@@ -85,13 +86,14 @@ module Rudy::Test
|
|
85
86
|
should "(70) destroy objects" do
|
86
87
|
assert !@domain.nil?, "No domain"
|
87
88
|
q = "select * from #{@domain}"
|
88
|
-
items =
|
89
|
+
items = @sdb.select(q)
|
89
90
|
assert items.is_a?(Hash), "Not a Hash"
|
90
91
|
items.keys.each do |item|
|
91
|
-
assert
|
92
|
+
assert @sdb.destroy(@domain, item), "Not destroyed (#{item})"
|
92
93
|
end
|
94
|
+
sleep 1 # Eventual consistency. Items may still appear.
|
93
95
|
q = "select * from #{@domain}"
|
94
|
-
items =
|
96
|
+
items = @sdb.select(q)
|
95
97
|
assert items.nil?, "Some items not destroyed (#{items})"
|
96
98
|
end
|
97
99
|
|
@@ -100,10 +102,10 @@ module Rudy::Test
|
|
100
102
|
assert !@domain.nil?, "No domain"
|
101
103
|
|
102
104
|
@domain_list.each do |domain|
|
103
|
-
assert
|
105
|
+
assert @sdb.destroy_domain(domain), "Not destroyed (#{domain})"
|
104
106
|
end
|
105
107
|
|
106
|
-
domain_list =
|
108
|
+
domain_list = @sdb.list_domains
|
107
109
|
assert domain_list.empty?, "Not empty"
|
108
110
|
end
|
109
111
|
|
@@ -9,21 +9,16 @@ module Rudy::Test
|
|
9
9
|
# DO NOT RUN THIS TEST ON A PRODUCTION AWS ACCOUNT!!
|
10
10
|
#
|
11
11
|
class Case_25_EC2 < Test::Unit::TestCase
|
12
|
-
include Rudy::
|
12
|
+
include Rudy::Huxtable
|
13
13
|
|
14
|
-
@@
|
15
|
-
|
16
|
-
@@global = @@rmach.global
|
17
|
-
@@config = @@rmach.config
|
18
|
-
@@zone = @@rmach.global.zone.to_s
|
14
|
+
@@zone = @@global.zone.to_s
|
15
|
+
|
19
16
|
|
20
17
|
context "#{name}_00 Setup" do
|
21
18
|
should "(10) have class variables setup" do
|
22
|
-
stop_test !@@
|
23
|
-
stop_test !@@ec2.is_a?(Rudy::AWS::EC2), "We don't have an instance of Rudy::AWS::EC2 (#{@@ec2})"
|
24
|
-
stop_test !@@global.is_a?(OpenStruct), "We don't have global (#{@@global})"
|
19
|
+
stop_test !@@global.is_a?(Rudy::Global), "We don't have global (#{@@global})"
|
25
20
|
stop_test !@@config.is_a?(Rudy::Config), "We don't have an instance of Rudy::Config (#{@@config})"
|
26
|
-
stop_test !@@
|
21
|
+
stop_test !@@global.accountnum, "No account number"
|
27
22
|
end
|
28
23
|
should "(11) be zone" do
|
29
24
|
stop_test !@@zone, "No zone"
|
@@ -4,11 +4,15 @@ module Rudy::Test
|
|
4
4
|
class Case_25_EC2
|
5
5
|
|
6
6
|
context "#{name}_10 KeyPairs" do
|
7
|
+
setup do
|
8
|
+
@@test_name ||= 'test-' << Rudy::Utils.strand
|
9
|
+
@ec2key = Rudy::AWS::EC2::KeyPairs.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
10
|
+
#@ami = @@config.machines.find(@@zone.to_sym, :ami)
|
11
|
+
end
|
7
12
|
|
8
13
|
|
9
14
|
should "(10) create keypair" do
|
10
|
-
|
11
|
-
keypair = @@ec2.keypairs.create(name)
|
15
|
+
keypair = @ec2key.create(@@test_name)
|
12
16
|
assert keypair.is_a?(Rudy::AWS::EC2::KeyPair), "Not a KeyPair"
|
13
17
|
assert !keypair.name.empty?, "No name"
|
14
18
|
assert !keypair.fingerprint.empty?, "No fingerprint"
|
@@ -16,15 +20,19 @@ module Rudy::Test
|
|
16
20
|
end
|
17
21
|
|
18
22
|
should "(20) list keypairs" do
|
19
|
-
keypairs =
|
23
|
+
keypairs = @ec2key.list || []
|
20
24
|
assert keypairs.size > 0, "No keypairs"
|
21
25
|
end
|
22
26
|
|
27
|
+
should "(21) get specific keypair" do
|
28
|
+
assert @ec2key.get(@@test_name).is_a?(Rudy::AWS::EC2::KeyPair), "Not a KeyPair (#{@@test_name})"
|
29
|
+
end
|
30
|
+
|
23
31
|
should "(50) destroy keypairs" do
|
24
|
-
keypairs =
|
32
|
+
keypairs = @ec2key.list || []
|
25
33
|
assert keypairs.size > 0, "No keypairs"
|
26
34
|
keypairs.each do |kp|
|
27
|
-
|
35
|
+
@ec2key.destroy(kp.name)
|
28
36
|
end
|
29
37
|
end
|
30
38
|
end
|
@@ -6,49 +6,52 @@ module Rudy::Test
|
|
6
6
|
def get_groups
|
7
7
|
# Ruby 1.8 throws an undefined method error when this is at the
|
8
8
|
# bottom of the class
|
9
|
-
group_list =
|
9
|
+
group_list = @ec2group.list_as_hash
|
10
10
|
# "default" cannot be deleted so we exempt it
|
11
11
|
group_list.reject { |gname,group| gname == "default" }
|
12
12
|
end
|
13
13
|
|
14
14
|
|
15
15
|
context "#{name}_20 Groups" do
|
16
|
+
setup do
|
17
|
+
@ec2group = Rudy::AWS::EC2::Groups.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
18
|
+
@accountnum = @@config.accounts.aws.accountnum
|
19
|
+
end
|
16
20
|
|
17
21
|
should "(00) not be existing groups" do
|
22
|
+
|
18
23
|
group_list = get_groups
|
19
|
-
stop_test !group_list.empty?, "Destroy the existing groups (
|
24
|
+
stop_test !group_list.empty?, "Destroy the existing groups (#{group_list.keys.join(', ')})"
|
25
|
+
stop_test !@accountnum, "Need an account number for group authorization"
|
20
26
|
end
|
21
27
|
|
22
28
|
should "(01) create group with name" do
|
23
29
|
group_list = get_groups
|
24
|
-
|
30
|
+
test_name ||= 'test-' << Rudy::Utils.strand
|
25
31
|
str = Rudy::Utils.strand
|
26
|
-
|
27
|
-
group
|
28
|
-
|
29
|
-
assert_equal group.
|
30
|
-
|
31
|
-
assert @@ec2.groups.exists?(gname), "Group #{gname} doesn't exist"
|
32
|
+
group = @ec2group.create(test_name)
|
33
|
+
assert group.is_a?(Rudy::AWS::EC2::Group), "Not a Group object (#{group.class.to_s})"
|
34
|
+
assert_equal group.name, test_name, "Group name not set"
|
35
|
+
assert_equal group.description, "Security Group #{test_name}", "Group description not 'Security Group #{test_name}'"
|
36
|
+
assert @ec2group.exists?(test_name), "Group #{test_name} doesn't exist"
|
32
37
|
end
|
33
38
|
|
34
39
|
should "(02) create group with name and description" do
|
35
|
-
|
36
|
-
|
40
|
+
test_name ||= 'test-' << Rudy::Utils.strand
|
37
41
|
str = Rudy::Utils.strand
|
38
|
-
|
39
|
-
|
40
|
-
group = @@ec2.groups.create(gname, desc)
|
42
|
+
desc = "Description for #{test_name}"
|
43
|
+
group = @ec2group.create(test_name, desc)
|
41
44
|
assert group.is_a?(Rudy::AWS::EC2::Group), "Not a Group object"
|
42
|
-
assert_equal group.name,
|
45
|
+
assert_equal group.name, test_name, "Group name not set"
|
43
46
|
assert_equal group.description, desc, "Group description not set"
|
44
|
-
assert
|
47
|
+
assert @ec2group.exists?(test_name), "Group #{test_name} doesn't exist"
|
45
48
|
end
|
46
49
|
|
47
50
|
should "(10) list available groups" do
|
48
|
-
group_list =
|
51
|
+
group_list = @ec2group.list
|
49
52
|
assert group_list.is_a?(Array), "Group list is not an Array"
|
50
53
|
|
51
|
-
group_list_hash =
|
54
|
+
group_list_hash = @ec2group.list_as_hash
|
52
55
|
assert group_list_hash.is_a?(Hash), "Group list is not an Hash"
|
53
56
|
|
54
57
|
group_list.each do |group|
|
@@ -59,64 +62,53 @@ module Rudy::Test
|
|
59
62
|
should "(20) authorize/revoke group rules for address" do
|
60
63
|
external_ip_address = Rudy::Utils::external_ip_address
|
61
64
|
external_ip_address ||= '192.168.0.1/32'
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
+
|
66
|
+
test_name ||= 'test-' << Rudy::Utils.strand
|
67
|
+
|
68
|
+
group = @ec2group.create(test_name)
|
65
69
|
protocols = ['tcp', 'udp']
|
66
70
|
addresses = [external_ip_address]
|
67
71
|
ports = [[3100,3150],[3200,3250]]
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
end
|
78
|
-
group = @@ec2.groups.get(gname)
|
79
|
-
assert group.addresses.is_a?(Hash), "Addresses is not a hash"
|
80
|
-
address_diff = group.addresses.keys - should_have
|
81
|
-
assert address_diff.empty?, "Some addresses not created (#{address_diff.join(', ')})"
|
72
|
+
|
73
|
+
ret = @ec2group.authorize(test_name, addresses, ports, protocols)
|
74
|
+
assert ret, "Authorize did not return true"
|
75
|
+
|
76
|
+
group = @ec2group.get(test_name)
|
77
|
+
|
78
|
+
assert group.is_a?(Rudy::AWS::EC2::Group), "Not a group (#{group})"
|
79
|
+
assert group.addresses.is_a?(Hash), "Addresses is not a hash (#{group.addresses})"
|
80
|
+
|
82
81
|
group.addresses.each_pair do |address,rules|
|
83
82
|
assert rules.is_a?(Array), "Not an Array"
|
84
|
-
assert_equal
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
protocols.each do |protocol|
|
89
|
-
addresses.each do |address|
|
90
|
-
ports.each do |port|
|
91
|
-
should_have << "#{address}/#{protocol}"
|
92
|
-
ret = @@ec2.groups.revoke(gname, port[0].to_i, (port[1] || port[0]).to_i, protocol, address)
|
93
|
-
assert ret, "Did not revoke: #{port[0]}:#{port[1]} (#{protocol}) for #{address}"
|
94
|
-
end
|
95
|
-
end
|
83
|
+
assert_equal 7, rules.size, "Not 7 rules"
|
84
|
+
puts "TODO: Check port ranges"
|
96
85
|
end
|
97
86
|
|
98
|
-
|
87
|
+
ret = @ec2group.revoke(test_name, addresses, ports, protocols)
|
88
|
+
assert ret, "Revoke did not return true"
|
89
|
+
sleep 1 # Wait for eventual consistency
|
90
|
+
group = @ec2group.get(test_name)
|
99
91
|
assert group.addresses.is_a?(Hash), "Addresses is not a hash"
|
100
92
|
assert group.addresses.empty?, "Some addresses not revoked #{group.addresses.to_s}"
|
101
93
|
end
|
102
94
|
|
103
95
|
|
104
96
|
should "(21) authorize/revoke group permissions for account/group" do
|
105
|
-
|
106
|
-
group =
|
107
|
-
should_have = "#{
|
97
|
+
test_name ||= 'test-' << Rudy::Utils.strand
|
98
|
+
group = @ec2group.create(test_name)
|
99
|
+
should_have = "#{@accountnum}:#{test_name}"
|
108
100
|
|
109
|
-
ret =
|
101
|
+
ret = @ec2group.authorize_group(test_name, test_name, @accountnum)
|
110
102
|
assert ret, "Authorize failed (#{should_have})"
|
111
|
-
group =
|
103
|
+
group = @ec2group.get(test_name)
|
112
104
|
assert group.is_a?(Rudy::AWS::EC2::Group), "Not a Group object"
|
113
105
|
assert group.groups.is_a?(Hash), "Groups is not a Hash (#{group.groups.class})"
|
114
106
|
assert_equal should_have, group.groups.keys.first, "Authorized group is not #{should_have}"
|
115
107
|
# TODO: Check port ranges
|
116
108
|
|
117
|
-
ret =
|
109
|
+
ret = @ec2group.revoke_group(test_name, test_name, @accountnum)
|
118
110
|
assert ret, "Revoke failed (#{should_have})"
|
119
|
-
group =
|
111
|
+
group = @ec2group.get(test_name)
|
120
112
|
assert group.is_a?(Rudy::AWS::EC2::Group), "Not a Group object"
|
121
113
|
assert group.groups.is_a?(Hash), "Groups is not a Hash (#{group.groups.class})"
|
122
114
|
assert !group.groups.has_key?(should_have), "Still authorized for #{should_have}"
|
@@ -127,7 +119,7 @@ module Rudy::Test
|
|
127
119
|
group_list = get_groups
|
128
120
|
assert !group_list.empty?, "No groups"
|
129
121
|
group_list.each_pair do |gname,group|
|
130
|
-
assert
|
122
|
+
assert @ec2group.destroy(group.name), "Not destroyed (#{group.name})"
|
131
123
|
end
|
132
124
|
end
|
133
125
|
|