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
@@ -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]
@@ -178,7 +178,7 @@ module Fog
178
178
  :openstack_endpoint_type => @openstack_endpoint_type
179
179
  }
180
180
 
181
- credentials = Fog::OpenStack.authenticate_v2(options, @connection_options)
181
+ credentials = Fog::OpenStack.authenticate(options, @connection_options)
182
182
 
183
183
  @current_user = credentials[:user]
184
184
  @current_tenant = credentials[:tenant]
@@ -75,10 +75,32 @@ module Fog
75
75
  service.list_ports_detailed({:node_uuid => self.uuid}).body['ports']
76
76
  end
77
77
 
78
+ def set_node_maintenance(parameters=nil)
79
+ requires :uuid
80
+ service.set_node_maintenance(uuid, parameters)
81
+ true
82
+ end
83
+
84
+ def unset_node_maintenance(parameters=nil)
85
+ requires :uuid
86
+ service.unset_node_maintenance(uuid, parameters)
87
+ true
88
+ end
89
+
78
90
  def metadata
79
91
  requires :uuid
80
92
  service.get_node(self.uuid).headers
81
93
  end
94
+
95
+ def set_power_state(power_state)
96
+ requires :uuid
97
+ service.set_node_power_state(self.uuid, power_state)
98
+ end
99
+
100
+ def set_provision_state(provision_state)
101
+ requires :uuid
102
+ service.set_node_provision_state(self.uuid, provision_state)
103
+ end
82
104
  end
83
105
  end
84
106
  end
@@ -13,6 +13,7 @@ module Fog
13
13
  attribute :links
14
14
  attribute :swap
15
15
  attribute :rxtx_factor
16
+ attribute :metadata
16
17
  attribute :ephemeral, :aliases => 'OS-FLV-EXT-DATA:ephemeral'
17
18
  attribute :is_public, :aliases => 'os-flavor-access:is_public'
18
19
  attribute :disabled, :aliases => 'OS-FLV-DISABLED:disabled'
@@ -39,6 +40,18 @@ module Fog
39
40
  service.delete_flavor(self.id)
40
41
  true
41
42
  end
43
+
44
+ def metadata
45
+ service.get_flavor_metadata(self.id).body['extra_specs']
46
+ rescue Fog::Compute::OpenStack::NotFound
47
+ nil
48
+ end
49
+
50
+ def create_metadata(metadata)
51
+ service.create_flavor_metadata(self.id, metadata)
52
+ rescue Fog::Compute::OpenStack::NotFound
53
+ nil
54
+ end
42
55
  end
43
56
  end
44
57
  end
@@ -0,0 +1,48 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class OpenStack
6
+ class Service < Fog::Model
7
+ identity :id
8
+
9
+ attribute :binary
10
+ attribute :host
11
+ attribute :state
12
+ attribute :status
13
+ attribute :updated_at
14
+ attribute :zone
15
+
16
+ #detailed
17
+ attribute :disabled_reason
18
+
19
+ def initialize(attributes)
20
+ # Old 'connection' is renamed as service and should be used instead
21
+ prepare_service_value(attributes)
22
+ super
23
+ end
24
+
25
+ def enable
26
+ requires :binary, :host
27
+ service.enable_service(self.host, self.binary)
28
+ end
29
+
30
+ def disable
31
+ requires :binary, :host
32
+ service.disable_service(self.host, self.binary)
33
+ end
34
+
35
+ def disable_and_log_reason
36
+ requires :binary, :host, :disabled_reason
37
+ service.disable_service_log_reason(self.host, self.binary, self.disabled_reason)
38
+ end
39
+
40
+ def destroy
41
+ requires :id
42
+ service.delete_service(self.id)
43
+ true
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/compute/service'
3
+
4
+ module Fog
5
+ module Compute
6
+ class OpenStack
7
+ class Services < Fog::Collection
8
+ model Fog::Compute::OpenStack::Service
9
+
10
+ def all(parameters=nil)
11
+ load(service.list_services(parameters).body['services'])
12
+ end
13
+
14
+ def details(parameters=nil)
15
+ load(service.list_services(parameters).body['services'])
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,45 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V2
7
+ class Ec2Credential < Fog::Model
8
+ identity :access, :aliases => 'access_key'
9
+
10
+ attribute :secret, :aliases => 'secret_key'
11
+ attribute :tenant_id
12
+ attribute :user_id
13
+
14
+ def initialize(attributes)
15
+ # Old 'connection' is renamed as service and should be used instead
16
+ prepare_service_value(attributes)
17
+ super
18
+ end
19
+
20
+ def destroy
21
+ requires :access
22
+ requires :user_id
23
+ service.delete_ec2_credential user_id, access
24
+ true
25
+ end
26
+
27
+ def save
28
+ raise Fog::Errors::Error, 'Existing credentials cannot be altered' if 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
45
+ end
@@ -0,0 +1,55 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v2/ec2_credential'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V2
8
+ class Ec2Credentials < Fog::Collection
9
+ model Fog::Identity::OpenStack::V2::Ec2Credential
10
+
11
+ attribute :user
12
+
13
+ def all
14
+ user_id = user ? user.id : nil
15
+
16
+ ec2_credentials = service.list_ec2_credentials(user_id)
17
+
18
+ load(ec2_credentials.body['credentials'])
19
+ end
20
+
21
+ def create(attributes = {})
22
+ if user then
23
+ attributes[:user_id] ||= user.id
24
+ attributes[:tenant_id] ||= user.tenant_id
25
+ end
26
+
27
+ super attributes
28
+ end
29
+
30
+ def destroy(access_key)
31
+ ec2_credential = self.find_by_access_key(access_key)
32
+ ec2_credential.destroy
33
+ end
34
+
35
+ def find_by_access_key(access_key)
36
+ user_id = user ? user.id : nil
37
+
38
+ ec2_credential =
39
+ self.find { |ec2_credential| ec2_credential.access == access_key }
40
+
41
+ unless ec2_credential then
42
+ response = service.get_ec2_credential(user_id, access_key)
43
+ body = response.body['credential']
44
+ body = body.merge 'service' => service
45
+
46
+ ec2_credential = Fog::Identity::OpenStack::V2::EC2Credential.new(body)
47
+ end
48
+
49
+ ec2_credential
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,52 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V2
7
+ class Role < Fog::Model
8
+ identity :id
9
+ attribute :name
10
+
11
+ def save
12
+ requires :name
13
+ data = service.create_role(name)
14
+ merge_attributes(data.body['role'])
15
+ true
16
+ end
17
+
18
+ def destroy
19
+ requires :id
20
+ service.delete_role(id)
21
+ true
22
+ end
23
+
24
+ def add_to_user(user, tenant)
25
+ add_remove_to_user(user, tenant, :add)
26
+ end
27
+
28
+ def remove_to_user(user, tenant)
29
+ add_remove_to_user(user, tenant, :remove)
30
+ end
31
+
32
+ private
33
+ def add_remove_to_user(user, tenant, ops)
34
+ requires :id
35
+ user_id = get_id(user)
36
+ tenant_id = get_id(tenant)
37
+ case ops
38
+ when :add
39
+ service.create_user_role(tenant_id, user_id, id).status == 200
40
+ when :remove
41
+ service.delete_user_role(tenant_id, user_id, id).status == 204
42
+ end
43
+ end
44
+
45
+ def get_id(_)
46
+ _.is_a?(String) ? _ : _.id
47
+ end
48
+ end # class Role
49
+ end # class V2
50
+ end # class OpenStack
51
+ end # module Identity
52
+ end # module Fog
@@ -0,0 +1,22 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v2/role'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V2
8
+ class Roles < Fog::Collection
9
+ model Fog::Identity::OpenStack::V2::Role
10
+
11
+ def all
12
+ load(service.list_roles.body['roles'])
13
+ end
14
+
15
+ def get(id)
16
+ service.get_role(id)
17
+ end
18
+ end
19
+ end # class V2
20
+ end # class OpenStack
21
+ end # module Identity
22
+ end # module Fog
@@ -0,0 +1,64 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V2
7
+ class Tenant < Fog::Model
8
+ identity :id
9
+
10
+ attribute :description
11
+ attribute :enabled
12
+ attribute :name
13
+
14
+ def to_s
15
+ self.name
16
+ end
17
+
18
+ def roles_for(user)
19
+ service.roles(
20
+ :tenant => self,
21
+ :user => user)
22
+ end
23
+
24
+ def users
25
+ requires :id
26
+ service.users(:tenant_id => self.id)
27
+ end
28
+
29
+ def destroy
30
+ requires :id
31
+ service.delete_tenant(self.id)
32
+ true
33
+ end
34
+
35
+ def update(attr = nil)
36
+ requires :id
37
+ merge_attributes(
38
+ service.update_tenant(self.id, attr || attributes).body['tenant'])
39
+ self
40
+ end
41
+
42
+ def save
43
+ requires :name
44
+ identity ? update : create
45
+ end
46
+
47
+ def create
48
+ merge_attributes(
49
+ service.create_tenant(attributes).body['tenant'])
50
+ self
51
+ end
52
+
53
+ def grant_user_role(user_id, role_id)
54
+ service.add_user_to_tenant(self.id, user_id, role_id)
55
+ end
56
+
57
+ def revoke_user_role(user_id, role_id)
58
+ service.remove_user_from_tenant(self.id, user_id, role_id)
59
+ end
60
+ end # class Tenant
61
+ end # class V2
62
+ end # class OpenStack
63
+ end # module Identity
64
+ end # module Fog
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/openstack/models/identity_v2/tenant'
3
+
4
+ module Fog
5
+ module Identity
6
+ class OpenStack
7
+ class V2
8
+ class Tenants < Fog::Collection
9
+ model Fog::Identity::OpenStack::V2::Tenant
10
+
11
+ def all
12
+ load(service.list_tenants.body['tenants'])
13
+ end
14
+
15
+ def find_by_id(id)
16
+ cached_tenant = self.find { |tenant| tenant.id == id }
17
+ return cached_tenant if cached_tenant
18
+ tenant_hash = service.get_tenant(id).body['tenant']
19
+ Fog::Identity::OpenStack::V2::Tenant.new(
20
+ tenant_hash.merge(:service => service))
21
+ end
22
+
23
+ def destroy(id)
24
+ tenant = self.find_by_id(id)
25
+ tenant.destroy
26
+ end
27
+ end # class Tenants
28
+ end # class V2
29
+ end # class OpenStack
30
+ end # module Compute
31
+ end # module Fog
@@ -0,0 +1,71 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Identity
5
+ class OpenStack
6
+ class V2
7
+ class User < Fog::Model
8
+ identity :id
9
+
10
+ attribute :email
11
+ attribute :enabled
12
+ attribute :name
13
+ attribute :tenant_id, :aliases => 'tenantId'
14
+ attribute :password
15
+
16
+ attr_accessor :email, :name, :tenant_id, :enabled, :password
17
+
18
+ def initialize(attributes)
19
+ # Old 'connection' is renamed as service and should be used instead
20
+ prepare_service_value(attributes)
21
+ super
22
+ end
23
+
24
+ def ec2_credentials
25
+ requires :id
26
+ service.ec2_credentials(:user => self)
27
+ end
28
+
29
+ def save
30
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
31
+ requires :name, :tenant_id, :password
32
+ enabled = true if enabled.nil?
33
+ data = service.create_user(name, password, email, tenant_id, enabled)
34
+ merge_attributes(data.body['user'])
35
+ true
36
+ end
37
+
38
+ def update(options = {})
39
+ requires :id
40
+ options.merge('id' => id)
41
+ response = service.update_user(id, options)
42
+ true
43
+ end
44
+
45
+ def update_password(password)
46
+ update({'password' => password, 'url' => "/users/#{id}/OS-KSADM/password"})
47
+ end
48
+
49
+ def update_tenant(tenant)
50
+ tenant = tenant.id if tenant.class != String
51
+ update({:tenantId => tenant, 'url' => "/users/#{id}/OS-KSADM/tenant"})
52
+ end
53
+
54
+ def update_enabled(enabled)
55
+ update({:enabled => enabled, 'url' => "/users/#{id}/OS-KSADM/enabled"})
56
+ end
57
+
58
+ def destroy
59
+ requires :id
60
+ service.delete_user(id)
61
+ true
62
+ end
63
+
64
+ def roles(tenant_id = self.tenant_id)
65
+ service.list_roles_for_user_on_tenant(tenant_id, self.id).body['roles']
66
+ end
67
+ end # class User
68
+ end # class V2
69
+ end # class OpenStack
70
+ end # module Identity
71
+ end # module Fog