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,43 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v2/user'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V2
8
+ class Users < Fog::Collection
9
+ model Fog::Identity::OpenStack::V2::User
10
+
11
+ attribute :tenant_id
12
+
13
+ def all
14
+ load(service.list_users(tenant_id).body['users'])
15
+ end
16
+
17
+ def find_by_id(id)
18
+ self.find { |user| user.id == id } ||
19
+ Fog::Identity::OpenStack::V2::User.new(
20
+ service.get_user_by_id(id).body['user'].merge(
21
+ 'service' => service
22
+ )
23
+ )
24
+ end
25
+
26
+ def find_by_name(name)
27
+ self.find { |user| user.name == name } ||
28
+ Fog::Identity::OpenStack::V2::User.new(
29
+ service.get_user_by_name(name).body['user'].merge(
30
+ 'service' => service
31
+ )
32
+ )
33
+ end
34
+
35
+ def destroy(id)
36
+ user = self.find_by_id(id)
37
+ user.destroy
38
+ end
39
+ end # class Users
40
+ end # class V2
41
+ end # class OpenStack
42
+ end # module Identity
43
+ end # module Fog
@@ -0,0 +1,47 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V3
7
+ class Domain < Fog::Model
8
+ identity :id
9
+
10
+ attribute :description
11
+ attribute :enabled
12
+ attribute :name
13
+ attribute :links
14
+
15
+ def to_s
16
+ self.name
17
+ end
18
+
19
+ def destroy
20
+ requires :id
21
+ service.delete_domain(self.id)
22
+ true
23
+ end
24
+
25
+ def update(attr = nil)
26
+ requires :id
27
+ merge_attributes(
28
+ service.update_domain(self.id, attr || attributes).body['domain'])
29
+ self
30
+ end
31
+
32
+ def save
33
+ requires :name
34
+ identity ? update : create
35
+ end
36
+
37
+ def create
38
+ merge_attributes(
39
+ service.create_domain(attributes).body['domain'])
40
+ self
41
+ end
42
+
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,36 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v3/domain'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V3
8
+ class Domains < Fog::Collection
9
+ model Fog::Identity::OpenStack::V3::Domain
10
+
11
+ def all params={}
12
+ load(service.list_domains(params).body['domains'])
13
+ end
14
+
15
+ def auth_domains params={}
16
+ load(service.auth_domains(params).body['domains'])
17
+ end
18
+
19
+
20
+ def find_by_id(id)
21
+ cached_domain = self.find { |domain| domain.id == id }
22
+ return cached_domain if cached_domain
23
+ domain_hash = service.get_domain(id).body['domain']
24
+ Fog::Identity::OpenStack::V3::Domain.new(
25
+ domain_hash.merge(:service => service))
26
+ end
27
+
28
+ def destroy(id)
29
+ domain = self.find_by_id(id)
30
+ domain.destroy
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,50 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V3
7
+ class Endpoint < Fog::Model
8
+ identity :id
9
+
10
+ attribute :description
11
+ attribute :interface
12
+ attribute :service_id
13
+ attribute :name
14
+ attribute :region
15
+ attribute :url
16
+ attribute :links
17
+
18
+ def to_s
19
+ self.name
20
+ end
21
+
22
+ def destroy
23
+ requires :id
24
+ service.delete_endpoint(self.id)
25
+ true
26
+ end
27
+
28
+ def update(attr = nil)
29
+ requires :id
30
+ merge_attributes(
31
+ service.update_endpoint(self.id, attr || attributes).body['endpoint'])
32
+ self
33
+ end
34
+
35
+ def save
36
+ requires :name
37
+ identity ? update : create
38
+ end
39
+
40
+ def create
41
+ merge_attributes(
42
+ service.create_endpoint(attributes).body['endpoint'])
43
+ self
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,27 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v3/service'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V3
8
+ class Endpoints < Fog::Collection
9
+ model Fog::Identity::OpenStack::V3::Endpoint
10
+
11
+ def all params = {}
12
+ load(service.list_endpoints(params).body['endpoints'])
13
+ end
14
+
15
+ def find_by_id(id)
16
+ cached_endpoint = self.find { |endpoint| endpoint.id == id }
17
+ return cached_endpoint if cached_endpoint
18
+ endpoint_hash = service.get_endpoint(id).body['endpoint']
19
+ Fog::Identity::OpenStack::V3::Endpoint.new(
20
+ endpoint_hash.merge(:service => service))
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,96 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V3
7
+ class Group < Fog::Model
8
+ identity :id
9
+
10
+ attribute :description
11
+ attribute :domain_id
12
+ attribute :name
13
+ attribute :links
14
+
15
+ def to_s
16
+ self.name
17
+ end
18
+
19
+ def destroy
20
+ requires :id
21
+ service.delete_group(self.id)
22
+ true
23
+ end
24
+
25
+ def update(attr = nil)
26
+ requires :id
27
+ merge_attributes(
28
+ service.update_group(self.id, attr || attributes).body['group'])
29
+ self
30
+ end
31
+
32
+ def save
33
+ requires :name
34
+ identity ? update : create
35
+ end
36
+
37
+ def create
38
+ merge_attributes(
39
+ service.create_group(attributes).body['group'])
40
+ self
41
+ end
42
+
43
+ def add_user user_id
44
+ requires :id
45
+ service.add_user_to_group(self.id, user_id)
46
+ end
47
+
48
+ def remove_user user_id
49
+ requires :id
50
+ service.remove_user_from_group(self.id, user_id)
51
+ end
52
+
53
+ def contains_user? user_id
54
+ requires :id
55
+ begin
56
+ service.group_user_check(self.id, user_id)
57
+ rescue Fog::Identity::OpenStack::NotFound
58
+ return false
59
+ end
60
+ return true
61
+ end
62
+
63
+ def roles
64
+ requires :id, :domain_id
65
+ service.list_domain_group_roles(self.domain_id, self.id).body['roles']
66
+ end
67
+
68
+ def grant_role(role_id)
69
+ requires :id, :domain_id
70
+ service.grant_domain_group_role(self.domain_id, self.id, role_id)
71
+ end
72
+
73
+ def check_role(role_id)
74
+ requires :id, :domain_id
75
+ begin
76
+ service.check_domain_group_role(self.domain_id, self.id, role_id)
77
+ rescue Fog::Identity::OpenStack::NotFound
78
+ return false
79
+ end
80
+ return true
81
+ end
82
+
83
+ def revoke_role(role_id)
84
+ requires :id, :domain_id
85
+ service.revoke_domain_group_role(self.domain_id, self.id, role_id)
86
+ end
87
+
88
+ def users(attr = {})
89
+ requires :id
90
+ service.list_group_users(self.id, attr).body['users']
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v3/group'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V3
8
+ class Groups < Fog::Collection
9
+ model Fog::Identity::OpenStack::V3::Group
10
+
11
+ def all params={}
12
+ load(service.list_groups(params).body['groups'])
13
+ end
14
+
15
+ def find_by_id(id)
16
+ cached_group = self.find { |group| group.id == id }
17
+ return cached_group if cached_group
18
+ group_hash = service.get_group(id).body['group']
19
+ Fog::Identity::OpenStack::V3::group.new(
20
+ group_hash.merge(:service => service))
21
+ end
22
+
23
+ def destroy(id)
24
+ group = self.find_by_id(id)
25
+ group.destroy
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,73 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V3
7
+ class OsCredential < Fog::Model
8
+ identity :id
9
+
10
+ attribute :project_id
11
+ attribute :type
12
+ attribute :blob
13
+ attribute :user_id
14
+ attribute :links
15
+
16
+ def to_s
17
+ self.name
18
+ end
19
+
20
+ def destroy
21
+ requires :id
22
+ service.delete_os_credential(self.id)
23
+ @parsed_blob = nil
24
+ true
25
+ end
26
+
27
+ def update(attr = nil)
28
+ requires :id
29
+ merge_attributes(
30
+ service.update_os_credential(self.id, attr || attributes).body['credential'])
31
+ @parsed_blob = nil
32
+ self
33
+ end
34
+
35
+ def save
36
+ requires :blob, :type
37
+ @parsed_blob = nil
38
+ identity ? update : create
39
+ end
40
+
41
+ def create
42
+ merge_attributes(
43
+ service.create_os_credential(attributes).body['credential'])
44
+ @parsed_blob = nil
45
+ self
46
+ end
47
+
48
+ def parsed_blob
49
+ @parsed_blob = ::JSON.parse(blob) unless @parsed_blob
50
+ @parsed_blob
51
+ end
52
+
53
+ def name
54
+ parsed_blob['name'] if blob
55
+ end
56
+
57
+ def public_key
58
+ parsed_blob['public_key'] if blob
59
+ end
60
+
61
+ def fingerprint
62
+ parsed_blob['fingerprint'] if blob
63
+ end
64
+
65
+ def private_key
66
+ parsed_blob['private_key'] if blob
67
+ end
68
+
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v3/os_credential'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V3
8
+ class OsCredentials < Fog::Collection
9
+ model Fog::Identity::OpenStack::V3::OsCredential
10
+
11
+ def all params={}
12
+ load(service.list_os_credentials(params).body['credentials'])
13
+ end
14
+
15
+ def find_by_id(id)
16
+ cached_credential = self.find { |credential| credential.id == id }
17
+ return cached_credential if cached_credential
18
+ credential_hash = service.get_os_credential(id).body['credential']
19
+ Fog::Identity::OpenStack::V3::Credential.new(
20
+ credential_hash.merge(:service => service))
21
+ end
22
+
23
+ def destroy(id)
24
+ credential = self.find_by_id(id)
25
+ credential.destroy
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end