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,40 @@
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 Tokens < Fog::Collection
9
+ model Fog::Identity::OpenStack::V3::Token
10
+
11
+
12
+ def authenticate(auth)
13
+ response = service.token_authenticate(auth)
14
+ token_hash = response.body['token']
15
+ Fog::Identity::OpenStack::V3::Token.new(
16
+ token_hash.merge(:service => service, :value => response.headers['X-Subject-Token']))
17
+ end
18
+
19
+ def validate(subject_token)
20
+ response = service.token_validate(subject_token)
21
+ token_hash = response.body['token']
22
+ Fog::Identity::OpenStack::V3::Token.new(
23
+ token_hash.merge(:service => service, :value => response.headers['X-Subject-Token']))
24
+ end
25
+
26
+ def check(subject_token)
27
+ service.token_check(subject_token)
28
+ return true
29
+ end
30
+
31
+ def revoke(subject_token)
32
+ service.token_revoke(subject_token)
33
+ return true
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,87 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V3
7
+ class User < Fog::Model
8
+ identity :id
9
+
10
+ attribute :default_project_id
11
+ attribute :description
12
+ attribute :domain_id
13
+ attribute :email
14
+ attribute :enabled
15
+ attribute :name
16
+ attribute :links
17
+ attribute :password
18
+
19
+ def to_s
20
+ self.name
21
+ end
22
+
23
+ def groups
24
+ requires :id
25
+ service.list_user_groups(self.id).body['groups']
26
+ end
27
+
28
+ def projects
29
+ requires :id
30
+ service.list_user_projects(self.id).body['projects']
31
+ end
32
+
33
+ def roles
34
+ requires :id, :domain_id
35
+ service.list_domain_user_roles(self.domain_id, self.id).body['roles']
36
+ end
37
+
38
+ def grant_role(role_id)
39
+ requires :id, :domain_id
40
+ service.grant_domain_user_role(self.domain_id, self.id, role_id)
41
+ end
42
+
43
+ def check_role(role_id)
44
+ requires :id, :domain_id
45
+ begin
46
+ service.check_domain_user_role(self.domain_id, self.id, role_id)
47
+ rescue Fog::Identity::OpenStack::NotFound
48
+ return false
49
+ end
50
+ return true
51
+ end
52
+
53
+ def revoke_role(role_id)
54
+ requires :id, :domain_id
55
+ service.revoke_domain_user_role(self.domain_id, self.id, role_id)
56
+ end
57
+
58
+ def destroy
59
+ requires :id
60
+ service.delete_user(self.id)
61
+ true
62
+ end
63
+
64
+ def update(attr = nil)
65
+ requires :id
66
+ merge_attributes(
67
+ service.update_user(self.id, attr || attributes).body['user'])
68
+ self
69
+ end
70
+
71
+ def save
72
+ requires :name
73
+ identity ? update : create
74
+ end
75
+
76
+ def create
77
+ merge_attributes(
78
+ service.create_user(attributes).body['user'])
79
+ self
80
+ end
81
+
82
+
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,35 @@
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 Users < Fog::Collection
9
+ model Fog::Identity::OpenStack::V3::User
10
+
11
+ def all params={}
12
+ load(service.list_users(params).body['users'])
13
+ end
14
+
15
+ def find_by_id(id)
16
+ cached_user = self.find { |user| user.id == id }
17
+ return cached_user if cached_user
18
+ user_hash = service.get_user(id).body['user']
19
+ Fog::Identity::OpenStack::V3::User.new(
20
+ user_hash.merge(:service => service))
21
+ end
22
+
23
+ def find_by_name(name)
24
+ load(service.list_users(:name => name).body['users'])
25
+ end
26
+
27
+ def destroy(id)
28
+ user = self.find_by_id(id)
29
+ user.destroy
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -11,6 +11,7 @@ module Fog
11
11
  :openstack_tenant_id,
12
12
  :openstack_api_key, :openstack_username, :openstack_endpoint_type,
13
13
  :current_user, :current_tenant, :openstack_region,
14
+ :openstack_project_name,
14
15
  :openstack_project_domain, :openstack_user_domain
15
16
 
16
17
  ## MODELS
@@ -337,15 +338,7 @@ module Fog
337
338
  :openstack_region => @openstack_region
338
339
  }
339
340
 
340
- case @openstack_auth_uri.path
341
- when %r{/v2.0}
342
- credentials = Fog::OpenStack.authenticate_v2(options, @connection_options)
343
- when %r{/v3}
344
- credentials = Fog::OpenStack.authenticate_v3(options, @connection_options)
345
- else
346
- credentials = Fog::OpenStack.authenticate_v2(options, @connection_options)
347
- end
348
-
341
+ credentials = Fog::OpenStack.authenticate(options, @connection_options)
349
342
 
350
343
  @current_user = credentials[:user]
351
344
  @current_tenant = credentials[:tenant]
@@ -232,12 +232,7 @@ module Fog
232
232
  :openstack_endpoint_type => @openstack_endpoint_type
233
233
  }
234
234
 
235
- if @openstack_auth_uri.path =~ /\/v2.0\//
236
-
237
- credentials = Fog::OpenStack.authenticate_v2(options, @connection_options)
238
- else
239
- credentials = Fog::OpenStack.authenticate_v1(options, @connection_options)
240
- end
235
+ credentials = Fog::OpenStack.authenticate(options, @connection_options)
241
236
 
242
237
  @current_user = credentials[:user]
243
238
  @current_tenant = credentials[:tenant]
@@ -185,7 +185,7 @@ module Fog
185
185
  :openstack_endpoint_type => @openstack_endpoint_type
186
186
  }
187
187
 
188
- credentials = Fog::OpenStack.authenticate_v2(options, @connection_options)
188
+ credentials = Fog::OpenStack.authenticate(options, @connection_options)
189
189
 
190
190
  @current_user = credentials[:user]
191
191
  @current_tenant = credentials[:tenant]
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ def set_node_maintenance(node_uuid, parameters=nil)
6
+ if parameters
7
+ query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
+ else
9
+ query = {}
10
+ end
11
+
12
+ request(
13
+ :expects => [200, 202, 204],
14
+ :method => 'PUT',
15
+ :path => "nodes/#{node_uuid}/maintenance",
16
+ :query => query
17
+ )
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def set_node_maintenance(node_uuid, parameters=nil)
23
+ response = Excon::Response.new
24
+ response.status = 202
25
+ response.headers = {
26
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
27
+ "Content-Type" => "application/json",
28
+ "Content-Length" => "356",
29
+ "Date" => Date.new
30
+ }
31
+ response
32
+ end
33
+ end # mock
34
+ end # openstack
35
+ end # baremetal
36
+ end # fog
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ def set_node_power_state(node_id, power_state)
6
+ data = {
7
+ 'target' => power_state
8
+ }
9
+
10
+ request(
11
+ :body => Fog::JSON.encode(data),
12
+ :expects => 202,
13
+ :method => 'PUT',
14
+ :path => "nodes/#{node_id}/states/power"
15
+ )
16
+ end
17
+ end
18
+
19
+ class Mock
20
+ def set_node_power_state(node_id, power_state)
21
+ response = Excon::Response.new
22
+ response.status = 202
23
+ response.headers = {
24
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
25
+ "Content-Type" => "application/json",
26
+ "Content-Length" => "356",
27
+ "Date" => Date.new
28
+ }
29
+ response.body = self.data[:nodes].first
30
+ response
31
+ end
32
+ end # mock
33
+ end # openstack
34
+ end # baremetal
35
+ end # fog
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ def set_node_provision_state(node_id, provision_state)
6
+ data = {
7
+ 'target' => provision_state
8
+ }
9
+
10
+ request(
11
+ :body => Fog::JSON.encode(data),
12
+ :expects => 202,
13
+ :method => 'PUT',
14
+ :path => "nodes/#{node_id}/states/provision",
15
+ :headers => {
16
+ :'X-OpenStack-Ironic-API-Version' => 'latest'
17
+ }
18
+ )
19
+ end
20
+ end
21
+
22
+ class Mock
23
+ def set_node_provision_state(node_id, provision_state)
24
+ response = Excon::Response.new
25
+ response.status = 202
26
+ response.headers = {
27
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
28
+ "Content-Type" => "application/json",
29
+ "Content-Length" => "356",
30
+ "Date" => Date.new
31
+ }
32
+ response.body = self.data[:nodes].first
33
+ response
34
+ end
35
+ end # mock
36
+ end # openstack
37
+ end # baremetal
38
+ end # fog
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ def unset_node_maintenance(node_uuid, parameters=nil)
6
+ if parameters
7
+ query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
+ else
9
+ query = {}
10
+ end
11
+
12
+ request(
13
+ :expects => [200, 202, 204],
14
+ :method => 'DELETE',
15
+ :path => "nodes/#{node_uuid}/maintenance",
16
+ :query => query
17
+ )
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def unset_node_maintenance(node_uuid, parameters=nil)
23
+ response = Excon::Response.new
24
+ response.status = 202
25
+ response.headers = {
26
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
27
+ "Content-Type" => "application/json",
28
+ "Content-Length" => "356",
29
+ "Date" => Date.new
30
+ }
31
+ response
32
+ end
33
+ end # mock
34
+ end # openstack
35
+ end # baremetal
36
+ end # fog
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def create_flavor_metadata(flavor_ref, metadata)
6
+ data = {
7
+ 'extra_specs' => metadata
8
+ }
9
+
10
+ request(
11
+ :body => Fog::JSON.encode(data),
12
+ :expects => 200,
13
+ :method => 'POST',
14
+ :path => "flavors/#{flavor_ref}/os-extra_specs"
15
+ )
16
+ end
17
+ end
18
+
19
+ class Mock
20
+ def create_flavor_metadata(flavor_ref, metadata)
21
+ response = Excon::Response.new
22
+ response.status = 200
23
+ response.headers = {
24
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
25
+ "Content-Type" => "application/json",
26
+ "Content-Length" => "356",
27
+ "Date" => Date.new
28
+ }
29
+ response.body = { "extra_specs" => {
30
+ "cpu_arch" => "x86_64"
31
+ }
32
+ }
33
+ response
34
+ end
35
+ end # mock
36
+ end # openstack
37
+ end # compute
38
+ end # fog
@@ -22,7 +22,7 @@ module Fog
22
22
  class Mock
23
23
  def create_security_group(name, description)
24
24
  Fog::Identity::OpenStack.new(:openstack_auth_url => credentials[:openstack_auth_url])
25
- tenant_id = Fog::Identity::OpenStack::Mock.data[current_tenant][:tenants].keys.first
25
+ tenant_id = Fog::Identity::OpenStack::V2::Mock.data[current_tenant][:tenants].keys.first
26
26
  security_group_id = Fog::Mock.random_numbers(2).to_i + 1
27
27
  self.data[:security_groups][security_group_id.to_s] = {
28
28
  'tenant_id' => tenant_id,
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def delete_service(uuid, optional_params = nil)
6
+ # Encode all params
7
+ optional_params = optional_params.each { |k, v| optional_params[k] = URI::encode(v) } if optional_params
8
+
9
+ request(
10
+ :expects => [202, 204],
11
+ :method => 'DELETE',
12
+ :path => "os-services/#{uuid}",
13
+ :query => optional_params
14
+ )
15
+ end
16
+ end
17
+
18
+ class Mock
19
+ def delete_service(host, binary, optional_params = nil)
20
+ response = Excon::Response.new
21
+ response.status = 204
22
+ response.headers = {
23
+ "Content-Type" => "text/html; charset=UTF-8",
24
+ "Content-Length" => "0",
25
+ "Date" => Date.new
26
+ }
27
+ response
28
+ end
29
+ end # mock
30
+ end # openstack
31
+ end # compute
32
+ end # fog