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.
Files changed (146) hide show
  1. data/CHANGES.txt +19 -1
  2. data/README.rdoc +66 -35
  3. data/Rakefile +1 -0
  4. data/Rudyfile +97 -6
  5. data/bin/ird +7 -4
  6. data/bin/rudy +120 -212
  7. data/bin/rudy-ec2 +240 -0
  8. data/bin/rudy-s3 +76 -0
  9. data/bin/rudy-sdb +67 -0
  10. data/lib/annoy.rb +61 -18
  11. data/lib/console.rb +10 -5
  12. data/lib/rudy/aws/ec2/address.rb +76 -40
  13. data/lib/rudy/aws/ec2/group.rb +138 -78
  14. data/lib/rudy/aws/ec2/image.rb +134 -12
  15. data/lib/rudy/aws/ec2/instance.rb +116 -89
  16. data/lib/rudy/aws/ec2/keypair.rb +26 -14
  17. data/lib/rudy/aws/ec2/snapshot.rb +23 -12
  18. data/lib/rudy/aws/ec2/volume.rb +198 -202
  19. data/lib/rudy/aws/ec2/zone.rb +77 -0
  20. data/lib/rudy/aws/ec2.rb +56 -25
  21. data/lib/rudy/aws/s3.rb +54 -0
  22. data/lib/rudy/aws/sdb/error.rb +46 -0
  23. data/lib/rudy/aws/sdb.rb +298 -0
  24. data/lib/rudy/aws.rb +29 -57
  25. data/lib/rudy/{metadata/backup.rb → backup.rb} +8 -8
  26. data/lib/rudy/cli/aws/ec2/addresses.rb +105 -0
  27. data/lib/rudy/cli/aws/ec2/candy.rb +208 -0
  28. data/lib/rudy/cli/aws/ec2/groups.rb +121 -0
  29. data/lib/rudy/cli/aws/ec2/images.rb +196 -0
  30. data/lib/rudy/cli/aws/ec2/instances.rb +194 -0
  31. data/lib/rudy/cli/aws/ec2/keypairs.rb +53 -0
  32. data/lib/rudy/cli/aws/ec2/snapshots.rb +49 -0
  33. data/lib/rudy/cli/aws/ec2/volumes.rb +104 -0
  34. data/lib/rudy/cli/aws/ec2/zones.rb +22 -0
  35. data/lib/rudy/cli/aws/s3/buckets.rb +50 -0
  36. data/lib/rudy/cli/aws/s3/store.rb +22 -0
  37. data/lib/rudy/cli/aws/sdb/domains.rb +41 -0
  38. data/lib/rudy/cli/{deploy.rb → candy.rb} +2 -6
  39. data/lib/rudy/cli/config.rb +25 -20
  40. data/lib/rudy/cli/disks.rb +18 -108
  41. data/lib/rudy/cli/machines.rb +94 -0
  42. data/lib/rudy/cli/routines.rb +47 -70
  43. data/lib/rudy/cli.rb +104 -89
  44. data/lib/rudy/config/objects.rb +5 -43
  45. data/lib/rudy/config.rb +8 -24
  46. data/lib/rudy/disks.rb +248 -0
  47. data/lib/rudy/global.rb +121 -0
  48. data/lib/rudy/huxtable.rb +232 -147
  49. data/lib/rudy/machines.rb +245 -0
  50. data/lib/rudy/metadata.rb +136 -0
  51. data/lib/rudy/routines/helpers/diskhelper.rb +101 -0
  52. data/lib/rudy/routines/helpers/scripthelper.rb +91 -0
  53. data/lib/rudy/routines/release.rb +27 -8
  54. data/lib/rudy/routines/shutdown.rb +47 -32
  55. data/lib/rudy/routines/startup.rb +47 -37
  56. data/lib/rudy/routines.rb +30 -37
  57. data/lib/rudy/scm/svn.rb +1 -1
  58. data/lib/rudy/utils.rb +262 -4
  59. data/lib/rudy.rb +76 -248
  60. data/lib/storable.rb +19 -16
  61. data/lib/sysinfo.rb +1 -1
  62. data/rudy.gemspec +88 -68
  63. data/support/rudy-ec2-startup +5 -5
  64. data/test/05_config/00_setup_test.rb +3 -7
  65. data/test/20_sdb/00_setup_test.rb +2 -17
  66. data/test/20_sdb/10_domains_test.rb +18 -16
  67. data/test/25_ec2/00_setup_test.rb +5 -10
  68. data/test/25_ec2/10_keypairs_test.rb +13 -5
  69. data/test/25_ec2/20_groups_test.rb +48 -56
  70. data/test/25_ec2/30_addresses_test.rb +13 -10
  71. data/test/25_ec2/40_volumes_test.rb +11 -8
  72. data/test/25_ec2/50_snapshots_test.rb +17 -12
  73. data/test/26_ec2_instances/00_setup_test.rb +3 -8
  74. data/test/26_ec2_instances/10_instances_test.rb +21 -19
  75. data/test/30_sdb_metadata/00_setup_test.rb +2 -9
  76. data/test/30_sdb_metadata/10_disks_test.rb +47 -37
  77. data/test/30_sdb_metadata/20_backups_test.rb +9 -9
  78. data/test/helper.rb +5 -3
  79. data/vendor/highline-1.5.1/CHANGELOG +222 -0
  80. data/vendor/highline-1.5.1/INSTALL +35 -0
  81. data/vendor/highline-1.5.1/LICENSE +7 -0
  82. data/vendor/highline-1.5.1/README +63 -0
  83. data/vendor/highline-1.5.1/Rakefile +82 -0
  84. data/vendor/highline-1.5.1/TODO +6 -0
  85. data/vendor/highline-1.5.1/examples/ansi_colors.rb +38 -0
  86. data/vendor/highline-1.5.1/examples/asking_for_arrays.rb +18 -0
  87. data/vendor/highline-1.5.1/examples/basic_usage.rb +75 -0
  88. data/vendor/highline-1.5.1/examples/color_scheme.rb +32 -0
  89. data/vendor/highline-1.5.1/examples/limit.rb +12 -0
  90. data/vendor/highline-1.5.1/examples/menus.rb +65 -0
  91. data/vendor/highline-1.5.1/examples/overwrite.rb +19 -0
  92. data/vendor/highline-1.5.1/examples/page_and_wrap.rb +322 -0
  93. data/vendor/highline-1.5.1/examples/password.rb +7 -0
  94. data/vendor/highline-1.5.1/examples/trapping_eof.rb +22 -0
  95. data/vendor/highline-1.5.1/examples/using_readline.rb +17 -0
  96. data/vendor/highline-1.5.1/lib/highline/color_scheme.rb +120 -0
  97. data/vendor/highline-1.5.1/lib/highline/compatibility.rb +17 -0
  98. data/vendor/highline-1.5.1/lib/highline/import.rb +43 -0
  99. data/vendor/highline-1.5.1/lib/highline/menu.rb +395 -0
  100. data/vendor/highline-1.5.1/lib/highline/question.rb +463 -0
  101. data/vendor/highline-1.5.1/lib/highline/system_extensions.rb +193 -0
  102. data/vendor/highline-1.5.1/lib/highline.rb +758 -0
  103. data/vendor/highline-1.5.1/setup.rb +1360 -0
  104. data/vendor/highline-1.5.1/test/tc_color_scheme.rb +56 -0
  105. data/vendor/highline-1.5.1/test/tc_highline.rb +823 -0
  106. data/vendor/highline-1.5.1/test/tc_import.rb +54 -0
  107. data/vendor/highline-1.5.1/test/tc_menu.rb +429 -0
  108. data/vendor/highline-1.5.1/test/ts_all.rb +15 -0
  109. metadata +81 -69
  110. data/lib/aws_sdb/error.rb +0 -42
  111. data/lib/aws_sdb/service.rb +0 -215
  112. data/lib/aws_sdb.rb +0 -3
  113. data/lib/rudy/aws/simpledb.rb +0 -71
  114. data/lib/rudy/cli/addresses.rb +0 -85
  115. data/lib/rudy/cli/backups.rb +0 -175
  116. data/lib/rudy/cli/domains.rb +0 -17
  117. data/lib/rudy/cli/groups.rb +0 -77
  118. data/lib/rudy/cli/images.rb +0 -111
  119. data/lib/rudy/cli/instances.rb +0 -142
  120. data/lib/rudy/cli/keypairs.rb +0 -47
  121. data/lib/rudy/cli/manager.rb +0 -51
  122. data/lib/rudy/cli/release.rb +0 -174
  123. data/lib/rudy/cli/volumes.rb +0 -121
  124. data/lib/rudy/command/addresses.rb +0 -69
  125. data/lib/rudy/command/backups.rb +0 -65
  126. data/lib/rudy/command/disks-old.rb +0 -322
  127. data/lib/rudy/command/disks.rb +0 -9
  128. data/lib/rudy/command/domains.rb +0 -34
  129. data/lib/rudy/command/groups.rb +0 -118
  130. data/lib/rudy/command/instances.rb +0 -278
  131. data/lib/rudy/command/keypairs.rb +0 -149
  132. data/lib/rudy/command/manager.rb +0 -65
  133. data/lib/rudy/command/volumes.rb +0 -127
  134. data/lib/rudy/metadata/disk.rb +0 -149
  135. data/lib/rudy/metadata/machine.rb +0 -34
  136. data/lib/rudy/routines/disk_handler.rb +0 -190
  137. data/lib/rudy/routines/script_runner.rb +0 -65
  138. data/test/50_commands/00_setup_test.rb +0 -11
  139. data/test/50_commands/10_keypairs_test.rb +0 -79
  140. data/test/50_commands/20_groups_test.rb +0 -77
  141. data/test/50_commands/40_volumes_test.rb +0 -55
  142. data/test/50_commands/50_instances_test.rb +0 -110
  143. data/tryouts/console_tryout.rb +0 -91
  144. data/tryouts/disks.rb +0 -55
  145. data/tryouts/nested_methods.rb +0 -36
  146. 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.1"
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/simpledb.rb
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/backups.rb
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/domains.rb
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/metadata/backup.rb
68
- lib/rudy/metadata/disk.rb
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/disk_handler.rb
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
- tryouts/console_tryout.rb
110
- tryouts/disks.rb
111
- tryouts/nested_methods.rb
112
- tryouts/session_tryout.rb
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
- s.executables = %w[rudy ird]
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
- end
159
+ end
160
+
@@ -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::Instances#start_instance for the expected yaml format.
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
- RUDY_CONFIG_DIR=File.join('.rudy')
37
- RUDY_CONFIG_FILE=File.join('config')
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 << RUDY_CONFIG_DIR
94
+ fileparts << Rudy::CONFIG_DIR
95
95
  dirpath = File.join(fileparts)
96
- filepath = File.join(dirpath, RUDY_CONFIG_FILE)
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::AWS # If we include Huxtable, we won't need to grab global and config form rmach
6
+ include Rudy::Huxtable
7
7
 
8
8
  @@logger = STDERR #StringIO.new
9
- @@rmach = Rudy::Instances.new(:logger => @@logger)
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 !@@rmach.is_a?(Rudy::Instances), "We don't have an instance ofRudy::Instancess (#{@@rmach})"
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 Case_20_SimpleDB < Test::Unit::TestCase
12
- include Rudy::AWS
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 Case_20_SimpleDB
2
+ class Case_20_AWS_SDB
3
3
 
4
4
 
5
5
  def get_domain
6
6
 
7
7
  end
8
8
 
9
- xcontext "#{name}_10 Domains" do
9
+ context "#{name}_10 Domains" do
10
10
 
11
11
  setup do
12
- @domain_list = @@sdb.domains.list || []
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 @@sdb.domains.create(dname), "Domain not created (#{dname})"
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 = @@sdb.domains.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
- @@sdb.store(@domain, 'produce1', produce.call, :replace)
40
- @@sdb.store(@domain, 'produce2', produce.call, :replace)
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 = @@sdb.get(@domain, 'produce1')
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 = @@sdb.query(@domain, "[ 'grapes' = 'green' ]")
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 = @@sdb.query_with_attributes(@domain, "[ 'grapes' = 'green' ]")
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 = @@sdb.select(q)
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 = @@sdb.select(q)
89
+ items = @sdb.select(q)
89
90
  assert items.is_a?(Hash), "Not a Hash"
90
91
  items.keys.each do |item|
91
- assert @@sdb.destroy(@domain, item), "Not destroyed (#{item})"
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 = @@sdb.select(q)
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 @@sdb.domains.destroy(domain), "Not destroyed (#{domain})"
105
+ assert @sdb.destroy_domain(domain), "Not destroyed (#{domain})"
104
106
  end
105
107
 
106
- domain_list = @@sdb.domains.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::AWS
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
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 !@@rmach.is_a?(Rudy::Instances), "We don't have an instance ofRudy::Instancess (#{@@rmach})"
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 !@@rmach.config || !@@rmach.config.accounts || !@@rmach.config.accounts.aws || !@@rmach.config.accounts.aws.accountnum, "No account number"
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
- name = 'test-' << Rudy::Utils.strand
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 = @@ec2.keypairs.list || []
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 = @@ec2.keypairs.list || []
32
+ keypairs = @ec2key.list || []
25
33
  assert keypairs.size > 0, "No keypairs"
26
34
  keypairs.each do |kp|
27
- @@ec2.keypairs.destroy(kp.name)
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 = @@ec2.groups.list_as_hash
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 (except \"default\")"
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
- gname = "test-name-#{str}"
27
- group = @@ec2.groups.create(gname)
28
- assert group.is_a?(Rudy::AWS::EC2::Group), "Not a Group object"
29
- assert_equal group.name, gname, "Group name not set"
30
- assert_equal group.description, "Group #{gname}", "Group description not 'Group #{gname}'"
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
- group_list = get_groups
36
-
40
+ test_name ||= 'test-' << Rudy::Utils.strand
37
41
  str = Rudy::Utils.strand
38
- gname = "test-name-#{str}"
39
- desc = "test-desc-#{str}"
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, gname, "Group name not set"
45
+ assert_equal group.name, test_name, "Group name not set"
43
46
  assert_equal group.description, desc, "Group description not set"
44
- assert @@ec2.groups.exists?(gname), "Group #{gname} doesn't exist"
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 = @@ec2.groups.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 = @@ec2.groups.list_as_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
- gname = "test-" << Rudy::Utils.strand
64
- group = @@ec2.groups.create(gname)
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
- should_have = [] # The list of address keys we're expecting in Groups#addresses
69
- protocols.each do |protocol|
70
- addresses.each do |address|
71
- ports.each do |port|
72
- should_have << "#{address}/#{protocol}"
73
- ret = @@ec2.groups.authorize(gname, port[0].to_i, (port[1] || port[0]).to_i, protocol, address)
74
- assert ret, "Did not authorize: #{port[0]}:#{port[1]} (#{protocol}) for #{address}"
75
- end
76
- end
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 2, rules.size, "Not 2 rules"
85
- # TODO: Check port ranges
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
- group = @@ec2.groups.get(gname)
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
- gname = "test-" << Rudy::Utils.strand
106
- group = @@ec2.groups.create(gname)
107
- should_have = "#{@@rmach.config.accounts.aws.accountnum}:#{gname}"
97
+ test_name ||= 'test-' << Rudy::Utils.strand
98
+ group = @ec2group.create(test_name)
99
+ should_have = "#{@accountnum}:#{test_name}"
108
100
 
109
- ret = @@ec2.groups.authorize_group(gname, gname, @@rmach.config.accounts.aws.accountnum)
101
+ ret = @ec2group.authorize_group(test_name, test_name, @accountnum)
110
102
  assert ret, "Authorize failed (#{should_have})"
111
- group = @@ec2.groups.get(gname)
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 = @@ec2.groups.revoke_group(gname, gname, @@rmach.config.accounts.aws.accountnum)
109
+ ret = @ec2group.revoke_group(test_name, test_name, @accountnum)
118
110
  assert ret, "Revoke failed (#{should_have})"
119
- group = @@ec2.groups.get(gname)
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 @@ec2.groups.destroy(group.name), "Not destroyed (#{group.name})"
122
+ assert @ec2group.destroy(group.name), "Not destroyed (#{group.name})"
131
123
  end
132
124
  end
133
125