fog 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
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