oneview-sdk 4.5.1 → 5.0.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 (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