fog 1.30.0 → 1.31.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 (252) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -0
  3. data/CONTRIBUTORS.md +73 -1
  4. data/LICENSE.md +1 -1
  5. data/Rakefile +10 -8
  6. data/fog.gemspec +6 -3
  7. data/lib/fog/cloudstack/models/compute/server.rb +2 -0
  8. data/lib/fog/openstack.rb +1 -1
  9. data/lib/fog/openstack/baremetal.rb +5 -5
  10. data/lib/fog/openstack/compute.rb +20 -9
  11. data/lib/fog/openstack/core.rb +53 -14
  12. data/lib/fog/openstack/examples/compute/basics.rb +3 -1
  13. data/lib/fog/openstack/identity.rb +29 -254
  14. data/lib/fog/openstack/identity_v2.rb +264 -0
  15. data/lib/fog/openstack/identity_v3.rb +249 -0
  16. data/lib/fog/openstack/image.rb +1 -1
  17. data/lib/fog/openstack/metering.rb +1 -1
  18. data/lib/fog/openstack/models/baremetal/node.rb +22 -0
  19. data/lib/fog/openstack/models/compute/flavor.rb +13 -0
  20. data/lib/fog/openstack/models/compute/service.rb +48 -0
  21. data/lib/fog/openstack/models/compute/services.rb +20 -0
  22. data/lib/fog/openstack/models/identity_v2/ec2_credential.rb +45 -0
  23. data/lib/fog/openstack/models/identity_v2/ec2_credentials.rb +55 -0
  24. data/lib/fog/openstack/models/identity_v2/role.rb +52 -0
  25. data/lib/fog/openstack/models/identity_v2/roles.rb +22 -0
  26. data/lib/fog/openstack/models/identity_v2/tenant.rb +64 -0
  27. data/lib/fog/openstack/models/identity_v2/tenants.rb +31 -0
  28. data/lib/fog/openstack/models/identity_v2/user.rb +71 -0
  29. data/lib/fog/openstack/models/identity_v2/users.rb +43 -0
  30. data/lib/fog/openstack/models/identity_v3/domain.rb +47 -0
  31. data/lib/fog/openstack/models/identity_v3/domains.rb +36 -0
  32. data/lib/fog/openstack/models/identity_v3/endpoint.rb +50 -0
  33. data/lib/fog/openstack/models/identity_v3/endpoints.rb +27 -0
  34. data/lib/fog/openstack/models/identity_v3/group.rb +96 -0
  35. data/lib/fog/openstack/models/identity_v3/groups.rb +31 -0
  36. data/lib/fog/openstack/models/identity_v3/os_credential.rb +73 -0
  37. data/lib/fog/openstack/models/identity_v3/os_credentials.rb +31 -0
  38. data/lib/fog/openstack/models/identity_v3/policies.rb +31 -0
  39. data/lib/fog/openstack/models/identity_v3/policy.rb +46 -0
  40. data/lib/fog/openstack/models/identity_v3/project.rb +98 -0
  41. data/lib/fog/openstack/models/identity_v3/projects.rb +31 -0
  42. data/lib/fog/openstack/models/identity_v3/role.rb +45 -0
  43. data/lib/fog/openstack/models/identity_v3/role_assignment.rb +22 -0
  44. data/lib/fog/openstack/models/identity_v3/role_assignments.rb +22 -0
  45. data/lib/fog/openstack/models/identity_v3/roles.rb +35 -0
  46. data/lib/fog/openstack/models/identity_v3/service.rb +47 -0
  47. data/lib/fog/openstack/models/identity_v3/services.rb +31 -0
  48. data/lib/fog/openstack/models/identity_v3/token.rb +26 -0
  49. data/lib/fog/openstack/models/identity_v3/tokens.rb +40 -0
  50. data/lib/fog/openstack/models/identity_v3/user.rb +87 -0
  51. data/lib/fog/openstack/models/identity_v3/users.rb +35 -0
  52. data/lib/fog/openstack/network.rb +2 -9
  53. data/lib/fog/openstack/orchestration.rb +1 -6
  54. data/lib/fog/openstack/planning.rb +1 -1
  55. data/lib/fog/openstack/requests/baremetal/set_node_maintenance.rb +36 -0
  56. data/lib/fog/openstack/requests/baremetal/set_node_power_state.rb +35 -0
  57. data/lib/fog/openstack/requests/baremetal/set_node_provision_state.rb +38 -0
  58. data/lib/fog/openstack/requests/baremetal/unset_node_maintenance.rb +36 -0
  59. data/lib/fog/openstack/requests/compute/create_flavor_metadata.rb +38 -0
  60. data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
  61. data/lib/fog/openstack/requests/compute/delete_service.rb +32 -0
  62. data/lib/fog/openstack/requests/compute/disable_service.rb +37 -0
  63. data/lib/fog/openstack/requests/compute/disable_service_log_reason.rb +38 -0
  64. data/lib/fog/openstack/requests/compute/enable_service.rb +38 -0
  65. data/lib/fog/openstack/requests/compute/get_flavor_metadata.rb +27 -0
  66. data/lib/fog/openstack/requests/compute/list_services.rb +72 -0
  67. data/lib/fog/openstack/requests/compute/list_tenants_with_flavor_access.rb +1 -1
  68. data/lib/fog/openstack/requests/compute/list_zones.rb +32 -0
  69. data/lib/fog/openstack/requests/identity_v2/add_user_to_tenant.rb +36 -0
  70. data/lib/fog/openstack/requests/identity_v2/check_token.rb +22 -0
  71. data/lib/fog/openstack/requests/identity_v2/create_ec2_credential.rb +59 -0
  72. data/lib/fog/openstack/requests/identity_v2/create_role.rb +38 -0
  73. data/lib/fog/openstack/requests/identity_v2/create_tenant.rb +34 -0
  74. data/lib/fog/openstack/requests/identity_v2/create_user.rb +45 -0
  75. data/lib/fog/openstack/requests/identity_v2/create_user_role.rb +26 -0
  76. data/lib/fog/openstack/requests/identity_v2/delete_ec2_credential.rb +43 -0
  77. data/lib/fog/openstack/requests/identity_v2/delete_role.rb +30 -0
  78. data/lib/fog/openstack/requests/identity_v2/delete_tenant.rb +33 -0
  79. data/lib/fog/openstack/requests/identity_v2/delete_user.rb +30 -0
  80. data/lib/fog/openstack/requests/identity_v2/delete_user_role.rb +25 -0
  81. data/lib/fog/openstack/requests/identity_v2/get_ec2_credential.rb +50 -0
  82. data/lib/fog/openstack/requests/identity_v2/get_role.rb +30 -0
  83. data/lib/fog/openstack/requests/identity_v2/get_tenant.rb +33 -0
  84. data/lib/fog/openstack/requests/identity_v2/get_tenants_by_id.rb +20 -0
  85. data/lib/fog/openstack/requests/identity_v2/get_tenants_by_name.rb +20 -0
  86. data/lib/fog/openstack/requests/identity_v2/get_user_by_id.rb +34 -0
  87. data/lib/fog/openstack/requests/identity_v2/get_user_by_name.rb +29 -0
  88. data/lib/fog/openstack/requests/identity_v2/list_ec2_credentials.rb +45 -0
  89. data/lib/fog/openstack/requests/identity_v2/list_endpoints_for_token.rb +20 -0
  90. data/lib/fog/openstack/requests/identity_v2/list_roles.rb +33 -0
  91. data/lib/fog/openstack/requests/identity_v2/list_roles_for_user_on_tenant.rb +32 -0
  92. data/lib/fog/openstack/requests/identity_v2/list_tenants.rb +47 -0
  93. data/lib/fog/openstack/requests/identity_v2/list_user_global_roles.rb +20 -0
  94. data/lib/fog/openstack/requests/identity_v2/list_users.rb +35 -0
  95. data/lib/fog/openstack/requests/identity_v2/remove_user_from_tenant.rb +22 -0
  96. data/lib/fog/openstack/requests/identity_v2/set_tenant.rb +21 -0
  97. data/lib/fog/openstack/requests/identity_v2/update_tenant.rb +30 -0
  98. data/lib/fog/openstack/requests/identity_v2/update_user.rb +34 -0
  99. data/lib/fog/openstack/requests/identity_v2/validate_token.rb +22 -0
  100. data/lib/fog/openstack/requests/identity_v3/add_user_to_group.rb +20 -0
  101. data/lib/fog/openstack/requests/identity_v3/auth_domains.rb +29 -0
  102. data/lib/fog/openstack/requests/identity_v3/auth_projects.rb +29 -0
  103. data/lib/fog/openstack/requests/identity_v3/check_domain_group_role.rb +20 -0
  104. data/lib/fog/openstack/requests/identity_v3/check_domain_user_role.rb +20 -0
  105. data/lib/fog/openstack/requests/identity_v3/check_project_group_role.rb +20 -0
  106. data/lib/fog/openstack/requests/identity_v3/check_project_user_role.rb +20 -0
  107. data/lib/fog/openstack/requests/identity_v3/create_domain.rb +21 -0
  108. data/lib/fog/openstack/requests/identity_v3/create_endpoint.rb +21 -0
  109. data/lib/fog/openstack/requests/identity_v3/create_group.rb +21 -0
  110. data/lib/fog/openstack/requests/identity_v3/create_os_credential.rb +21 -0
  111. data/lib/fog/openstack/requests/identity_v3/create_policy.rb +21 -0
  112. data/lib/fog/openstack/requests/identity_v3/create_project.rb +21 -0
  113. data/lib/fog/openstack/requests/identity_v3/create_role.rb +21 -0
  114. data/lib/fog/openstack/requests/identity_v3/create_service.rb +21 -0
  115. data/lib/fog/openstack/requests/identity_v3/create_user.rb +21 -0
  116. data/lib/fog/openstack/requests/identity_v3/delete_domain.rb +20 -0
  117. data/lib/fog/openstack/requests/identity_v3/delete_endpoint.rb +20 -0
  118. data/lib/fog/openstack/requests/identity_v3/delete_group.rb +20 -0
  119. data/lib/fog/openstack/requests/identity_v3/delete_os_credential.rb +20 -0
  120. data/lib/fog/openstack/requests/identity_v3/delete_policy.rb +20 -0
  121. data/lib/fog/openstack/requests/identity_v3/delete_project.rb +20 -0
  122. data/lib/fog/openstack/requests/identity_v3/delete_role.rb +20 -0
  123. data/lib/fog/openstack/requests/identity_v3/delete_service.rb +20 -0
  124. data/lib/fog/openstack/requests/identity_v3/delete_user.rb +20 -0
  125. data/lib/fog/openstack/requests/identity_v3/get_domain.rb +23 -0
  126. data/lib/fog/openstack/requests/identity_v3/get_endpoint.rb +23 -0
  127. data/lib/fog/openstack/requests/identity_v3/get_group.rb +23 -0
  128. data/lib/fog/openstack/requests/identity_v3/get_os_credential.rb +23 -0
  129. data/lib/fog/openstack/requests/identity_v3/get_policy.rb +23 -0
  130. data/lib/fog/openstack/requests/identity_v3/get_project.rb +23 -0
  131. data/lib/fog/openstack/requests/identity_v3/get_role.rb +23 -0
  132. data/lib/fog/openstack/requests/identity_v3/get_service.rb +23 -0
  133. data/lib/fog/openstack/requests/identity_v3/get_user.rb +23 -0
  134. data/lib/fog/openstack/requests/identity_v3/grant_domain_group_role.rb +20 -0
  135. data/lib/fog/openstack/requests/identity_v3/grant_domain_user_role.rb +20 -0
  136. data/lib/fog/openstack/requests/identity_v3/grant_project_group_role.rb +20 -0
  137. data/lib/fog/openstack/requests/identity_v3/grant_project_user_role.rb +20 -0
  138. data/lib/fog/openstack/requests/identity_v3/group_user_check.rb +20 -0
  139. data/lib/fog/openstack/requests/identity_v3/list_domain_group_roles.rb +23 -0
  140. data/lib/fog/openstack/requests/identity_v3/list_domain_user_roles.rb +23 -0
  141. data/lib/fog/openstack/requests/identity_v3/list_domains.rb +31 -0
  142. data/lib/fog/openstack/requests/identity_v3/list_endpoints.rb +31 -0
  143. data/lib/fog/openstack/requests/identity_v3/list_group_users.rb +32 -0
  144. data/lib/fog/openstack/requests/identity_v3/list_groups.rb +42 -0
  145. data/lib/fog/openstack/requests/identity_v3/list_os_credentials.rb +29 -0
  146. data/lib/fog/openstack/requests/identity_v3/list_policies.rb +28 -0
  147. data/lib/fog/openstack/requests/identity_v3/list_project_group_roles.rb +23 -0
  148. data/lib/fog/openstack/requests/identity_v3/list_project_user_roles.rb +23 -0
  149. data/lib/fog/openstack/requests/identity_v3/list_projects.rb +42 -0
  150. data/lib/fog/openstack/requests/identity_v3/list_role_assignments.rb +35 -0
  151. data/lib/fog/openstack/requests/identity_v3/list_roles.rb +42 -0
  152. data/lib/fog/openstack/requests/identity_v3/list_services.rb +30 -0
  153. data/lib/fog/openstack/requests/identity_v3/list_user_groups.rb +23 -0
  154. data/lib/fog/openstack/requests/identity_v3/list_user_projects.rb +23 -0
  155. data/lib/fog/openstack/requests/identity_v3/list_users.rb +32 -0
  156. data/lib/fog/openstack/requests/identity_v3/remove_user_from_group.rb +20 -0
  157. data/lib/fog/openstack/requests/identity_v3/revoke_domain_group_role.rb +20 -0
  158. data/lib/fog/openstack/requests/identity_v3/revoke_domain_user_role.rb +20 -0
  159. data/lib/fog/openstack/requests/identity_v3/revoke_project_group_role.rb +20 -0
  160. data/lib/fog/openstack/requests/identity_v3/revoke_project_user_role.rb +20 -0
  161. data/lib/fog/openstack/requests/identity_v3/token_authenticate.rb +21 -0
  162. data/lib/fog/openstack/requests/identity_v3/token_check.rb +21 -0
  163. data/lib/fog/openstack/requests/identity_v3/token_revoke.rb +21 -0
  164. data/lib/fog/openstack/requests/identity_v3/token_validate.rb +22 -0
  165. data/lib/fog/openstack/requests/identity_v3/update_domain.rb +21 -0
  166. data/lib/fog/openstack/requests/identity_v3/update_endpoint.rb +21 -0
  167. data/lib/fog/openstack/requests/identity_v3/update_group.rb +21 -0
  168. data/lib/fog/openstack/requests/identity_v3/update_os_credential.rb +21 -0
  169. data/lib/fog/openstack/requests/identity_v3/update_policy.rb +21 -0
  170. data/lib/fog/openstack/requests/identity_v3/update_project.rb +21 -0
  171. data/lib/fog/openstack/requests/identity_v3/update_role.rb +21 -0
  172. data/lib/fog/openstack/requests/identity_v3/update_service.rb +21 -0
  173. data/lib/fog/openstack/requests/identity_v3/update_user.rb +21 -0
  174. data/lib/fog/openstack/requests/image/list_public_images_detailed.rb +1 -1
  175. data/lib/fog/openstack/volume.rb +1 -1
  176. data/lib/fog/version.rb +1 -1
  177. data/lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb +27 -8
  178. data/lib/fog/vsphere/requests/compute/vm_clone.rb +376 -37
  179. data/lib/tasks/changelog_task.rb +1 -1
  180. data/spec/fog/openstack/identity_v3/authv3_a.yml +61 -0
  181. data/spec/fog/openstack/identity_v3/authv3_b.yml +61 -0
  182. data/spec/fog/openstack/identity_v3/authv3_c.yml +61 -0
  183. data/spec/fog/openstack/identity_v3/authv3_project.yml +61 -0
  184. data/spec/fog/openstack/identity_v3/authv3_token.yml +151 -0
  185. data/spec/fog/openstack/identity_v3/authv3_unscoped.yml +334 -0
  186. data/spec/fog/openstack/identity_v3/idv2_unscoped_token_v3.yml +467 -0
  187. data/spec/fog/openstack/identity_v3/idv3.yml +61 -0
  188. data/spec/fog/openstack/identity_v3/idv3_credential.yml +111 -0
  189. data/spec/fog/openstack/identity_v3/idv3_credential_crud.yml +528 -0
  190. data/spec/fog/openstack/identity_v3/idv3_domain.yml +195 -0
  191. data/spec/fog/openstack/identity_v3/idv3_domain_crud.yml +686 -0
  192. data/spec/fog/openstack/identity_v3/idv3_domain_group_roles_mutation.yml +906 -0
  193. data/spec/fog/openstack/identity_v3/idv3_domain_roles_mutation.yml +505 -0
  194. data/spec/fog/openstack/identity_v3/idv3_endpoint.yml +303 -0
  195. data/spec/fog/openstack/identity_v3/idv3_endpoints_crud.yml +718 -0
  196. data/spec/fog/openstack/identity_v3/idv3_group_crud_mutation.yml +975 -0
  197. data/spec/fog/openstack/identity_v3/idv3_policy.yml +147 -0
  198. data/spec/fog/openstack/identity_v3/idv3_policy_crud.yml +368 -0
  199. data/spec/fog/openstack/identity_v3/idv3_project.yml +211 -0
  200. data/spec/fog/openstack/identity_v3/idv3_project_crud.yml +663 -0
  201. data/spec/fog/openstack/identity_v3/idv3_project_group_user_roles_mutation.yml +1378 -0
  202. data/spec/fog/openstack/identity_v3/idv3_role.yml +199 -0
  203. data/spec/fog/openstack/identity_v3/idv3_role_crud.yml +616 -0
  204. data/spec/fog/openstack/identity_v3/idv3_service.yml +223 -0
  205. data/spec/fog/openstack/identity_v3/idv3_services_crud.yml +562 -0
  206. data/spec/fog/openstack/identity_v3/idv3_token.yml +240 -0
  207. data/spec/fog/openstack/identity_v3/idv3_user_crud.yml +572 -0
  208. data/spec/fog/openstack/identity_v3/idv3_users.yml +393 -0
  209. data/spec/fog/openstack/identity_v3_spec.rb +929 -0
  210. data/tests/openstack/requests/baremetal/node_tests.rb +18 -0
  211. data/tests/openstack/requests/compute/flavor_tests.rb +18 -0
  212. data/tests/openstack/requests/compute/service_tests.rb +33 -0
  213. metadata +259 -49
  214. data/lib/fog/openstack/models/identity/ec2_credential.rb +0 -44
  215. data/lib/fog/openstack/models/identity/ec2_credentials.rb +0 -53
  216. data/lib/fog/openstack/models/identity/role.rb +0 -50
  217. data/lib/fog/openstack/models/identity/roles.rb +0 -20
  218. data/lib/fog/openstack/models/identity/tenant.rb +0 -62
  219. data/lib/fog/openstack/models/identity/tenants.rb +0 -29
  220. data/lib/fog/openstack/models/identity/user.rb +0 -69
  221. data/lib/fog/openstack/models/identity/users.rb +0 -41
  222. data/lib/fog/openstack/requests/identity/add_user_to_tenant.rb +0 -34
  223. data/lib/fog/openstack/requests/identity/check_token.rb +0 -20
  224. data/lib/fog/openstack/requests/identity/create_ec2_credential.rb +0 -57
  225. data/lib/fog/openstack/requests/identity/create_role.rb +0 -36
  226. data/lib/fog/openstack/requests/identity/create_tenant.rb +0 -32
  227. data/lib/fog/openstack/requests/identity/create_user.rb +0 -43
  228. data/lib/fog/openstack/requests/identity/create_user_role.rb +0 -24
  229. data/lib/fog/openstack/requests/identity/delete_ec2_credential.rb +0 -42
  230. data/lib/fog/openstack/requests/identity/delete_role.rb +0 -28
  231. data/lib/fog/openstack/requests/identity/delete_tenant.rb +0 -31
  232. data/lib/fog/openstack/requests/identity/delete_user.rb +0 -28
  233. data/lib/fog/openstack/requests/identity/delete_user_role.rb +0 -23
  234. data/lib/fog/openstack/requests/identity/get_ec2_credential.rb +0 -48
  235. data/lib/fog/openstack/requests/identity/get_role.rb +0 -28
  236. data/lib/fog/openstack/requests/identity/get_tenant.rb +0 -31
  237. data/lib/fog/openstack/requests/identity/get_tenants_by_id.rb +0 -18
  238. data/lib/fog/openstack/requests/identity/get_tenants_by_name.rb +0 -18
  239. data/lib/fog/openstack/requests/identity/get_user_by_id.rb +0 -32
  240. data/lib/fog/openstack/requests/identity/get_user_by_name.rb +0 -27
  241. data/lib/fog/openstack/requests/identity/list_ec2_credentials.rb +0 -43
  242. data/lib/fog/openstack/requests/identity/list_endpoints_for_token.rb +0 -18
  243. data/lib/fog/openstack/requests/identity/list_roles.rb +0 -31
  244. data/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb +0 -30
  245. data/lib/fog/openstack/requests/identity/list_tenants.rb +0 -45
  246. data/lib/fog/openstack/requests/identity/list_user_global_roles.rb +0 -18
  247. data/lib/fog/openstack/requests/identity/list_users.rb +0 -33
  248. data/lib/fog/openstack/requests/identity/remove_user_from_tenant.rb +0 -20
  249. data/lib/fog/openstack/requests/identity/set_tenant.rb +0 -19
  250. data/lib/fog/openstack/requests/identity/update_tenant.rb +0 -28
  251. data/lib/fog/openstack/requests/identity/update_user.rb +0 -32
  252. data/lib/fog/openstack/requests/identity/validate_token.rb +0 -20
@@ -0,0 +1,45 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ ##
7
+ # List EC2 credentials for a user. Requires administrator
8
+ # credentials.
9
+ #
10
+ # ==== Parameters
11
+ # * user_id<~String>: The id of the user to retrieve the credential
12
+ # for
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'credentials'<~Array>: The user's EC2 credentials
18
+ # * 'access'<~String>: The access key
19
+ # * 'secret'<~String>: The secret key
20
+ # * 'user_id'<~String>: The user id
21
+ # * 'tenant_id'<~String>: The tenant id
22
+
23
+ def list_ec2_credentials(user_id)
24
+ request(
25
+ :expects => [200, 202],
26
+ :method => 'GET',
27
+ :path => "users/#{user_id}/credentials/OS-EC2"
28
+ )
29
+ end
30
+ end
31
+
32
+ class Mock
33
+ def list_ec2_credentials(user_id)
34
+ ec2_credentials = self.data[:ec2_credentials][user_id].values
35
+
36
+ response = Excon::Response.new
37
+ response.status = 200
38
+ response.body = {'credentials' => ec2_credentials}
39
+ response
40
+ end
41
+ end
42
+ end # class V2
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def list_endpoints_for_token(token_id)
7
+ request(
8
+ :expects => [200, 203],
9
+ :method => 'HEAD',
10
+ :path => "tokens/#{token_id}/endpoints"
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ end
17
+ end # class V2
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def list_roles
7
+ request(
8
+ :expects => 200,
9
+ :method => 'GET',
10
+ :path => '/OS-KSADM/roles'
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def list_roles
17
+ if self.data[:roles].empty?
18
+ ['admin', 'Member'].each do |name|
19
+ id = Fog::Mock.random_hex(32)
20
+ self.data[:roles][id] = {'id' => id, 'name' => name}
21
+ end
22
+ end
23
+
24
+ Excon::Response.new(
25
+ :body => {'roles' => self.data[:roles].values},
26
+ :status => 200
27
+ )
28
+ end
29
+ end
30
+ end # class V2
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def list_roles_for_user_on_tenant(tenant_id, user_id)
7
+ request(
8
+ :expects => [200],
9
+ :method => 'GET',
10
+ :path => "tenants/#{tenant_id}/users/#{user_id}/roles"
11
+ )
12
+ end # def list_roles_for_user_on_tenant
13
+ end # class Real
14
+
15
+ class Mock
16
+ def list_roles_for_user_on_tenant(tenant_id, user_id)
17
+ self.data[:user_tenant_membership][tenant_id] ||= {}
18
+ self.data[:user_tenant_membership][tenant_id][user_id] ||= []
19
+ roles = self.data[:user_tenant_membership][tenant_id][user_id].map do |role_id|
20
+ self.data[:roles][role_id]
21
+ end
22
+
23
+ Excon::Response.new(
24
+ :body => {'roles' => roles},
25
+ :status => 200
26
+ )
27
+ end # def list_roles_for_user_on_tenant
28
+ end # class Mock
29
+ end # class V2
30
+ end # class OpenStack
31
+ end # module Identity
32
+ end # module Fog
@@ -0,0 +1,47 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def list_tenants(limit = nil, marker = nil)
7
+ params = Hash.new
8
+ params['limit'] = limit if limit
9
+ params['marker'] = marker if marker
10
+
11
+ request(
12
+ :expects => [200, 204],
13
+ :method => 'GET',
14
+ :path => "tenants",
15
+ :query => params
16
+ )
17
+ end
18
+ end # class Real
19
+
20
+ class Mock
21
+ def list_tenants
22
+ Excon::Response.new(
23
+ :body => {
24
+ 'tenants_links' => [],
25
+ 'tenants' => [
26
+ {'id' => '1',
27
+ 'description' => 'Has access to everything',
28
+ 'enabled' => true,
29
+ 'name' => 'admin'},
30
+ {'id' => '2',
31
+ 'description' => 'Normal tenant',
32
+ 'enabled' => true,
33
+ 'name' => 'default'},
34
+ {'id' => '3',
35
+ 'description' => 'Disabled tenant',
36
+ 'enabled' => false,
37
+ 'name' => 'disabled'}
38
+ ]
39
+ },
40
+ :status => [200, 204][rand(1)]
41
+ )
42
+ end # def list_tenants
43
+ end # class Mock
44
+ end # class V2
45
+ end # class OpenStack
46
+ end # module Identity
47
+ end # module Fog
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def list_user_global_roles(user_id)
7
+ request(
8
+ :expects => [200],
9
+ :method => 'GET',
10
+ :path => "users/#{user_id}/roles"
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ end
17
+ end # class V2
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def list_users(tenant_id = nil)
7
+ path = tenant_id ? "tenants/#{tenant_id}/users" : 'users'
8
+ request(
9
+ :expects => [200, 204],
10
+ :method => 'GET',
11
+ :path => path
12
+ )
13
+ end
14
+ end # class Real
15
+
16
+ class Mock
17
+ def list_users(tenant_id = nil)
18
+ users = self.data[:users].values
19
+
20
+ if tenant_id
21
+ users = users.select {
22
+ |user| user['tenantId'] == tenant_id
23
+ }
24
+ end
25
+
26
+ Excon::Response.new(
27
+ :body => {'users' => users},
28
+ :status => 200
29
+ )
30
+ end
31
+ end # class Mock
32
+ end # class V2
33
+ end # class OpenStack
34
+ end # module Identity
35
+ end # module Fog
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def remove_user_from_tenant(tenant_id, user_id, role_id)
7
+ request(
8
+ :expects => [200, 204],
9
+ :method => 'DELETE',
10
+ :path => "/tenants/#{tenant_id}/users/#{user_id}/roles/OS-KSADM/#{role_id}"
11
+ )
12
+ end
13
+ end # class Real
14
+
15
+ class Mock
16
+ def remove_user_from_tenant(tenant_id, user_id, role_id)
17
+ end # def remove_user_from_tenant
18
+ end # class Mock
19
+ end # class V2
20
+ end # class OpenStack
21
+ end # module Identity
22
+ end
@@ -0,0 +1,21 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def set_tenant(tenant)
7
+ @openstack_must_reauthenticate = true
8
+ @openstack_tenant = tenant.to_s
9
+ authenticate
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def set_tenant(tenant)
15
+ true
16
+ end
17
+ end
18
+ end # class V2
19
+ end # class OpenStack
20
+ end # module Identity
21
+ end # module Fog
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def update_tenant(id, attributes)
7
+ request(
8
+ :expects => [200],
9
+ :method => 'PUT',
10
+ :path => "tenants/#{id}",
11
+ :body => Fog::JSON.encode({'tenant' => attributes})
12
+ )
13
+ end # def create_tenant
14
+ end # class Real
15
+
16
+ class Mock
17
+ def update_tenant(id, attributes)
18
+ response = Excon::Response.new
19
+ response.status = [200, 204][rand(1)]
20
+ attributes = {'enabled' => true, 'id' => '1'}.merge(attributes)
21
+ response.body = {
22
+ 'tenant' => attributes
23
+ }
24
+ response
25
+ end # def create_tenant
26
+ end # class Mock
27
+ end # class V2
28
+ end # class OpenStack
29
+ end # module Identity
30
+ end # module Fog
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def update_user(user_id, options = {})
7
+ url = options.delete('url') || "/users/#{user_id}"
8
+ request(
9
+ :body => Fog::JSON.encode({'user' => options}),
10
+ :expects => 200,
11
+ :method => 'PUT',
12
+ :path => url
13
+ )
14
+ end
15
+ end
16
+
17
+ class Mock
18
+ def update_user(user_id, options)
19
+ response = Excon::Response.new
20
+ if user = self.data[:users][user_id]
21
+ if options['name']
22
+ user['name'] = options['name']
23
+ end
24
+ response.status = 200
25
+ response
26
+ else
27
+ raise Fog::Identity::OpenStack::NotFound
28
+ end
29
+ end
30
+ end
31
+ end # class V2
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def validate_token(token_id, tenant_id=nil)
7
+ request(
8
+ :expects => [200, 203],
9
+ :method => 'GET',
10
+ :path => "tokens/#{token_id}"+(tenant_id ? "?belongsTo=#{tenant_id}" : '')
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def validate_token(token_id, tenant_id=nil)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V3
5
+ class Real
6
+ def add_user_to_group(group_id, user_id)
7
+ request(
8
+ :expects => [204],
9
+ :method => 'PUT',
10
+ :path => "groups/#{group_id}/users/#{user_id}"
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V3
5
+
6
+ class Real
7
+ def auth_domains(options={})
8
+ params = Hash.new
9
+ params['page'] = options.fetch(:page, 1)
10
+ params['per_page'] = options.fetch(:per_page, 30)
11
+
12
+ request(
13
+ :expects => [200],
14
+ :method => 'GET',
15
+ :path => "auth/domains",
16
+ :query => params
17
+ )
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def auth_domains
23
+
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V3
5
+ class Real
6
+ def auth_projects(options={})
7
+ params = Hash.new
8
+ params['page'] = options.fetch(:page, 1)
9
+ params['per_page'] = options.fetch(:per_page, 30)
10
+
11
+ request(
12
+ :expects => [200],
13
+ :method => 'GET',
14
+ :path => "auth/projects",
15
+ :query => params
16
+ )
17
+
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def auth_projects
23
+
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end