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,37 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def disable_service(host, binary, optional_params = nil)
6
+ data = {"host" => host, "binary" => binary}
7
+
8
+ # Encode all params
9
+ optional_params = optional_params.each { |k, v| optional_params[k] = URI::encode(v) } if optional_params
10
+
11
+ request(
12
+ :body => Fog::JSON.encode(data),
13
+ :expects => 200,
14
+ :method => 'PUT',
15
+ :path => "os-services/disable",
16
+ :query => optional_params
17
+ )
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def disable_service(host, binary, optional_params = nil)
23
+ response = Excon::Response.new
24
+ response.status = 200
25
+ response.body = {
26
+ "service" => {
27
+ "host" => "host1",
28
+ "binary" => "nova-compute",
29
+ "status" => "disabled"
30
+ }
31
+ }
32
+ response
33
+ end
34
+ end # mock
35
+ end # openstack
36
+ end # compute
37
+ end # fog
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def disable_service_log_reason(host, binary, disabled_reason, optional_params = nil)
6
+ data = {"host" => host, "binary" => binary, "disabled_reason" => disabled_reason}
7
+
8
+ # Encode all params
9
+ optional_params = optional_params.each { |k, v| optional_params[k] = URI::encode(v) } if optional_params
10
+
11
+ request(
12
+ :body => Fog::JSON.encode(data),
13
+ :expects => 200,
14
+ :method => 'PUT',
15
+ :path => "os-services/disable-log-reason",
16
+ :query => optional_params
17
+ )
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def disable_service_log_reason(host, binary, disabled_reason, optional_params = nil)
23
+ response = Excon::Response.new
24
+ response.status = 200
25
+ response.body = {
26
+ "service" => {
27
+ "host" => "host1",
28
+ "binary" => "nova-compute",
29
+ "status" => "disabled",
30
+ "disabled_reason" => "test2"
31
+ }
32
+ }
33
+ response
34
+ end
35
+ end # mock
36
+ end # openstack
37
+ end # compute
38
+ end # fog
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def enable_service(host, binary, optional_params = nil)
6
+ data = {"host" => host, "binary" => binary}
7
+
8
+ # Encode all params
9
+ optional_params = optional_params.each { |k, v| optional_params[k] = URI::encode(v) } if optional_params
10
+
11
+
12
+ request(
13
+ :body => Fog::JSON.encode(data),
14
+ :expects => 200,
15
+ :method => 'PUT',
16
+ :path => "os-services/enable",
17
+ :query => optional_params
18
+ )
19
+ end
20
+ end
21
+
22
+ class Mock
23
+ def enable_service(host, binary, optional_params = nil)
24
+ response = Excon::Response.new
25
+ response.status = 200
26
+ response.body = {
27
+ "service" => {
28
+ "host" => "host1",
29
+ "binary" => "nova-compute",
30
+ "status" => "enabled"
31
+ }
32
+ }
33
+ response
34
+ end
35
+ end # mock
36
+ end # openstack
37
+ end # compute
38
+ end # fog
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def get_flavor_metadata(flavor_ref)
6
+ request(
7
+ :expects => [200, 203],
8
+ :method => 'GET',
9
+ :path => "flavors/#{flavor_ref}/os-extra_specs"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def get_flavor_metadata(flavor_ref)
16
+ response = Excon::Response.new
17
+ response.status = 200
18
+ response.body = { "extra_specs" => {
19
+ "cpu_arch" => "x86_64"
20
+ }
21
+ }
22
+ response
23
+ end
24
+ end # mock
25
+ end # openstack
26
+ end # compute
27
+ end # fog
@@ -0,0 +1,72 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def list_services(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, 203],
14
+ :method => 'GET',
15
+ :path => 'os-services',
16
+ :query => query
17
+ )
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def list_services(parameters=nil)
23
+ response = Excon::Response.new
24
+ response.status = 200
25
+ response.body = {
26
+ "services" => [{
27
+ "id" => 1,
28
+ "binary" => "nova-scheduler",
29
+ "host" => "host1",
30
+ "state" => "up",
31
+ "status" => "disabled",
32
+ "updated_at" => "2012-10-29T13:42:02.000000",
33
+ "zone" => "internal",
34
+ "disabled_reason" => "test2"
35
+ },
36
+ {
37
+ "id" => 2,
38
+ "binary" => "nova-compute",
39
+ "host" => "host1",
40
+ "state" => "up",
41
+ "status" => "disabled",
42
+ "updated_at" => "2012-10-29T13:42:05.000000",
43
+ "zone" => "nova",
44
+ "disabled_reason" => "test2"
45
+ },
46
+ {
47
+ "id" => 3,
48
+ "binary" => "nova-scheduler",
49
+ "host" => "host2",
50
+ "state" => "down",
51
+ "status" => "enabled",
52
+ "updated_at" => "2012-09-19T06:55:34.000000",
53
+ "zone" => "internal",
54
+ "disabled_reason" => "nil"
55
+ },
56
+ {
57
+ "id" => 4,
58
+ "binary" => "nova-compute",
59
+ "host" => "host2",
60
+ "state" => "down",
61
+ "status" => "disabled",
62
+ "updated_at" => "2012-09-18T08:03:38.000000",
63
+ "zone" => "nova",
64
+ "disabled_reason" => "test2"
65
+ }]
66
+ }
67
+ response
68
+ end
69
+ end # mock
70
+ end # openstack
71
+ end # compute
72
+ end # fog
@@ -16,7 +16,7 @@ module Fog
16
16
  response = Excon::Response.new
17
17
  response.status = 200
18
18
  response.body = {
19
- "flavor_access" => [{ "tenant_id" => @tenant_id.to_s, "flavor_id" => flavor_ref.to_s }]
19
+ "flavor_access" => [{ "tenant_id" => Fog::Mock.random_hex(33), "flavor_id" => flavor_ref.to_s }]
20
20
  }
21
21
  response
22
22
  end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def list_zones(*args)
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => 'os-availability-zone.json'
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def list_zones(*args)
16
+ Excon::Response.new(
17
+ :body => { "availabilityZoneInfo" => [
18
+ {
19
+ "zoneState" => {
20
+ "available" => true
21
+ },
22
+ "hosts" => nil,
23
+ "zoneName" => "nova"
24
+ }
25
+ ] },
26
+ :status => 200
27
+ )
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def add_user_to_tenant(tenant_id, user_id, role_id)
7
+ request(
8
+ :expects => 200,
9
+ :method => 'PUT',
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 add_user_to_tenant(tenant_id, user_id, role_id)
17
+ role = self.data[:roles][role_id]
18
+ self.data[:user_tenant_membership][tenant_id] ||= {}
19
+ self.data[:user_tenant_membership][tenant_id][user_id] ||= []
20
+ self.data[:user_tenant_membership][tenant_id][user_id].push(role['id']).uniq!
21
+
22
+ response = Excon::Response.new
23
+ response.status = 200
24
+ response.body = {
25
+ 'role' => {
26
+ 'id' => role['id'],
27
+ 'name' => role['name']
28
+ }
29
+ }
30
+ response
31
+ end # def add_user_to_tenant
32
+ end # class Mock
33
+ end # class V2
34
+ end # class OpenStack
35
+ end # module Identity
36
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def check_token(token_id, tenant_id=nil)
7
+ request(
8
+ :expects => [200, 203],
9
+ :method => 'HEAD',
10
+ :path => "tokens/#{token_id}"+(tenant_id ? "?belongsTo=#{tenant_id}" : '')
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def check_token(token_id, tenant_id=nil)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,59 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ ##
7
+ # Create an EC2 credential for a user in a tenant. Requires
8
+ # administrator credentials.
9
+ #
10
+ # ==== Parameters
11
+ # * user_id<~String>: The id of the user to create an EC2 credential
12
+ # for
13
+ # * tenant_id<~String>: The id of the tenant to create the credential
14
+ # in
15
+ #
16
+ # ==== Returns
17
+ # * response<~Excon::Response>:
18
+ # * body<~Hash>:
19
+ # * 'credential'<~Hash>: Created EC2 credential
20
+ # * 'access'<~String>: The access key
21
+ # * 'secret'<~String>: The secret key
22
+ # * 'user_id'<~String>: The user id
23
+ # * 'tenant_id'<~String>: The tenant id
24
+
25
+ def create_ec2_credential(user_id, tenant_id)
26
+ data = {'tenant_id' => tenant_id}
27
+
28
+ request(
29
+ :body => Fog::JSON.encode(data),
30
+ :expects => [200, 202],
31
+ :method => 'POST',
32
+ :path => "users/#{user_id}/credentials/OS-EC2"
33
+ )
34
+ end
35
+ end
36
+
37
+ class Mock
38
+ def create_ec2_credential(user_id, tenant_id)
39
+ response = Excon::Response.new
40
+ response.status = 200
41
+
42
+ data = {
43
+ 'access' => Fog::Mock.random_hex(32),
44
+ 'secret' => Fog::Mock.random_hex(32),
45
+ 'tenant_id' => tenant_id,
46
+ 'user_id' => user_id,
47
+ }
48
+
49
+ self.data[:ec2_credentials][user_id][data['access']] = data
50
+
51
+ response.body = {'credential' => data}
52
+
53
+ response
54
+ end
55
+ end
56
+ end # class V2
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def create_role(name)
7
+ data = {
8
+ 'role' => {
9
+ 'name' => name
10
+ }
11
+ }
12
+
13
+ request(
14
+ :body => Fog::JSON.encode(data),
15
+ :expects => [200, 202],
16
+ :method => 'POST',
17
+ :path => '/OS-KSADM/roles'
18
+ )
19
+ end
20
+ end
21
+
22
+ class Mock
23
+ def create_role(name)
24
+ data = {
25
+ 'id' => Fog::Mock.random_hex(32),
26
+ 'name' => name
27
+ }
28
+ self.data[:roles][data['id']] = data
29
+ Excon::Response.new(
30
+ :body => {'role' => data},
31
+ :status => 202
32
+ )
33
+ end
34
+ end
35
+ end # class V2
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module Identity
3
+ class OpenStack
4
+ class V2
5
+ class Real
6
+ def create_tenant(attributes)
7
+ request(
8
+ :expects => [200],
9
+ :method => 'POST',
10
+ :path => "tenants",
11
+ :body => Fog::JSON.encode({'tenant' => attributes})
12
+ )
13
+ end # def create_tenant
14
+ end # class Real
15
+
16
+ class Mock
17
+ def create_tenant(attributes)
18
+ response = Excon::Response.new
19
+ response.status = [200, 204][rand(1)]
20
+ response.body = {
21
+ 'tenant' => {
22
+ 'id' => "df9a815161eba9b76cc748fd5c5af73e",
23
+ 'description' => attributes[:description] || 'normal tenant',
24
+ 'enabled' => true,
25
+ 'name' => attributes[:name] || 'default'
26
+ }
27
+ }
28
+ response
29
+ end # def create_tenant
30
+ end # class Mock
31
+ end # class V2
32
+ end # class OpenStack
33
+ end # module Identity
34
+ end # module Fog