solutious-rudy 0.8.5 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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')