fog-maestrodev 1.19.0.20140212012611 → 1.20.0.20140305101305

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 (513) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +2 -0
  3. data/.travis.yml +10 -0
  4. data/CONTRIBUTORS.md +694 -0
  5. data/Gemfile.1.8.7 +1 -1
  6. data/LICENSE.md +17 -17
  7. data/Rakefile +1 -1
  8. data/benchs/each_provider.sh +6 -0
  9. data/benchs/each_service.sh +6 -0
  10. data/benchs/load_times.rb +6 -0
  11. data/changelog.txt +312 -0
  12. data/fog.gemspec +3 -5
  13. data/lib/fog.rb +1 -0
  14. data/lib/fog/atmos.rb +1 -11
  15. data/lib/fog/atmos/core.rb +11 -0
  16. data/lib/fog/atmos/requests/storage/get_namespace.rb +1 -1
  17. data/lib/fog/atmos/requests/storage/head_namespace.rb +1 -1
  18. data/lib/fog/atmos/storage.rb +1 -1
  19. data/lib/fog/aws.rb +22 -323
  20. data/lib/fog/aws/auto_scaling.rb +1 -1
  21. data/lib/fog/aws/beanstalk.rb +1 -1
  22. data/lib/fog/aws/cdn.rb +1 -1
  23. data/lib/fog/aws/cloud_formation.rb +1 -1
  24. data/lib/fog/aws/cloud_watch.rb +1 -1
  25. data/lib/fog/aws/compute.rb +12 -1
  26. data/lib/fog/aws/core.rb +329 -0
  27. data/lib/fog/aws/data_pipeline.rb +1 -1
  28. data/lib/fog/aws/dns.rb +1 -1
  29. data/lib/fog/aws/dynamodb.rb +1 -1
  30. data/lib/fog/aws/elasticache.rb +10 -3
  31. data/lib/fog/aws/elb.rb +1 -1
  32. data/lib/fog/aws/emr.rb +1 -2
  33. data/lib/fog/aws/glacier.rb +1 -1
  34. data/lib/fog/aws/iam.rb +1 -1
  35. data/lib/fog/aws/models/compute/dhcp_option.rb +2 -2
  36. data/lib/fog/aws/models/compute/flavor.rb +2 -0
  37. data/lib/fog/aws/models/compute/flavors.rb +363 -49
  38. data/lib/fog/aws/models/compute/network_acl.rb +170 -0
  39. data/lib/fog/aws/models/compute/network_acls.rb +138 -0
  40. data/lib/fog/aws/models/compute/server.rb +2 -2
  41. data/lib/fog/aws/models/compute/servers.rb +7 -2
  42. data/lib/fog/aws/models/compute/subnet.rb +2 -2
  43. data/lib/fog/aws/models/elasticache/cluster.rb +6 -0
  44. data/lib/fog/aws/models/elasticache/subnet_group.rb +35 -0
  45. data/lib/fog/aws/models/elasticache/subnet_groups.rb +27 -0
  46. data/lib/fog/aws/models/rds/snapshot.rb +1 -0
  47. data/lib/fog/aws/models/storage/file.rb +1 -1
  48. data/lib/fog/aws/parsers/compute/create_network_acl.rb +28 -0
  49. data/lib/fog/aws/parsers/compute/create_subnet.rb +2 -3
  50. data/lib/fog/aws/parsers/compute/describe_network_acls.rb +42 -0
  51. data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +29 -3
  52. data/lib/fog/aws/parsers/compute/network_acl_parser.rb +105 -0
  53. data/lib/fog/aws/parsers/compute/network_interface_parser.rb +16 -0
  54. data/lib/fog/aws/parsers/compute/replace_network_acl_association.rb +20 -0
  55. data/lib/fog/aws/parsers/compute/run_instances.rb +1 -1
  56. data/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb +2 -2
  57. data/lib/fog/aws/parsers/elasticache/create_cache_subnet_group.rb +38 -0
  58. data/lib/fog/aws/parsers/elasticache/describe_cache_subnet_groups.rb +38 -0
  59. data/lib/fog/aws/parsers/elasticache/subnet_group_parser.rb +38 -0
  60. data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +1 -1
  61. data/lib/fog/aws/parsers/rds/db_parser.rb +6 -0
  62. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +1 -0
  63. data/lib/fog/aws/rds.rb +1 -1
  64. data/lib/fog/aws/redshift.rb +1 -1
  65. data/lib/fog/aws/requests/compute/create_network_acl.rb +105 -0
  66. data/lib/fog/aws/requests/compute/create_network_acl_entry.rb +80 -0
  67. data/lib/fog/aws/requests/compute/create_subnet.rb +14 -4
  68. data/lib/fog/aws/requests/compute/create_vpc.rb +7 -1
  69. data/lib/fog/aws/requests/compute/delete_network_acl.rb +52 -0
  70. data/lib/fog/aws/requests/compute/delete_network_acl_entry.rb +55 -0
  71. data/lib/fog/aws/requests/compute/delete_vpc.rb +4 -0
  72. data/lib/fog/aws/requests/compute/describe_network_acls.rb +104 -0
  73. data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +4 -0
  74. data/lib/fog/aws/requests/compute/disassociate_address.rb +4 -3
  75. data/lib/fog/aws/requests/compute/replace_network_acl_association.rb +66 -0
  76. data/lib/fog/aws/requests/compute/replace_network_acl_entry.rb +81 -0
  77. data/lib/fog/aws/requests/compute/replace_route.rb +84 -0
  78. data/lib/fog/aws/requests/compute/request_spot_instances.rb +8 -0
  79. data/lib/fog/aws/requests/compute/run_instances.rb +23 -3
  80. data/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb +29 -21
  81. data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +18 -11
  82. data/lib/fog/aws/requests/elasticache/create_cache_subnet_group.rb +66 -0
  83. data/lib/fog/aws/requests/elasticache/delete_cache_subnet_group.rb +40 -0
  84. data/lib/fog/aws/requests/elasticache/describe_cache_subnet_groups.rb +63 -0
  85. data/lib/fog/aws/requests/elb/create_load_balancer.rb +3 -2
  86. data/lib/fog/aws/requests/iam/delete_server_certificate.rb +3 -1
  87. data/lib/fog/aws/requests/rds/create_db_instance.rb +2 -0
  88. data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +1 -0
  89. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
  90. data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +2 -0
  91. data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -0
  92. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +18 -0
  93. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +23 -0
  94. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +24 -0
  95. data/lib/fog/aws/requests/storage/put_object.rb +18 -54
  96. data/lib/fog/aws/requests/storage/shared_mock_methods.rb +87 -0
  97. data/lib/fog/aws/requests/storage/upload_part.rb +18 -0
  98. data/lib/fog/aws/ses.rb +1 -1
  99. data/lib/fog/aws/simpledb.rb +1 -1
  100. data/lib/fog/aws/sns.rb +1 -2
  101. data/lib/fog/aws/sqs.rb +5 -4
  102. data/lib/fog/aws/storage.rb +15 -5
  103. data/lib/fog/aws/sts.rb +1 -1
  104. data/lib/fog/bare_metal_cloud.rb +1 -11
  105. data/lib/fog/bare_metal_cloud/compute.rb +1 -1
  106. data/lib/fog/bare_metal_cloud/core.rb +11 -0
  107. data/lib/fog/bin.rb +1 -0
  108. data/lib/fog/bin/rage4.rb +31 -0
  109. data/lib/fog/bluebox.rb +3 -13
  110. data/lib/fog/bluebox/blb.rb +2 -2
  111. data/lib/fog/bluebox/compute.rb +1 -1
  112. data/lib/fog/bluebox/core.rb +13 -0
  113. data/lib/fog/bluebox/dns.rb +2 -2
  114. data/lib/fog/bluebox/models/compute/server.rb +1 -1
  115. data/lib/fog/brightbox.rb +1 -10
  116. data/lib/fog/brightbox/compute.rb +20 -1
  117. data/lib/fog/brightbox/core.rb +10 -0
  118. data/lib/fog/brightbox/models/compute/cloud_ip.rb +5 -0
  119. data/lib/fog/brightbox/models/compute/database_server.rb +91 -0
  120. data/lib/fog/brightbox/models/compute/database_servers.rb +28 -0
  121. data/lib/fog/brightbox/models/compute/database_snapshot.rb +52 -0
  122. data/lib/fog/brightbox/models/compute/database_snapshots.rb +24 -0
  123. data/lib/fog/brightbox/models/compute/database_type.rb +19 -0
  124. data/lib/fog/brightbox/models/compute/database_types.rb +26 -0
  125. data/lib/fog/brightbox/requests/compute/create_database_server.rb +25 -0
  126. data/lib/fog/brightbox/requests/compute/delete_database_server.rb +26 -0
  127. data/lib/fog/brightbox/requests/compute/delete_database_snapshot.rb +26 -0
  128. data/lib/fog/brightbox/requests/compute/get_database_server.rb +19 -0
  129. data/lib/fog/brightbox/requests/compute/get_database_snapshot.rb +19 -0
  130. data/lib/fog/brightbox/requests/compute/get_database_type.rb +21 -0
  131. data/lib/fog/brightbox/requests/compute/list_database_servers.rb +17 -0
  132. data/lib/fog/brightbox/requests/compute/list_database_snapshots.rb +17 -0
  133. data/lib/fog/brightbox/requests/compute/list_database_types.rb +19 -0
  134. data/lib/fog/brightbox/requests/compute/reset_password_database_server.rb +19 -0
  135. data/lib/fog/brightbox/requests/compute/snapshot_database_server.rb +19 -0
  136. data/lib/fog/brightbox/requests/compute/update_database_server.rb +25 -0
  137. data/lib/fog/brightbox/requests/compute/update_database_snapshot.rb +26 -0
  138. data/lib/fog/clodo.rb +1 -34
  139. data/lib/fog/clodo/compute.rb +2 -0
  140. data/lib/fog/clodo/core.rb +34 -0
  141. data/lib/fog/clodo/models/compute/server.rb +2 -2
  142. data/lib/fog/cloudsigma.rb +1 -9
  143. data/lib/fog/cloudsigma/compute.rb +2 -2
  144. data/lib/fog/cloudsigma/core.rb +9 -0
  145. data/lib/fog/cloudstack.rb +1 -40
  146. data/lib/fog/cloudstack/compute.rb +1 -1
  147. data/lib/fog/cloudstack/core.rb +40 -0
  148. data/lib/fog/cloudstack/models/compute/server.rb +3 -0
  149. data/lib/fog/compute/models/server.rb +33 -7
  150. data/lib/fog/core/collection.rb +1 -3
  151. data/lib/fog/core/errors.rb +2 -0
  152. data/lib/fog/core/hmac.rb +3 -16
  153. data/lib/fog/core/logger.rb +3 -3
  154. data/lib/fog/core/provider.rb +1 -2
  155. data/lib/fog/digitalocean.rb +1 -9
  156. data/lib/fog/digitalocean/compute.rb +1 -1
  157. data/lib/fog/digitalocean/core.rb +9 -0
  158. data/lib/fog/digitalocean/models/compute/server.rb +3 -2
  159. data/lib/fog/digitalocean/models/compute/servers.rb +23 -4
  160. data/lib/fog/digitalocean/requests/compute/create_server.rb +2 -1
  161. data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -1
  162. data/lib/fog/dnsimple.rb +1 -11
  163. data/lib/fog/dnsimple/core.rb +11 -0
  164. data/lib/fog/dnsimple/dns.rb +5 -2
  165. data/lib/fog/dnsimple/models/dns/record.rb +3 -3
  166. data/lib/fog/dnsimple/requests/dns/create_domain.rb +26 -22
  167. data/lib/fog/dnsimple/requests/dns/create_record.rb +21 -24
  168. data/lib/fog/dnsimple/requests/dns/delete_domain.rb +7 -6
  169. data/lib/fog/dnsimple/requests/dns/delete_record.rb +7 -5
  170. data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -18
  171. data/lib/fog/dnsimple/requests/dns/get_record.rb +11 -17
  172. data/lib/fog/dnsimple/requests/dns/list_domains.rb +7 -15
  173. data/lib/fog/dnsimple/requests/dns/list_records.rb +10 -15
  174. data/lib/fog/dnsimple/requests/dns/update_record.rb +14 -19
  175. data/lib/fog/dnsmadeeasy.rb +1 -11
  176. data/lib/fog/dnsmadeeasy/core.rb +11 -0
  177. data/lib/fog/dnsmadeeasy/dns.rb +1 -1
  178. data/lib/fog/dreamhost.rb +1 -11
  179. data/lib/fog/dreamhost/core.rb +11 -0
  180. data/lib/fog/dreamhost/dns.rb +1 -1
  181. data/lib/fog/dynect.rb +1 -26
  182. data/lib/fog/dynect/core.rb +26 -0
  183. data/lib/fog/dynect/dns.rb +1 -1
  184. data/lib/fog/dynect/requests/dns/put_record.rb +5 -4
  185. data/lib/fog/dynect/requests/dns/put_zone.rb +5 -4
  186. data/lib/fog/ecloud.rb +1 -31
  187. data/lib/fog/ecloud/compute.rb +1 -0
  188. data/lib/fog/ecloud/core.rb +31 -0
  189. data/lib/fog/glesys.rb +1 -11
  190. data/lib/fog/glesys/compute.rb +6 -4
  191. data/lib/fog/glesys/core.rb +11 -0
  192. data/lib/fog/glesys/models/compute/server.rb +2 -2
  193. data/lib/fog/go_grid.rb +1 -11
  194. data/lib/fog/go_grid/compute.rb +1 -1
  195. data/lib/fog/go_grid/core.rb +11 -0
  196. data/lib/fog/go_grid/models/compute/server.rb +2 -2
  197. data/lib/fog/google.rb +2 -24
  198. data/lib/fog/google/README.md +8 -5
  199. data/lib/fog/google/compute.rb +10 -3
  200. data/lib/fog/google/core.rb +24 -0
  201. data/lib/fog/google/models/compute/flavors.rb +1 -1
  202. data/lib/fog/google/models/compute/images.rb +2 -0
  203. data/lib/fog/google/models/compute/servers.rb +1 -1
  204. data/lib/fog/google/models/compute/zones.rb +1 -1
  205. data/lib/fog/google/requests/compute/attach_disk.rb +29 -0
  206. data/lib/fog/google/requests/compute/delete_address.rb +31 -0
  207. data/lib/fog/google/requests/compute/delete_snapshot.rb +35 -0
  208. data/lib/fog/google/requests/compute/detach_disk.rb +29 -0
  209. data/lib/fog/google/requests/compute/get_address.rb +31 -0
  210. data/lib/fog/google/requests/compute/insert_address.rb +30 -0
  211. data/lib/fog/google/requests/compute/insert_firewall.rb +6 -9
  212. data/lib/fog/google/requests/compute/list_addresses.rb +28 -0
  213. data/lib/fog/google/requests/compute/set_metadata.rb +4 -5
  214. data/lib/fog/google/requests/compute/set_tags.rb +33 -0
  215. data/lib/fog/google/requests/storage/get_bucket_acl.rb +2 -2
  216. data/lib/fog/google/requests/storage/put_bucket_acl.rb +39 -48
  217. data/lib/fog/google/requests/storage/put_object_acl.rb +55 -0
  218. data/lib/fog/google/storage.rb +2 -1
  219. data/lib/fog/hp.rb +9 -352
  220. data/lib/fog/hp/block_storage.rb +1 -1
  221. data/lib/fog/hp/block_storage_v2.rb +1 -1
  222. data/lib/fog/hp/cdn.rb +1 -1
  223. data/lib/fog/hp/compute.rb +1 -1
  224. data/lib/fog/hp/compute_v2.rb +1 -1
  225. data/lib/fog/hp/core.rb +352 -0
  226. data/lib/fog/hp/dns.rb +1 -1
  227. data/lib/fog/hp/lb.rb +1 -1
  228. data/lib/fog/hp/models/compute/server.rb +2 -2
  229. data/lib/fog/hp/models/compute_v2/server.rb +2 -2
  230. data/lib/fog/hp/models/storage/directory.rb +12 -6
  231. data/lib/fog/hp/network.rb +1 -1
  232. data/lib/fog/hp/storage.rb +1 -1
  233. data/lib/fog/ibm.rb +2 -176
  234. data/lib/fog/ibm/compute.rb +1 -1
  235. data/lib/fog/ibm/core.rb +176 -0
  236. data/lib/fog/ibm/storage.rb +1 -1
  237. data/lib/fog/internet_archive.rb +1 -292
  238. data/lib/fog/internet_archive/core.rb +292 -0
  239. data/lib/fog/internet_archive/models/storage/file.rb +1 -1
  240. data/lib/fog/internet_archive/storage.rb +1 -1
  241. data/lib/fog/joyent.rb +2 -10
  242. data/lib/fog/joyent/compute.rb +1 -1
  243. data/lib/fog/joyent/core.rb +10 -0
  244. data/lib/fog/joyent/errors.rb +1 -0
  245. data/lib/fog/libvirt.rb +1 -11
  246. data/lib/fog/libvirt/compute.rb +1 -1
  247. data/lib/fog/libvirt/core.rb +11 -0
  248. data/lib/fog/libvirt/models/compute/README.md +1 -1
  249. data/lib/fog/libvirt/models/compute/server.rb +6 -6
  250. data/lib/fog/libvirt/models/compute/templates/volume.xml.erb +12 -0
  251. data/lib/fog/libvirt/models/compute/volume.rb +1 -0
  252. data/lib/fog/linode.rb +2 -10
  253. data/lib/fog/linode/compute.rb +1 -1
  254. data/lib/fog/linode/core.rb +10 -0
  255. data/lib/fog/linode/dns.rb +1 -1
  256. data/lib/fog/local.rb +1 -11
  257. data/lib/fog/local/core.rb +11 -0
  258. data/lib/fog/local/storage.rb +1 -1
  259. data/lib/fog/ninefold.rb +1 -12
  260. data/lib/fog/ninefold/compute.rb +1 -1
  261. data/lib/fog/ninefold/core.rb +12 -0
  262. data/lib/fog/openstack.rb +8 -249
  263. data/lib/fog/openstack/compute.rb +3 -1
  264. data/lib/fog/openstack/core.rb +249 -0
  265. data/lib/fog/openstack/docs/compute.md +681 -0
  266. data/lib/fog/openstack/docs/getting_started.md +81 -0
  267. data/lib/fog/openstack/docs/storage.md +441 -0
  268. data/lib/fog/openstack/identity.rb +1 -1
  269. data/lib/fog/openstack/image.rb +1 -1
  270. data/lib/fog/openstack/metering.rb +1 -1
  271. data/lib/fog/openstack/models/compute/server.rb +13 -5
  272. data/lib/fog/openstack/models/compute/servers.rb +13 -0
  273. data/lib/fog/openstack/models/network/network.rb +9 -11
  274. data/lib/fog/openstack/models/network/security_group.rb +32 -0
  275. data/lib/fog/openstack/models/network/security_group_rule.rb +33 -0
  276. data/lib/fog/openstack/models/network/security_group_rules.rb +33 -0
  277. data/lib/fog/openstack/models/network/security_groups.rb +34 -0
  278. data/lib/fog/openstack/models/storage/directories.rb +1 -0
  279. data/lib/fog/openstack/network.rb +19 -1
  280. data/lib/fog/openstack/orchestration.rb +1 -1
  281. data/lib/fog/openstack/requests/compute/add_security_group.rb +24 -0
  282. data/lib/fog/openstack/requests/compute/create_flavor.rb +1 -1
  283. data/lib/fog/openstack/requests/compute/create_server.rb +3 -3
  284. data/lib/fog/openstack/requests/compute/remove_security_group.rb +24 -0
  285. data/lib/fog/openstack/requests/image/update_image_members.rb +2 -2
  286. data/lib/fog/openstack/requests/network/create_security_group.rb +94 -0
  287. data/lib/fog/openstack/requests/network/create_security_group_rule.rb +79 -0
  288. data/lib/fog/openstack/requests/network/delete_security_group.rb +32 -0
  289. data/lib/fog/openstack/requests/network/delete_security_group_rule.rb +36 -0
  290. data/lib/fog/openstack/requests/network/get_security_group.rb +52 -0
  291. data/lib/fog/openstack/requests/network/get_security_group_rule.rb +47 -0
  292. data/lib/fog/openstack/requests/network/list_networks.rb +0 -1
  293. data/lib/fog/openstack/requests/network/list_security_group_rules.rb +52 -0
  294. data/lib/fog/openstack/requests/network/list_security_groups.rb +57 -0
  295. data/lib/fog/openstack/storage.rb +2 -2
  296. data/lib/fog/openstack/volume.rb +1 -1
  297. data/lib/fog/openvz.rb +1 -9
  298. data/lib/fog/openvz/compute.rb +1 -1
  299. data/lib/fog/openvz/core.rb +9 -0
  300. data/lib/fog/ovirt.rb +1 -17
  301. data/lib/fog/ovirt/compute.rb +2 -0
  302. data/lib/fog/ovirt/core.rb +17 -0
  303. data/lib/fog/rackspace.rb +12 -145
  304. data/lib/fog/rackspace/auto_scale.rb +1 -1
  305. data/lib/fog/rackspace/block_storage.rb +5 -1
  306. data/lib/fog/rackspace/cdn.rb +22 -16
  307. data/lib/fog/rackspace/compute.rb +1 -1
  308. data/lib/fog/rackspace/compute_v2.rb +6 -2
  309. data/lib/fog/rackspace/core.rb +145 -0
  310. data/lib/fog/rackspace/databases.rb +5 -1
  311. data/lib/fog/rackspace/dns.rb +1 -1
  312. data/lib/fog/rackspace/docs/compute_v2.md +2 -10
  313. data/lib/fog/rackspace/errors.rb +1 -1
  314. data/lib/fog/rackspace/examples/storage/upload_file.rb +1 -1
  315. data/lib/fog/rackspace/identity.rb +26 -16
  316. data/lib/fog/rackspace/load_balancers.rb +7 -1
  317. data/lib/fog/rackspace/mock_data.rb +17 -0
  318. data/lib/fog/rackspace/models/compute/server.rb +2 -2
  319. data/lib/fog/rackspace/models/compute_v2/key_pair.rb +1 -1
  320. data/lib/fog/rackspace/models/compute_v2/server.rb +42 -5
  321. data/lib/fog/rackspace/models/monitoring/entities.rb +1 -1
  322. data/lib/fog/rackspace/models/queues/claim.rb +9 -1
  323. data/lib/fog/rackspace/models/storage/directory.rb +5 -2
  324. data/lib/fog/rackspace/models/storage/file.rb +14 -0
  325. data/lib/fog/rackspace/monitoring.rb +11 -2
  326. data/lib/fog/rackspace/queues.rb +318 -34
  327. data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +16 -5
  328. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +7 -1
  329. data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +1 -1
  330. data/lib/fog/rackspace/requests/identity/create_token.rb +192 -0
  331. data/lib/fog/rackspace/requests/identity/list_tenants.rb +23 -0
  332. data/lib/fog/rackspace/requests/monitoring/get_agent.rb +45 -0
  333. data/lib/fog/rackspace/requests/monitoring/get_cpus_info.rb +63 -0
  334. data/lib/fog/rackspace/requests/monitoring/get_disks_info.rb +56 -0
  335. data/lib/fog/rackspace/requests/monitoring/get_filesystems_info.rb +64 -0
  336. data/lib/fog/rackspace/requests/monitoring/get_logged_in_user_info.rb +58 -0
  337. data/lib/fog/rackspace/requests/monitoring/get_memory_info.rb +59 -0
  338. data/lib/fog/rackspace/requests/monitoring/get_network_interfaces_info.rb +91 -0
  339. data/lib/fog/rackspace/requests/monitoring/get_processes_info.rb +72 -0
  340. data/lib/fog/rackspace/requests/monitoring/get_system_info.rb +53 -0
  341. data/lib/fog/rackspace/requests/monitoring/list_agents.rb +62 -0
  342. data/lib/fog/rackspace/requests/queues/create_claim.rb +37 -0
  343. data/lib/fog/rackspace/requests/queues/create_message.rb +23 -0
  344. data/lib/fog/rackspace/requests/queues/create_queue.rb +15 -1
  345. data/lib/fog/rackspace/requests/queues/delete_claim.rb +18 -0
  346. data/lib/fog/rackspace/requests/queues/delete_message.rb +34 -0
  347. data/lib/fog/rackspace/requests/queues/delete_queue.rb +12 -0
  348. data/lib/fog/rackspace/requests/queues/get_claim.rb +15 -0
  349. data/lib/fog/rackspace/requests/queues/get_message.rb +17 -0
  350. data/lib/fog/rackspace/requests/queues/get_queue.rb +14 -1
  351. data/lib/fog/rackspace/requests/queues/get_queue_stats.rb +36 -0
  352. data/lib/fog/rackspace/requests/queues/list_messages.rb +33 -0
  353. data/lib/fog/rackspace/requests/queues/list_queues.rb +35 -1
  354. data/lib/fog/rackspace/requests/queues/update_claim.rb +17 -0
  355. data/lib/fog/rackspace/requests/storage/delete_container.rb +15 -0
  356. data/lib/fog/rackspace/requests/storage/delete_multiple_objects.rb +57 -0
  357. data/lib/fog/rackspace/requests/storage/delete_object.rb +14 -0
  358. data/lib/fog/rackspace/requests/storage/delete_static_large_object.rb +33 -0
  359. data/lib/fog/rackspace/requests/storage/extract_archive.rb +39 -0
  360. data/lib/fog/rackspace/requests/storage/get_container.rb +25 -0
  361. data/lib/fog/rackspace/requests/storage/get_containers.rb +17 -0
  362. data/lib/fog/rackspace/requests/storage/get_object.rb +26 -0
  363. data/lib/fog/rackspace/requests/storage/get_object_http_url.rb +9 -2
  364. data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +8 -1
  365. data/lib/fog/rackspace/requests/storage/head_container.rb +12 -0
  366. data/lib/fog/rackspace/requests/storage/head_containers.rb +19 -0
  367. data/lib/fog/rackspace/requests/storage/head_object.rb +26 -0
  368. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +10 -0
  369. data/lib/fog/rackspace/requests/storage/put_container.rb +16 -0
  370. data/lib/fog/rackspace/requests/storage/put_dynamic_obj_manifest.rb +23 -0
  371. data/lib/fog/rackspace/requests/storage/put_object.rb +39 -0
  372. data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +9 -1
  373. data/lib/fog/rackspace/requests/storage/put_static_obj_manifest.rb +48 -0
  374. data/lib/fog/rackspace/storage.rb +320 -67
  375. data/lib/fog/rage4.rb +2 -0
  376. data/lib/fog/rage4/core.rb +11 -0
  377. data/lib/fog/rage4/dns.rb +74 -0
  378. data/lib/fog/rage4/models/dns/record.rb +77 -0
  379. data/lib/fog/rage4/models/dns/records.rb +42 -0
  380. data/lib/fog/rage4/models/dns/zone.rb +46 -0
  381. data/lib/fog/rage4/models/dns/zones.rb +34 -0
  382. data/lib/fog/rage4/requests/dns/create_domain.rb +33 -0
  383. data/lib/fog/rage4/requests/dns/create_domain_vanity.rb +34 -0
  384. data/lib/fog/rage4/requests/dns/create_record.rb +65 -0
  385. data/lib/fog/rage4/requests/dns/create_reverse_domain_4.rb +32 -0
  386. data/lib/fog/rage4/requests/dns/delete_domain.rb +28 -0
  387. data/lib/fog/rage4/requests/dns/delete_record.rb +28 -0
  388. data/lib/fog/rage4/requests/dns/get_domain.rb +30 -0
  389. data/lib/fog/rage4/requests/dns/get_domain_by_name.rb +30 -0
  390. data/lib/fog/rage4/requests/dns/list_domains.rb +41 -0
  391. data/lib/fog/rage4/requests/dns/list_geo_regions.rb +27 -0
  392. data/lib/fog/rage4/requests/dns/list_record_types.rb +26 -0
  393. data/lib/fog/rage4/requests/dns/list_records.rb +31 -0
  394. data/lib/fog/rage4/requests/dns/set_record_failover.rb +29 -0
  395. data/lib/fog/rage4/requests/dns/show_current_usage.rb +25 -0
  396. data/lib/fog/rage4/requests/dns/show_global_usage.rb +25 -0
  397. data/lib/fog/rage4/requests/dns/update_domain.rb +43 -0
  398. data/lib/fog/rage4/requests/dns/update_record.rb +64 -0
  399. data/lib/fog/riakcs.rb +2 -122
  400. data/lib/fog/riakcs/core.rb +122 -0
  401. data/lib/fog/riakcs/provisioning.rb +1 -1
  402. data/lib/fog/riakcs/usage.rb +1 -1
  403. data/lib/fog/serverlove.rb +1 -10
  404. data/lib/fog/serverlove/compute.rb +2 -0
  405. data/lib/fog/serverlove/core.rb +10 -0
  406. data/lib/fog/storm_on_demand.rb +9 -20
  407. data/lib/fog/storm_on_demand/account.rb +1 -1
  408. data/lib/fog/storm_on_demand/billing.rb +1 -1
  409. data/lib/fog/storm_on_demand/compute.rb +1 -1
  410. data/lib/fog/storm_on_demand/core.rb +20 -0
  411. data/lib/fog/storm_on_demand/dns.rb +1 -1
  412. data/lib/fog/storm_on_demand/monitoring.rb +1 -1
  413. data/lib/fog/storm_on_demand/network.rb +1 -1
  414. data/lib/fog/storm_on_demand/shared.rb +0 -1
  415. data/lib/fog/storm_on_demand/storage.rb +1 -1
  416. data/lib/fog/storm_on_demand/support.rb +1 -1
  417. data/lib/fog/storm_on_demand/vpn.rb +1 -1
  418. data/lib/fog/vcloud.rb +1 -11
  419. data/lib/fog/vcloud/compute.rb +1 -1
  420. data/lib/fog/vcloud/core.rb +11 -0
  421. data/lib/fog/vcloud_director.rb +1 -67
  422. data/lib/fog/vcloud_director/compute.rb +1 -1
  423. data/lib/fog/vcloud_director/core.rb +67 -0
  424. data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +1 -1
  425. data/lib/fog/version.rb +1 -1
  426. data/lib/fog/vmfusion.rb +1 -11
  427. data/lib/fog/vmfusion/compute.rb +1 -1
  428. data/lib/fog/vmfusion/core.rb +11 -0
  429. data/lib/fog/vmfusion/models/compute/server.rb +5 -5
  430. data/lib/fog/voxel.rb +1 -16
  431. data/lib/fog/voxel/compute.rb +1 -1
  432. data/lib/fog/voxel/core.rb +16 -0
  433. data/lib/fog/vsphere.rb +1 -17
  434. data/lib/fog/vsphere/compute.rb +1 -0
  435. data/lib/fog/vsphere/core.rb +17 -0
  436. data/lib/fog/xenserver.rb +1 -83
  437. data/lib/fog/xenserver/compute.rb +1 -1
  438. data/lib/fog/xenserver/core.rb +83 -0
  439. data/lib/fog/xenserver/models/compute/storage_manager.rb +1 -1
  440. data/lib/fog/zerigo.rb +1 -11
  441. data/lib/fog/zerigo/core.rb +11 -0
  442. data/lib/fog/zerigo/dns.rb +1 -1
  443. data/lib/tasks/changelog_task.rb +2 -0
  444. data/tests/aws/models/compute/network_acl_tests.rb +109 -0
  445. data/tests/aws/models/compute/network_acls_tests.rb +7 -0
  446. data/tests/aws/models/elasticache/subnet_groups_tests.rb +44 -0
  447. data/tests/aws/requests/compute/network_acl_tests.rb +86 -0
  448. data/tests/aws/requests/compute/route_tests.rb +64 -3
  449. data/tests/aws/requests/compute/subnet_tests.rb +18 -11
  450. data/tests/aws/requests/elasticache/helper.rb +19 -0
  451. data/tests/aws/requests/elasticache/subnet_group_tests.rb +52 -0
  452. data/tests/aws/requests/iam/server_certificate_tests.rb +3 -0
  453. data/tests/aws/requests/rds/subnet_groups_tests.rb +1 -1
  454. data/tests/aws/requests/storage/multipart_upload_tests.rb +3 -14
  455. data/tests/brightbox/compute/schema.rb +118 -2
  456. data/tests/brightbox/helper.rb +1 -0
  457. data/tests/brightbox/models/compute/cloud_ip_tests.rb +32 -0
  458. data/tests/brightbox/models/compute/database_server_tests.rb +66 -0
  459. data/tests/brightbox/models/compute/database_snapshot_tests.rb +26 -0
  460. data/tests/brightbox/models/compute/database_type_tests.rb +27 -0
  461. data/tests/brightbox/requests/compute/database_server_tests.rb +54 -0
  462. data/tests/brightbox/requests/compute/database_snapsnot_tests.rb +47 -0
  463. data/tests/brightbox/requests/compute/database_type_tests.rb +17 -0
  464. data/tests/compute/models/server_tests.rb +20 -2
  465. data/tests/digitalocean/helper.rb +9 -4
  466. data/tests/digitalocean/models/compute/server_tests.rb +1 -0
  467. data/tests/digitalocean/models/compute/servers_tests.rb +19 -4
  468. data/tests/digitalocean/requests/compute/create_server_tests.rb +13 -6
  469. data/tests/digitalocean/requests/compute/list_servers_tests.rb +2 -1
  470. data/tests/dns/helper.rb +3 -0
  471. data/tests/dns/models/record_tests.rb +1 -1
  472. data/tests/dns/models/records_tests.rb +1 -1
  473. data/tests/dns/models/zone_tests.rb +1 -1
  474. data/tests/dns/models/zones_tests.rb +1 -1
  475. data/tests/helper.rb +7 -1
  476. data/tests/helpers/compute/server_helper.rb +1 -0
  477. data/tests/helpers/compute/servers_helper.rb +1 -0
  478. data/tests/openstack/models/network/security_group_rule_tests.rb +27 -0
  479. data/tests/openstack/models/network/security_group_rules_tests.rb +25 -0
  480. data/tests/openstack/models/network/security_group_tests.rb +17 -0
  481. data/tests/openstack/models/network/security_groups_tests.rb +16 -0
  482. data/tests/openstack/requests/compute/helper.rb +5 -0
  483. data/tests/openstack/requests/compute/server_tests.rb +11 -0
  484. data/tests/openstack/requests/network/security_group_rule_tests.rb +58 -0
  485. data/tests/openstack/requests/network/security_group_tests.rb +43 -0
  486. data/tests/rackspace/identity_tests.rb +0 -4
  487. data/tests/rackspace/models/compute_v2/server_tests.rb +36 -8
  488. data/tests/rackspace/models/queues/claim_tests.rb +1 -3
  489. data/tests/rackspace/models/queues/claims_tests.rb +1 -3
  490. data/tests/rackspace/models/queues/message_tests.rb +1 -3
  491. data/tests/rackspace/models/queues/messages_tests.rb +1 -3
  492. data/tests/rackspace/models/queues/queue_tests.rb +1 -3
  493. data/tests/rackspace/models/queues/queues_tests.rb +1 -3
  494. data/tests/rackspace/models/storage/account_tests.rb +0 -2
  495. data/tests/rackspace/models/storage/directories_tests.rb +0 -3
  496. data/tests/rackspace/models/storage/directory_tests.rb +2 -5
  497. data/tests/rackspace/models/storage/file_tests.rb +49 -2
  498. data/tests/rackspace/models/storage/files_tests.rb +1 -4
  499. data/tests/rackspace/queues_tests.rb +0 -13
  500. data/tests/rackspace/requests/identity/token_tests.rb +1 -3
  501. data/tests/rackspace/requests/monitoring/agent_tests.rb +42 -0
  502. data/tests/rackspace/requests/queues/claim_tests.rb +1 -3
  503. data/tests/rackspace/requests/queues/messages_tests.rb +0 -6
  504. data/tests/rackspace/requests/queues/queues_tests.rb +0 -5
  505. data/tests/rackspace/requests/storage/account_tests.rb +0 -1
  506. data/tests/rackspace/requests/storage/container_tests.rb +7 -11
  507. data/tests/rackspace/requests/storage/large_object_tests.rb +33 -43
  508. data/tests/rackspace/requests/storage/object_tests.rb +2 -27
  509. data/tests/rackspace/storage_tests.rb +9 -15
  510. data/tests/rage4/requests/dns/dns_tests.rb +241 -0
  511. data/tests/vcloud/requests/compute/disk_configure_tests.rb +0 -8
  512. metadata +190 -33
  513. data/lib/fog/brightbox/requests/compute/destroy_user_collaboration.rb +0 -21
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module Compute
3
+ class Google
4
+
5
+ class Mock
6
+
7
+ def list_addresses(region_name)
8
+ Fog::Mock.not_implemented
9
+ end
10
+
11
+ end
12
+
13
+ class Real
14
+
15
+ def list_addresses(region_name)
16
+ api_method = @compute.addresses.list
17
+ parameters = {
18
+ 'project' => @project,
19
+ 'region' => region_name
20
+ }
21
+
22
+ result = self.build_result(api_method, parameters)
23
+ response = self.build_response(result)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -13,11 +13,11 @@ module Fog
13
13
  class Real
14
14
 
15
15
  def set_metadata(instance, zone, metadata={})
16
- api_method = @compute.instance.set_metadata
16
+ api_method = @compute.instances.set_metadata
17
17
  parameters = {
18
18
  'project' => @project,
19
19
  'instance' => instance,
20
- 'zone' => zone,
20
+ 'zone' => zone
21
21
  }
22
22
  body_object = {
23
23
  "items" => metadata.to_a.map {|pair| { :key => pair[0], :value => pair[1] } }
@@ -25,12 +25,11 @@ module Fog
25
25
  result = self.build_result(
26
26
  api_method,
27
27
  parameters,
28
- body_object=body_object)
28
+ body_object=body_object
29
+ )
29
30
  response = self.build_response(result)
30
31
  end
31
-
32
32
  end
33
-
34
33
  end
35
34
  end
36
35
  end
@@ -0,0 +1,33 @@
1
+ module Fog
2
+ module Compute
3
+ class Google
4
+
5
+ class Mock
6
+
7
+ def set_tags(instance, zone, tags=[])
8
+ Fog::Mock.not_implemented
9
+ end
10
+
11
+ end
12
+
13
+ class Real
14
+
15
+ def set_tags(instance, zone, tags=[])
16
+ api_method = @compute.instances.set_tags
17
+ parameters = {
18
+ 'project' => @project,
19
+ 'instance' => instance,
20
+ 'zone' => zone
21
+ }
22
+ body_object = { "items" => tags }
23
+ result = self.build_result(
24
+ api_method,
25
+ parameters,
26
+ body_object=body_object
27
+ )
28
+ response = self.build_response(result)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,6 +1,6 @@
1
1
  module Fog
2
- module Google
3
- class Storage
2
+ module Storage
3
+ class Google
4
4
  class Real
5
5
 
6
6
  require 'fog/google/parsers/storage/access_control_list'
@@ -1,60 +1,27 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Google
4
+
5
+ class Mock
6
+ def put_bucket_acl(bucket_name, acl)
7
+ Fog::Mock.not_implemented
8
+ end
9
+ end
10
+
4
11
  class Real
5
12
 
6
13
  # Change access control list for an Google Storage bucket
7
- #
8
- # ==== Parameters
9
- # * bucket_name<~String> - name of bucket to modify
10
- # * acl<~Hash>:
11
- # * Owner<~Hash>:
12
- # * ID<~String>: id of owner
13
- # * DisplayName<~String>: display name of owner
14
- # * AccessControlList<~Array>:
15
- # * scope<~Hash>:
16
- # * 'type'<~String> - 'UserById'
17
- # * 'ID'<~String> - Id of grantee
18
- # or
19
- # * 'type'<~String> - 'UserByEmail'
20
- # * 'EmailAddress'<~String> - Email address of grantee
21
- # or
22
- # * 'type'<~String> - type of user to grant permission to
23
- # * Permission<~String> - Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
24
14
  def put_bucket_acl(bucket_name, acl)
25
- data =
26
- <<-DATA
27
- <AccessControlPolicy>
15
+
16
+ data = <<-DATA
17
+ <AccessControlList>
28
18
  <Owner>
29
- <ID>#{acl['Owner']['ID']}</ID>
30
- <DisplayName>#{acl['Owner']['DisplayName']}</DisplayName>
19
+ #{tag('ID', acl['Owner']['ID'])}
31
20
  </Owner>
32
- <AccessControlList>
33
- DATA
34
-
35
- acl['AccessControlList'].each do |grant|
36
- data << " <Grant>"
37
- type = case grant['Grantee'].keys.sort
38
- when ['DisplayName', 'ID']
39
- 'CanonicalUser'
40
- when ['EmailAddress']
41
- 'AmazonCustomerByEmail'
42
- when ['URI']
43
- 'Group'
44
- end
45
- data << " <Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"#{type}\">"
46
- for key, value in grant['Grantee']
47
- data << " <#{key}>#{value}</#{key}>"
48
- end
49
- data << " </Grantee>"
50
- data << " <Permission>#{grant['Permission']}</Permission>"
51
- data << " </Grant>"
52
- end
53
-
54
- data <<
55
- <<-DATA
56
- </AccessControlList>
57
- </AccessControlPolicy>
21
+ <Entries>
22
+ #{entries_list(acl['AccessControlList'])}
23
+ </Entries>
24
+ </AccessControlList>
58
25
  DATA
59
26
 
60
27
  request({
@@ -67,7 +34,31 @@ DATA
67
34
  })
68
35
  end
69
36
 
37
+
38
+ private
39
+
40
+ def tag(name, value)
41
+ "<#{name}>#{value}</#{name}>"
42
+ end
43
+
44
+ def scope_tag(scope)
45
+ if %w(AllUsers AllAuthenticatedUsers).include?(scope['type'])
46
+ "<Scope type='#{scope['type']}'/>"
47
+ else
48
+ "<Scope type='#{scope['type']}'>" +
49
+ scope.to_a.select { |pair| pair[0] != 'type' }.map { |pair| tag(pair[0], pair[1]) }.join("\n") +
50
+ "</Scope>"
51
+ end
52
+ end
53
+
54
+ def entries_list(access_control_list)
55
+ access_control_list.map do |entry|
56
+ tag('Entry', scope_tag(entry['Scope']) + tag('Permission', entry['Permission']))
57
+ end.join("\n")
58
+ end
59
+
70
60
  end
61
+
71
62
  end
72
63
  end
73
64
  end
@@ -0,0 +1,55 @@
1
+ module Fog
2
+ module Storage
3
+ class Google
4
+ class Real
5
+
6
+ # TODO: move this methods to helper to use them with put_bucket_acl request
7
+ def tag(name, value)
8
+ "<#{name}>#{value}</#{name}>"
9
+ end
10
+
11
+ def scope_tag(scope)
12
+ if %w(AllUsers AllAuthenticatedUsers).include?(scope['type'])
13
+ "<Scope type='#{scope['type']}'/>"
14
+ else
15
+ "<Scope type='#{scope['type']}'>" +
16
+ scope.to_a.select {|pair| pair[0] != 'type'}.map { |pair| tag(pair[0], pair[1]) }.join("\n") +
17
+ "</Scope>"
18
+ end
19
+ end
20
+
21
+ def entries_list(access_control_list)
22
+ access_control_list.map do |entry|
23
+ tag('Entry', scope_tag(entry['Scope']) + tag('Permission', entry['Permission']))
24
+ end.join("\n")
25
+ end
26
+
27
+ def put_object_acl(bucket_name, object_name, acl)
28
+
29
+ data = <<-DATA
30
+ <AccessControlList>
31
+ <Owner>
32
+ #{tag('ID', acl['Owner']['ID'])}
33
+ </Owner>
34
+ <Entries>
35
+ #{entries_list(acl['AccessControlList'])}
36
+ </Entries>
37
+ </AccessControlList>
38
+ DATA
39
+
40
+ request({
41
+ :body => data,
42
+ :expects => 200,
43
+ :headers => {},
44
+ :host => "#{bucket_name}.#{@host}",
45
+ :method => 'PUT',
46
+ :query => {'acl' => nil},
47
+ :path => CGI.escape(object_name)
48
+ })
49
+
50
+ end
51
+
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,4 +1,4 @@
1
- require 'fog/google'
1
+ require 'fog/google/core'
2
2
  require 'fog/storage'
3
3
 
4
4
  module Fog
@@ -31,6 +31,7 @@ module Fog
31
31
  request :put_bucket
32
32
  request :put_bucket_acl
33
33
  request :put_object
34
+ request :put_object_acl
34
35
  request :put_object_url
35
36
 
36
37
  module Utils
data/lib/fog/hp.rb CHANGED
@@ -1,352 +1,9 @@
1
- require 'fog/core'
2
- require 'fog/hp/simple_http_instrumentor'
3
-
4
- module Fog
5
- module HP
6
-
7
- # define a specific version for the HP Provider
8
- unless const_defined?(:VERSION)
9
- VERSION = '0.0.22'
10
- end
11
-
12
- extend Fog::Provider
13
-
14
- module Errors
15
- class ServiceError < Fog::Errors::Error
16
- attr_reader :response_data
17
-
18
- def self.slurp(error)
19
- if error.response.body.empty?
20
- data = nil
21
- message = nil
22
- else
23
- begin
24
- data = Fog::JSON.decode(error.response.body)
25
- message = data['message']
26
- if message.nil? and !data.values.first.nil?
27
- message = data.values.first['message']
28
- end
29
- rescue Fog::JSON::DecodeError
30
- message = error.response.body #### body is not in JSON format, so just return as is
31
- end
32
- end
33
-
34
- new_error = super(error, message)
35
- new_error.instance_variable_set(:@response_data, data)
36
- new_error
37
- end
38
- end
39
-
40
- class InternalServerError < ServiceError; end
41
- class Conflict < ServiceError; end
42
- class NotFound < ServiceError; end
43
- class Forbidden < ServiceError; end
44
- class ServiceUnavailable < ServiceError; end
45
-
46
- class BadRequest < ServiceError
47
- attr_reader :validation_errors
48
-
49
- def self.slurp(error)
50
- new_error = super(error)
51
- unless new_error.response_data.nil? or new_error.response_data['badRequest'].nil?
52
- new_error.instance_variable_set(:@validation_errors, new_error.response_data['badRequest']['validationErrors'])
53
- end
54
- new_error
55
- end
56
- end
57
- end
58
-
59
- service(:block_storage, 'hp/block_storage', 'BlockStorage')
60
- service(:block_storage_v2, 'hp/block_storage_v2', 'BlockStorageV2')
61
- service(:cdn, 'hp/cdn', 'CDN')
62
- service(:compute, 'hp/compute', 'Compute')
63
- service(:dns, 'hp/dns', 'DNS')
64
- service(:lb, 'hp/lb', 'LB')
65
- service(:network, 'hp/network', 'Network')
66
- service(:storage, 'hp/storage', 'Storage')
67
-
68
- # legacy swauth 1.0/1.1 style authentication
69
- def self.authenticate_v1(options, connection_options = {})
70
- hp_auth_uri = options[:hp_auth_uri] || "https://region-a.geo-1.objects.hpcloudsvc.com/auth/v1.0/"
71
- endpoint = URI.parse(hp_auth_uri)
72
- @scheme = endpoint.scheme || "http"
73
- @host = endpoint.host || "region-a.geo-1.objects.hpcloudsvc.com"
74
- @port = endpoint.port.to_s || "80"
75
- if (endpoint.path)
76
- @auth_path = endpoint.path.slice(1, endpoint.path.length) # remove the leading slash
77
- else
78
- @auth_path = "auth/v1.0"
79
- end
80
- service_url = "#{@scheme}://#{@host}:#{@port}"
81
- # Set the User-Agent
82
- @user_agent = options[:user_agent]
83
- set_user_agent_header(connection_options, "fog/#{Fog::VERSION}", @user_agent)
84
- connection = Fog::Connection.new(service_url, false, connection_options)
85
- @hp_access_key = options[:hp_access_key]
86
- @hp_secret_key = options[:hp_secret_key]
87
- response = connection.request({
88
- :expects => [200, 204],
89
- :headers => {
90
- 'X-Auth-Key' => @hp_secret_key,
91
- 'X-Auth-User' => @hp_access_key
92
- },
93
- :method => 'GET',
94
- :path => @auth_path
95
- })
96
- response.headers.reject do |key, value|
97
- !['X-Server-Management-Url', 'X-Storage-Url', 'X-CDN-Management-Url', 'X-Auth-Token'].include?(key)
98
- end
99
-
100
- return {
101
- :auth_token => response.headers['X-Auth-Token'],
102
- :endpoint_url => nil,
103
- :cdn_endpoint_url => response.headers['X-Storage-Url']
104
- }
105
- end
106
-
107
- def self.service_catalog(options, connection_options = {})
108
- creds = authenticate_v2(options, connection_options)
109
- return {} if creds.nil?
110
- return {} if creds[:service_catalog].nil?
111
- return creds[:service_catalog]
112
- end
113
-
114
- # keystone based control services style authentication
115
- def self.authenticate_v2(options, connection_options = {})
116
- unless options[:credentials].nil?
117
- expires = true
118
- begin
119
- expire = DateTime.parse(options[:credentials][:expires])
120
- expires = false if expire > DateTime.now
121
- rescue
122
- end
123
- if expires
124
- options = options.clone
125
- options.delete(:credentials)
126
- else
127
- service_catalog = options[:credentials][:service_catalog]
128
- type = options[:hp_service_type]
129
- zone = options[:hp_avl_zone]
130
- begin
131
- creds = options[:credentials].clone
132
- creds[:endpoint_url] = get_endpoint_url(service_catalog, type, zone)
133
- begin
134
- creds[:cdn_endpoint_url] = get_endpoint_url(service_catalog, "CDN", zone)
135
- rescue
136
- end
137
- return creds
138
- rescue
139
- end
140
- options = options.clone
141
- options.delete(:credentials)
142
- end
143
- end
144
- hp_auth_uri = options[:hp_auth_uri] || "https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens"
145
- # append /tokens if missing from auth uri
146
- @hp_auth_uri = hp_auth_uri.include?('tokens')? hp_auth_uri : hp_auth_uri + "tokens"
147
- endpoint = URI.parse(@hp_auth_uri)
148
- @scheme = endpoint.scheme || "https"
149
- @host = endpoint.host || "region-a.geo-1.identity.hpcloudsvc.com"
150
- @port = endpoint.port.to_s || "35357"
151
- if (endpoint.path)
152
- @auth_path = endpoint.path.slice(1, endpoint.path.length) # remove the leading slash
153
- else
154
- @auth_path = "v2.0/tokens"
155
- end
156
- service_url = "#{@scheme}://#{@host}:#{@port}"
157
- # Set the User-Agent. If the caller sets a user_agent, use it.
158
- @user_agent = options[:user_agent]
159
- set_user_agent_header(connection_options, "fog/#{Fog::VERSION}", @user_agent)
160
- connection = Fog::Connection.new(service_url, false, connection_options)
161
-
162
- ### Implement HP Control Services Authentication services ###
163
- # Get the style of auth credentials passed, defaults to access/secret key style
164
- @hp_use_upass_auth_style = options[:hp_use_upass_auth_style] || false
165
- @hp_access_key = options[:hp_access_key]
166
- @hp_secret_key = options[:hp_secret_key]
167
- @hp_tenant_id = options[:hp_tenant_id]
168
- @hp_service_type = options[:hp_service_type]
169
- @hp_avl_zone = options[:hp_avl_zone]
170
-
171
- ### Decide which auth style to use
172
- unless (@hp_use_upass_auth_style)
173
- # If Access Key style credentials are provided, use that
174
- request_body = {
175
- 'auth' => {
176
- 'apiAccessKeyCredentials' => {
177
- 'accessKey' => "#{@hp_access_key}",
178
- 'secretKey' => "#{@hp_secret_key}"
179
- }
180
- }
181
- }
182
- else
183
- # Otherwise use the Username/Password style
184
- request_body = {
185
- 'auth' => {
186
- 'passwordCredentials' => {
187
- 'username' => "#{@hp_access_key}",
188
- 'password' => "#{@hp_secret_key}"
189
- }
190
- }
191
- }
192
- end
193
- # add tenant_id if specified
194
- request_body['auth']['tenantId'] = @hp_tenant_id if @hp_tenant_id
195
-
196
- ### Make the call to CS to get auth token and service catalog
197
- response = connection.request(
198
- {
199
- :expects => 200,
200
- :headers => {
201
- 'Content-Type' => 'application/json'
202
- },
203
- :method => 'POST',
204
- :body => Fog::JSON.encode(request_body),
205
- :path => @auth_path
206
- }
207
- )
208
-
209
- body = Fog::JSON.decode(response.body)
210
-
211
- ### fish out auth_token and endpoint for the service
212
- auth_token = body['access']['token']['id']
213
- expires = body['access']['token']['expires']
214
- service_catalog = get_service_catalog(body['access']['serviceCatalog'])
215
- endpoint_url = get_endpoint_url(service_catalog, @hp_service_type, @hp_avl_zone)
216
- begin
217
- cdn_endpoint_url = get_endpoint_url(service_catalog, "CDN", @hp_avl_zone)
218
- rescue
219
- end
220
-
221
- creds = {
222
- :auth_token => auth_token,
223
- :expires => expires,
224
- :service_catalog => service_catalog,
225
- :endpoint_url => endpoint_url,
226
- :cdn_endpoint_url => cdn_endpoint_url
227
- }
228
- return creds
229
- end
230
-
231
- # CGI.escape, but without special treatment on spaces
232
- def self.escape(str,extra_exclude_chars = '')
233
- str.gsub(/([^a-zA-Z0-9_.-#{extra_exclude_chars}]+)/) do
234
- '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
235
- end
236
- end
237
-
238
- # converts any attributes hash from aliased keys to original attribute keys
239
- def self.convert_aliased_attributes_to_original(model, attributes)
240
- original_attributes = {}
241
- attributes.each do |k, v|
242
- if orig_key = model.aliases.invert[k]
243
- original_attributes[orig_key] = v
244
- else
245
- original_attributes[k] = v
246
- end
247
- end
248
- original_attributes
249
- end
250
-
251
- private
252
-
253
- def self.get_service_catalog(body)
254
- raise "Unable to parse service catalog." unless body
255
- service_catalog = {}
256
- body.each do |s|
257
- name = s["name"]
258
- next if name.nil?
259
- name = name.to_sym
260
- next if s['endpoints'].nil?
261
- service_catalog[name] = {}
262
- s['endpoints'].each do |ep|
263
- next if ep['region'].nil?
264
- next if ep['publicURL'].nil?
265
- next if ep['publicURL'].empty?
266
- service_catalog[name][ep['region'].to_sym] = ep['publicURL']
267
- end
268
- end
269
- return service_catalog
270
- end
271
-
272
- def self.get_endpoint_url(service_catalog, service_type, avl_zone)
273
- return nil if service_type.nil?
274
- service_type = service_type.to_sym
275
- avl_zone = avl_zone.to_sym
276
- unless service_catalog[service_type].nil?
277
- unless service_catalog[service_type][avl_zone].nil?
278
- return service_catalog[service_type][avl_zone]
279
- end
280
- end
281
- raise "Unable to retrieve endpoint service url for availability zone '#{avl_zone}' from service catalog. "
282
- end
283
-
284
- def self.set_user_agent_header(conn_opts, base_str, client_str)
285
- if client_str
286
- user_agent = {'User-Agent' => base_str + " (#{client_str})"}
287
- else
288
- user_agent = {'User-Agent' => base_str}
289
- end
290
- if conn_opts[:headers]
291
- conn_opts[:headers] = user_agent.merge!(conn_opts[:headers])
292
- else
293
- conn_opts[:headers] = user_agent
294
- end
295
- end
296
-
297
- class Mock
298
- def self.etag
299
- Fog::Mock.random_hex(32)
300
- end
301
-
302
- def self.key_fingerprint
303
- fingerprint = []
304
- 20.times do
305
- fingerprint << Fog::Mock.random_hex(2)
306
- end
307
- fingerprint.join(':')
308
- end
309
-
310
- def self.key_material
311
- private_key = OpenSSL::PKey::RSA.generate(1024)
312
- public_key = private_key.public_key
313
- return private_key.to_s, public_key.to_s
314
- end
315
-
316
- def self.user_id
317
- "dev_" + Fog::Mock.random_numbers(14)
318
- end
319
-
320
- def self.instance_id
321
- Fog::Mock.random_numbers(6)
322
- end
323
-
324
- def self.ip_address
325
- ip = []
326
- 4.times do
327
- ip << Fog::Mock.random_numbers(rand(3) + 1).to_i.to_s # remove leading 0
328
- end
329
- ip.join('.')
330
- end
331
-
332
- def self.uuid
333
- # pattern of 8-4-4-4-12 hexadecimal digits
334
- uuid = []
335
- [8,4,4,4,12].each do |x|
336
- uuid << Fog::Mock.random_hex(x)
337
- end
338
- uuid.join('-')
339
- end
340
-
341
- def self.mac_address
342
- mac_add = []
343
- 6.times do
344
- mac_add << Fog::Mock.random_hex(2)
345
- end
346
- mac_add.join(':')
347
- end
348
-
349
- end
350
-
351
- end
352
- end
1
+ require 'fog/hp/block_storage'
2
+ require 'fog/hp/block_storage_v2'
3
+ require 'fog/hp/cdn'
4
+ require 'fog/hp/compute'
5
+ require 'fog/hp/compute_v2'
6
+ require 'fog/hp/dns'
7
+ require 'fog/hp/lb'
8
+ require 'fog/hp/network'
9
+ require 'fog/hp/storage'