solutious-rudy 0.8.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. data/CHANGES.txt +55 -14
  2. data/README.rdoc +26 -34
  3. data/Rudyfile +27 -32
  4. data/bin/rudy +47 -27
  5. data/bin/rudy-ec2 +2 -16
  6. data/bin/rudy-s3 +0 -10
  7. data/bin/rudy-sdb +11 -12
  8. data/lib/rudy.rb +49 -89
  9. data/lib/rudy/aws.rb +2 -43
  10. data/lib/rudy/aws/ec2.rb +57 -20
  11. data/lib/rudy/aws/ec2/address.rb +10 -11
  12. data/lib/rudy/aws/ec2/group.rb +10 -9
  13. data/lib/rudy/aws/ec2/image.rb +8 -8
  14. data/lib/rudy/aws/ec2/instance.rb +15 -16
  15. data/lib/rudy/aws/ec2/keypair.rb +14 -19
  16. data/lib/rudy/aws/ec2/snapshot.rb +16 -9
  17. data/lib/rudy/aws/ec2/volume.rb +37 -24
  18. data/lib/rudy/aws/ec2/zone.rb +5 -4
  19. data/lib/rudy/aws/s3.rb +2 -1
  20. data/lib/rudy/aws/sdb.rb +35 -86
  21. data/lib/rudy/backups.rb +24 -0
  22. data/lib/rudy/cli.rb +5 -131
  23. data/lib/rudy/cli/aws/ec2/addresses.rb +19 -27
  24. data/lib/rudy/cli/aws/ec2/candy.rb +32 -7
  25. data/lib/rudy/cli/aws/ec2/groups.rb +9 -13
  26. data/lib/rudy/cli/aws/ec2/images.rb +5 -133
  27. data/lib/rudy/cli/aws/ec2/instances.rb +25 -25
  28. data/lib/rudy/cli/aws/ec2/keypairs.rb +7 -11
  29. data/lib/rudy/cli/aws/ec2/snapshots.rb +5 -9
  30. data/lib/rudy/cli/aws/ec2/volumes.rb +22 -23
  31. data/lib/rudy/cli/aws/ec2/zones.rb +2 -3
  32. data/lib/rudy/cli/aws/sdb/domains.rb +5 -6
  33. data/lib/rudy/cli/aws/sdb/objects.rb +33 -0
  34. data/lib/rudy/cli/aws/sdb/select.rb +23 -0
  35. data/lib/rudy/cli/backups.rb +38 -0
  36. data/lib/rudy/cli/base.rb +98 -0
  37. data/lib/rudy/cli/candy.rb +1 -2
  38. data/lib/rudy/cli/config.rb +7 -4
  39. data/lib/rudy/cli/disks.rb +6 -8
  40. data/lib/rudy/cli/execbase.rb +53 -0
  41. data/lib/rudy/cli/machines.rb +14 -18
  42. data/lib/rudy/cli/metadata.rb +24 -10
  43. data/lib/rudy/cli/routines.rb +31 -5
  44. data/lib/rudy/config.rb +17 -22
  45. data/lib/rudy/config/objects.rb +44 -30
  46. data/lib/rudy/disks.rb +25 -0
  47. data/lib/rudy/exceptions.rb +95 -0
  48. data/lib/rudy/global.rb +46 -23
  49. data/lib/rudy/guidelines.rb +3 -2
  50. data/lib/rudy/huxtable.rb +66 -57
  51. data/lib/rudy/machines.rb +41 -263
  52. data/lib/rudy/metadata.rb +212 -38
  53. data/lib/rudy/metadata/backup.rb +123 -78
  54. data/lib/rudy/metadata/disk.rb +152 -170
  55. data/lib/rudy/metadata/machine.rb +179 -0
  56. data/lib/rudy/mixins.rb +2 -1
  57. data/lib/rudy/mixins/hash.rb +3 -1
  58. data/lib/rudy/mixins/symbol.rb +8 -0
  59. data/lib/rudy/routines.rb +127 -344
  60. data/lib/rudy/routines/base.rb +226 -0
  61. data/lib/rudy/routines/handlers/base.rb +48 -0
  62. data/lib/rudy/routines/handlers/depends.rb +49 -0
  63. data/lib/rudy/routines/handlers/disks.rb +239 -0
  64. data/lib/rudy/routines/handlers/group.rb +42 -0
  65. data/lib/rudy/routines/handlers/host.rb +72 -0
  66. data/lib/rudy/routines/handlers/keypair.rb +70 -0
  67. data/lib/rudy/routines/handlers/machines.rb +15 -0
  68. data/lib/rudy/routines/handlers/script.rb +85 -0
  69. data/lib/rudy/routines/handlers/user.rb +41 -0
  70. data/lib/rudy/routines/passthrough.rb +19 -23
  71. data/lib/rudy/routines/reboot.rb +82 -51
  72. data/lib/rudy/routines/shutdown.rb +61 -14
  73. data/lib/rudy/routines/startup.rb +111 -17
  74. data/lib/rudy/utils.rb +12 -59
  75. data/rudy.gemspec +85 -25
  76. data/tryouts/01_mixins/01_hash_tryouts.rb +20 -0
  77. data/tryouts/10_require_time/10_rudy_tryouts.rb +33 -0
  78. data/tryouts/10_require_time/15_global_tryouts.rb +58 -0
  79. data/tryouts/12_config/10_load_config_tryouts.rb +43 -0
  80. data/tryouts/12_config/20_defaults_tryouts.rb +16 -0
  81. data/tryouts/12_config/30_accounts_tryouts.rb +17 -0
  82. data/tryouts/12_config/40_machines_tryouts.rb +53 -0
  83. data/tryouts/12_config/50_commands_tryouts.rb +17 -0
  84. data/tryouts/12_config/60_routines_tryouts.rb +16 -0
  85. data/tryouts/15_huxtable/10_huxtable_tryouts.rb +47 -0
  86. data/tryouts/15_huxtable/20_user_tryouts.rb +47 -0
  87. data/tryouts/20_simpledb/10_domains_tryouts.rb +36 -0
  88. data/tryouts/20_simpledb/20_objects_tryouts.rb +56 -0
  89. data/tryouts/25_ec2/10_keypairs_tryouts.rb +54 -0
  90. data/tryouts/25_ec2/20_groups_tryouts.rb +56 -0
  91. data/tryouts/25_ec2/21_groups_authorize_address_tryouts.rb +53 -0
  92. data/tryouts/25_ec2/22_groups_authorize_account_tryouts.rb +54 -0
  93. data/tryouts/25_ec2/30_addresses_tryouts.rb +42 -0
  94. data/tryouts/25_ec2/40_volumes_tryouts.rb +53 -0
  95. data/tryouts/25_ec2/50_snapshots_tryouts.rb +75 -0
  96. data/tryouts/26_ec2_instances/10_instance_tryouts.rb +107 -0
  97. data/tryouts/26_ec2_instances/50_images_tryouts.rb +7 -0
  98. data/tryouts/30_metadata/10_include_tryouts.rb +45 -0
  99. data/tryouts/30_metadata/13_object_tryouts.rb +19 -0
  100. data/tryouts/30_metadata/50_disk_tryouts.rb +115 -0
  101. data/tryouts/30_metadata/51_disk_digest_tryouts.rb +24 -0
  102. data/tryouts/30_metadata/53_disk_list_tryouts.rb +35 -0
  103. data/tryouts/30_metadata/56_disk_volume_tryouts.rb +68 -0
  104. data/tryouts/30_metadata/60_backup_tryouts.rb +101 -0
  105. data/tryouts/30_metadata/63_backup_list_tryouts.rb +38 -0
  106. data/tryouts/30_metadata/64_backup_disk_tryouts.rb +65 -0
  107. data/tryouts/30_metadata/66_backup_snapshot_tryouts.rb +76 -0
  108. data/tryouts/30_metadata/70_machine_tryouts.rb +85 -0
  109. data/tryouts/30_metadata/73_machine_list_tryouts.rb +58 -0
  110. data/tryouts/30_metadata/76_machine_instance_tryouts.rb +64 -0
  111. data/tryouts/30_metadata/77_machines_tryouts.rb +45 -0
  112. data/tryouts/40_routines/10_keypair_handler_tryouts.rb +52 -0
  113. data/tryouts/40_routines/11_group_handler_tryouts.rb +36 -0
  114. data/tryouts/80_cli/10_rudyec2_tryouts.rb +8 -0
  115. data/tryouts/80_cli/60_rudy_tryouts.rb +41 -0
  116. data/tryouts/failer +6 -0
  117. data/tryouts/misc/console_tryout.rb +91 -0
  118. data/tryouts/misc/disks_tryout.rb +48 -0
  119. data/tryouts/misc/drydock_tryout.rb +48 -0
  120. data/tryouts/misc/nested_methods.rb +103 -0
  121. data/tryouts/misc/session_tryout.rb +46 -0
  122. data/tryouts/misc/tryouts.rb +33 -0
  123. data/tryouts/misc/usage_tryout.rb +23 -0
  124. metadata +119 -31
  125. data/bin/ird +0 -153
  126. data/lib/rudy/metadata/backups.rb +0 -67
  127. data/lib/rudy/metadata/debug.rb +0 -38
  128. data/lib/rudy/metadata/disks.rb +0 -67
  129. data/lib/rudy/metadata/objectbase.rb +0 -108
  130. data/lib/rudy/routines/helper.rb +0 -76
  131. data/lib/rudy/routines/helpers/dependshelper.rb +0 -34
  132. data/lib/rudy/routines/helpers/diskhelper.rb +0 -403
  133. data/lib/rudy/routines/helpers/scripthelper.rb +0 -197
  134. data/lib/rudy/routines/helpers/userhelper.rb +0 -37
  135. data/support/rudy-ec2-startup +0 -200
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # Tryout - A basic use-case
4
+ #
5
+
6
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
7
+ %w{drydock caesars rye}.each { |dir| $: << File.join(File.dirname(__FILE__), '..', '..', dir, 'lib') }
8
+
9
+ require 'rudy'
10
+
11
+
12
+ machine1 = Rudy::Machine.new
13
+ Rudy::Huxtable.change_environment(:prod)
14
+ machine2 = Rudy::Machine.new
15
+
16
+ puts machine1.name
17
+ puts machine2.name
18
+ puts machine2.s
19
+
20
+ #rmach = Rudy::Machines.new
21
+ #machine = rmach.create(:position => 1)
22
+ #machine.upload('/some/file')
23
+
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.8.5
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -13,84 +13,94 @@ date: 2009-05-16 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: drydock
16
+ name: rye
17
17
  type: :runtime
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.6.5
23
+ version: 0.8.5
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
- name: caesars
26
+ name: attic
27
27
  type: :runtime
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.7.1
33
+ version: 0.4.0
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
- name: rye
36
+ name: annoy
37
37
  type: :runtime
38
38
  version_requirement:
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 0.7.4
43
+ version: 0.5.5
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
- name: sysinfo
46
+ name: drydock
47
47
  type: :runtime
48
48
  version_requirement:
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 0.5.1
53
+ version: 0.6.6
54
54
  version:
55
55
  - !ruby/object:Gem::Dependency
56
- name: storable
56
+ name: caesars
57
57
  type: :runtime
58
58
  version_requirement:
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 0.5.3
63
+ version: 0.7.3
64
64
  version:
65
65
  - !ruby/object:Gem::Dependency
66
- name: annoy
66
+ name: sysinfo
67
67
  type: :runtime
68
68
  version_requirement:
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 0.5.2
73
+ version: 0.6.2
74
74
  version:
75
75
  - !ruby/object:Gem::Dependency
76
- name: echoe
76
+ name: gibbler
77
77
  type: :runtime
78
78
  version_requirement:
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: "0"
83
+ version: 0.6.0
84
84
  version:
85
85
  - !ruby/object:Gem::Dependency
86
- name: amazon-ec2
86
+ name: tryouts
87
87
  type: :runtime
88
88
  version_requirement:
89
89
  version_requirements: !ruby/object:Gem::Requirement
90
90
  requirements:
91
91
  - - ">="
92
92
  - !ruby/object:Gem::Version
93
- version: 0.3.8
93
+ version: 0.8.4
94
+ version:
95
+ - !ruby/object:Gem::Dependency
96
+ name: storable
97
+ type: :runtime
98
+ version_requirement:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.5.6
94
104
  version:
95
105
  - !ruby/object:Gem::Dependency
96
106
  name: aws-s3
@@ -112,6 +122,26 @@ dependencies:
112
122
  - !ruby/object:Gem::Version
113
123
  version: 1.5.1
114
124
  version:
125
+ - !ruby/object:Gem::Dependency
126
+ name: amazon-ec2
127
+ type: :runtime
128
+ version_requirement:
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 0.3.8
134
+ version:
135
+ - !ruby/object:Gem::Dependency
136
+ name: tenderlove-frex
137
+ type: :runtime
138
+ version_requirement:
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: "0"
144
+ version:
115
145
  - !ruby/object:Gem::Dependency
116
146
  name: archive-tar-minitar
117
147
  type: :runtime
@@ -133,7 +163,7 @@ dependencies:
133
163
  version: "0"
134
164
  version:
135
165
  - !ruby/object:Gem::Dependency
136
- name: racc
166
+ name: echoe
137
167
  type: :runtime
138
168
  version_requirement:
139
169
  version_requirements: !ruby/object:Gem::Requirement
@@ -143,7 +173,7 @@ dependencies:
143
173
  version: "0"
144
174
  version:
145
175
  - !ruby/object:Gem::Dependency
146
- name: tenderlove-frex
176
+ name: racc
147
177
  type: :runtime
148
178
  version_requirement:
149
179
  version_requirements: !ruby/object:Gem::Requirement
@@ -182,7 +212,6 @@ files:
182
212
  - README.rdoc
183
213
  - Rakefile
184
214
  - Rudyfile
185
- - bin/ird
186
215
  - bin/rudy
187
216
  - bin/rudy-ec2
188
217
  - bin/rudy-s3
@@ -201,6 +230,7 @@ files:
201
230
  - lib/rudy/aws/s3.rb
202
231
  - lib/rudy/aws/sdb.rb
203
232
  - lib/rudy/aws/sdb/error.rb
233
+ - lib/rudy/backups.rb
204
234
  - lib/rudy/cli.rb
205
235
  - lib/rudy/cli/aws/ec2/addresses.rb
206
236
  - lib/rudy/cli/aws/ec2/candy.rb
@@ -214,33 +244,43 @@ files:
214
244
  - lib/rudy/cli/aws/s3/buckets.rb
215
245
  - lib/rudy/cli/aws/s3/store.rb
216
246
  - lib/rudy/cli/aws/sdb/domains.rb
247
+ - lib/rudy/cli/aws/sdb/objects.rb
248
+ - lib/rudy/cli/aws/sdb/select.rb
249
+ - lib/rudy/cli/backups.rb
250
+ - lib/rudy/cli/base.rb
217
251
  - lib/rudy/cli/candy.rb
218
252
  - lib/rudy/cli/config.rb
219
253
  - lib/rudy/cli/disks.rb
254
+ - lib/rudy/cli/execbase.rb
220
255
  - lib/rudy/cli/machines.rb
221
256
  - lib/rudy/cli/metadata.rb
222
257
  - lib/rudy/cli/routines.rb
223
258
  - lib/rudy/config.rb
224
259
  - lib/rudy/config/objects.rb
260
+ - lib/rudy/disks.rb
261
+ - lib/rudy/exceptions.rb
225
262
  - lib/rudy/global.rb
226
263
  - lib/rudy/guidelines.rb
227
264
  - lib/rudy/huxtable.rb
228
265
  - lib/rudy/machines.rb
229
266
  - lib/rudy/metadata.rb
230
267
  - lib/rudy/metadata/backup.rb
231
- - lib/rudy/metadata/backups.rb
232
- - lib/rudy/metadata/debug.rb
233
268
  - lib/rudy/metadata/disk.rb
234
- - lib/rudy/metadata/disks.rb
235
- - lib/rudy/metadata/objectbase.rb
269
+ - lib/rudy/metadata/machine.rb
236
270
  - lib/rudy/mixins.rb
237
271
  - lib/rudy/mixins/hash.rb
272
+ - lib/rudy/mixins/symbol.rb
238
273
  - lib/rudy/routines.rb
239
- - lib/rudy/routines/helper.rb
240
- - lib/rudy/routines/helpers/dependshelper.rb
241
- - lib/rudy/routines/helpers/diskhelper.rb
242
- - lib/rudy/routines/helpers/scripthelper.rb
243
- - lib/rudy/routines/helpers/userhelper.rb
274
+ - lib/rudy/routines/base.rb
275
+ - lib/rudy/routines/handlers/base.rb
276
+ - lib/rudy/routines/handlers/depends.rb
277
+ - lib/rudy/routines/handlers/disks.rb
278
+ - lib/rudy/routines/handlers/group.rb
279
+ - lib/rudy/routines/handlers/host.rb
280
+ - lib/rudy/routines/handlers/keypair.rb
281
+ - lib/rudy/routines/handlers/machines.rb
282
+ - lib/rudy/routines/handlers/script.rb
283
+ - lib/rudy/routines/handlers/user.rb
244
284
  - lib/rudy/routines/passthrough.rb
245
285
  - lib/rudy/routines/reboot.rb
246
286
  - lib/rudy/routines/shutdown.rb
@@ -249,10 +289,58 @@ files:
249
289
  - rudy.gemspec
250
290
  - support/mailtest
251
291
  - support/randomize-root-password
252
- - support/rudy-ec2-startup
253
292
  - support/update-ec2-ami-tools
293
+ - tryouts/01_mixins/01_hash_tryouts.rb
294
+ - tryouts/10_require_time/10_rudy_tryouts.rb
295
+ - tryouts/10_require_time/15_global_tryouts.rb
296
+ - tryouts/12_config/10_load_config_tryouts.rb
297
+ - tryouts/12_config/20_defaults_tryouts.rb
298
+ - tryouts/12_config/30_accounts_tryouts.rb
299
+ - tryouts/12_config/40_machines_tryouts.rb
300
+ - tryouts/12_config/50_commands_tryouts.rb
301
+ - tryouts/12_config/60_routines_tryouts.rb
302
+ - tryouts/15_huxtable/10_huxtable_tryouts.rb
303
+ - tryouts/15_huxtable/20_user_tryouts.rb
304
+ - tryouts/20_simpledb/10_domains_tryouts.rb
305
+ - tryouts/20_simpledb/20_objects_tryouts.rb
306
+ - tryouts/25_ec2/10_keypairs_tryouts.rb
307
+ - tryouts/25_ec2/20_groups_tryouts.rb
308
+ - tryouts/25_ec2/21_groups_authorize_address_tryouts.rb
309
+ - tryouts/25_ec2/22_groups_authorize_account_tryouts.rb
310
+ - tryouts/25_ec2/30_addresses_tryouts.rb
311
+ - tryouts/25_ec2/40_volumes_tryouts.rb
312
+ - tryouts/25_ec2/50_snapshots_tryouts.rb
313
+ - tryouts/26_ec2_instances/10_instance_tryouts.rb
314
+ - tryouts/26_ec2_instances/50_images_tryouts.rb
315
+ - tryouts/30_metadata/10_include_tryouts.rb
316
+ - tryouts/30_metadata/13_object_tryouts.rb
317
+ - tryouts/30_metadata/50_disk_tryouts.rb
318
+ - tryouts/30_metadata/51_disk_digest_tryouts.rb
319
+ - tryouts/30_metadata/53_disk_list_tryouts.rb
320
+ - tryouts/30_metadata/56_disk_volume_tryouts.rb
321
+ - tryouts/30_metadata/60_backup_tryouts.rb
322
+ - tryouts/30_metadata/63_backup_list_tryouts.rb
323
+ - tryouts/30_metadata/64_backup_disk_tryouts.rb
324
+ - tryouts/30_metadata/66_backup_snapshot_tryouts.rb
325
+ - tryouts/30_metadata/70_machine_tryouts.rb
326
+ - tryouts/30_metadata/73_machine_list_tryouts.rb
327
+ - tryouts/30_metadata/76_machine_instance_tryouts.rb
328
+ - tryouts/30_metadata/77_machines_tryouts.rb
329
+ - tryouts/40_routines/10_keypair_handler_tryouts.rb
330
+ - tryouts/40_routines/11_group_handler_tryouts.rb
331
+ - tryouts/80_cli/10_rudyec2_tryouts.rb
332
+ - tryouts/80_cli/60_rudy_tryouts.rb
333
+ - tryouts/failer
334
+ - tryouts/misc/console_tryout.rb
335
+ - tryouts/misc/disks_tryout.rb
336
+ - tryouts/misc/drydock_tryout.rb
337
+ - tryouts/misc/nested_methods.rb
338
+ - tryouts/misc/session_tryout.rb
339
+ - tryouts/misc/tryouts.rb
340
+ - tryouts/misc/usage_tryout.rb
254
341
  has_rdoc: true
255
342
  homepage: http://github.com/solutious/rudy
343
+ licenses:
256
344
  post_install_message:
257
345
  rdoc_options:
258
346
  - --line-numbers
@@ -277,7 +365,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
365
  requirements: []
278
366
 
279
367
  rubyforge_project: rudy
280
- rubygems_version: 1.2.0
368
+ rubygems_version: 1.3.5
281
369
  signing_key:
282
370
  specification_version: 2
283
371
  summary: "Rudy: Not your grandparents' EC2 deployment tool."
data/bin/ird DELETED
@@ -1,153 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- # = Interactive Rudy (experimental)
4
- #
5
- # === Not your granparent's deployment tool
6
- #
7
- # See ird -h for usage
8
- #
9
-
10
- $:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place
11
- $:.unshift File.join(File.dirname(__FILE__), '..', 'vendor', 'highline-1.5.1', 'lib')
12
- %w{drydock caesars rye}.each { |dir| $:.unshift File.join(File.dirname(__FILE__), '..', '..', dir, 'lib') }
13
- require 'rubygems'
14
-
15
- # SEE: http://github.com/rubyspec/matzruby/blob/a34130eb7c4ecc164115a59aa1b76c643bd98202/lib/irb/xmp.rb
16
- # SEE: http://github.com/blackwinter/wirble/tree/master
17
- require "irb"
18
- require 'irb/completion'
19
-
20
- require 'rudy'
21
- require 'drydock'
22
- require 'rudy/cli'
23
-
24
-
25
- class RudyCLI_Interactive < Rudy::CLI::Base # :nodoc:all
26
-
27
- include Readline
28
-
29
- default :interactive
30
- debug :off
31
- about "An interactive REPL for Rudy."
32
- usage "#{$0} [global options]"
33
- command :interactive do |obj|
34
-
35
- @@rmach = Rudy::Machines.new(:global => obj.global)
36
- @@rkey = Rudy::KeyPairs.new(:global => obj.global)
37
- @@rgrp = Rudy::Groups.new(:global => obj.global)
38
- @@rvol = Rudy::Volumes.new(:global => obj.global)
39
- @@radd = Rudy::Addresses.new(:global => obj.global)
40
-
41
- puts Rudy::CLI.generate_header(@@rmach.global, @@rmach.config)
42
- puts Rudy::Utils.without_indent(%Q`
43
- ------------------------------------------------------------
44
- Welcome Interactive Rudy! (EXPERIMENTAL)
45
- ------------------------------------------------------------
46
-
47
- `)
48
- h
49
-
50
- # What's the deal with this error message when defining a help method?
51
- # => rb: warn: can't alias help from irb_help
52
- if __FILE__ == $0
53
- IRB.start(__FILE__)
54
- else
55
- # check -e option
56
- if /^-e$/ =~ $0
57
- IRB.start(__FILE__)
58
- else
59
- IRB.start(__FILE__)
60
- end
61
- end
62
-
63
- end
64
-
65
-
66
-
67
-
68
- def h;
69
- puts (%Q`
70
- HELP
71
-
72
- h Help (this screen)
73
- m Rudy::Machines instance
74
- g Rudy::Groups instance
75
- k Rudy::KeyPairs instance
76
- v Rudy::Volumes instance
77
- a Rudy::Addresses instance
78
- ssh [GROUP] Connect to a machine
79
- example Start an EC2 instance from scratch.
80
- `)
81
- end
82
- def example
83
- puts (%Q`
84
- EXAMPLE
85
- Start an EC2 instance from scratch.
86
-
87
- # Create a security group
88
- >> g.create
89
- => #<Rudy::AWS::EC2::Group @name="stage-app" ...>
90
-
91
- # Create a keypair (used to login as root)
92
- >> k.create
93
- => #<Rudy::AWS::EC2::KeyPair @name="key-stage-app" ...>
94
-
95
- # Start an EC2 machine instance:
96
- >> m.create
97
- Instance: i-228def51
98
- Waiting for the instance to startup
99
- ........It's up!
100
-
101
- # Login to the new instance
102
- >> ssh
103
-
104
- All commands in Rudy refer to the global defaults unless
105
- otherwise specified. "stage" is the default environment and
106
- "app" is the default role. You can change these with command
107
- line arguments or by modifying the defaults in your Rudy
108
- config file: #{@@rmach.config_dirname}
109
-
110
- You can also specify your own names by providing
111
- one as the first argument: g.create 'group5000'.
112
-
113
- # List instances in stage-app
114
- >> m.list :running
115
- => [#<Rudy::AWS::EC2::Instance:0x18c5888 ...>]
116
-
117
- # Print the instance in a human readable way
118
- >> puts m.list.first.to_s
119
-
120
- # Print instance system console output
121
- >> puts m.console
122
-
123
- # Destroy ALL INSTANCES in stage-app
124
- >> m.destroy
125
- `)
126
- end
127
-
128
- def m; @@rmach; end
129
- def k; @@rkey; end
130
- def g; @@rgrp; end
131
- def v; @@rvol; end
132
- def a; @@radd; end
133
-
134
- # Change Group
135
- #def cg(name); end
136
-
137
- def ssh(*args)
138
- @@rmach.switch_user :root
139
- @@rmach.connect(*args)
140
- @@rmach.switch_user # back to previous user
141
- nil
142
- end
143
-
144
-
145
- end
146
-
147
- #include RudyCLI_Interactive # So we don't have to say CLI.example in the REPL.
148
-
149
-
150
- __END__
151
- #@rbox = Rye::Box.new('ec2-174-129-173-3.compute-1.amazonaws.com', 'root')
152
- #@rbox2 = Rye::Box.new('ec2-174-129-173-3.compute-1.amazonaws.com', 'root')
153
- #@rbox.add_keys('/Users/delano/Projects/git/rudy/.rudy/key-test-app.private')