hpcloud 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (238) hide show
  1. data/CHANGELOG +127 -0
  2. data/LICENSE +1 -0
  3. data/README.rdoc +59 -0
  4. data/bin/hpcloud +11 -0
  5. data/completion/hpcloud +372 -0
  6. data/lib/hpcloud/accounts.rb +288 -0
  7. data/lib/hpcloud/acl.rb +112 -0
  8. data/lib/hpcloud/acl_cmd.rb +81 -0
  9. data/lib/hpcloud/address_helper.rb +63 -0
  10. data/lib/hpcloud/addresses.rb +42 -0
  11. data/lib/hpcloud/auth_cache.rb +128 -0
  12. data/lib/hpcloud/base_helper.rb +56 -0
  13. data/lib/hpcloud/checker.rb +104 -0
  14. data/lib/hpcloud/cli.rb +170 -0
  15. data/lib/hpcloud/cli_status.rb +80 -0
  16. data/lib/hpcloud/columns.rb +46 -0
  17. data/lib/hpcloud/commands/account/catalog.rb +57 -0
  18. data/lib/hpcloud/commands/account/copy.rb +44 -0
  19. data/lib/hpcloud/commands/account/edit.rb +204 -0
  20. data/lib/hpcloud/commands/account/remove.rb +53 -0
  21. data/lib/hpcloud/commands/account/setup.rb +40 -0
  22. data/lib/hpcloud/commands/account/tenants.rb +43 -0
  23. data/lib/hpcloud/commands/account/use.rb +46 -0
  24. data/lib/hpcloud/commands/account/verify.rb +55 -0
  25. data/lib/hpcloud/commands/account.rb +67 -0
  26. data/lib/hpcloud/commands/acl/grant.rb +59 -0
  27. data/lib/hpcloud/commands/acl/revoke.rb +52 -0
  28. data/lib/hpcloud/commands/acl.rb +63 -0
  29. data/lib/hpcloud/commands/addresses/add.rb +67 -0
  30. data/lib/hpcloud/commands/addresses/associate.rb +63 -0
  31. data/lib/hpcloud/commands/addresses/disassociate.rb +58 -0
  32. data/lib/hpcloud/commands/addresses/remove.rb +57 -0
  33. data/lib/hpcloud/commands/addresses.rb +63 -0
  34. data/lib/hpcloud/commands/cdn_containers/add.rb +56 -0
  35. data/lib/hpcloud/commands/cdn_containers/get.rb +70 -0
  36. data/lib/hpcloud/commands/cdn_containers/location.rb +61 -0
  37. data/lib/hpcloud/commands/cdn_containers/remove.rb +55 -0
  38. data/lib/hpcloud/commands/cdn_containers/set.rb +63 -0
  39. data/lib/hpcloud/commands/cdn_containers.rb +72 -0
  40. data/lib/hpcloud/commands/complete.rb +60 -0
  41. data/lib/hpcloud/commands/config/set.rb +63 -0
  42. data/lib/hpcloud/commands/config.rb +46 -0
  43. data/lib/hpcloud/commands/containers/add.rb +67 -0
  44. data/lib/hpcloud/commands/containers/remove.rb +63 -0
  45. data/lib/hpcloud/commands/containers/sync.rb +59 -0
  46. data/lib/hpcloud/commands/containers.rb +24 -0
  47. data/lib/hpcloud/commands/copy.rb +78 -0
  48. data/lib/hpcloud/commands/dns/add.rb +56 -0
  49. data/lib/hpcloud/commands/dns/records/add.rb +50 -0
  50. data/lib/hpcloud/commands/dns/records/remove.rb +53 -0
  51. data/lib/hpcloud/commands/dns/records/update.rb +50 -0
  52. data/lib/hpcloud/commands/dns/records.rb +57 -0
  53. data/lib/hpcloud/commands/dns/remove.rb +57 -0
  54. data/lib/hpcloud/commands/dns/servers.rb +57 -0
  55. data/lib/hpcloud/commands/dns/update.rb +58 -0
  56. data/lib/hpcloud/commands/dns.rb +65 -0
  57. data/lib/hpcloud/commands/flavors.rb +59 -0
  58. data/lib/hpcloud/commands/get.rb +58 -0
  59. data/lib/hpcloud/commands/images/add.rb +54 -0
  60. data/lib/hpcloud/commands/images/metadata/add.rb +54 -0
  61. data/lib/hpcloud/commands/images/metadata/remove.rb +56 -0
  62. data/lib/hpcloud/commands/images/metadata.rb +54 -0
  63. data/lib/hpcloud/commands/images/remove.rb +58 -0
  64. data/lib/hpcloud/commands/images.rb +67 -0
  65. data/lib/hpcloud/commands/info.rb +41 -0
  66. data/lib/hpcloud/commands/keypairs/add.rb +73 -0
  67. data/lib/hpcloud/commands/keypairs/import.rb +62 -0
  68. data/lib/hpcloud/commands/keypairs/private/add.rb +44 -0
  69. data/lib/hpcloud/commands/keypairs/private/location.rb +50 -0
  70. data/lib/hpcloud/commands/keypairs/private/remove.rb +52 -0
  71. data/lib/hpcloud/commands/keypairs/private.rb +47 -0
  72. data/lib/hpcloud/commands/keypairs/public_key.rb +51 -0
  73. data/lib/hpcloud/commands/keypairs/remove.rb +58 -0
  74. data/lib/hpcloud/commands/keypairs.rb +64 -0
  75. data/lib/hpcloud/commands/lb/add.rb +92 -0
  76. data/lib/hpcloud/commands/lb/algorithms.rb +55 -0
  77. data/lib/hpcloud/commands/lb/limits.rb +55 -0
  78. data/lib/hpcloud/commands/lb/nodes/add.rb +47 -0
  79. data/lib/hpcloud/commands/lb/nodes/remove.rb +54 -0
  80. data/lib/hpcloud/commands/lb/nodes/update.rb +47 -0
  81. data/lib/hpcloud/commands/lb/nodes.rb +55 -0
  82. data/lib/hpcloud/commands/lb/protocols.rb +55 -0
  83. data/lib/hpcloud/commands/lb/remove.rb +54 -0
  84. data/lib/hpcloud/commands/lb/update.rb +46 -0
  85. data/lib/hpcloud/commands/lb/versions.rb +55 -0
  86. data/lib/hpcloud/commands/lb/virtualips.rb +51 -0
  87. data/lib/hpcloud/commands/lb.rb +73 -0
  88. data/lib/hpcloud/commands/list.rb +114 -0
  89. data/lib/hpcloud/commands/location.rb +56 -0
  90. data/lib/hpcloud/commands/metadata/set.rb +61 -0
  91. data/lib/hpcloud/commands/metadata.rb +60 -0
  92. data/lib/hpcloud/commands/migrate.rb +61 -0
  93. data/lib/hpcloud/commands/move.rb +73 -0
  94. data/lib/hpcloud/commands/networks/add.rb +55 -0
  95. data/lib/hpcloud/commands/networks/remove.rb +57 -0
  96. data/lib/hpcloud/commands/networks/update.rb +54 -0
  97. data/lib/hpcloud/commands/networks.rb +63 -0
  98. data/lib/hpcloud/commands/ports/add.rb +81 -0
  99. data/lib/hpcloud/commands/ports/remove.rb +57 -0
  100. data/lib/hpcloud/commands/ports/update.rb +67 -0
  101. data/lib/hpcloud/commands/ports.rb +63 -0
  102. data/lib/hpcloud/commands/remove.rb +75 -0
  103. data/lib/hpcloud/commands/routers/add.rb +67 -0
  104. data/lib/hpcloud/commands/routers/interface/add.rb +59 -0
  105. data/lib/hpcloud/commands/routers/interface/remove.rb +66 -0
  106. data/lib/hpcloud/commands/routers/remove.rb +54 -0
  107. data/lib/hpcloud/commands/routers/update.rb +66 -0
  108. data/lib/hpcloud/commands/routers.rb +66 -0
  109. data/lib/hpcloud/commands/securitygroups/add.rb +52 -0
  110. data/lib/hpcloud/commands/securitygroups/remove.rb +57 -0
  111. data/lib/hpcloud/commands/securitygroups/rules/add.rb +126 -0
  112. data/lib/hpcloud/commands/securitygroups/rules/remove.rb +51 -0
  113. data/lib/hpcloud/commands/securitygroups/rules.rb +56 -0
  114. data/lib/hpcloud/commands/securitygroups.rb +62 -0
  115. data/lib/hpcloud/commands/servers/add.rb +100 -0
  116. data/lib/hpcloud/commands/servers/console.rb +81 -0
  117. data/lib/hpcloud/commands/servers/limits.rb +46 -0
  118. data/lib/hpcloud/commands/servers/metadata/add.rb +56 -0
  119. data/lib/hpcloud/commands/servers/metadata/remove.rb +57 -0
  120. data/lib/hpcloud/commands/servers/metadata.rb +56 -0
  121. data/lib/hpcloud/commands/servers/password.rb +47 -0
  122. data/lib/hpcloud/commands/servers/ratelimits.rb +46 -0
  123. data/lib/hpcloud/commands/servers/reboot.rb +61 -0
  124. data/lib/hpcloud/commands/servers/rebuild.rb +59 -0
  125. data/lib/hpcloud/commands/servers/remove.rb +58 -0
  126. data/lib/hpcloud/commands/servers/securitygroups/add.rb +47 -0
  127. data/lib/hpcloud/commands/servers/securitygroups/remove.rb +47 -0
  128. data/lib/hpcloud/commands/servers/ssh.rb +92 -0
  129. data/lib/hpcloud/commands/servers.rb +92 -0
  130. data/lib/hpcloud/commands/snapshots/add.rb +62 -0
  131. data/lib/hpcloud/commands/snapshots/remove.rb +58 -0
  132. data/lib/hpcloud/commands/snapshots.rb +62 -0
  133. data/lib/hpcloud/commands/subnets/add.rb +78 -0
  134. data/lib/hpcloud/commands/subnets/remove.rb +57 -0
  135. data/lib/hpcloud/commands/subnets/update.rb +70 -0
  136. data/lib/hpcloud/commands/subnets.rb +63 -0
  137. data/lib/hpcloud/commands/tempurl.rb +62 -0
  138. data/lib/hpcloud/commands/volumes/add.rb +88 -0
  139. data/lib/hpcloud/commands/volumes/attach.rb +59 -0
  140. data/lib/hpcloud/commands/volumes/detach.rb +57 -0
  141. data/lib/hpcloud/commands/volumes/metadata/add.rb +54 -0
  142. data/lib/hpcloud/commands/volumes/metadata.rb +55 -0
  143. data/lib/hpcloud/commands/volumes/remove.rb +57 -0
  144. data/lib/hpcloud/commands/volumes/server.rb +64 -0
  145. data/lib/hpcloud/commands/volumes.rb +65 -0
  146. data/lib/hpcloud/config.rb +205 -0
  147. data/lib/hpcloud/connection.rb +290 -0
  148. data/lib/hpcloud/container_resource.rb +175 -0
  149. data/lib/hpcloud/database_helper.rb +70 -0
  150. data/lib/hpcloud/databases.rb +38 -0
  151. data/lib/hpcloud/dns_helper.rb +125 -0
  152. data/lib/hpcloud/dnss.rb +38 -0
  153. data/lib/hpcloud/error_response.rb +89 -0
  154. data/lib/hpcloud/exceptions/base.rb +35 -0
  155. data/lib/hpcloud/exceptions/general.rb +34 -0
  156. data/lib/hpcloud/exceptions/not_found.rb +34 -0
  157. data/lib/hpcloud/flavors.rb +40 -0
  158. data/lib/hpcloud/floating_ip_helper.rb +114 -0
  159. data/lib/hpcloud/floating_ips.rb +42 -0
  160. data/lib/hpcloud/fog_collection.rb +124 -0
  161. data/lib/hpcloud/image_helper.rb +111 -0
  162. data/lib/hpcloud/images.rb +43 -0
  163. data/lib/hpcloud/keypair_helper.rb +109 -0
  164. data/lib/hpcloud/keypairs.rb +41 -0
  165. data/lib/hpcloud/lb_algorithms.rb +37 -0
  166. data/lib/hpcloud/lb_limits.rb +37 -0
  167. data/lib/hpcloud/lb_nodes.rb +42 -0
  168. data/lib/hpcloud/lb_protocols.rb +37 -0
  169. data/lib/hpcloud/lb_versions.rb +37 -0
  170. data/lib/hpcloud/lb_virtualips.rb +42 -0
  171. data/lib/hpcloud/lbs.rb +38 -0
  172. data/lib/hpcloud/local_resource.rb +183 -0
  173. data/lib/hpcloud/log.rb +55 -0
  174. data/lib/hpcloud/metadata.rb +118 -0
  175. data/lib/hpcloud/monkey.rb +22 -0
  176. data/lib/hpcloud/network_helper.rb +88 -0
  177. data/lib/hpcloud/networks.rb +47 -0
  178. data/lib/hpcloud/object_store.rb +66 -0
  179. data/lib/hpcloud/port_helper.rb +150 -0
  180. data/lib/hpcloud/ports.rb +38 -0
  181. data/lib/hpcloud/progress.rb +53 -0
  182. data/lib/hpcloud/remote_resource.rb +512 -0
  183. data/lib/hpcloud/resource.rb +264 -0
  184. data/lib/hpcloud/resource_factory.rb +110 -0
  185. data/lib/hpcloud/routers.rb +56 -0
  186. data/lib/hpcloud/rule_helper.rb +70 -0
  187. data/lib/hpcloud/rules.rb +41 -0
  188. data/lib/hpcloud/security_group_helper.rb +59 -0
  189. data/lib/hpcloud/security_groups.rb +37 -0
  190. data/lib/hpcloud/server_helper.rb +318 -0
  191. data/lib/hpcloud/servers.rb +47 -0
  192. data/lib/hpcloud/shared_resource.rb +172 -0
  193. data/lib/hpcloud/snapshot_helper.rb +78 -0
  194. data/lib/hpcloud/snapshots.rb +38 -0
  195. data/lib/hpcloud/subnet_helper.rb +170 -0
  196. data/lib/hpcloud/subnets.rb +38 -0
  197. data/lib/hpcloud/tableizer.rb +77 -0
  198. data/lib/hpcloud/thor_ext/thor.rb +54 -0
  199. data/lib/hpcloud/time_parser.rb +47 -0
  200. data/lib/hpcloud/version.rb +27 -0
  201. data/lib/hpcloud/volume_attachment.rb +58 -0
  202. data/lib/hpcloud/volume_attachments.rb +58 -0
  203. data/lib/hpcloud/volume_helper.rb +119 -0
  204. data/lib/hpcloud/volumes.rb +38 -0
  205. data/lib/hpcloud.rb +112 -0
  206. data/lib/monkey/hp/lb.rb +188 -0
  207. data/lib/monkey/hp/models/lb/algorithm.rb +32 -0
  208. data/lib/monkey/hp/models/lb/algorithms.rb +46 -0
  209. data/lib/monkey/hp/models/lb/limit.rb +38 -0
  210. data/lib/monkey/hp/models/lb/limits.rb +50 -0
  211. data/lib/monkey/hp/models/lb/load_balancer.rb +70 -0
  212. data/lib/monkey/hp/models/lb/load_balancers.rb +46 -0
  213. data/lib/monkey/hp/models/lb/node.rb +69 -0
  214. data/lib/monkey/hp/models/lb/nodes.rb +47 -0
  215. data/lib/monkey/hp/models/lb/protocol.rb +33 -0
  216. data/lib/monkey/hp/models/lb/protocols.rb +46 -0
  217. data/lib/monkey/hp/models/lb/version.rb +34 -0
  218. data/lib/monkey/hp/models/lb/versions.rb +47 -0
  219. data/lib/monkey/hp/models/lb/virtual_ip.rb +37 -0
  220. data/lib/monkey/hp/models/lb/virtual_ips.rb +47 -0
  221. data/lib/monkey/hp/requests/lb/create_load_balancer.rb +64 -0
  222. data/lib/monkey/hp/requests/lb/create_load_balancer_node.rb +58 -0
  223. data/lib/monkey/hp/requests/lb/delete_load_balancer.rb +54 -0
  224. data/lib/monkey/hp/requests/lb/delete_load_balancer_node.rb +60 -0
  225. data/lib/monkey/hp/requests/lb/get_load_balancer.rb +88 -0
  226. data/lib/monkey/hp/requests/lb/get_load_balancer_node.rb +60 -0
  227. data/lib/monkey/hp/requests/lb/get_version.rb +68 -0
  228. data/lib/monkey/hp/requests/lb/get_virtual_ips.rb +48 -0
  229. data/lib/monkey/hp/requests/lb/list_algorithms.rb +51 -0
  230. data/lib/monkey/hp/requests/lb/list_limits.rb +60 -0
  231. data/lib/monkey/hp/requests/lb/list_load_balancer_nodes.rb +79 -0
  232. data/lib/monkey/hp/requests/lb/list_load_balancer_virtual_ips.rb +76 -0
  233. data/lib/monkey/hp/requests/lb/list_load_balancers.rb +69 -0
  234. data/lib/monkey/hp/requests/lb/list_protocols.rb +51 -0
  235. data/lib/monkey/hp/requests/lb/list_versions.rb +51 -0
  236. data/lib/monkey/hp/requests/lb/update_load_balancer.rb +46 -0
  237. data/lib/monkey/hp/requests/lb/update_load_balancer_node.rb +50 -0
  238. metadata +368 -0
@@ -0,0 +1,54 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ module HP
23
+ module Cloud
24
+ class CLI < Thor
25
+
26
+ map %w(lb:rm lb:delete lb:del) => 'lb:remove'
27
+
28
+ desc "lb:remove name_or_id [name_or_id ...]", "Remove load balancer (specified by name or ID)."
29
+ long_desc <<-DESC
30
+ Remove load balancers by specifying their names or ID. You may specify more than one load balacner name or ID on a command line.
31
+
32
+ Examples:
33
+ hpcloud lb:remove thing1 thing2 # Delete the load balancers `thing1` and `thing2`
34
+ hpcloud lb:remove 998 # Delete the load balancer with ID 998
35
+
36
+ Aliases: lb:rm, lb:delete, lb:del
37
+ DESC
38
+ CLI.add_common_options
39
+ define_method "lb:remove" do |name_or_id, *name_or_ids|
40
+ cli_command(options) {
41
+ name_or_ids = [name_or_id] + name_or_ids
42
+ lbs = Lbs.new
43
+ name_or_ids.each{ |name|
44
+ sub_command("removing load balancer") {
45
+ lb = lbs.get(name, false)
46
+ lb.destroy
47
+ @log.display "Removed load balancer '#{lb.name}'."
48
+ }
49
+ }
50
+ }
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+
23
+ module HP
24
+ module Cloud
25
+ class CLI < Thor
26
+
27
+ desc "lb:update <lb_name_or_id> <name_or_id> <algorithm>", "Update a node in a load balancer."
28
+ long_desc <<-DESC
29
+ Update a load balancer with the specified algorithm. The name or id of the load balancer may be used to identify it.
30
+
31
+ Examples:
32
+ hpcloud lb:update loady ROUND_ROBIN # Update node 'loady' to 'ROUND_ROBIN'
33
+ hpcloud lb:update 220303 LEAST_CONNECTIONS # Update node '220303' to 'LEAST_CONNECTIONS'
34
+ DESC
35
+ CLI.add_common_options
36
+ define_method "lb:update" do |name_or_id, algorithm|
37
+ cli_command(options) {
38
+ lb = Lbs.new.get(name_or_id)
39
+ lb.algorithm = algorithm
40
+ lb.save
41
+ @log.display "Updated load balancer '#{name_or_id}' to '#{algorithm}'."
42
+ }
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ require 'hpcloud/lb_versions'
23
+
24
+ module HP
25
+ module Cloud
26
+ class CLI < Thor
27
+ desc 'lb:versions', "List the available load balancer versions."
28
+ long_desc <<-DESC
29
+ Lists all the available load balancers versions.
30
+
31
+ Examples:
32
+ hpcloud lb:versions # List all versions
33
+ DESC
34
+ CLI.add_report_options
35
+ CLI.add_common_options
36
+ define_method "lb:versions" do
37
+ columns = [ "id", "status", "updated" ]
38
+
39
+ cli_command(options) {
40
+ filter = LbVersions.new
41
+ if filter.empty?
42
+ @log.display "There don't seem to be any supported versions at the moment"
43
+ else
44
+ ray = filter.get_array
45
+ if ray.empty?
46
+ @log.display "No versions were found"
47
+ else
48
+ Tableizer.new(options, columns, ray).print
49
+ end
50
+ end
51
+ }
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ require 'hpcloud/lb_virtualips'
23
+
24
+ module HP
25
+ module Cloud
26
+ class CLI < Thor
27
+ desc 'lb:virtualips name_or_id', "List the virtual IPs for the specified load balancer."
28
+ long_desc <<-DESC
29
+ Lists the virtual IPs for the specified load balancer.
30
+
31
+ Examples:
32
+ hpcloud lb:virtualips loader # List the virtual IPs for 'loader'
33
+ DESC
34
+ CLI.add_report_options
35
+ CLI.add_common_options
36
+ define_method "lb:virtualips" do |name_or_id|
37
+ columns = [ "id", "address", "ipVersion", "type" ]
38
+
39
+ cli_command(options) {
40
+ lb = Lbs.new.get(name_or_id)
41
+ ray = LbVirtualIps.new(lb.id).get_array
42
+ if ray.empty?
43
+ @log.display "There are no virtual IPs for the given load balancer."
44
+ else
45
+ Tableizer.new(options, columns, ray).print
46
+ end
47
+ }
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ require 'hpcloud/commands/lb/add.rb'
23
+ require 'hpcloud/commands/lb/algorithms.rb'
24
+ require 'hpcloud/commands/lb/limits.rb'
25
+ require 'hpcloud/commands/lb/nodes.rb'
26
+ require 'hpcloud/commands/lb/nodes/add.rb'
27
+ require 'hpcloud/commands/lb/nodes/remove.rb'
28
+ require 'hpcloud/commands/lb/nodes/update.rb'
29
+ require 'hpcloud/commands/lb/protocols.rb'
30
+ require 'hpcloud/commands/lb/remove.rb'
31
+ require 'hpcloud/commands/lb/update.rb'
32
+ require 'hpcloud/commands/lb/versions.rb'
33
+ require 'hpcloud/commands/lb/virtualips.rb'
34
+ require 'hpcloud/lbs'
35
+
36
+ module HP
37
+ module Cloud
38
+ class CLI < Thor
39
+
40
+ map 'lb:list' => 'lb'
41
+
42
+ desc 'lb [name_or_id ...]', "List the available load balancers."
43
+ long_desc <<-DESC
44
+ Lists all the load balancers that are associated with the account. The list begins with identifier and contains name, algorithm, protocol, port and status. Optionally, you can filter the list by specifying names or IDs.
45
+
46
+ Examples:
47
+ hpcloud lb # List all load balancers
48
+ hpcloud lb 1 # List the details for load balancers `1`
49
+ hpcloud lb testvol # List the details for load balancers `testvol`
50
+
51
+ Aliases: lb:list
52
+ DESC
53
+ CLI.add_report_options
54
+ CLI.add_common_options
55
+ def lb(*arguments)
56
+ columns = [ "id", "name", "algorithm", "protocol", "port", "status" ]
57
+ cli_command(options) {
58
+ lb = Lbs.new
59
+ if lb.empty?
60
+ @log.display "You currently have no load balancers, use `#{selfname} lb:add <name>` to create one."
61
+ else
62
+ ray = lb.get_array(arguments)
63
+ if ray.empty?
64
+ @log.display "There are no load balancers that match the provided arguments"
65
+ else
66
+ Tableizer.new(options, columns, ray).print
67
+ end
68
+ end
69
+ }
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,114 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ module HP
23
+ module Cloud
24
+ class CLI < Thor
25
+
26
+ map %w(ls containers containers:list) => 'list'
27
+ map 'ls' => 'list'
28
+
29
+ desc 'list [container ...]', "List containers or container contents."
30
+ long_desc <<-DESC
31
+ List containers or the contents of the specified containers. Optionally, an availability zone can be passed.
32
+
33
+ Examples:
34
+ hpcloud list :tain1/sub/ :tain2/sub/ # List the contents of the subdirectory `/sub/` in `tain1` and `tain2`
35
+ hpcloud list :tain1/.*png # List the PNG files in `tain1`
36
+ hpcloud list :tainer # List all the objects in container `tainer`
37
+ hpcloud list # List all containers
38
+ hpcloud list :my_container -z region-a.geo-1 # List all the objects in container `my_container` for availability zone `region-a.geo-1`
39
+
40
+ Aliases: ls
41
+ DESC
42
+ method_option :long,
43
+ :type => :boolean, :aliases => '-l',
44
+ :desc => 'Long listing.'
45
+ method_option :sync,
46
+ :type => :boolean,
47
+ :desc => 'List synchronizations.'
48
+ CLI.add_report_options
49
+ CLI.add_common_options
50
+ def list(*sources)
51
+ cli_command(options) {
52
+ sources = [""] if sources.empty?
53
+ multi = sources.length > 1
54
+ opt = {}
55
+ opt[Columns.option_name] = options[Columns.option_name]
56
+ opt[Tableizer.option_name] = options[Tableizer.option_name]
57
+ if options[:long]
58
+ longlist = true
59
+ else
60
+ if options[:sync]
61
+ longlist = true
62
+ else
63
+ longlist = false
64
+ opt[Tableizer.option_name] = ' ' if opt[Tableizer.option_name].nil?
65
+ end
66
+ end
67
+ sources.each { |name|
68
+ sub_command {
69
+ from = ResourceFactory.create(Connection.instance.storage, name)
70
+ if from.valid_source()
71
+ multi = true unless from.is_container?
72
+ if multi
73
+ keys = [ "lname" ]
74
+ else
75
+ keys = [ "sname" ]
76
+ end
77
+ if longlist == true
78
+ if from.is_object_store?
79
+ if options[:sync]
80
+ keys += [ "count", "size", "synckey", "syncto" ]
81
+ else
82
+ keys += [ "count", "size" ]
83
+ end
84
+ else
85
+ keys += [ "size", "type", "etag", "modified" ]
86
+ end
87
+ end
88
+ tableizer = Tableizer.new(opt, keys)
89
+ from.foreach { |file|
90
+ if options[:sync]
91
+ file.container_head(true)
92
+ end
93
+ tableizer.add(file.to_hash)
94
+ }
95
+ tableizer.print
96
+
97
+
98
+ if tableizer.found == false
99
+ if from.is_object_store?
100
+ @log.error "Cannot find any containers, use `#{selfname} containers:add <name>` to create one.", :not_found
101
+ elsif from.isDirectory() == false
102
+ @log.error "Cannot find resource named '#{name}'.", :not_found
103
+ end
104
+ end
105
+ else
106
+ @log.error from.cstatus
107
+ end
108
+ }
109
+ }
110
+ }
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ module HP
23
+ module Cloud
24
+ class CLI < Thor
25
+
26
+ map 'loc' => 'location'
27
+
28
+ desc 'location <object/container> ...', 'Display the URIs for the specified resources.'
29
+ long_desc <<-DESC
30
+ Display the URI of the specified object or container. Optionally, you can specify an availability zone.
31
+
32
+ Examples:
33
+ hpcloud location :my_container/file.txt # Display the URI for the file `file.txt` that resides in container `my_container`
34
+ hpcloud location :my_container # Display the URI for all objects in container `my_container`
35
+ hpcloud location :my_container/file.txt :my_container/other.txt # Display the URIs for the objects `file.txt` and `other.txt` that reside in container `my_container`
36
+ hpcloud location :my_container/file.txt -z region-a.geo-1 # Display the URI for the file `file.txt` that resides in container `my_container` in availability zone `region-a.geo-1`
37
+
38
+ Aliases: loc
39
+ DESC
40
+ CLI.add_common_options
41
+ def location(name, *names)
42
+ cli_command(options) {
43
+ names = [name] + names
44
+ names.each { |name|
45
+ resource = ResourceFactory.create(Connection.instance.storage, name)
46
+ if resource.head
47
+ @log.display resource.public_url
48
+ else
49
+ @log.error resource.cstatus
50
+ end
51
+ }
52
+ }
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ module HP
23
+ module Cloud
24
+ class CLI < Thor
25
+
26
+ map 'containers:set' => 'metadata:set'
27
+
28
+ desc "metadata:set <name> <attribute> <value>", "Set attributes on a object."
29
+ long_desc <<-DESC
30
+ Set metadata values for containers and objects. Container metadata keys generally begin with 'X-Container-Meta-' and some other special metadata values you can set for containers include:
31
+
32
+ #{RemoteResource.VALID_CONTAINER_META}
33
+
34
+ Object metadata keys generally begin with 'X-Object-Meta-' and some other special metadata values you can set for objects include:
35
+
36
+ #{RemoteResource.VALID_OBJECT_META}
37
+
38
+ Check http://docs.hpcloud.com/api/object-storage/ for up to date changes on the valid keys and values. Unfortunately, the server may positively acknowledge the setting of invalid keys. It may be best to query for the value after setting it to verify the set worked.
39
+
40
+ Examples:
41
+ hpcloud metadata :my_container "X-Container-Meta-Web-Index" index.htm # Set the attribute 'X-Container-Meta-Web-Index' to index.htm
42
+ hpcloud metadata:set :my_container/objay.txt X-Object-Meta-Key metavalue # Set the attribute 'X-Object-Meta-Key' to metavalue
43
+ hpcloud metadata:set :my_container/objay.txt Content-Type text/plain # Set the attribute 'Content-Type' to text/plain
44
+ DESC
45
+ CLI.add_common_options
46
+ define_method "metadata:set" do |name, attribute, value|
47
+ cli_command(options) {
48
+ resource = ResourceFactory.create(Connection.instance.storage, name)
49
+ unless resource.head
50
+ @log.fatal resource.cstatus
51
+ end
52
+ unless resource.valid_metadata_key?(attribute)
53
+ @log.warn "Metadata key appears to be invalid and your request may be ignored"
54
+ end
55
+ resource.set_metadata(attribute, value)
56
+ @log.display "The attribute '#{attribute}' with value '#{value}' was set on object '#{name}'."
57
+ }
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ module HP
23
+ module Cloud
24
+ class CLI < Thor
25
+
26
+ map 'containers:get' => 'metadata'
27
+
28
+ desc "metadata <name> [attribute...]", "Get the metadata value of a container or object."
29
+ long_desc <<-DESC
30
+ Get the various metadata values for an object or container.
31
+
32
+ Examples:
33
+ hpcloud metadata :my_container # List all the attributes
34
+ hpcloud metadata :my_container X-Cdn-Uri # Get the value of the attribute 'X-Cdn-Uri'
35
+ hpcloud metadata :my_container/dir/file.txt # List all the attributes for the object
36
+ DESC
37
+ CLI.add_common_options
38
+ define_method "metadata" do |name, *attributes|
39
+ cli_command(options) {
40
+ resource = ResourceFactory.create(Connection.instance.storage, name)
41
+ unless resource.head
42
+ @log.fatal resource.cstatus
43
+ end
44
+ if attributes.empty?
45
+ hsh = resource.printable_headers
46
+ keyo = hsh.keys.sort
47
+ else
48
+ hsh = resource.headers
49
+ keyo = attributes
50
+ end
51
+ keyo.each{ |k|
52
+ v = hsh[k]
53
+ v = "\n" if v.nil?
54
+ @log.display "#{k} #{v}"
55
+ }
56
+ }
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ #
3
+ # © Copyright 2013 Hewlett-Packard Development Company, L.P.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+
22
+ module HP
23
+ module Cloud
24
+ class CLI < Thor
25
+
26
+ desc 'migrate <source_account> <source> [source ...] <destination>', "Migrate files from a provider described by the source account."
27
+ long_desc <<-DESC
28
+ Migrates files from the designated provider to the HP Cloud destination. This command works similarly to `copy` except the first argument is the source account (for example, `AWS`). The source objects may be containers, objects, or regular expressions.
29
+
30
+ Examples:
31
+ hpcloud migrate aws :aws_tainer :hp_tainer # Migrate objects from the AWS `:aws_tainer` container to the `:hp_tainer` container
32
+ hpcloud migrate rackspace :rackspace1 :rackspace2 :hp_tainer # Migrate objects from the two containers in the Rackspace account to the `:hp_tainer` container
33
+
34
+ DESC
35
+ method_option :mime,
36
+ :type => :string, :aliases => '-m',
37
+ :desc => 'Set the MIME type of the remote object.'
38
+ CLI.add_common_options
39
+ def migrate(source_account, source, *destination)
40
+ cli_command(options) {
41
+ last = destination.pop
42
+ source = [source] + destination
43
+ destination = last
44
+ to = ResourceFactory.create_any(Connection.instance.storage, destination)
45
+ if source.length > 1 && to.isDirectory() == false
46
+ @log.fatal("The destination '#{destination}' for multiple files, must be a directory or container")
47
+ end
48
+ source.each { |name|
49
+ from = ResourceFactory.create_any(Connection.instance.storage(source_account), name)
50
+ from.set_mime_type(options[:mime])
51
+ if to.copy(from)
52
+ @log.display "Migrated #{from.fname} => #{to.fname}"
53
+ else
54
+ @log.fatal to.cstatus
55
+ end
56
+ }
57
+ }
58
+ end
59
+ end
60
+ end
61
+ end