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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solutious-rudy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -13,47 +13,37 @@ date: 2009-04-08 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: echoe
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: amazon-ec2
16
+ name: drydock
27
17
  type: :runtime
28
18
  version_requirement:
29
19
  version_requirements: !ruby/object:Gem::Requirement
30
20
  requirements:
31
21
  - - ">="
32
22
  - !ruby/object:Gem::Version
33
- version: "0"
23
+ version: 0.5.5
34
24
  version:
35
25
  - !ruby/object:Gem::Dependency
36
- name: aws-sdb
26
+ name: caesars
37
27
  type: :runtime
38
28
  version_requirement:
39
29
  version_requirements: !ruby/object:Gem::Requirement
40
30
  requirements:
41
31
  - - ">="
42
32
  - !ruby/object:Gem::Version
43
- version: "0"
33
+ version: 0.5.4
44
34
  version:
45
35
  - !ruby/object:Gem::Dependency
46
- name: net-ssh
36
+ name: rye
47
37
  type: :runtime
48
38
  version_requirement:
49
39
  version_requirements: !ruby/object:Gem::Requirement
50
40
  requirements:
51
41
  - - ">="
52
42
  - !ruby/object:Gem::Version
53
- version: "0"
43
+ version: 0.5.1
54
44
  version:
55
45
  - !ruby/object:Gem::Dependency
56
- name: net-scp
46
+ name: echoe
57
47
  type: :runtime
58
48
  version_requirement:
59
49
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,37 +53,37 @@ dependencies:
63
53
  version: "0"
64
54
  version:
65
55
  - !ruby/object:Gem::Dependency
66
- name: net-ssh-gateway
56
+ name: amazon-ec2
67
57
  type: :runtime
68
58
  version_requirement:
69
59
  version_requirements: !ruby/object:Gem::Requirement
70
60
  requirements:
71
61
  - - ">="
72
62
  - !ruby/object:Gem::Version
73
- version: "0"
63
+ version: 0.3.8
74
64
  version:
75
65
  - !ruby/object:Gem::Dependency
76
- name: net-ssh-multi
66
+ name: net-ssh
77
67
  type: :runtime
78
68
  version_requirement:
79
69
  version_requirements: !ruby/object:Gem::Requirement
80
70
  requirements:
81
71
  - - ">="
82
72
  - !ruby/object:Gem::Version
83
- version: "0"
73
+ version: 2.0.9
84
74
  version:
85
75
  - !ruby/object:Gem::Dependency
86
- name: drydock
76
+ name: net-scp
87
77
  type: :runtime
88
78
  version_requirement:
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
80
  requirements:
91
- - - ">="
81
+ - - ">"
92
82
  - !ruby/object:Gem::Version
93
- version: "0"
83
+ version: 1.0.2
94
84
  version:
95
85
  - !ruby/object:Gem::Dependency
96
- name: caesars
86
+ name: net-ssh-gateway
97
87
  type: :runtime
98
88
  version_requirement:
99
89
  version_requirements: !ruby/object:Gem::Requirement
@@ -103,7 +93,7 @@ dependencies:
103
93
  version: "0"
104
94
  version:
105
95
  - !ruby/object:Gem::Dependency
106
- name: rye
96
+ name: net-ssh-multi
107
97
  type: :runtime
108
98
  version_requirement:
109
99
  version_requirements: !ruby/object:Gem::Requirement
@@ -112,15 +102,19 @@ dependencies:
112
102
  - !ruby/object:Gem::Version
113
103
  version: "0"
114
104
  version:
115
- description: Not your grandparent's deployment tool.
105
+ description: "Rudy: Not your grandparent's deployment tool."
116
106
  email: delano@solutious.com
117
107
  executables:
118
- - rudy
119
108
  - ird
109
+ - rudy
110
+ - rudy-ec2
111
+ - rudy-sdb
112
+ - rudy-s3
120
113
  extensions: []
121
114
 
122
115
  extra_rdoc_files:
123
116
  - README.rdoc
117
+ - Rudyfile
124
118
  - LICENSE.txt
125
119
  - CHANGES.txt
126
120
  files:
@@ -131,10 +125,10 @@ files:
131
125
  - Rudyfile
132
126
  - bin/ird
133
127
  - bin/rudy
128
+ - bin/rudy-ec2
129
+ - bin/rudy-s3
130
+ - bin/rudy-sdb
134
131
  - lib/annoy.rb
135
- - lib/aws_sdb.rb
136
- - lib/aws_sdb/error.rb
137
- - lib/aws_sdb/service.rb
138
132
  - lib/console.rb
139
133
  - lib/escape.rb
140
134
  - lib/rudy.rb
@@ -147,43 +141,40 @@ files:
147
141
  - lib/rudy/aws/ec2/keypair.rb
148
142
  - lib/rudy/aws/ec2/snapshot.rb
149
143
  - lib/rudy/aws/ec2/volume.rb
144
+ - lib/rudy/aws/ec2/zone.rb
150
145
  - lib/rudy/aws/s3.rb
151
- - lib/rudy/aws/simpledb.rb
146
+ - lib/rudy/aws/sdb.rb
147
+ - lib/rudy/aws/sdb/error.rb
148
+ - lib/rudy/backup.rb
152
149
  - lib/rudy/cli.rb
153
- - lib/rudy/cli/addresses.rb
154
- - lib/rudy/cli/backups.rb
150
+ - lib/rudy/cli/aws/ec2/addresses.rb
151
+ - lib/rudy/cli/aws/ec2/candy.rb
152
+ - lib/rudy/cli/aws/ec2/groups.rb
153
+ - lib/rudy/cli/aws/ec2/images.rb
154
+ - lib/rudy/cli/aws/ec2/instances.rb
155
+ - lib/rudy/cli/aws/ec2/keypairs.rb
156
+ - lib/rudy/cli/aws/ec2/snapshots.rb
157
+ - lib/rudy/cli/aws/ec2/volumes.rb
158
+ - lib/rudy/cli/aws/ec2/zones.rb
159
+ - lib/rudy/cli/aws/s3/buckets.rb
160
+ - lib/rudy/cli/aws/s3/store.rb
161
+ - lib/rudy/cli/aws/sdb/domains.rb
162
+ - lib/rudy/cli/candy.rb
155
163
  - lib/rudy/cli/config.rb
156
- - lib/rudy/cli/deploy.rb
157
164
  - lib/rudy/cli/disks.rb
158
- - lib/rudy/cli/domains.rb
159
- - lib/rudy/cli/groups.rb
160
- - lib/rudy/cli/images.rb
161
- - lib/rudy/cli/instances.rb
162
- - lib/rudy/cli/keypairs.rb
163
- - lib/rudy/cli/manager.rb
164
- - lib/rudy/cli/release.rb
165
+ - lib/rudy/cli/machines.rb
165
166
  - lib/rudy/cli/routines.rb
166
- - lib/rudy/cli/volumes.rb
167
- - lib/rudy/command/addresses.rb
168
- - lib/rudy/command/backups.rb
169
- - lib/rudy/command/disks-old.rb
170
- - lib/rudy/command/disks.rb
171
- - lib/rudy/command/domains.rb
172
- - lib/rudy/command/groups.rb
173
- - lib/rudy/command/instances.rb
174
- - lib/rudy/command/keypairs.rb
175
- - lib/rudy/command/manager.rb
176
- - lib/rudy/command/volumes.rb
177
167
  - lib/rudy/config.rb
178
168
  - lib/rudy/config/objects.rb
169
+ - lib/rudy/disks.rb
170
+ - lib/rudy/global.rb
179
171
  - lib/rudy/huxtable.rb
180
- - lib/rudy/metadata/backup.rb
181
- - lib/rudy/metadata/disk.rb
182
- - lib/rudy/metadata/machine.rb
172
+ - lib/rudy/machines.rb
173
+ - lib/rudy/metadata.rb
183
174
  - lib/rudy/routines.rb
184
- - lib/rudy/routines/disk_handler.rb
175
+ - lib/rudy/routines/helpers/diskhelper.rb
176
+ - lib/rudy/routines/helpers/scripthelper.rb
185
177
  - lib/rudy/routines/release.rb
186
- - lib/rudy/routines/script_runner.rb
187
178
  - lib/rudy/routines/shutdown.rb
188
179
  - lib/rudy/routines/startup.rb
189
180
  - lib/rudy/scm/svn.rb
@@ -212,17 +203,38 @@ files:
212
203
  - test/30_sdb_metadata/00_setup_test.rb
213
204
  - test/30_sdb_metadata/10_disks_test.rb
214
205
  - test/30_sdb_metadata/20_backups_test.rb
215
- - test/50_commands/00_setup_test.rb
216
- - test/50_commands/10_keypairs_test.rb
217
- - test/50_commands/20_groups_test.rb
218
- - test/50_commands/40_volumes_test.rb
219
- - test/50_commands/50_instances_test.rb
220
206
  - test/coverage.txt
221
207
  - test/helper.rb
222
- - tryouts/console_tryout.rb
223
- - tryouts/disks.rb
224
- - tryouts/nested_methods.rb
225
- - tryouts/session_tryout.rb
208
+ - vendor/highline-1.5.1/CHANGELOG
209
+ - vendor/highline-1.5.1/INSTALL
210
+ - vendor/highline-1.5.1/LICENSE
211
+ - vendor/highline-1.5.1/README
212
+ - vendor/highline-1.5.1/Rakefile
213
+ - vendor/highline-1.5.1/TODO
214
+ - vendor/highline-1.5.1/examples/ansi_colors.rb
215
+ - vendor/highline-1.5.1/examples/asking_for_arrays.rb
216
+ - vendor/highline-1.5.1/examples/basic_usage.rb
217
+ - vendor/highline-1.5.1/examples/color_scheme.rb
218
+ - vendor/highline-1.5.1/examples/limit.rb
219
+ - vendor/highline-1.5.1/examples/menus.rb
220
+ - vendor/highline-1.5.1/examples/overwrite.rb
221
+ - vendor/highline-1.5.1/examples/page_and_wrap.rb
222
+ - vendor/highline-1.5.1/examples/password.rb
223
+ - vendor/highline-1.5.1/examples/trapping_eof.rb
224
+ - vendor/highline-1.5.1/examples/using_readline.rb
225
+ - vendor/highline-1.5.1/lib/highline.rb
226
+ - vendor/highline-1.5.1/lib/highline/color_scheme.rb
227
+ - vendor/highline-1.5.1/lib/highline/compatibility.rb
228
+ - vendor/highline-1.5.1/lib/highline/import.rb
229
+ - vendor/highline-1.5.1/lib/highline/menu.rb
230
+ - vendor/highline-1.5.1/lib/highline/question.rb
231
+ - vendor/highline-1.5.1/lib/highline/system_extensions.rb
232
+ - vendor/highline-1.5.1/setup.rb
233
+ - vendor/highline-1.5.1/test/tc_color_scheme.rb
234
+ - vendor/highline-1.5.1/test/tc_highline.rb
235
+ - vendor/highline-1.5.1/test/tc_import.rb
236
+ - vendor/highline-1.5.1/test/tc_menu.rb
237
+ - vendor/highline-1.5.1/test/ts_all.rb
226
238
  has_rdoc: true
227
239
  homepage: http://github.com/solutious/rudy
228
240
  post_install_message:
@@ -252,6 +264,6 @@ rubyforge_project: rudy
252
264
  rubygems_version: 1.2.0
253
265
  signing_key:
254
266
  specification_version: 2
255
- summary: Not your grandparent's deployment tool.
267
+ summary: "Rudy: Not your grandparent's deployment tool."
256
268
  test_files: []
257
269
 
data/lib/aws_sdb/error.rb DELETED
@@ -1,42 +0,0 @@
1
- module AwsSdb
2
-
3
- class Error < RuntimeError ; end
4
-
5
- class RequestError < Error
6
- attr_reader :request_id
7
-
8
- def initialize(message, request_id=nil)
9
- super(message)
10
- @request_id = request_id
11
- end
12
- end
13
-
14
- class InvalidDomainNameError < RequestError ; end
15
- class InvalidParameterValueError < RequestError ; end
16
- class InvalidNextTokenError < RequestError ; end
17
- class InvalidNumberPredicatesError < RequestError ; end
18
- class InvalidNumberValueTestsError < RequestError ; end
19
- class InvalidQueryExpressionError < RequestError ; end
20
- class MissingParameterError < RequestError ; end
21
- class NoSuchDomainError < RequestError ; end
22
- class NumberDomainsExceededError < RequestError ; end
23
- class NumberDomainAttributesExceededError < RequestError ; end
24
- class NumberDomainBytesExceededError < RequestError ; end
25
- class NumberItemAttributesExceededError < RequestError ; end
26
- class RequestTimeoutError < RequestError ; end
27
-
28
- class FeatureDeprecatedError < RequestError ; end
29
-
30
- class ConnectionError < Error
31
- attr_reader :response
32
-
33
- def initialize(response)
34
- super(
35
- "#{response.code} \
36
- #{response.message if response.respond_to?(:message)}"
37
- )
38
- @response = response
39
- end
40
- end
41
-
42
- end
@@ -1,215 +0,0 @@
1
- require 'logger'
2
- require 'time'
3
- require 'cgi'
4
- require 'uri'
5
- require 'net/http'
6
- require 'base64'
7
- require 'openssl'
8
- require 'rexml/document'
9
- require 'rexml/xpath'
10
-
11
- module AwsSdb #:nodoc:all
12
-
13
- class Service
14
- def initialize(options={})
15
- @access_key_id = options[:access_key_id] || ENV['AMAZON_ACCESS_KEY_ID']
16
- @secret_access_key = options[:secret_access_key] || ENV['AMAZON_SECRET_ACCESS_KEY']
17
- @base_url = options[:url] || 'http://sdb.amazonaws.com'
18
- @logger = options[:logger] || Logger.new("aws_sdb.log")
19
- end
20
-
21
- def list_domains(max = nil, token = nil)
22
- params = { 'Action' => 'ListDomains' }
23
- params['NextToken'] =
24
- token unless token.nil? || token.empty?
25
- params['MaxNumberOfDomains'] =
26
- max.to_s unless max.nil? || max.to_i == 0
27
- doc = call(:get, params)
28
- results = []
29
- REXML::XPath.each(doc, '//DomainName/text()') do |domain|
30
- results << domain.to_s
31
- end
32
- return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
33
- end
34
-
35
- def create_domain(domain)
36
- call(:post, { 'Action' => 'CreateDomain', 'DomainName'=> domain.to_s })
37
- nil
38
- end
39
-
40
- def delete_domain(domain)
41
- call(
42
- :delete,
43
- { 'Action' => 'DeleteDomain', 'DomainName' => domain.to_s }
44
- )
45
- nil
46
- end
47
- # <QueryWithAttributesResult><Item><Name>in-c2ffrw</Name><Attribute><Name>code</Name><Value>in-c2ffrw</Value></Attribute><Attribute><Name>date_created</Name><Value>2008-10-31</Value></Attribute></Item><Item>
48
- def query_with_attributes(domain, query, max = nil, token = nil)
49
- params = {
50
- 'Action' => 'QueryWithAttributes',
51
- 'QueryExpression' => query,
52
- 'DomainName' => domain.to_s
53
- }
54
- params['NextToken'] =
55
- token unless token.nil? || token.empty?
56
- params['MaxNumberOfItems'] =
57
- max.to_s unless max.nil? || max.to_i == 0
58
-
59
- doc = call(:get, params)
60
- results = []
61
- REXML::XPath.each(doc, "//Item") do |item|
62
- name = REXML::XPath.first(item, './Name/text()').to_s
63
-
64
-
65
- attributes = {'Name' => name}
66
- REXML::XPath.each(item, "./Attribute") do |attr|
67
- key = REXML::XPath.first(attr, './Name/text()').to_s
68
- value = REXML::XPath.first(attr, './Value/text()').to_s
69
- ( attributes[key] ||= [] ) << value
70
- end
71
- results << attributes
72
- end
73
- return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
74
- end
75
-
76
- # <QueryResult><ItemName>in-c2ffrw</ItemName><ItemName>in-72yagt</ItemName><ItemName>in-52j8gj</ItemName>
77
- def query(domain, query, max = nil, token = nil)
78
- params = {
79
- 'Action' => 'Query',
80
- 'QueryExpression' => query,
81
- 'DomainName' => domain.to_s
82
- }
83
- params['NextToken'] =
84
- token unless token.nil? || token.empty?
85
- params['MaxNumberOfItems'] =
86
- max.to_s unless max.nil? || max.to_i == 0
87
-
88
-
89
- doc = call(:get, params)
90
- results = []
91
- REXML::XPath.each(doc, '//ItemName/text()') do |item|
92
- results << item.to_s
93
- end
94
- return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
95
-
96
- end
97
-
98
- def put_attributes(domain, item, attributes, replace = true)
99
- params = {
100
- 'Action' => 'PutAttributes',
101
- 'DomainName' => domain.to_s,
102
- 'ItemName' => item.to_s
103
- }
104
- count = 0
105
- attributes.each do | key, values |
106
- ([]<<values).flatten.each do |value|
107
- params["Attribute.#{count}.Name"] = key.to_s
108
- params["Attribute.#{count}.Value"] = value.to_s
109
- params["Attribute.#{count}.Replace"] = replace
110
- count += 1
111
- end
112
- end
113
- call(:put, params)
114
- nil
115
- end
116
-
117
- def get_attributes(domain, item)
118
- doc = call(
119
- :get,
120
- {
121
- 'Action' => 'GetAttributes',
122
- 'DomainName' => domain.to_s,
123
- 'ItemName' => item.to_s
124
- }
125
- )
126
- attributes = {}
127
- REXML::XPath.each(doc, "//Attribute") do |attr|
128
- key = REXML::XPath.first(attr, './Name/text()').to_s
129
- value = REXML::XPath.first(attr, './Value/text()').to_s
130
- ( attributes[key] ||= [] ) << value
131
- end
132
- attributes
133
- end
134
-
135
- def delete_attributes(domain, item)
136
- call(
137
- :delete,
138
- {
139
- 'Action' => 'DeleteAttributes',
140
- 'DomainName' => domain.to_s,
141
- 'ItemName' => item.to_s
142
- }
143
- )
144
- nil
145
- end
146
-
147
- def select(select, token = nil)
148
- params = {
149
- 'Action' => 'Select',
150
- 'SelectExpression' => select,
151
- }
152
- params['NextToken'] =
153
- token unless token.nil? || token.empty?
154
-
155
- doc = call(:get, params)
156
- results = []
157
- REXML::XPath.each(doc, "//Item") do |item|
158
- name = REXML::XPath.first(item, './Name/text()').to_s
159
-
160
- attributes = {'Name' => name}
161
- REXML::XPath.each(item, "./Attribute") do |attr|
162
- key = REXML::XPath.first(attr, './Name/text()').to_s
163
- value = REXML::XPath.first(attr, './Value/text()').to_s
164
- ( attributes[key] ||= [] ) << value
165
- end
166
- results << attributes
167
- end
168
- return results, REXML::XPath.first(doc, '//NextToken/text()').to_s
169
- end
170
-
171
- protected
172
-
173
- def call(method, params)
174
- params.merge!( {
175
- 'Version' => '2007-11-07',
176
- 'SignatureVersion' => '1',
177
- 'AWSAccessKeyId' => @access_key_id,
178
- 'Timestamp' => Time.now.gmtime.iso8601
179
- }
180
- )
181
- data = ''
182
- query = []
183
- params.keys.sort_by { |k| k.upcase }.each do |key|
184
- data << "#{key}#{params[key].to_s}"
185
- query << "#{key}=#{CGI::escape(params[key].to_s)}"
186
- end
187
- digest = OpenSSL::Digest::Digest.new('sha1')
188
- hmac = OpenSSL::HMAC.digest(digest, @secret_access_key, data)
189
- signature = Base64.encode64(hmac).strip
190
- query << "Signature=#{CGI::escape(signature)}"
191
- query = query.join('&')
192
- url = "#{@base_url}?#{query}"
193
- uri = URI.parse(url)
194
- @logger.debug("#{url}") if @logger
195
- response =
196
- Net::HTTP.new(uri.host, uri.port).send_request(method, uri.request_uri)
197
- @logger.debug("#{response.code}\n#{response.body}") if @logger
198
- raise(ConnectionError.new(response)) unless (200..400).include?(
199
- response.code.to_i
200
- )
201
- doc = REXML::Document.new(response.body)
202
- error = doc.get_elements('*/Errors/Error')[0]
203
- raise(
204
- Module.class_eval(
205
- "AwsSdb::#{error.get_elements('Code')[0].text}Error"
206
- ).new(
207
- error.get_elements('Message')[0].text,
208
- doc.get_elements('*/RequestID')[0].text
209
- )
210
- ) unless error.nil?
211
- doc
212
- end
213
- end
214
-
215
- end
data/lib/aws_sdb.rb DELETED
@@ -1,3 +0,0 @@
1
- require 'aws_sdb/error'
2
- require 'aws_sdb/service'
3
-
@@ -1,71 +0,0 @@
1
-
2
-
3
-
4
- module Rudy::AWS
5
- class SimpleDB
6
- class Domains
7
- include Rudy::AWS::ObjectBase
8
-
9
- def create(name)
10
- @aws.create_domain(name)
11
- true
12
- end
13
-
14
- def destroy(name)
15
- @aws.delete_domain(name) # Always returns nil, wtf?
16
- true
17
- end
18
-
19
- def list
20
- domains = (@aws.list_domains || [[]]) # Nested array, again wtf?
21
- domains.first.flatten
22
- end
23
- end
24
-
25
- def destroy(domain, item)
26
- @aws.delete_attributes(domain, item)
27
- true
28
- end
29
-
30
- def store(domain, item, attributes={}, replace=false)
31
- replace &&= true # Accept any value as true
32
- @aws.put_attributes(domain, item, attributes, replace)
33
- end
34
-
35
- def query(domain, query=nil, max=nil)
36
- items = @aws.query(domain, query, max)
37
- return nil if !items || items.empty? || items == [[], ""] # NOTE: wtf, aws-sdb?
38
- # [["produce", "produce1", "produce2"], ""]
39
- clean_items = items.first
40
- clean_items
41
- end
42
-
43
- def query_with_attributes(domain, query, max=nil)
44
- items = @aws.query_with_attributes(domain, query, max)
45
- return nil if !items || items.empty? || items == [[], ""] # NOTE: wtf, aws-sdb?
46
- clean_items = {}
47
- # aws-sdb returns the following (another nested array -- wtf X 9):
48
- # [[{"device"=>["/dev/sdh"], "Name"=>"disk-us-east-1b-stella-app-01-stella", "zone"=>["us-east-1b"],
49
- # "size"=>["1"], "region"=>["us-east-1"], "role"=>["app"], "rtype"=>["disk"], "awsid"=>[""],
50
- # "environment"=>["stella"], "position"=>["01"], "path"=>["/stella"]}], ""]
51
- items.first.each do |item|
52
- clean_items[item.delete('Name')] = item
53
- end
54
- clean_items
55
- end
56
-
57
- def select(query)
58
- items = @aws.select(query) || []
59
- return nil if !items || items.empty? || items == [[], ""] # NOTE: wtf, aws-sdb?
60
- clean_items = {}
61
- items.first.each do |item|
62
- clean_items[item.delete('Name')] = item
63
- end
64
- clean_items
65
- end
66
-
67
- def get(domain, item)
68
- @aws.get_attributes(domain, item)
69
- end
70
- end
71
- end
@@ -1,85 +0,0 @@
1
-
2
-
3
- module Rudy
4
- module CLI
5
- class Addresses < Rudy::CLI::Base
6
-
7
-
8
- def associate_addresses_valid?
9
- raise "You have not supplied an IP addresses" unless @argv.ipaddress
10
- raise "You did not supply an instance ID" unless @argv.instanceid
11
-
12
- @rmach = Rudy::Instances.new(:config => @config, :global => @global)
13
- @radd = Rudy::Addresses.new(:config => @config, :global => @global)
14
-
15
- raise "Instance #{@argv.instid} does not exist!" unless @rmach.exists?(@argv.instid)
16
-
17
- raise "#{@argv.ipaddress} is not allocated to you" unless @radd.exists?(@argv.ipaddress)
18
- raise "#{@argv.ipaddress} is already associated!" if @radd.associated?(@argv.ipaddress)
19
-
20
- true
21
- end
22
-
23
- def associate_addresses
24
- puts "Associating #{@argv.address} to #{@inst[:aws_groups]}: #{@inst[:dns_name]}"
25
-
26
- address = @radd.get(@argv.ipaddress)
27
- puts address.to_s
28
-
29
- puts "Done!"
30
- puts
31
- end
32
-
33
- def addresses
34
- puts "Addresses".bright, $/
35
-
36
- radd = Rudy::Addresses.new(:config => @config, :global => @global)
37
- addresses = radd.list || []
38
-
39
- addresses.each do |address|
40
- puts address.to_s
41
- end
42
-
43
- puts "No Addresses" if addresses.empty?
44
- end
45
-
46
-
47
- def addresses_create
48
- puts "Create Address".bright, $/
49
- radd = Rudy::Addresses.new(:config => @config, :global => @global)
50
- address = radd.create
51
- puts address.to_s
52
- end
53
-
54
- def addresses_destroy_valid?
55
- raise "You have not supplied an IP addresses" unless @argv.ipaddress
56
-
57
- @radd = Rudy::Addresses.new(:config => @config, :global => @global)
58
- @rmach = Rudy::Instances.new(:config => @config, :global => @global)
59
-
60
- raise "#{@argv.ipaddress} is not allocated to you" unless @radd.exists?(@argv.ipaddress)
61
- raise "#{@argv.ipaddress} is associated!" if @radd.associated?(@argv.ipaddress)
62
-
63
- true
64
- end
65
- def addresses_destroy
66
- puts "Destroy Address".bright, $/
67
-
68
- address = @radd.get(@argv.ipaddress)
69
- raise "Could not fetch #{address.ipaddress}" unless address
70
-
71
- puts "Destroying address: #{@argv.ipaddress}"
72
- puts "NOTE: this IP address will become available to other EC2 customers.".color(:blue)
73
- exit unless Annoy.are_you_sure?(:low)
74
-
75
- ret = @radd.destroy(@argv.ipaddress)
76
- raise "Destroy failed" unless ret
77
-
78
- puts
79
- puts "Done"
80
- end
81
-
82
- end
83
- end
84
- end
85
-