oneview-sdk 4.5.1 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +56 -0
  3. data/Gemfile +0 -0
  4. data/Guardfile +0 -0
  5. data/LICENSE +0 -0
  6. data/README.md +0 -0
  7. data/Rakefile +0 -0
  8. data/bin/oneview-sdk-ruby +0 -0
  9. data/lib/oneview-sdk.rb +0 -0
  10. data/lib/oneview-sdk/cli.rb +0 -0
  11. data/lib/oneview-sdk/client.rb +0 -0
  12. data/lib/oneview-sdk/config_loader.rb +0 -0
  13. data/lib/oneview-sdk/exceptions.rb +0 -0
  14. data/lib/oneview-sdk/image-streamer/client.rb +0 -0
  15. data/lib/oneview-sdk/image-streamer/resource/api300.rb +0 -0
  16. data/lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb +0 -0
  17. data/lib/oneview-sdk/image-streamer/resource/api300/build_plan.rb +0 -0
  18. data/lib/oneview-sdk/image-streamer/resource/api300/deployment_group.rb +0 -0
  19. data/lib/oneview-sdk/image-streamer/resource/api300/deployment_plan.rb +0 -0
  20. data/lib/oneview-sdk/image-streamer/resource/api300/golden_image.rb +0 -0
  21. data/lib/oneview-sdk/image-streamer/resource/api300/os_volume.rb +0 -0
  22. data/lib/oneview-sdk/image-streamer/resource/api300/plan_script.rb +0 -0
  23. data/lib/oneview-sdk/image-streamer/resource/api300/resource.rb +0 -0
  24. data/lib/oneview-sdk/image_streamer.rb +0 -0
  25. data/lib/oneview-sdk/resource.rb +54 -23
  26. data/lib/oneview-sdk/resource/api200.rb +0 -0
  27. data/lib/oneview-sdk/resource/api200/client_certificate.rb +134 -0
  28. data/lib/oneview-sdk/resource/api200/connection_template.rb +2 -1
  29. data/lib/oneview-sdk/resource/api200/datacenter.rb +0 -0
  30. data/lib/oneview-sdk/resource/api200/enclosure.rb +5 -9
  31. data/lib/oneview-sdk/resource/api200/enclosure_group.rb +2 -1
  32. data/lib/oneview-sdk/resource/api200/ethernet_network.rb +2 -2
  33. data/lib/oneview-sdk/resource/api200/event.rb +0 -0
  34. data/lib/oneview-sdk/resource/api200/fabric.rb +0 -0
  35. data/lib/oneview-sdk/resource/api200/fc_network.rb +0 -0
  36. data/lib/oneview-sdk/resource/api200/fcoe_network.rb +0 -0
  37. data/lib/oneview-sdk/resource/api200/firmware_bundle.rb +2 -1
  38. data/lib/oneview-sdk/resource/api200/firmware_driver.rb +0 -0
  39. data/lib/oneview-sdk/resource/api200/id_pool.rb +5 -3
  40. data/lib/oneview-sdk/resource/api200/interconnect.rb +0 -0
  41. data/lib/oneview-sdk/resource/api200/lig_uplink_set.rb +0 -0
  42. data/lib/oneview-sdk/resource/api200/logical_downlink.rb +0 -0
  43. data/lib/oneview-sdk/resource/api200/logical_enclosure.rb +1 -1
  44. data/lib/oneview-sdk/resource/api200/logical_interconnect.rb +4 -3
  45. data/lib/oneview-sdk/resource/api200/logical_interconnect_group.rb +2 -2
  46. data/lib/oneview-sdk/resource/api200/logical_switch.rb +0 -0
  47. data/lib/oneview-sdk/resource/api200/logical_switch_group.rb +0 -0
  48. data/lib/oneview-sdk/resource/api200/managed_san.rb +0 -0
  49. data/lib/oneview-sdk/resource/api200/network_set.rb +0 -0
  50. data/lib/oneview-sdk/resource/api200/power_device.rb +1 -1
  51. data/lib/oneview-sdk/resource/api200/rack.rb +0 -0
  52. data/lib/oneview-sdk/resource/api200/resource.rb +0 -0
  53. data/lib/oneview-sdk/resource/api200/san_manager.rb +0 -0
  54. data/lib/oneview-sdk/resource/api200/server_hardware.rb +2 -2
  55. data/lib/oneview-sdk/resource/api200/server_hardware_type.rb +0 -0
  56. data/lib/oneview-sdk/resource/api200/server_profile.rb +35 -25
  57. data/lib/oneview-sdk/resource/api200/server_profile_template.rb +24 -14
  58. data/lib/oneview-sdk/resource/api200/storage_pool.rb +0 -0
  59. data/lib/oneview-sdk/resource/api200/storage_system.rb +6 -10
  60. data/lib/oneview-sdk/resource/api200/switch.rb +4 -10
  61. data/lib/oneview-sdk/resource/api200/unmanaged_device.rb +0 -0
  62. data/lib/oneview-sdk/resource/api200/uplink_set.rb +0 -0
  63. data/lib/oneview-sdk/resource/api200/user.rb +18 -0
  64. data/lib/oneview-sdk/resource/api200/volume.rb +15 -11
  65. data/lib/oneview-sdk/resource/api200/volume_attachment.rb +3 -1
  66. data/lib/oneview-sdk/resource/api200/volume_snapshot.rb +0 -0
  67. data/lib/oneview-sdk/resource/api200/volume_template.rb +0 -0
  68. data/lib/oneview-sdk/resource/api200/web_server_certificate.rb +97 -0
  69. data/lib/oneview-sdk/resource/api300.rb +0 -0
  70. data/lib/oneview-sdk/resource/api300/c7000.rb +0 -0
  71. data/lib/oneview-sdk/resource/api300/c7000/client_certificate.rb +22 -0
  72. data/lib/oneview-sdk/resource/api300/c7000/connection_template.rb +0 -8
  73. data/lib/oneview-sdk/resource/api300/c7000/datacenter.rb +0 -0
  74. data/lib/oneview-sdk/resource/api300/c7000/enclosure.rb +0 -0
  75. data/lib/oneview-sdk/resource/api300/c7000/enclosure_group.rb +0 -1
  76. data/lib/oneview-sdk/resource/api300/c7000/ethernet_network.rb +1 -0
  77. data/lib/oneview-sdk/resource/api300/c7000/event.rb +0 -0
  78. data/lib/oneview-sdk/resource/api300/c7000/fabric.rb +0 -0
  79. data/lib/oneview-sdk/resource/api300/c7000/fc_network.rb +1 -0
  80. data/lib/oneview-sdk/resource/api300/c7000/fcoe_network.rb +1 -0
  81. data/lib/oneview-sdk/resource/api300/c7000/firmware_bundle.rb +0 -0
  82. data/lib/oneview-sdk/resource/api300/c7000/firmware_driver.rb +0 -0
  83. data/lib/oneview-sdk/resource/api300/c7000/id_pool.rb +0 -0
  84. data/lib/oneview-sdk/resource/api300/c7000/interconnect.rb +0 -0
  85. data/lib/oneview-sdk/resource/api300/{synergy/logical_switch.rb → c7000/internal_link_set.rb} +30 -7
  86. data/lib/oneview-sdk/resource/api300/c7000/lig_uplink_set.rb +0 -0
  87. data/lib/oneview-sdk/resource/api300/c7000/logical_downlink.rb +0 -0
  88. data/lib/oneview-sdk/resource/api300/c7000/logical_enclosure.rb +9 -7
  89. data/lib/oneview-sdk/resource/api300/c7000/logical_interconnect.rb +2 -20
  90. data/lib/oneview-sdk/resource/api300/c7000/logical_interconnect_group.rb +2 -0
  91. data/lib/oneview-sdk/resource/api300/c7000/logical_switch.rb +0 -19
  92. data/lib/oneview-sdk/resource/api300/c7000/logical_switch_group.rb +1 -0
  93. data/lib/oneview-sdk/resource/api300/c7000/managed_san.rb +0 -0
  94. data/lib/oneview-sdk/resource/api300/c7000/network_set.rb +1 -0
  95. data/lib/oneview-sdk/resource/api300/c7000/power_device.rb +0 -0
  96. data/lib/oneview-sdk/resource/api300/c7000/rack.rb +0 -0
  97. data/lib/oneview-sdk/resource/api300/c7000/resource.rb +0 -0
  98. data/lib/oneview-sdk/resource/api300/c7000/san_manager.rb +0 -0
  99. data/lib/oneview-sdk/resource/api300/c7000/scope.rb +0 -0
  100. data/lib/oneview-sdk/resource/api300/c7000/server_hardware.rb +0 -0
  101. data/lib/oneview-sdk/resource/api300/c7000/server_hardware_type.rb +0 -0
  102. data/lib/oneview-sdk/resource/api300/c7000/server_profile.rb +0 -0
  103. data/lib/oneview-sdk/resource/api300/c7000/server_profile_template.rb +0 -0
  104. data/lib/oneview-sdk/resource/api300/c7000/storage_pool.rb +0 -0
  105. data/lib/oneview-sdk/resource/api300/c7000/storage_system.rb +0 -0
  106. data/lib/oneview-sdk/resource/api300/c7000/switch.rb +0 -0
  107. data/lib/oneview-sdk/resource/api300/c7000/unmanaged_device.rb +0 -0
  108. data/lib/oneview-sdk/resource/api300/c7000/uplink_set.rb +0 -0
  109. data/lib/oneview-sdk/resource/api300/c7000/user.rb +0 -0
  110. data/lib/oneview-sdk/resource/api300/c7000/volume.rb +0 -0
  111. data/lib/oneview-sdk/resource/api300/c7000/volume_attachment.rb +0 -0
  112. data/lib/oneview-sdk/resource/api300/c7000/volume_snapshot.rb +0 -0
  113. data/lib/oneview-sdk/resource/api300/c7000/volume_template.rb +0 -0
  114. data/lib/oneview-sdk/resource/api300/c7000/web_server_certificate.rb +22 -0
  115. data/lib/oneview-sdk/resource/api300/synergy.rb +0 -0
  116. data/lib/oneview-sdk/resource/api300/synergy/client_certificate.rb +22 -0
  117. data/lib/oneview-sdk/resource/api300/synergy/connection_template.rb +0 -8
  118. data/lib/oneview-sdk/resource/api300/synergy/datacenter.rb +0 -0
  119. data/lib/oneview-sdk/resource/api300/synergy/drive_enclosure.rb +0 -0
  120. data/lib/oneview-sdk/resource/api300/synergy/enclosure.rb +2 -2
  121. data/lib/oneview-sdk/resource/api300/synergy/enclosure_group.rb +0 -0
  122. data/lib/oneview-sdk/resource/api300/synergy/ethernet_network.rb +1 -0
  123. data/lib/oneview-sdk/resource/api300/synergy/event.rb +0 -0
  124. data/lib/oneview-sdk/resource/api300/synergy/fabric.rb +1 -1
  125. data/lib/oneview-sdk/resource/api300/synergy/fc_network.rb +1 -0
  126. data/lib/oneview-sdk/resource/api300/synergy/fcoe_network.rb +3 -15
  127. data/lib/oneview-sdk/resource/api300/synergy/firmware_bundle.rb +0 -0
  128. data/lib/oneview-sdk/resource/api300/synergy/firmware_driver.rb +0 -0
  129. data/lib/oneview-sdk/resource/api300/synergy/id_pool.rb +0 -0
  130. data/lib/oneview-sdk/resource/api300/synergy/interconnect.rb +0 -0
  131. data/lib/oneview-sdk/resource/api300/synergy/internal_link_set.rb +22 -0
  132. data/lib/oneview-sdk/resource/api300/synergy/lig_uplink_set.rb +0 -0
  133. data/lib/oneview-sdk/resource/api300/synergy/logical_downlink.rb +2 -14
  134. data/lib/oneview-sdk/resource/api300/synergy/logical_enclosure.rb +0 -0
  135. data/lib/oneview-sdk/resource/api300/synergy/logical_interconnect.rb +0 -20
  136. data/lib/oneview-sdk/resource/api300/synergy/logical_interconnect_group.rb +3 -1
  137. data/lib/oneview-sdk/resource/api300/synergy/managed_san.rb +0 -0
  138. data/lib/oneview-sdk/resource/api300/synergy/network_set.rb +2 -17
  139. data/lib/oneview-sdk/resource/api300/synergy/os_deployment_plan.rb +0 -0
  140. data/lib/oneview-sdk/resource/api300/synergy/power_device.rb +0 -0
  141. data/lib/oneview-sdk/resource/api300/synergy/rack.rb +0 -0
  142. data/lib/oneview-sdk/resource/api300/synergy/resource.rb +0 -0
  143. data/lib/oneview-sdk/resource/api300/synergy/san_manager.rb +0 -0
  144. data/lib/oneview-sdk/resource/api300/synergy/sas_interconnect.rb +0 -0
  145. data/lib/oneview-sdk/resource/api300/synergy/sas_logical_interconnect.rb +0 -0
  146. data/lib/oneview-sdk/resource/api300/synergy/sas_logical_interconnect_group.rb +0 -0
  147. data/lib/oneview-sdk/resource/api300/synergy/scope.rb +0 -0
  148. data/lib/oneview-sdk/resource/api300/synergy/server_hardware.rb +0 -0
  149. data/lib/oneview-sdk/resource/api300/synergy/server_hardware_type.rb +0 -0
  150. data/lib/oneview-sdk/resource/api300/synergy/server_profile.rb +24 -27
  151. data/lib/oneview-sdk/resource/api300/synergy/server_profile_template.rb +0 -12
  152. data/lib/oneview-sdk/resource/api300/synergy/storage_pool.rb +0 -0
  153. data/lib/oneview-sdk/resource/api300/synergy/storage_system.rb +0 -0
  154. data/lib/oneview-sdk/resource/api300/synergy/switch.rb +0 -0
  155. data/lib/oneview-sdk/resource/api300/synergy/unmanaged_device.rb +0 -0
  156. data/lib/oneview-sdk/resource/api300/synergy/uplink_set.rb +0 -0
  157. data/lib/oneview-sdk/resource/api300/synergy/user.rb +0 -0
  158. data/lib/oneview-sdk/resource/api300/synergy/volume.rb +0 -0
  159. data/lib/oneview-sdk/resource/api300/synergy/volume_attachment.rb +0 -0
  160. data/lib/oneview-sdk/resource/api300/synergy/volume_snapshot.rb +0 -0
  161. data/lib/oneview-sdk/resource/api300/synergy/volume_template.rb +0 -0
  162. data/lib/oneview-sdk/resource/api300/synergy/web_server_certificate.rb +22 -0
  163. data/lib/oneview-sdk/resource/api500.rb +0 -0
  164. data/lib/oneview-sdk/resource/api500/c7000.rb +0 -0
  165. data/lib/oneview-sdk/resource/api500/c7000/client_certificate.rb +22 -0
  166. data/lib/oneview-sdk/resource/api500/c7000/connection_template.rb +0 -0
  167. data/lib/oneview-sdk/resource/api500/c7000/datacenter.rb +0 -0
  168. data/lib/oneview-sdk/resource/api500/c7000/enclosure.rb +35 -0
  169. data/lib/oneview-sdk/resource/api500/c7000/enclosure_group.rb +21 -0
  170. data/lib/oneview-sdk/resource/api500/c7000/ethernet_network.rb +0 -0
  171. data/lib/oneview-sdk/resource/api500/c7000/event.rb +2 -2
  172. data/lib/oneview-sdk/resource/api500/c7000/fabric.rb +0 -0
  173. data/lib/oneview-sdk/resource/api500/c7000/fc_network.rb +1 -0
  174. data/lib/oneview-sdk/resource/api500/c7000/fcoe_network.rb +0 -0
  175. data/lib/oneview-sdk/resource/api500/c7000/firmware_bundle.rb +0 -0
  176. data/lib/oneview-sdk/resource/api500/c7000/firmware_driver.rb +0 -0
  177. data/lib/oneview-sdk/resource/api500/c7000/id_pool.rb +22 -0
  178. data/lib/oneview-sdk/resource/api500/c7000/interconnect.rb +8 -0
  179. data/lib/oneview-sdk/resource/api500/c7000/internal_link_set.rb +22 -0
  180. data/lib/oneview-sdk/resource/api500/c7000/lig_uplink_set.rb +0 -0
  181. data/lib/oneview-sdk/resource/api500/c7000/logical_downlink.rb +0 -0
  182. data/lib/oneview-sdk/resource/api500/c7000/logical_enclosure.rb +40 -0
  183. data/lib/oneview-sdk/resource/api500/c7000/logical_interconnect.rb +0 -0
  184. data/lib/oneview-sdk/resource/api500/c7000/logical_interconnect_group.rb +0 -0
  185. data/lib/oneview-sdk/resource/api500/c7000/logical_switch.rb +0 -0
  186. data/lib/oneview-sdk/resource/api500/c7000/logical_switch_group.rb +0 -0
  187. data/lib/oneview-sdk/resource/api500/c7000/managed_san.rb +10 -0
  188. data/lib/oneview-sdk/resource/api500/c7000/network_set.rb +0 -0
  189. data/lib/oneview-sdk/resource/api500/c7000/power_device.rb +0 -0
  190. data/lib/oneview-sdk/resource/api500/c7000/rack.rb +0 -0
  191. data/lib/oneview-sdk/resource/api500/c7000/resource.rb +0 -0
  192. data/lib/oneview-sdk/resource/api500/c7000/san_manager.rb +0 -0
  193. data/lib/oneview-sdk/resource/api500/c7000/scope.rb +49 -0
  194. data/lib/oneview-sdk/resource/api500/c7000/server_hardware.rb +20 -0
  195. data/lib/oneview-sdk/resource/api500/c7000/server_hardware_type.rb +1 -0
  196. data/lib/oneview-sdk/resource/api500/c7000/server_profile.rb +60 -1
  197. data/lib/oneview-sdk/resource/api500/c7000/server_profile_template.rb +86 -0
  198. data/lib/oneview-sdk/resource/api500/c7000/storage_pool.rb +57 -2
  199. data/lib/oneview-sdk/resource/api500/c7000/storage_system.rb +132 -0
  200. data/lib/oneview-sdk/resource/api500/c7000/switch.rb +7 -0
  201. data/lib/oneview-sdk/resource/api500/c7000/unmanaged_device.rb +0 -0
  202. data/lib/oneview-sdk/resource/api500/c7000/uplink_set.rb +0 -0
  203. data/lib/oneview-sdk/resource/api500/c7000/user.rb +0 -0
  204. data/lib/oneview-sdk/resource/api500/c7000/volume.rb +135 -0
  205. data/lib/oneview-sdk/resource/api500/c7000/volume_attachment.rb +24 -1
  206. data/lib/oneview-sdk/resource/api500/c7000/volume_snapshot.rb +10 -0
  207. data/lib/oneview-sdk/resource/api500/c7000/volume_template.rb +94 -3
  208. data/lib/oneview-sdk/resource/api500/c7000/web_server_certificate.rb +22 -0
  209. data/lib/oneview-sdk/resource/api500/synergy.rb +0 -0
  210. data/lib/oneview-sdk/resource/api500/synergy/client_certificate.rb +22 -0
  211. data/lib/oneview-sdk/resource/api500/synergy/connection_template.rb +0 -0
  212. data/lib/oneview-sdk/resource/api500/synergy/datacenter.rb +0 -0
  213. data/lib/oneview-sdk/resource/api500/synergy/drive_enclosure.rb +0 -0
  214. data/lib/oneview-sdk/resource/api500/synergy/enclosure.rb +35 -0
  215. data/lib/oneview-sdk/resource/api500/synergy/enclosure_group.rb +27 -0
  216. data/lib/oneview-sdk/resource/api500/synergy/ethernet_network.rb +0 -0
  217. data/lib/oneview-sdk/resource/api500/synergy/event.rb +2 -2
  218. data/lib/oneview-sdk/resource/api500/synergy/fabric.rb +0 -0
  219. data/lib/oneview-sdk/resource/api500/synergy/fc_network.rb +1 -0
  220. data/lib/oneview-sdk/resource/api500/synergy/fcoe_network.rb +0 -0
  221. data/lib/oneview-sdk/resource/api500/synergy/firmware_bundle.rb +0 -0
  222. data/lib/oneview-sdk/resource/api500/synergy/firmware_driver.rb +0 -0
  223. data/lib/oneview-sdk/resource/api500/synergy/{logical_switch.rb → id_pool.rb} +3 -3
  224. data/lib/oneview-sdk/resource/api500/synergy/interconnect.rb +17 -1
  225. data/lib/oneview-sdk/resource/api500/synergy/internal_link_set.rb +22 -0
  226. data/lib/oneview-sdk/resource/api500/synergy/lig_uplink_set.rb +0 -0
  227. data/lib/oneview-sdk/resource/api500/synergy/logical_downlink.rb +0 -0
  228. data/lib/oneview-sdk/resource/api500/synergy/logical_enclosure.rb +17 -0
  229. data/lib/oneview-sdk/resource/api500/synergy/logical_interconnect.rb +0 -0
  230. data/lib/oneview-sdk/resource/api500/synergy/logical_interconnect_group.rb +0 -0
  231. data/lib/oneview-sdk/resource/api500/synergy/managed_san.rb +2 -2
  232. data/lib/oneview-sdk/resource/api500/synergy/network_set.rb +0 -0
  233. data/lib/oneview-sdk/resource/api500/synergy/os_deployment_plan.rb +22 -0
  234. data/lib/oneview-sdk/resource/api500/synergy/power_device.rb +1 -1
  235. data/lib/oneview-sdk/resource/api500/synergy/rack.rb +0 -0
  236. data/lib/oneview-sdk/resource/api500/synergy/resource.rb +0 -0
  237. data/lib/oneview-sdk/resource/api500/synergy/san_manager.rb +0 -0
  238. data/lib/oneview-sdk/resource/api500/synergy/sas_interconnect.rb +0 -0
  239. data/lib/oneview-sdk/resource/api500/synergy/sas_logical_interconnect.rb +0 -0
  240. data/lib/oneview-sdk/resource/api500/synergy/sas_logical_interconnect_group.rb +0 -0
  241. data/lib/oneview-sdk/resource/api500/synergy/scope.rb +2 -2
  242. data/lib/oneview-sdk/resource/api500/synergy/server_hardware.rb +2 -2
  243. data/lib/oneview-sdk/resource/api500/synergy/server_hardware_type.rb +0 -0
  244. data/lib/oneview-sdk/resource/api500/synergy/server_profile.rb +4 -1
  245. data/lib/oneview-sdk/resource/api500/synergy/server_profile_template.rb +16 -2
  246. data/lib/oneview-sdk/resource/api500/synergy/storage_pool.rb +2 -2
  247. data/lib/oneview-sdk/resource/api500/synergy/storage_system.rb +1 -1
  248. data/lib/oneview-sdk/resource/api500/synergy/switch.rb +0 -0
  249. data/lib/oneview-sdk/resource/api500/synergy/unmanaged_device.rb +0 -0
  250. data/lib/oneview-sdk/resource/api500/synergy/uplink_set.rb +0 -0
  251. data/lib/oneview-sdk/resource/api500/synergy/user.rb +0 -0
  252. data/lib/oneview-sdk/resource/api500/synergy/volume.rb +2 -2
  253. data/lib/oneview-sdk/resource/api500/synergy/volume_attachment.rb +3 -3
  254. data/lib/oneview-sdk/resource/api500/synergy/volume_snapshot.rb +2 -2
  255. data/lib/oneview-sdk/resource/api500/synergy/volume_template.rb +2 -2
  256. data/lib/oneview-sdk/resource/api500/synergy/web_server_certificate.rb +22 -0
  257. data/lib/oneview-sdk/resource_helper.rb +30 -0
  258. data/lib/oneview-sdk/rest.rb +6 -2
  259. data/lib/oneview-sdk/scmb.rb +0 -0
  260. data/lib/oneview-sdk/ssl_helper.rb +0 -0
  261. data/lib/oneview-sdk/version.rb +1 -1
  262. data/oneview-sdk.gemspec +0 -0
  263. metadata +21 -5
@@ -10,12 +10,52 @@
10
10
  # language governing permissions and limitations under the License.
11
11
 
12
12
  require_relative '../../api300/c7000/logical_enclosure'
13
+ require_relative '../../../resource_helper'
13
14
 
14
15
  module OneviewSDK
15
16
  module API500
16
17
  module C7000
18
+ # Contains helper methods to include operation with firmware of a given logical enclosure resource
19
+ module FirmwareHelper
20
+ include ResourceHelper
21
+
22
+ # Updates the firmware attributes of a given logical enclosure resource
23
+ # @param [Hash] attributes Hash with firmware attributes
24
+ # @option options [String] :firmwareUpdateOn Specifies the component types within the enclosure which has to be updated
25
+ # @option options [Boolean] :forceInstallFirmware Specifies whether the firmware operation to be carried forcefully or not
26
+ # @option options [String] :firmwareBaselineUri Firmware-drivers URI for the firmware bundle containing the baseline firmware
27
+ # @return [OneviewSDK::API500::C7000::LogicalEnclosure] self
28
+ def update_firmware(attributes = {})
29
+ patch('replace', '/firmware', attributes, 'If-Match' => @data['eTag'])
30
+ retrieve!
31
+ self
32
+ end
33
+ end
34
+
17
35
  # Logical Enclosure resource implementation on API500 C7000
18
36
  class LogicalEnclosure < OneviewSDK::API300::C7000::LogicalEnclosure
37
+ include OneviewSDK::API500::C7000::FirmwareHelper
38
+
39
+ # Method is not available
40
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
41
+ def create(*)
42
+ unavailable_method
43
+ end
44
+
45
+ # Method is not available
46
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
47
+ def delete(*)
48
+ unavailable_method
49
+ end
50
+
51
+ # Updates a logical enclosure
52
+ # @param [Hash] attributes attributes to be updated
53
+ # @return [OneviewSDK::API500::C7000::LogicalEnclosure] self
54
+ def update(attributes = {})
55
+ super(attributes)
56
+ retrieve!
57
+ self
58
+ end
19
59
  end
20
60
  end
21
61
  end
@@ -16,6 +16,16 @@ module OneviewSDK
16
16
  module C7000
17
17
  # Managed SAN resource implementation for API500 C7000
18
18
  class ManagedSAN < OneviewSDK::API300::C7000::ManagedSAN
19
+
20
+ # Set public attributes
21
+ # @param [Hash] attributes Public attributes
22
+ # @option attributes [String] :name
23
+ # @option attributes [String] :value
24
+ # @option attributes [String] :valueType
25
+ # @option attributes [String] :valueFormat
26
+ def set_public_attributes(attributes)
27
+ OneviewSDK::API200::ManagedSAN.instance_method(:set_public_attributes).bind(self).call(attributes)
28
+ end
19
29
  end
20
30
  end
21
31
  end
File without changes
File without changes
File without changes
File without changes
@@ -16,6 +16,55 @@ module OneviewSDK
16
16
  module C7000
17
17
  # Scope resource implementation for API500 C7000
18
18
  class Scope < OneviewSDK::API300::C7000::Scope
19
+ # Create a resource object, associate it with a client, and set its properties.
20
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
21
+ # @param [Hash] params The options for this resource (key-value pairs)
22
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
23
+ # Defaults to the client.api_version if it exists, or the OneviewSDK::Client::DEFAULT_API_VERSION.
24
+ def initialize(client, params = {}, api_ver = nil)
25
+ @data ||= {}
26
+ @data['type'] ||= 'ScopeV2'
27
+ super
28
+ end
29
+
30
+ # Modifies scope membership by adding or removing resource assignments
31
+ # @param [Array] resources The array of resources (or any number of resources separated by comma)
32
+ # @raise [OneviewSDK::IncompleteResource] if the client or uri is not set
33
+ def change_resource_assignments(add_resources: [], remove_resources: [])
34
+ if !add_resources.empty? || !remove_resources.empty?
35
+ ensure_uri && ensure_client
36
+ add_uris = ensure_and_get_uris(add_resources)
37
+ remove_uris = ensure_and_get_uris(remove_resources)
38
+ body = []
39
+
40
+ add_uris.each do |uri|
41
+ body << { 'op' => 'add', 'path' => '/addedResourceUris/-', 'value' => uri }
42
+ end
43
+ body << { 'op' => 'replace', 'path' => '/removedResourceUris', 'value' => remove_uris }
44
+
45
+ response = @client.rest_patch(@data['uri'], { 'Content-Type' => 'application/json-patch+json', 'body' => body }, @api_version)
46
+ @client.response_handler(response)
47
+ end
48
+ self
49
+ end
50
+
51
+ # Performs a specific patch operation for the given server.
52
+ # If the server supports the particular operation, the operation is performed
53
+ # and a response is returned to the caller with the results.
54
+ # @param [String] operation The operation to be performed
55
+ # @param [String] path The path of operation
56
+ # @param [String] value The value
57
+ # @note This attribute is subject to incompatible changes in future release versions, including redefinition or removal.
58
+ def patch(operation, path, value = nil)
59
+ ensure_client && ensure_uri
60
+ body = {
61
+ 'op' => operation,
62
+ 'path' => path,
63
+ 'value' => value
64
+ }
65
+ response = @client.rest_patch(@data['uri'], { 'Content-Type' => 'application/json-patch+json', 'body' => [body] }, @api_version)
66
+ @client.response_handler(response)
67
+ end
19
68
  end
20
69
  end
21
70
  end
@@ -16,6 +16,26 @@ module OneviewSDK
16
16
  module C7000
17
17
  # Server Hardware resource implementation on API500 C7000
18
18
  class ServerHardware < OneviewSDK::API300::C7000::ServerHardware
19
+
20
+ # Create a resource object, associate it with a client, and set its properties.
21
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
22
+ # @param [Hash] params The options for this resource (key-value pairs)
23
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
24
+ def initialize(client, params = {}, api_ver = nil)
25
+ @data ||= {}
26
+ # Default values:
27
+ @data['type'] ||= 'server-hardware-7'
28
+ super
29
+ end
30
+
31
+ # Gets the information describing an 'SDX' partition including a list of physical server blades represented by a server hardware.
32
+ # @note Used with SDX enclosures only
33
+ # @return [Hash] Hash with the physical server hardware inventory
34
+ def get_physical_server_hardware
35
+ ensure_client && ensure_uri
36
+ response = @client.rest_get(@data['uri'] + '/physicalServerHardware')
37
+ @client.response_handler(response)
38
+ end
19
39
  end
20
40
  end
21
41
  end
@@ -14,6 +14,7 @@ require_relative '../../api300/c7000/server_hardware_type'
14
14
  module OneviewSDK
15
15
  module API500
16
16
  module C7000
17
+ # Server hardware type resource implementation for API500 C7000
17
18
  class ServerHardwareType < OneviewSDK::API300::C7000::ServerHardwareType
18
19
  end
19
20
  end
@@ -9,13 +9,72 @@
9
9
  # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
10
  # language governing permissions and limitations under the License.
11
11
 
12
- require_relative '../../api300/c7000/server_profile'
12
+ require_relative '../c7000/server_profile'
13
13
 
14
14
  module OneviewSDK
15
15
  module API500
16
16
  module C7000
17
17
  # Server Profile resource implementation on API500 C7000
18
18
  class ServerProfile < OneviewSDK::API300::C7000::ServerProfile
19
+
20
+ # Create a resource object, associate it with a client, and set its properties.
21
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
22
+ # @param [Hash] params The options for this resource (key-value pairs)
23
+ # @param [Integer] api_ver The api version to use when interacting with this resource.
24
+ def initialize(client, params = {}, api_ver = nil)
25
+ @data ||= {}
26
+ # Default values
27
+ @data['type'] ||= 'ServerProfileV7'
28
+ super
29
+ end
30
+
31
+ # Adds volume attachment entry and creates a new Volume associated in the Server profile
32
+ # @param [OneviewSDK::Volume] volume Volume Resource to add an attachment
33
+ # @param [Hash] volume_options Options to create a new Volume.
34
+ # Please refer to OneviewSDK::Volume documentation for the data necessary to create a new Volume.
35
+ # @param [Hash] attachment_options Options of the new attachment
36
+ # @option attachment_options [Fixnum] 'id' The ID of the attached storage volume. Do not use it if you want it to be created automatically.
37
+ # @option attachment_options [String] 'lun' The logical unit number.
38
+ # @option attachment_options [String] 'lunType' The logical unit number type: Auto or Manual.
39
+ # @option attachment_options [Boolean] 'permanent' Required. If true, indicates that the volume will persist when the profile is deleted.
40
+ # If false, then the volume will be deleted when the profile is deleted.
41
+ # @option attachment_options [Array] 'storagePaths' A list of host-to-target path associations.
42
+ # @return Returns the connection hash if found, otherwise returns nil
43
+ def create_volume_with_attachment(storage_pool, volume_options, attachment_options = {})
44
+ raise IncompleteResource, 'Storage Pool not found!' unless storage_pool.retrieve!
45
+ # Convert symbols keys to string in volume_options and attachment_options
46
+ volume_options = Hash[volume_options.map { |k, v| [k.to_s, v] }]
47
+ attachment_options = Hash[attachment_options.map { |k, v| [k.to_s, v] }]
48
+
49
+ self['sanStorage'] ||= {}
50
+ self['sanStorage']['volumeAttachments'] ||= []
51
+
52
+ attachment_options['id'] ||= 0
53
+ attachment_options['volumeStoragePoolUri'] = storage_pool['uri']
54
+ attachment_options['volumeStorageSystemUri'] = storage_pool['storageSystemUri']
55
+ attachment_options['volumeName'] = volume_options['name']
56
+ attachment_options['volumeDescription'] = volume_options['description']
57
+ attachment_options['volumeProvisionType'] = volume_options['provisioningType']
58
+ attachment_options['volumeProvisionedCapacityBytes'] = volume_options['size']
59
+
60
+ # Defaults
61
+ attachment_options['permanent'] ||= true
62
+ attachment_options['lunType'] ||= 'Auto'
63
+ attachment_options['lun'] ||= nil
64
+ attachment_options['storagePaths'] ||= []
65
+ attachment_options['volumeShareable'] = false
66
+
67
+ self['sanStorage']['manageSanStorage'] ||= true
68
+ self['sanStorage']['volumeAttachments'] << attachment_options
69
+ end
70
+
71
+ # Retrieves the profile template for a given server profile.
72
+ # @return Returns a ServerProfileTemplate instance
73
+ def get_profile_template
74
+ response = @client.rest_get("#{@data['uri']}/new-profile-template")
75
+ variant = self.class.name.split('::').at(-2)
76
+ OneviewSDK.resource_named('ServerProfileTemplate', @client.api_version, variant).new(client, @client.response_handler(response))
77
+ end
19
78
  end
20
79
  end
21
80
  end
@@ -16,6 +16,92 @@ module OneviewSDK
16
16
  module C7000
17
17
  # Server Profile Template resource implementation on API500 C7000
18
18
  class ServerProfileTemplate < OneviewSDK::API300::C7000::ServerProfileTemplate
19
+
20
+ # Create a resource object, associate it with a client, and set its properties.
21
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
22
+ # @param [Hash] params The options for this resource (key-value pairs)
23
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
24
+ def initialize(client, params = {}, api_ver = nil)
25
+ @data ||= {}
26
+ # Default values
27
+ @data['type'] ||= 'ServerProfileTemplateV3'
28
+ super
29
+ end
30
+
31
+ # Adds a connection entry to server profile template
32
+ # @param [OneviewSDK::EthernetNetwork, OneviewSDK::FCNetwork] network Network associated with the connection
33
+ # @param [Hash<String,String>] connection_options Hash containing the configuration of the connection
34
+ # @option connection_options [Boolean] 'boot' Indicates that the server will attempt to boot from this connection.
35
+ # @option connection_options [String] 'functionType' Type of function required for the connection. Values: Ethernet, FibreChannel, iSCSI.
36
+ # @option connection_options [Integer] 'id' A unique identifier for this connection. If 0, id is automatically assigned.
37
+ # @option connection_options [String] 'ipv4' The IP information for a connection. This is only used for iSCSI connections.
38
+ # @option connection_options [String] 'name' Name of the connection.
39
+ # @option connection_options [String] 'portId' Identifies the port (FlexNIC) used for this connection.
40
+ # @option connection_options [String] 'requestedMbps' The transmit throughput (mbps) that should be allocated to this connection.
41
+ # @option connection_options [String] 'requestedVFs' This value can be "Auto" or 0.
42
+ def add_connection(network, connection_options = {})
43
+ connection_options = Hash[connection_options.map { |k, v| [k.to_s, v] }]
44
+ self['connectionSettings'] = {} unless self['connectionSettings']
45
+ self['connectionSettings']['connections'] = [] unless self['connectionSettings']['connections']
46
+ self['connectionSettings']['manageConnections'] = true
47
+ connection_options['id'] ||= 0
48
+ connection_options['networkUri'] = network['uri'] if network['uri'] || network.retrieve!
49
+ self['connectionSettings']['connections'] << connection_options
50
+ end
51
+
52
+ # Removes a connection entry in server profile template
53
+ # @param [String] connection_name Name of the connection
54
+ # @return Returns the connection hash if found, otherwise returns nil
55
+ def remove_connection(connection_name)
56
+ desired_connection = nil
57
+ return desired_connection unless self['connectionSettings']['connections']
58
+ self['connectionSettings']['connections'].each do |con|
59
+ desired_connection = self['connectionSettings']['connections'].delete(con) if con['name'] == connection_name
60
+ end
61
+ desired_connection
62
+ end
63
+
64
+ # Adds a volume attachment entry with new volume in Server profile template
65
+ # @param [OneviewSDK::storage_pool] storage_pool Storage Pool Resource to add an attachment
66
+ # @param [Hash] volume_options Options to create a new Volume.
67
+ # @option volume_options [String] 'volumeName' The name of the volume.
68
+ # @option volume_options [String] 'volumeDescription' The description of the storage volume.
69
+ # @option volume_options [String] 'volumeProvisionType' The provisioning type of the new volume: Thin", "Full", or "Thin Deduplication".
70
+ # @option volume_options [Integer] 'volumeProvisionedCapacityBytes' The requested provisioned capacity of the storage volume in bytes.
71
+ # @param [Hash] attachment_options Options of the new attachment
72
+ # @option attachment_options [String] 'associatedTemplateAttachmentId' Uniquely identifying of a volume attachment in a template.
73
+ # @option attachment_options [String] 'dataProtectionLevel' Values specific to a StoreVirtual storage.
74
+ # @option attachment_options [Integer] 'id' The ID of the storage volume attachment.
75
+ # @option attachment_options [Boolean] 'isBootVolume' Identifies whether the volume will be used as a boot volume.
76
+ # @option attachment_options [String] 'lun' Logical Unit Number.
77
+ # @option attachment_options [String] 'lunType' Type of the LUN. Values: Manual or Auto.
78
+ # @option attachment_options [Array] 'storagePaths' A list of host-to-target path associations.
79
+ # @return Returns the connection hash if found, otherwise returns nil
80
+ def create_volume_with_attachment(storage_pool, volume_options, attachment_options = {})
81
+ raise IncompleteResource, 'Storage Pool not found!' unless storage_pool.retrieve!
82
+ # Convert symbols keys to string in volume_options and attachment_options
83
+ volume_options = Hash[volume_options.map { |k, v| [k.to_s, v] }]
84
+ attachment_options = Hash[attachment_options.map { |k, v| [k.to_s, v] }]
85
+
86
+ self['sanStorage'] ||= {}
87
+ self['sanStorage']['volumeAttachments'] ||= []
88
+
89
+ attachment_options['id'] ||= 0
90
+ attachment_options['volumeStoragePoolUri'] = storage_pool['uri']
91
+ attachment_options['volumeStorageSystemUri'] = storage_pool['storageSystemUri']
92
+ attachment_options['volumeName'] = volume_options['name']
93
+ attachment_options['volumeDescription'] = volume_options['description']
94
+ attachment_options['volumeProvisionType'] = volume_options['provisioningType']
95
+ attachment_options['volumeProvisionedCapacityBytes'] = volume_options['size']
96
+
97
+ # Defaults
98
+ attachment_options['volumeUri'] = nil
99
+ attachment_options['permanent'] ||= true
100
+ attachment_options['volumeShareable'] = false
101
+ self['sanStorage']['manageSanStorage'] ||= true
102
+
103
+ self['sanStorage']['volumeAttachments'] << attachment_options
104
+ end
19
105
  end
20
106
  end
21
107
  end
@@ -9,13 +9,68 @@
9
9
  # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
10
  # language governing permissions and limitations under the License.
11
11
 
12
- require_relative '../../api300/c7000/storage_pool'
12
+ require_relative 'resource'
13
13
 
14
14
  module OneviewSDK
15
15
  module API500
16
16
  module C7000
17
17
  # Storage pool resource implementation for API500 C7000
18
- class StoragePool < OneviewSDK::API300::C7000::StoragePool
18
+ class StoragePool < OneviewSDK::API500::C7000::Resource
19
+ BASE_URI = '/rest/storage-pools'.freeze
20
+
21
+ # Create a resource object, associate it with a client, and set its properties.
22
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
23
+ # @param [Hash] params The options for this resource (key-value pairs)
24
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
25
+ def initialize(client, params = {}, api_ver = nil)
26
+ super
27
+ # Default values:
28
+ @data['type'] ||= 'StoragePoolV3'
29
+ end
30
+
31
+ # Method is not available
32
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
33
+ def create(*)
34
+ unavailable_method
35
+ end
36
+
37
+ # Method is not available
38
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
39
+ def delete(*)
40
+ unavailable_method
41
+ end
42
+
43
+ # Gets the storage pools that are connected on the specified networks based on the storage system port's expected network connectivity.
44
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
45
+ # @param [Array<Resource>] networks The list of networks with URI to be used as a filter
46
+ # @return [Array<OneviewSDK::StoragePool>] the list of storage pools
47
+ def self.reachable(client, networks = [])
48
+ uri = self::BASE_URI + '/reachable-storage-pools'
49
+ unless networks.empty?
50
+ network_uris = networks.map { |item| item['uri'] }
51
+ uri += "?networks='#{network_uris.join(',')}'"
52
+ end
53
+ find_with_pagination(client, uri)
54
+ end
55
+
56
+ # To manage/unmanage a storage pool
57
+ # @param [Boolean] be_managed Set true to manage or false to unmanage
58
+ # @note Storage Pool that belongs to Storage System with family StoreVirtual can't be changed to unmanaged
59
+ def manage(be_managed)
60
+ if !be_managed && self['family'] == 'StoreVirtual'
61
+ raise ArgumentError, 'Attempting to unmanage a StoreVirtual pool is not allowed'
62
+ end
63
+ self['isManaged'] = be_managed
64
+ update
65
+ refresh
66
+ end
67
+
68
+ # To request a refresh of a storage pool
69
+ def request_refresh
70
+ self['requestingRefresh'] = true
71
+ update
72
+ refresh
73
+ end
19
74
  end
20
75
  end
21
76
  end
@@ -16,6 +16,138 @@ module OneviewSDK
16
16
  module C7000
17
17
  # Storage System resource implementation for API500 C7000
18
18
  class StorageSystem < OneviewSDK::API300::C7000::StorageSystem
19
+ # deviceSpecificAttributes['serialNumber'] and deviceSpecificAttributes['wwn'] are supported too
20
+ UNIQUE_IDENTIFIERS = %w(name uri hostname).freeze
21
+
22
+ # Create a resource object, associate it with a client, and set its properties.
23
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
24
+ # @param [Hash] params The options for this resource (key-value pairs)
25
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
26
+ def initialize(client, params = {}, api_ver = nil)
27
+ # Default values:
28
+ @data ||= {}
29
+ @data['type'] ||= 'StorageSystemV4'
30
+ super
31
+ end
32
+
33
+ # Method is unavailable
34
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
35
+ def get_managed_ports(*)
36
+ unavailable_method
37
+ end
38
+
39
+ # Method is unavailable
40
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
41
+ def set_refresh_state(*)
42
+ unavailable_method
43
+ end
44
+
45
+ # Adds the resource to OneView using the current data
46
+ # @note Calls the refresh method to set additional data
47
+ # @return [OneviewSDK::StorageSystem] self
48
+ def add
49
+ ensure_client
50
+ temp_old_data = JSON.load(@data.to_json)
51
+ credentials = temp_old_data['credentials'] || {}
52
+ request_body = {
53
+ 'family' => @data['family'],
54
+ 'hostname' => @data['hostname'],
55
+ 'username' => @data.delete('username') || credentials['username'],
56
+ 'password' => @data.delete('password') || credentials['password']
57
+ }
58
+ response = @client.rest_post(self.class::BASE_URI, { 'body' => request_body }, @api_version)
59
+ response_body = @client.response_handler(response)
60
+ set_all(response_body)
61
+
62
+ managed_domain = temp_old_data['deviceSpecificAttributes']['managedDomain'] rescue nil
63
+ if self['family'] == 'StoreServ' && managed_domain
64
+ deep_merge!(temp_old_data)
65
+ update
66
+ end
67
+ self
68
+ end
69
+
70
+ # Set data and save to OneView
71
+ # @param [Hash] attributes The attributes to add/change for this resource (key-value pairs)
72
+ # @raise [OneviewSDK::IncompleteResource] if the client or uri is not set
73
+ # @raise [StandardError] if the resource save fails
74
+ # @return [Resource] self
75
+ def update(attributes = {})
76
+ set_all(attributes)
77
+ ensure_client && ensure_uri
78
+ response = @client.rest_put(@data['uri'] + '/?force=true', { 'body' => @data }, @api_version)
79
+ @client.response_handler(response)
80
+ self
81
+ end
82
+
83
+ # Delete resource from OneView
84
+ # @return [true] if resource was deleted successfully
85
+ def remove
86
+ ensure_client && ensure_uri
87
+ response = @client.rest_delete(@data['uri'], { 'If-Match' => @data['eTag'] }, @api_version)
88
+ @client.response_handler(response)
89
+ true
90
+ end
91
+
92
+ # Checks if the resource already exists
93
+ # @return [Boolean] Whether or not resource exists
94
+ # @raise [OneviewSDK::IncompleteResource] if required attributes are not filled
95
+ def exists?
96
+ temp_item = self.class.new(@client, @data.clone)
97
+ temp_item.retrieve!
98
+ end
99
+
100
+ # Retrieves the resource details based on this resource's unique identifiers
101
+ # @note one of the UNIQUE_IDENTIFIERS, deviceSpecificAttributes['serialNumber'] or deviceSpecificAttributes['wwn']
102
+ # must be specified in the resource
103
+ # @return [Boolean] Whether or not retrieve was successful
104
+ # @raise [OneviewSDK::IncompleteResource] if required attributes are not filled
105
+ def retrieve!
106
+ data_temp = JSON.load(@data.to_json)
107
+ serial_number = data_temp['deviceSpecificAttributes']['serialNumber'] rescue nil
108
+ wwn = data_temp['deviceSpecificAttributes']['wwn'] rescue nil
109
+
110
+ proc_retrieve_temp = proc do |identifier|
111
+ results = self.class.find_by(@client, identifier)
112
+ if results.size == 1
113
+ set_all(results.first.data)
114
+ return true
115
+ end
116
+ end
117
+ proc_retrieve_temp.call('deviceSpecificAttributes' => { 'serialNumber' => serial_number }) if serial_number
118
+ proc_retrieve_temp.call('deviceSpecificAttributes' => { 'wwn' => wwn }) if wwn
119
+
120
+ super
121
+ rescue IncompleteResource => e
122
+ raise e unless serial_number || wwn
123
+ false
124
+ end
125
+
126
+ # Gets the storage ports that are connected on the specified networks based on the storage system port's expected network connectivity
127
+ # @param [Array] network Array of networks
128
+ # @return [Array] Array of reachable storage port
129
+ def get_reachable_ports(networks = [])
130
+ ensure_client && ensure_uri
131
+ uri = @data['uri'] + '/reachable-ports'
132
+ unless networks.empty?
133
+ network_uris = ensure_and_get_uris(networks)
134
+ uri += "?networks='#{network_uris.join(',')}'"
135
+ end
136
+ self.class.find_with_pagination(@client, uri)
137
+ end
138
+
139
+ # Gets a list of storage templates.
140
+ # @return [Array] Array of Storage Template
141
+ def get_templates
142
+ ensure_client && ensure_uri
143
+ self.class.find_with_pagination(@client, @data['uri'] + '/templates')
144
+ end
145
+
146
+ # Refreshes a storage system
147
+ def request_refresh
148
+ @data['requestingRefresh'] = true
149
+ update
150
+ end
19
151
  end
20
152
  end
21
153
  end