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
@@ -1,44 +0,0 @@
1
- require 'fog/core/model'
2
-
3
- module Fog
4
- module Identity
5
- class OpenStack
6
- class Ec2Credential < Fog::Model
7
- identity :access, :aliases => 'access_key'
8
-
9
- attribute :secret, :aliases => 'secret_key'
10
- attribute :tenant_id
11
- attribute :user_id
12
-
13
- def initialize(attributes)
14
- # Old 'connection' is renamed as service and should be used instead
15
- prepare_service_value(attributes)
16
- super
17
- end
18
-
19
- def destroy
20
- requires :access
21
- requires :user_id
22
- service.delete_ec2_credential user_id, access
23
- true
24
- end
25
-
26
- def save
27
- raise Fog::Errors::Error, 'Existing credentials cannot be altered' if
28
- access
29
-
30
- self.user_id ||= user.id
31
- self.tenant_id ||= user.tenant_id
32
-
33
- requires :user_id, :tenant_id
34
-
35
- data = service.create_ec2_credential user_id, tenant_id
36
-
37
- merge_attributes(data.body['credential'])
38
-
39
- true
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,53 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/openstack/models/identity/ec2_credential'
3
-
4
- module Fog
5
- module Identity
6
- class OpenStack
7
- class Ec2Credentials < Fog::Collection
8
- model Fog::Identity::OpenStack::Ec2Credential
9
-
10
- attribute :user
11
-
12
- def all
13
- user_id = user ? user.id : nil
14
-
15
- ec2_credentials = service.list_ec2_credentials(user_id)
16
-
17
- load(ec2_credentials.body['credentials'])
18
- end
19
-
20
- def create(attributes = {})
21
- if user then
22
- attributes[:user_id] ||= user.id
23
- attributes[:tenant_id] ||= user.tenant_id
24
- end
25
-
26
- super attributes
27
- end
28
-
29
- def destroy(access_key)
30
- ec2_credential = self.find_by_access_key(access_key)
31
- ec2_credential.destroy
32
- end
33
-
34
- def find_by_access_key(access_key)
35
- user_id = user ? user.id : nil
36
-
37
- ec2_credential =
38
- self.find { |ec2_credential| ec2_credential.access == access_key }
39
-
40
- unless ec2_credential then
41
- response = service.get_ec2_credential(user_id, access_key)
42
- body = response.body['credential']
43
- body = body.merge 'service' => service
44
-
45
- ec2_credential = Fog::Identity::OpenStack::EC2Credential.new(body)
46
- end
47
-
48
- ec2_credential
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,50 +0,0 @@
1
- require 'fog/core/model'
2
-
3
- module Fog
4
- module Identity
5
- class OpenStack
6
- class Role < Fog::Model
7
- identity :id
8
- attribute :name
9
-
10
- def save
11
- requires :name
12
- data = service.create_role(name)
13
- merge_attributes(data.body['role'])
14
- true
15
- end
16
-
17
- def destroy
18
- requires :id
19
- service.delete_role(id)
20
- true
21
- end
22
-
23
- def add_to_user(user, tenant)
24
- add_remove_to_user(user, tenant, :add)
25
- end
26
-
27
- def remove_to_user(user, tenant)
28
- add_remove_to_user(user, tenant, :remove)
29
- end
30
-
31
- private
32
- def add_remove_to_user(user, tenant, ops)
33
- requires :id
34
- user_id = get_id(user)
35
- tenant_id = get_id(tenant)
36
- case ops
37
- when :add
38
- service.create_user_role(tenant_id, user_id, id).status == 200
39
- when :remove
40
- service.delete_user_role(tenant_id, user_id, id).status == 204
41
- end
42
- end
43
-
44
- def get_id(_)
45
- _.is_a?(String) ? _ : _.id
46
- end
47
- end # class Role
48
- end # class OpenStack
49
- end # module Identity
50
- end # module Fog
@@ -1,20 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/openstack/models/identity/role'
3
-
4
- module Fog
5
- module Identity
6
- class OpenStack
7
- class Roles < Fog::Collection
8
- model Fog::Identity::OpenStack::Role
9
-
10
- def all
11
- load(service.list_roles.body['roles'])
12
- end
13
-
14
- def get(id)
15
- service.get_role(id)
16
- end
17
- end
18
- end # class OpenStack
19
- end # module Compute
20
- end # module Fog
@@ -1,62 +0,0 @@
1
- require 'fog/core/model'
2
-
3
- module Fog
4
- module Identity
5
- class OpenStack
6
- class Tenant < Fog::Model
7
- identity :id
8
-
9
- attribute :description
10
- attribute :enabled
11
- attribute :name
12
-
13
- def to_s
14
- self.name
15
- end
16
-
17
- def roles_for(user)
18
- service.roles(
19
- :tenant => self,
20
- :user => user)
21
- end
22
-
23
- def users
24
- requires :id
25
- service.users(:tenant_id => self.id)
26
- end
27
-
28
- def destroy
29
- requires :id
30
- service.delete_tenant(self.id)
31
- true
32
- end
33
-
34
- def update(attr = nil)
35
- requires :id
36
- merge_attributes(
37
- service.update_tenant(self.id, attr || attributes).body['tenant'])
38
- self
39
- end
40
-
41
- def save
42
- requires :name
43
- identity ? update : create
44
- end
45
-
46
- def create
47
- merge_attributes(
48
- service.create_tenant(attributes).body['tenant'])
49
- self
50
- end
51
-
52
- def grant_user_role(user_id, role_id)
53
- service.add_user_to_tenant(self.id, user_id, role_id)
54
- end
55
-
56
- def revoke_user_role(user_id, role_id)
57
- service.remove_user_from_tenant(self.id, user_id, role_id)
58
- end
59
- end # class Tenant
60
- end # class OpenStack
61
- end # module Identity
62
- end # module Fog
@@ -1,29 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/openstack/models/identity/tenant'
3
-
4
- module Fog
5
- module Identity
6
- class OpenStack
7
- class Tenants < Fog::Collection
8
- model Fog::Identity::OpenStack::Tenant
9
-
10
- def all
11
- load(service.list_tenants.body['tenants'])
12
- end
13
-
14
- def find_by_id(id)
15
- cached_tenant = self.find {|tenant| tenant.id == id}
16
- return cached_tenant if cached_tenant
17
- tenant_hash = service.get_tenant(id).body['tenant']
18
- Fog::Identity::OpenStack::Tenant.new(
19
- tenant_hash.merge(:service => service))
20
- end
21
-
22
- def destroy(id)
23
- tenant = self.find_by_id(id)
24
- tenant.destroy
25
- end
26
- end # class Tenants
27
- end # class OpenStack
28
- end # module Compute
29
- end # module Fog
@@ -1,69 +0,0 @@
1
- require 'fog/core/model'
2
-
3
- module Fog
4
- module Identity
5
- class OpenStack
6
- class User < Fog::Model
7
- identity :id
8
-
9
- attribute :email
10
- attribute :enabled
11
- attribute :name
12
- attribute :tenant_id, :aliases => 'tenantId'
13
- attribute :password
14
-
15
- attr_accessor :email, :name, :tenant_id, :enabled, :password
16
-
17
- def initialize(attributes)
18
- # Old 'connection' is renamed as service and should be used instead
19
- prepare_service_value(attributes)
20
- super
21
- end
22
-
23
- def ec2_credentials
24
- requires :id
25
- service.ec2_credentials(:user => self)
26
- end
27
-
28
- def save
29
- raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
30
- requires :name, :tenant_id, :password
31
- enabled = true if enabled.nil?
32
- data = service.create_user(name, password, email, tenant_id, enabled)
33
- merge_attributes(data.body['user'])
34
- true
35
- end
36
-
37
- def update(options = {})
38
- requires :id
39
- options.merge('id' => id)
40
- response = service.update_user(id, options)
41
- true
42
- end
43
-
44
- def update_password(password)
45
- update({'password' => password, 'url' => "/users/#{id}/OS-KSADM/password"})
46
- end
47
-
48
- def update_tenant(tenant)
49
- tenant = tenant.id if tenant.class != String
50
- update({:tenantId => tenant, 'url' => "/users/#{id}/OS-KSADM/tenant"})
51
- end
52
-
53
- def update_enabled(enabled)
54
- update({:enabled => enabled, 'url' => "/users/#{id}/OS-KSADM/enabled"})
55
- end
56
-
57
- def destroy
58
- requires :id
59
- service.delete_user(id)
60
- true
61
- end
62
-
63
- def roles(tenant_id = self.tenant_id)
64
- service.list_roles_for_user_on_tenant(tenant_id, self.id).body['roles']
65
- end
66
- end # class User
67
- end # class OpenStack
68
- end # module Identity
69
- end # module Fog
@@ -1,41 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/openstack/models/identity/user'
3
-
4
- module Fog
5
- module Identity
6
- class OpenStack
7
- class Users < Fog::Collection
8
- model Fog::Identity::OpenStack::User
9
-
10
- attribute :tenant_id
11
-
12
- def all
13
- load(service.list_users(tenant_id).body['users'])
14
- end
15
-
16
- def find_by_id(id)
17
- self.find {|user| user.id == id} ||
18
- Fog::Identity::OpenStack::User.new(
19
- service.get_user_by_id(id).body['user'].merge(
20
- 'service' => service
21
- )
22
- )
23
- end
24
-
25
- def find_by_name(name)
26
- self.find {|user| user.name == name} ||
27
- Fog::Identity::OpenStack::User.new(
28
- service.get_user_by_name(name).body['user'].merge(
29
- 'service' => service
30
- )
31
- )
32
- end
33
-
34
- def destroy(id)
35
- user = self.find_by_id(id)
36
- user.destroy
37
- end
38
- end # class Users
39
- end # class OpenStack
40
- end # module Identity
41
- end # module Fog
@@ -1,34 +0,0 @@
1
- module Fog
2
- module Identity
3
- class OpenStack
4
- class Real
5
- def add_user_to_tenant(tenant_id, user_id, role_id)
6
- request(
7
- :expects => 200,
8
- :method => 'PUT',
9
- :path => "/tenants/#{tenant_id}/users/#{user_id}/roles/OS-KSADM/#{role_id}"
10
- )
11
- end
12
- end # class Real
13
-
14
- class Mock
15
- def add_user_to_tenant(tenant_id, user_id, role_id)
16
- role = self.data[:roles][role_id]
17
- self.data[:user_tenant_membership][tenant_id] ||= {}
18
- self.data[:user_tenant_membership][tenant_id][user_id] ||= []
19
- self.data[:user_tenant_membership][tenant_id][user_id].push(role['id']).uniq!
20
-
21
- response = Excon::Response.new
22
- response.status = 200
23
- response.body = {
24
- 'role' => {
25
- 'id' => role['id'],
26
- 'name' => role['name']
27
- }
28
- }
29
- response
30
- end # def add_user_to_tenant
31
- end # class Mock
32
- end # class OpenStack
33
- end # module Identity
34
- end
@@ -1,20 +0,0 @@
1
- module Fog
2
- module Identity
3
- class OpenStack
4
- class Real
5
- def check_token(token_id, tenant_id=nil)
6
- request(
7
- :expects => [200, 203],
8
- :method => 'HEAD',
9
- :path => "tokens/#{token_id}"+(tenant_id ? "?belongsTo=#{tenant_id}" : '')
10
- )
11
- end
12
- end
13
-
14
- class Mock
15
- def check_token(token_id, tenant_id=nil)
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,57 +0,0 @@
1
- module Fog
2
- module Identity
3
- class OpenStack
4
- class Real
5
- ##
6
- # Create an EC2 credential for a user in a tenant. Requires
7
- # administrator credentials.
8
- #
9
- # ==== Parameters
10
- # * user_id<~String>: The id of the user to create an EC2 credential
11
- # for
12
- # * tenant_id<~String>: The id of the tenant to create the credential
13
- # in
14
- #
15
- # ==== Returns
16
- # * response<~Excon::Response>:
17
- # * body<~Hash>:
18
- # * 'credential'<~Hash>: Created EC2 credential
19
- # * 'access'<~String>: The access key
20
- # * 'secret'<~String>: The secret key
21
- # * 'user_id'<~String>: The user id
22
- # * 'tenant_id'<~String>: The tenant id
23
-
24
- def create_ec2_credential(user_id, tenant_id)
25
- data = { 'tenant_id' => tenant_id }
26
-
27
- request(
28
- :body => Fog::JSON.encode(data),
29
- :expects => [200, 202],
30
- :method => 'POST',
31
- :path => "users/#{user_id}/credentials/OS-EC2"
32
- )
33
- end
34
- end
35
-
36
- class Mock
37
- def create_ec2_credential(user_id, tenant_id)
38
- response = Excon::Response.new
39
- response.status = 200
40
-
41
- data = {
42
- 'access' => Fog::Mock.random_hex(32),
43
- 'secret' => Fog::Mock.random_hex(32),
44
- 'tenant_id' => tenant_id,
45
- 'user_id' => user_id,
46
- }
47
-
48
- self.data[:ec2_credentials][user_id][data['access']] = data
49
-
50
- response.body = { 'credential' => data }
51
-
52
- response
53
- end
54
- end
55
- end
56
- end
57
- end