fog 1.4.0 → 1.5.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 (236) hide show
  1. data/.document +1 -1
  2. data/.irbrc +5 -10
  3. data/{README.rdoc → README.md} +66 -61
  4. data/Rakefile +4 -6
  5. data/changelog.txt +491 -0
  6. data/docs/about/users.markdown +1 -0
  7. data/fog.gemspec +4 -4
  8. data/lib/fog.rb +1 -1
  9. data/lib/fog/aws.rb +4 -0
  10. data/lib/fog/aws/auto_scaling.rb +3 -0
  11. data/lib/fog/aws/cloud_watch.rb +28 -0
  12. data/lib/fog/aws/compute.rb +7 -1
  13. data/lib/fog/aws/elasticache.rb +64 -6
  14. data/lib/fog/aws/models/auto_scaling/configuration.rb +3 -1
  15. data/lib/fog/aws/models/auto_scaling/group.rb +10 -9
  16. data/lib/fog/aws/models/auto_scaling/policies.rb +33 -0
  17. data/lib/fog/aws/models/auto_scaling/policy.rb +46 -0
  18. data/lib/fog/aws/models/cloud_watch/alarm.rb +50 -2
  19. data/lib/fog/aws/models/cloud_watch/alarms.rb +18 -1
  20. data/lib/fog/aws/models/compute/address.rb +2 -2
  21. data/lib/fog/aws/models/dns/records.rb +5 -0
  22. data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
  23. data/lib/fog/aws/models/iam/users.rb +26 -4
  24. data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +7 -5
  25. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +1 -1
  26. data/lib/fog/aws/rds.rb +1 -1
  27. data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +8 -0
  28. data/lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb +1 -2
  29. data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +10 -2
  30. data/lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb +1 -1
  31. data/lib/fog/aws/requests/auto_scaling/delete_policy.rb +10 -1
  32. data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_instances.rb +0 -1
  33. data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +13 -1
  34. data/lib/fog/aws/requests/auto_scaling/put_scaling_policy.rb +20 -1
  35. data/lib/fog/aws/requests/auto_scaling/update_auto_scaling_group.rb +1 -1
  36. data/lib/fog/aws/requests/cloud_watch/delete_alarms.rb +19 -1
  37. data/lib/fog/aws/requests/cloud_watch/describe_alarms.rb +20 -2
  38. data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +9 -0
  39. data/lib/fog/aws/requests/compute/allocate_address.rb +4 -5
  40. data/lib/fog/aws/requests/compute/create_dhcp_options.rb +6 -5
  41. data/lib/fog/aws/requests/compute/create_internet_gateway.rb +7 -6
  42. data/lib/fog/aws/requests/compute/create_subnet.rb +11 -10
  43. data/lib/fog/aws/requests/compute/create_vpc.rb +8 -7
  44. data/lib/fog/aws/requests/compute/delete_dhcp_options.rb +1 -0
  45. data/lib/fog/aws/requests/compute/delete_internet_gateway.rb +1 -0
  46. data/lib/fog/aws/requests/compute/delete_subnet.rb +1 -0
  47. data/lib/fog/aws/requests/compute/delete_vpc.rb +2 -1
  48. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +1 -0
  49. data/lib/fog/aws/requests/compute/describe_dhcp_options.rb +1 -8
  50. data/lib/fog/aws/requests/compute/describe_instances.rb +3 -1
  51. data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +1 -8
  52. data/lib/fog/aws/requests/compute/describe_subnets.rb +1 -9
  53. data/lib/fog/aws/requests/compute/describe_vpcs.rb +1 -8
  54. data/lib/fog/aws/requests/compute/release_address.rb +12 -4
  55. data/lib/fog/aws/requests/compute/start_instances.rb +1 -0
  56. data/lib/fog/aws/requests/compute/stop_instances.rb +1 -0
  57. data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +26 -2
  58. data/lib/fog/aws/requests/elasticache/delete_cache_cluster.rb +10 -1
  59. data/lib/fog/aws/requests/elasticache/describe_cache_clusters.rb +16 -1
  60. data/lib/fog/aws/requests/elasticache/modify_cache_cluster.rb +35 -3
  61. data/lib/fog/aws/requests/elasticache/reboot_cache_cluster.rb +10 -2
  62. data/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -1
  63. data/lib/fog/aws/requests/rds/describe_db_instances.rb +3 -3
  64. data/lib/fog/aws/sqs.rb +1 -1
  65. data/lib/fog/aws/storage.rb +1 -1
  66. data/lib/fog/bin/rackspace.rb +4 -0
  67. data/lib/fog/cloudstack/compute.rb +25 -18
  68. data/lib/fog/cloudstack/models/compute/image.rb +34 -34
  69. data/lib/fog/cloudstack/models/compute/job.rb +14 -1
  70. data/lib/fog/cloudstack/models/compute/jobs.rb +1 -1
  71. data/lib/fog/cloudstack/models/compute/security_group.rb +50 -0
  72. data/lib/fog/cloudstack/models/compute/security_group_rule.rb +62 -0
  73. data/lib/fog/cloudstack/models/compute/security_group_rules.rb +37 -0
  74. data/lib/fog/cloudstack/models/compute/security_groups.rb +27 -0
  75. data/lib/fog/cloudstack/models/compute/server.rb +63 -39
  76. data/lib/fog/cloudstack/models/compute/volume.rb +3 -7
  77. data/lib/fog/cloudstack/models/compute/zone.rb +1 -2
  78. data/lib/fog/cloudstack/requests/compute/assign_virtual_machine.rb +18 -0
  79. data/lib/fog/cloudstack/requests/compute/authorize_security_group_egress.rb +68 -0
  80. data/lib/fog/cloudstack/requests/compute/authorize_security_group_ingress.rb +55 -4
  81. data/lib/fog/cloudstack/requests/compute/create_security_group.rb +12 -4
  82. data/lib/fog/cloudstack/requests/compute/create_zone.rb +20 -0
  83. data/lib/fog/cloudstack/requests/compute/delete_security_group.rb +17 -0
  84. data/lib/fog/cloudstack/requests/compute/destroy_virtual_machine.rb +23 -1
  85. data/lib/fog/cloudstack/requests/compute/list_firewall_rules.rb +15 -0
  86. data/lib/fog/cloudstack/requests/compute/list_security_groups.rb +22 -4
  87. data/lib/fog/cloudstack/requests/compute/query_async_job_result.rb +15 -3
  88. data/lib/fog/cloudstack/requests/compute/revoke_security_group_egress.rb +42 -0
  89. data/lib/fog/cloudstack/requests/compute/revoke_security_group_ingress.rb +29 -3
  90. data/lib/fog/core.rb +1 -0
  91. data/lib/fog/core/attributes.rb +1 -1
  92. data/lib/fog/core/current_machine.rb +2 -2
  93. data/lib/fog/core/scp.rb +8 -0
  94. data/lib/fog/core/ssh.rb +8 -0
  95. data/lib/fog/dynect/dns.rb +14 -5
  96. data/lib/fog/ibm/requests/compute/create_instance.rb +1 -1
  97. data/lib/fog/libvirt/requests/compute/create_volume.rb +1 -1
  98. data/lib/fog/libvirt/requests/compute/list_volumes.rb +1 -1
  99. data/lib/fog/local/models/storage/file.rb +12 -1
  100. data/lib/fog/local/storage.rb +25 -1
  101. data/lib/fog/ninefold/compute.rb +1 -0
  102. data/lib/fog/openstack.rb +3 -1
  103. data/lib/fog/openstack/compute.rb +13 -2
  104. data/lib/fog/openstack/models/compute/servers.rb +10 -2
  105. data/lib/fog/openstack/requests/compute/create_flavor.rb +2 -2
  106. data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
  107. data/lib/fog/openstack/requests/compute/create_server.rb +1 -1
  108. data/lib/fog/openstack/requests/compute/create_volume.rb +1 -1
  109. data/lib/fog/openstack/requests/compute/get_flavor_details.rb +7 -7
  110. data/lib/fog/openstack/requests/compute/get_quota.rb +1 -12
  111. data/lib/fog/openstack/requests/compute/get_quota_defaults.rb +1 -12
  112. data/lib/fog/openstack/requests/compute/get_volume_details.rb +1 -1
  113. data/lib/fog/openstack/requests/compute/list_flavors.rb +7 -7
  114. data/lib/fog/openstack/requests/compute/list_flavors_detail.rb +7 -7
  115. data/lib/fog/openstack/requests/compute/list_security_groups.rb +7 -7
  116. data/lib/fog/openstack/requests/compute/list_servers_detail.rb +4 -3
  117. data/lib/fog/openstack/requests/compute/list_volumes.rb +6 -8
  118. data/lib/fog/openstack/requests/compute/update_quota.rb +2 -15
  119. data/lib/fog/openstack/requests/identity/delete_role.rb +1 -1
  120. data/lib/fog/openstack/requests/identity/list_roles.rb +1 -1
  121. data/lib/fog/openstack/requests/image/create_image.rb +3 -1
  122. data/lib/fog/openstack/requests/image/list_public_images.rb +19 -1
  123. data/lib/fog/openstack/requests/image/list_public_images_detailed.rb +20 -2
  124. data/lib/fog/openstack/requests/image/update_image.rb +1 -1
  125. data/lib/fog/rackspace.rb +2 -0
  126. data/lib/fog/rackspace/databases.rb +121 -0
  127. data/lib/fog/rackspace/identity.rb +83 -0
  128. data/lib/fog/rackspace/load_balancers.rb +3 -0
  129. data/lib/fog/rackspace/models/databases/database.rb +32 -0
  130. data/lib/fog/rackspace/models/databases/databases.rb +31 -0
  131. data/lib/fog/rackspace/models/databases/flavor.rb +15 -0
  132. data/lib/fog/rackspace/models/databases/flavors.rb +25 -0
  133. data/lib/fog/rackspace/models/databases/instance.rb +104 -0
  134. data/lib/fog/rackspace/models/databases/instances.rb +25 -0
  135. data/lib/fog/rackspace/models/databases/user.rb +32 -0
  136. data/lib/fog/rackspace/models/databases/users.rb +31 -0
  137. data/lib/fog/rackspace/models/identity/credential.rb +13 -0
  138. data/lib/fog/rackspace/models/identity/credentials.rb +32 -0
  139. data/lib/fog/rackspace/models/identity/role.rb +14 -0
  140. data/lib/fog/rackspace/models/identity/roles.rb +32 -0
  141. data/lib/fog/rackspace/models/identity/tenant.rb +15 -0
  142. data/lib/fog/rackspace/models/identity/tenants.rb +28 -0
  143. data/lib/fog/rackspace/models/identity/user.rb +53 -0
  144. data/lib/fog/rackspace/models/identity/users.rb +36 -0
  145. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +17 -0
  146. data/lib/fog/rackspace/requests/databases/check_root_user.rb +15 -0
  147. data/lib/fog/rackspace/requests/databases/create_database.rb +24 -0
  148. data/lib/fog/rackspace/requests/databases/create_instance.rb +26 -0
  149. data/lib/fog/rackspace/requests/databases/create_user.rb +24 -0
  150. data/lib/fog/rackspace/requests/databases/delete_database.rb +15 -0
  151. data/lib/fog/rackspace/requests/databases/delete_instance.rb +15 -0
  152. data/lib/fog/rackspace/requests/databases/delete_user.rb +15 -0
  153. data/lib/fog/rackspace/requests/databases/enable_root_user.rb +15 -0
  154. data/lib/fog/rackspace/requests/databases/get_flavor.rb +15 -0
  155. data/lib/fog/rackspace/requests/databases/get_instance.rb +15 -0
  156. data/lib/fog/rackspace/requests/databases/list_databases.rb +15 -0
  157. data/lib/fog/rackspace/requests/databases/list_flavors.rb +15 -0
  158. data/lib/fog/rackspace/requests/databases/list_instances.rb +15 -0
  159. data/lib/fog/rackspace/requests/databases/list_users.rb +15 -0
  160. data/lib/fog/rackspace/requests/databases/resize_instance.rb +22 -0
  161. data/lib/fog/rackspace/requests/databases/resize_instance_volume.rb +24 -0
  162. data/lib/fog/rackspace/requests/databases/restart_instance.rb +20 -0
  163. data/lib/fog/rackspace/requests/identity/create_token.rb +25 -0
  164. data/lib/fog/rackspace/requests/identity/create_user.rb +25 -0
  165. data/lib/fog/rackspace/requests/identity/delete_user.rb +15 -0
  166. data/lib/fog/rackspace/requests/identity/get_credentials.rb +15 -0
  167. data/lib/fog/rackspace/requests/identity/get_user_by_id.rb +15 -0
  168. data/lib/fog/rackspace/requests/identity/get_user_by_name.rb +15 -0
  169. data/lib/fog/rackspace/requests/identity/list_credentials.rb +22 -0
  170. data/lib/fog/rackspace/requests/identity/list_tenants.rb +22 -0
  171. data/lib/fog/rackspace/requests/identity/list_user_roles.rb +22 -0
  172. data/lib/fog/rackspace/requests/identity/list_users.rb +22 -0
  173. data/lib/fog/rackspace/requests/identity/update_user.rb +24 -0
  174. data/lib/fog/rackspace/requests/load_balancers/get_ssl_termination.rb +15 -0
  175. data/lib/fog/rackspace/requests/load_balancers/remove_ssl_termination.rb +15 -0
  176. data/lib/fog/rackspace/requests/load_balancers/set_ssl_termination.rb +31 -0
  177. data/lib/fog/rackspace/storage.rb +1 -1
  178. data/lib/fog/vsphere/models/compute/server.rb +1 -0
  179. data/lib/fog/vsphere/requests/compute/vm_clone.rb +2 -2
  180. data/tests/aws/models/compute/address_tests.rb +2 -1
  181. data/tests/aws/models/compute/volume_tests.rb +1 -1
  182. data/tests/aws/models/dns/records_tests.rb +19 -1
  183. data/tests/aws/models/storage/directory_tests.rb +1 -1
  184. data/tests/aws/models/storage/url_tests.rb +7 -1
  185. data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +4 -2
  186. data/tests/aws/requests/compute/address_tests.rb +19 -1
  187. data/tests/aws/requests/elasticache/cache_cluster_tests.rb +4 -4
  188. data/tests/aws/requests/elb/helper.rb +13 -2
  189. data/tests/aws/requests/iam/access_key_tests.rb +1 -3
  190. data/tests/cloudstack/compute/models/security_group_rule_tests.rb +29 -0
  191. data/tests/cloudstack/compute/models/security_group_tests.rb +16 -0
  192. data/tests/cloudstack/compute/models/security_groups_tests.rb +19 -0
  193. data/tests/cloudstack/compute/models/server_tests.rb +18 -0
  194. data/tests/cloudstack/compute/models/volume_tests.rb +34 -0
  195. data/tests/cloudstack/compute/models/volumes_tests.rb +17 -0
  196. data/tests/compute/helper.rb +10 -3
  197. data/tests/core/current_machine_tests.rb +32 -0
  198. data/tests/helper.rb +1 -1
  199. data/tests/helpers/mock_helper.rb +3 -0
  200. data/tests/hp/requests/compute/address_tests.rb +2 -1
  201. data/tests/joyent/requests/compute/datasets_tests.rb +12 -3
  202. data/tests/local/models/file_tests.rb +43 -0
  203. data/tests/local/storage_tests.rb +40 -0
  204. data/tests/openstack/requests/compute/flavor_tests.rb +1 -1
  205. data/tests/openstack/requests/compute/server_tests.rb +3 -3
  206. data/tests/openstack/requests/compute/volume_tests.rb +1 -1
  207. data/tests/openstack/requests/identity/role_tests.rb +1 -1
  208. data/tests/rackspace/databases_tests.rb +26 -0
  209. data/tests/rackspace/models/databases/database_tests.rb +17 -0
  210. data/tests/rackspace/models/databases/databases_tests.rb +17 -0
  211. data/tests/rackspace/models/databases/flavors_tests.rb +20 -0
  212. data/tests/rackspace/models/databases/instance_tests.rb +43 -0
  213. data/tests/rackspace/models/databases/instances_tests.rb +14 -0
  214. data/tests/rackspace/models/databases/user_tests.rb +21 -0
  215. data/tests/rackspace/models/databases/users_tests.rb +21 -0
  216. data/tests/rackspace/models/identity/credentials_tests.rb +16 -0
  217. data/tests/rackspace/models/identity/roles_tests.rb +16 -0
  218. data/tests/rackspace/models/identity/tenants_tests.rb +21 -0
  219. data/tests/rackspace/models/identity/user_tests.rb +17 -0
  220. data/tests/rackspace/models/identity/users_tests.rb +17 -0
  221. data/tests/rackspace/models/load_balancers/load_balancer_tests.rb +20 -0
  222. data/tests/rackspace/requests/databases/database_tests.rb +36 -0
  223. data/tests/rackspace/requests/databases/flavor_tests.rb +16 -0
  224. data/tests/rackspace/requests/databases/helper.rb +84 -0
  225. data/tests/rackspace/requests/databases/instance_tests.rb +77 -0
  226. data/tests/rackspace/requests/databases/user_tests.rb +37 -0
  227. data/tests/rackspace/requests/identity/tenants_tests.rb +21 -0
  228. data/tests/rackspace/requests/identity/token_tests.rb +63 -0
  229. data/tests/rackspace/requests/identity/user_tests.rb +107 -0
  230. data/tests/rackspace/requests/load_balancers/helper.rb +70 -1
  231. data/tests/rackspace/requests/load_balancers/ssl_termination_tests.rb +38 -0
  232. data/tests/storage/models/file_tests.rb +1 -1
  233. metadata +129 -13
  234. data/spec/core/current_machine_spec.rb +0 -32
  235. data/spec/lib/fog/aws/parsers/sqs/receive_message_spec.rb +0 -58
  236. data/spec/spec_helper.rb +0 -8
@@ -0,0 +1,77 @@
1
+ Shindo.tests('Fog::Rackspace::Database | instance_tests', ['rackspace']) do
2
+
3
+ pending if Fog.mocking?
4
+
5
+ service = Fog::Rackspace::Databases.new
6
+
7
+ tests('success') do
8
+
9
+ instance_id = nil
10
+ instance_name = 'fog' + Time.now.to_i.to_s
11
+
12
+ tests("#list_instances").formats(LIST_INSTANCES_FORMAT) do
13
+ service.list_instances.body
14
+ end
15
+
16
+ tests("#create_instance(#{instance_name}, 1, 1)").formats(CREATE_INSTANCE_FORMAT) do
17
+ data = service.create_instance(instance_name, 1, 1).body
18
+ instance_id = data['instance']['id']
19
+ data
20
+ end
21
+
22
+ until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
23
+ sleep 10
24
+ end
25
+
26
+ tests("#get_instance(#{instance_id})").formats(GET_INSTANCE_FORMAT) do
27
+ service.get_instance(instance_id).body
28
+ end
29
+
30
+ tests("#check_root_user(#{instance_id})").formats(CHECK_ROOT_USER_FORMAT) do
31
+ service.check_root_user(instance_id).body
32
+ end
33
+
34
+ tests("#enable_root_user(#{instance_id})").formats(ENABLE_ROOT_USER_FORMAT) do
35
+ service.enable_root_user(instance_id).body
36
+ end
37
+
38
+ tests("#restart_instance(#{instance_id})").succeeds do
39
+ service.restart_instance(instance_id)
40
+ end
41
+
42
+ until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
43
+ sleep 10
44
+ end
45
+
46
+ tests("#resize_instance(#{instance_id}, 2)").succeeds do
47
+ service.resize_instance(instance_id, 2)
48
+ end
49
+
50
+ until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
51
+ sleep 10
52
+ end
53
+
54
+ tests("#resize_instance_volume(#{instance_id}, 2)").succeeds do
55
+ service.resize_instance_volume(instance_id, 2)
56
+ end
57
+
58
+ until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
59
+ sleep 10
60
+ end
61
+
62
+ tests("#delete_instance(#{instance_id})").succeeds do
63
+ service.delete_instance(instance_id)
64
+ end
65
+ end
66
+
67
+ tests('failure') do
68
+ tests("#create_instance('', 0, 0) => Invalid Create Critera").raises(Fog::Rackspace::Databases::BadRequest) do
69
+ service.create_instance('', 0, 0)
70
+ end
71
+
72
+ tests("#get_instance('') => Does not exist").raises(Fog::Rackspace::Databases::NotFound) do
73
+ service.get_instance('')
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,37 @@
1
+ Shindo.tests('Fog::Rackspace::Database | user_tests', ['rackspace']) do
2
+
3
+ pending if Fog.mocking?
4
+
5
+ service = Fog::Rackspace::Databases.new
6
+ instance_name = 'fog' + Time.now.to_i.to_s
7
+ instance_id = service.create_instance(instance_name, 1, 1).body['instance']['id']
8
+
9
+ until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
10
+ sleep 10
11
+ end
12
+
13
+ tests('success') do
14
+ user_name = 'fog' + Time.now.to_i.to_s
15
+ password = 'password1'
16
+
17
+ tests("#create_user(#{instance_id}, #{user_name}, #{password})").succeeds do
18
+ service.create_user(instance_id, user_name, password).body
19
+ end
20
+
21
+ tests("#list_users{#{instance_id})").formats(LIST_USERS_FORMAT) do
22
+ service.list_users(instance_id).body
23
+ end
24
+
25
+ tests("#delete_user(#{instance_id}, #{user_name})").succeeds do
26
+ service.delete_user(instance_id, user_name)
27
+ end
28
+ end
29
+
30
+ tests('failure') do
31
+ tests("#create_user(#{instance_id}, '', '') => Invalid Create Critera").raises(Fog::Rackspace::Databases::BadRequest) do
32
+ service.create_user(instance_id, '', '')
33
+ end
34
+ end
35
+
36
+ service.delete_instance(instance_id)
37
+ end
@@ -0,0 +1,21 @@
1
+ Shindo.tests('Fog::Rackspace::Identity | tenants', ['rackspace']) do
2
+
3
+ pending if Fog.mock?
4
+
5
+ TENANTS_FORMATS = {
6
+ 'tenants' => [{
7
+ 'id' => String,
8
+ 'name' => String,
9
+ 'description' => Fog::Nullable::String,
10
+ 'enabled' => Fog::Nullable::Boolean
11
+ }]
12
+ }
13
+
14
+ service = Fog::Rackspace::Identity.new
15
+
16
+ tests('success') do
17
+ tests('#list_tenants').formats(TENANTS_FORMATS) do
18
+ service.list_tenants().body
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,63 @@
1
+ Shindo.tests('Fog::Rackspace::Identity | tokens', ['rackspace']) do
2
+
3
+ pending if Fog.mock?
4
+
5
+ ROLE_FORMAT = {
6
+ 'id' => String,
7
+ 'name' => String,
8
+ 'description' => String
9
+ }
10
+
11
+ ENDPOINT_FORMAT = {
12
+ 'tenantId' => String,
13
+ 'publicURL' => Fog::Nullable::String,
14
+ 'internalURL' => Fog::Nullable::String,
15
+ 'region' => Fog::Nullable::String,
16
+ 'versionId' => Fog::Nullable::String,
17
+ 'versionInfo' => Fog::Nullable::String,
18
+ 'versionList' => Fog::Nullable::String
19
+ }
20
+
21
+ SERVICE_FORMAT = {
22
+ 'name' => String,
23
+ 'type' => String,
24
+ 'endpoints' => [ENDPOINT_FORMAT]
25
+ }
26
+
27
+ ACCESS_FORMAT = {
28
+ 'access' => {
29
+ 'token' => {
30
+ 'id' => String,
31
+ 'expires' => String,
32
+ 'tenant' => {
33
+ 'id' => String,
34
+ 'name' => String
35
+ }
36
+ },
37
+ 'user' => {
38
+ 'id' => String,
39
+ 'name' => String,
40
+ 'roles' => [ROLE_FORMAT]
41
+ },
42
+ 'serviceCatalog' => [SERVICE_FORMAT]
43
+ }
44
+ }
45
+
46
+ service = Fog::Rackspace::Identity.new
47
+
48
+ tests('success') do
49
+ credentials = Fog.credentials
50
+ username = credentials[:rackspace_username]
51
+ api_key = credentials[:rackspace_api_key]
52
+
53
+ tests('#create_token').formats(ACCESS_FORMAT) do
54
+ service.create_token(username, api_key).body
55
+ end
56
+ end
57
+
58
+ tests('failure') do
59
+ tests('#create_token(invalidname, invalidkey').raises(Excon::Errors::HTTPStatusError) do
60
+ service.create_token('baduser', 'badkey')
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,107 @@
1
+ Shindo.tests('Fog::Rackspace::Identity | users', ['rackspace']) do
2
+
3
+ pending if Fog.mock?
4
+
5
+ USER_INFO = {
6
+ 'id' => String,
7
+ 'username' => String,
8
+ 'email' => Fog::Nullable::String,
9
+ 'enabled' => Fog::Boolean,
10
+ 'OS-KSADM:password' => Fog::Nullable::String,
11
+ 'created' => Fog::Nullable::String,
12
+ 'updated' => Fog::Nullable::String
13
+ }
14
+
15
+ USER_FORMAT = {
16
+ 'user' => USER_INFO
17
+ }
18
+
19
+ USERS_FORMAT = {
20
+ 'users' => [USER_INFO]
21
+ }
22
+
23
+ CREDENTIAL_FORMAT = {
24
+ 'RAX-KSKEY:apiKeyCredentials' => {
25
+ 'username' => String,
26
+ 'apiKey' => String
27
+ }
28
+ }
29
+
30
+ CREDENTIALS_FORMAT = {
31
+ 'credentials' => [CREDENTIAL_FORMAT]
32
+ }
33
+
34
+ ROLES_FORMAT = {
35
+ 'roles' => [{
36
+ 'id' => String,
37
+ 'name' => String,
38
+ 'description' => String
39
+ }]
40
+ }
41
+
42
+ service = Fog::Rackspace::Identity.new
43
+ id = nil
44
+ username = 'foguser'
45
+ email = 'fog_user@example.com'
46
+ enabled = true
47
+ password = 'Fog_password1'
48
+
49
+ tests('success') do
50
+ tests('#create_user').formats(USER_FORMAT) do
51
+ data = service.create_user(username, email, enabled).body
52
+ id = data['user']['id']
53
+ data
54
+ end
55
+
56
+ tests('#delete_user').succeeds do
57
+ service.delete_user(id)
58
+ end
59
+
60
+ tests('#create_user with password').succeeds do
61
+ data = service.create_user(username, email, enabled, :password => password ).body
62
+ id = data['user']['id']
63
+ data
64
+ end
65
+
66
+ tests('#get_user_by_name').formats(USER_FORMAT) do
67
+ data = service.get_user_by_name(username).body
68
+ id = data['user']['id']
69
+ data
70
+ end
71
+
72
+ tests('#get_user_by_id').formats(USER_FORMAT) do
73
+ service.get_user_by_id(id).body
74
+ end
75
+
76
+ tests('#list_users').formats(USERS_FORMAT) do
77
+ service.list_users().body
78
+ end
79
+
80
+ tests('#update_user').formats(USER_FORMAT) do
81
+ service.update_user(id, username, 'updated_user@example.com', enabled).body
82
+ end
83
+
84
+ tests('#update_user with password').succeeds do
85
+ service.update_user(id, username, email, enabled, :password => password).body
86
+ end
87
+
88
+ tests('#list_user_roles').formats(ROLES_FORMAT) do
89
+ service.list_user_roles(id).body
90
+ end
91
+
92
+ service.delete_user(id)
93
+
94
+ # Users are only authorized to request their own credentials,
95
+ # so perform credential tests with the ID of the user running tests.
96
+ credential_username = Fog.credentials[:rackspace_username]
97
+ credential_id = service.get_user_by_name(credential_username).body['user']['id']
98
+
99
+ tests('#list_credentials').formats(CREDENTIALS_FORMAT) do
100
+ service.list_credentials(credential_id).body
101
+ end
102
+
103
+ tests('#get_credentials').formats(CREDENTIAL_FORMAT) do
104
+ service.get_credentials(credential_id).body
105
+ end
106
+ end
107
+ end
@@ -1,5 +1,5 @@
1
1
  SINGLE_NODE_FORMAT = {'address' => String, 'id' => Integer, 'status' => String, 'weight' => Fog::Nullable::Integer, 'port' => Integer, 'condition' => String, 'type' => String}
2
- NODE_FORMAT = {'node' => SINGLE_NODE_FORMAT}
2
+ NODE_FORMAT = {'node' => SINGLE_NODE_FORMAT.merge({ 'metadata' => []})}
3
3
  NODES_FORMAT = {'nodes' => [SINGLE_NODE_FORMAT]}
4
4
  VIRTUAL_IP_FORMAT = {'type' => String, 'id' => Integer, 'type' => String, 'ipVersion' => String, 'address' => String}
5
5
  VIRTUAL_IPS_FORMAT = { 'virtualIps' => [VIRTUAL_IP_FORMAT] }
@@ -32,6 +32,17 @@ LOAD_BALANCER_USAGE_FORMAT = {
32
32
  ]
33
33
  }
34
34
 
35
+ SSL_TERMINATION_FORMAT = {
36
+ 'sslTermination' => {
37
+ 'certificate' => String,
38
+ 'privatekey' => String,
39
+ 'enabled' => Fog::Boolean,
40
+ 'securePort' => Integer,
41
+ 'secureTrafficOnly' => Fog::Boolean,
42
+ 'intermediateCertificate' => Fog::Nullable::String
43
+ }
44
+ }
45
+
35
46
  USAGE_FORMAT = {
36
47
  'accountId' => Integer,
37
48
  'loadBalancerUsages' => [
@@ -137,6 +148,7 @@ LOAD_BALANCER_FORMAT = {
137
148
  'nodes' => [SINGLE_NODE_FORMAT],
138
149
  'created' => { 'time' => String },
139
150
  'updated' => { 'time' => String },
151
+ 'contentCaching' => { 'enabled' => Fog::Boolean }
140
152
  }.merge(CONNECTION_LOGGING_FORMAT)
141
153
  }
142
154
 
@@ -145,3 +157,60 @@ ERROR_PAGE_FORMAT = {
145
157
  'content' => String
146
158
  }
147
159
  }
160
+
161
+ PRIVATE_KEY = '-----BEGIN RSA PRIVATE KEY-----
162
+ MIIEpAIBAAKCAQEAqSXePu8qLmniU7jNxoWq3SLkR8txMsl1gFYftpq7NIFaGfzV
163
+ f4ZswYdEYDVWWRepQjS0TvsB0d5+usEUy/pcdZAlQLnn+540iLkvxKPVMzojUbG6
164
+ yOAmjC/xAZuExJHtfCrRHUQ4WQCwqyqANfP81y1inAb0zJGbtWUreV+nv8Ue77qX
165
+ 77fOuqI6zOHinGZU7l25XGLcVUphgt8UtHZBzz2ahoftZ97DhUyQiSJQCaHXJd3Q
166
+ eIHAq9qc7hu+usiYZWz34A0lw/gAl+RYcdvVc8kIwWxpiSieqqBPOwNzN5B0+9uu
167
+ 5sDzMGMFnnSWcNKIPumX0rke3xFUl3UD6GJwvwIDAQABAoIBABQ7alT+yH3avm6j
168
+ OUHYtTJUPRf1VqnrfPmH061E3sWN/1gCbQse6h1P77bOSnDHqsA3i6Wy0mnnAiOW
169
+ esVXQf3x6vLOCdiH+OKtu+/6ZMMG3jikWKI0ZYf5KAu4LW5RwiVK/c5RXagPtBIV
170
+ OFa7w299h0EAeAGMHSLaYhPXhDokyJa6yDkAQL3n+9L3V8kNWeCELfrqXnXF4X0K
171
+ CJp622tS/fW6kzppJyLJ4GPkK9HNMpu02/n2Z7swWypfF+7set+9/aNTooDYWzCu
172
+ dbnRgqEIG1IP8+t6HG6x9VujJVJLIW/WLITnQ/WTRXOQHBGhazgmwe1GPdxsQgXu
173
+ /wIcsIkCgYEA8Si0q+QhmJyoAm8vTHjo6+DD06YYTvSODLJOpOqr1ncGGDJ/evBw
174
+ x+9QsK3veXMbAK5G7Xss32IuXbBfjqQ89+/q/YT4BnS3T0OQa2WlR8tURNphCDr5
175
+ B3yD212kJTTehC+p7BI9zhnWXD9kImh4vm4XcOsC9iqOSCZkGfvRPRsCgYEAs46t
176
+ Y85v2Pk235r1BPbgKwqYR+jElH4VWKu+EguUeQ4BlS47KktlLhvHtwrTv/UZ+lPx
177
+ 8gSJTgyy7iEmzcGwPf1/MI5xg+DPgGhbr2G8EvrThmdHy+rPF2YSp1iBmJ4xq/1r
178
+ 6XYKvf6ST3iujxTPU5xPEDUSLsH2ejJD/ddqSS0CgYEAkIdxyDa//8ObWWIjObSY
179
+ +4zIMBcyKFeernNKeMH/3FeW+neBOT/Sh7CgblK/28ylWUIZVghlOzePTC0BB+7c
180
+ b0eFUQ0YzF204rc+XW8coCt2xJEQaCtXxinUqGq1jmriFNyv/MBt9BA+DSkcrRZp
181
+ js9SEyV1r+yPOyRvB7eIjhMCgYEAkd5yG+fkU1c6bfNb4/mPaUgFKD4AHUZEnzF+
182
+ ivhfWOy4+nGBXT285/VnjNs95O8AeK3jmyJ2TTLh1bSW6obUX7flsRO3QlTLHd0p
183
+ xtPWT3D3kHOtDwslzDN/KfYr6klxvvB0z0e3OFxsjiVTYiecuqb8UAVdTSED1Ier
184
+ Vre+v80CgYB86OqcAlR3diNaIwHgwK5kP2NAH1DaSwZXoobYpdkjsUQfJN5jwJbD
185
+ 4/6HVydoc5xe0z8B+O1VUzC+QA0gdXgHbmLZBIUeQU8sE4hGELoe/eWULXGwI91M
186
+ FyEWg03jZj8FkFh2954zwU6BOcbeL+9GrTdTPu1vuHoTitmNEye4iw==
187
+ -----END RSA PRIVATE KEY-----'
188
+
189
+ CERTIFICATE = '-----BEGIN CERTIFICATE-----
190
+ MIIEWjCCA0KgAwIBAgIGATTTGu/tMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYT
191
+ AlVTMQ4wDAYDVQQIEwVUZXhhczEOMAwGA1UEBxMFVGV4YXMxGjAYBgNVBAoTEVJh
192
+ Y2tTcGFjZSBIb3N0aW5nMRQwEgYDVQQLEwtSYWNrRXhwIENBNTEYMBYGA1UEAxMP
193
+ Y2E1LnJhY2tleHAub3JnMB4XDTEyMDExMjE4MDgwNVoXDTM5MDUzMDE4MDgwNVow
194
+ gZcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVUZXhhczEUMBIGA1UEBxMLU2FuIEFu
195
+ dG9uaW8xEDAOBgNVBAoTB1JhY2tFeHAxEDAOBgNVBAsTB1JhY2tEZXYxPjA8BgNV
196
+ BAMMNW15c2l0ZS5jb20vZW1haWxBZGRyZXNzPXBoaWxsaXAudG9vaGlsbEByYWNr
197
+ c3BhY2UuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqSXePu8q
198
+ LmniU7jNxoWq3SLkR8txMsl1gFYftpq7NIFaGfzVf4ZswYdEYDVWWRepQjS0TvsB
199
+ 0d5+usEUy/pcdZAlQLnn+540iLkvxKPVMzojUbG6yOAmjC/xAZuExJHtfCrRHUQ4
200
+ WQCwqyqANfP81y1inAb0zJGbtWUreV+nv8Ue77qX77fOuqI6zOHinGZU7l25XGLc
201
+ VUphgt8UtHZBzz2ahoftZ97DhUyQiSJQCaHXJd3QeIHAq9qc7hu+usiYZWz34A0l
202
+ w/gAl+RYcdvVc8kIwWxpiSieqqBPOwNzN5B0+9uu5sDzMGMFnnSWcNKIPumX0rke
203
+ 3xFUl3UD6GJwvwIDAQABo4HIMIHFMIGjBgNVHSMEgZswgZiAFIkXQizRaftxVDaL
204
+ P/Fb/F2ht017oX2kezB5MQswCQYDVQQGEwJVUzEOMAwGA1UECBMFVGV4YXMxDjAM
205
+ BgNVBAcTBVRleGFzMRowGAYDVQQKExFSYWNrU3BhY2UgSG9zdGluZzEUMBIGA1UE
206
+ CxMLUmFja0V4cCBDQTQxGDAWBgNVBAMTD2NhNC5yYWNrZXhwLm9yZ4IBAjAdBgNV
207
+ HQ4EFgQUQUXHjce1JhjJDA4nhYcbebMrIGYwDQYJKoZIhvcNAQEFBQADggEBACLe
208
+ vxcDSx91uQoc1uancb+vfkaNpvfAxOkUtrdRSHGXxvUkf/EJpIyG/M0jt5CLmEpE
209
+ UedeCFlRN+Qnsqt589ZemWWJwth/Jbu0wQodfSo1cP0J2GFZDyTd5cWgm0IxD8A/
210
+ ZRGzNnTx3xskv6/lOh7so9ULppEbOsZTNqQ4ahbxbiaR2iDTQGF3XKSHha8O93RB
211
+ YlnFahKZ2j0CpYvg0lJjfN0Lvj7Sm6GBA74n2OrGuB14H27wklD+PtIEFniyxKbq
212
+ 5TDO0l4yDgkR7PsckmZqK22GP9c3fQkmXodtpV1wRjcSAxxVWYm+S24XvMFERs3j
213
+ yXEf+VJ0H+voAvxgbAk=
214
+ -----END CERTIFICATE-----'
215
+
216
+
@@ -0,0 +1,38 @@
1
+ Shindo.tests('Fog::Rackspace::LoadBalancers | ssl_termination', ['rackspace']) do
2
+
3
+ pending if Fog.mocking?
4
+
5
+ given_a_load_balancer_service do
6
+ given_a_load_balancer do
7
+ tests('success') do
8
+
9
+ @lb.wait_for { ready? }
10
+ tests("#set_ssl_termination(#{@lb.id}, 443, PRIVATE_KEY, CERTIFICATE)").succeeds do
11
+ @service.set_ssl_termination(@lb.id, 443, PRIVATE_KEY, CERTIFICATE)
12
+ end
13
+
14
+ @lb.wait_for { ready? }
15
+ tests("#get_ssl_termination(#{@lb.id})").formats(SSL_TERMINATION_FORMAT) do
16
+ @service.get_ssl_termination(@lb.id).body
17
+ end
18
+
19
+ @lb.wait_for { ready? }
20
+ tests("#remove_ssl_termination(#{@lb.id})").succeeds do
21
+ @service.remove_ssl_termination(@lb.id).body
22
+ end
23
+
24
+ end
25
+
26
+ tests('failure') do
27
+ @lb.wait_for { ready? }
28
+ tests("#get_ssl_termination(#{@lb.id})").raises(Fog::Rackspace::LoadBalancers::NotFound) do
29
+ @service.get_ssl_termination(@lb.id).body
30
+ end
31
+
32
+ tests("#set_ssl_termination(#{@lb.id}, 443, '', CERTIFICATE)").raises(Fog::Rackspace::LoadBalancers::BadRequest) do
33
+ @service.set_ssl_termination(@lb.id, 443, '', CERTIFICATE)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -21,7 +21,7 @@ for provider, config in storage_providers
21
21
  responds_to(:public_url)
22
22
 
23
23
  tests("#public=(true)").succeeds do
24
- pending if Fog.mocking? && !config[:mocked]
24
+ pending if Fog.mocking? && !config[:mocked] || !Fog::Storage[provider].respond_to?(:public=)
25
25
  @instance.public=(true)
26
26
  end
27
27