ImcSdk 0.9.2

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 (395) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/.yardopts +7 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/Gemfile +4 -0
  8. data/ImcSdk.gemspec +43 -0
  9. data/LICENSE +201 -0
  10. data/Makefile +9 -0
  11. data/README.md +79 -0
  12. data/Rakefile +15 -0
  13. data/bin/console +14 -0
  14. data/bin/setup +8 -0
  15. data/docs/ImcHandle.html +2900 -0
  16. data/docs/_index.html +109 -0
  17. data/docs/class_list.html +51 -0
  18. data/docs/css/common.css +1 -0
  19. data/docs/css/full_list.css +58 -0
  20. data/docs/css/style.css +492 -0
  21. data/docs/file_list.html +56 -0
  22. data/docs/frames.html +17 -0
  23. data/docs/index.html +147 -0
  24. data/docs/js/app.js +248 -0
  25. data/docs/js/full_list.js +216 -0
  26. data/docs/js/jquery.js +4 -0
  27. data/docs/method_list.html +619 -0
  28. data/docs/top-level-namespace.html +10218 -0
  29. data/lib/ImcSdk.rb +395 -0
  30. data/lib/ImcSdk/apis/admin/ipmi.rb +99 -0
  31. data/lib/ImcSdk/apis/admin/ldap.rb +304 -0
  32. data/lib/ImcSdk/apis/admin/ntp.rb +202 -0
  33. data/lib/ImcSdk/apis/admin/user.rb +221 -0
  34. data/lib/ImcSdk/apis/server/bios.rb +311 -0
  35. data/lib/ImcSdk/apis/server/power.rb +219 -0
  36. data/lib/ImcSdk/apis/server/remotepresence.rb +170 -0
  37. data/lib/ImcSdk/apis/server/serveractions.rb +382 -0
  38. data/lib/ImcSdk/apis/server/storage.rb +438 -0
  39. data/lib/ImcSdk/apis/utils.rb +55 -0
  40. data/lib/ImcSdk/imcbasetype.rb +121 -0
  41. data/lib/ImcSdk/imcconstants.rb +1351 -0
  42. data/lib/ImcSdk/imccore.rb +220 -0
  43. data/lib/ImcSdk/imccoremeta.rb +271 -0
  44. data/lib/ImcSdk/imccoreutils.rb +441 -0
  45. data/lib/ImcSdk/imcdriver.rb +187 -0
  46. data/lib/ImcSdk/imcexception.rb +86 -0
  47. data/lib/ImcSdk/imcfiltertype.rb +228 -0
  48. data/lib/ImcSdk/imcgenutils.rb +29 -0
  49. data/lib/ImcSdk/imcmeta.rb +975 -0
  50. data/lib/ImcSdk/imcmethod.rb +182 -0
  51. data/lib/ImcSdk/imcmethodfactory.rb +190 -0
  52. data/lib/ImcSdk/imcmo.rb +669 -0
  53. data/lib/ImcSdk/imcsession.rb +549 -0
  54. data/lib/ImcSdk/imcxmlcodec.rb +94 -0
  55. data/lib/ImcSdk/methodmeta/AaaGetComputeAuthTokensMeta.rb +16 -0
  56. data/lib/ImcSdk/methodmeta/AaaKeepAliveMeta.rb +14 -0
  57. data/lib/ImcSdk/methodmeta/AaaLoginMeta.rb +36 -0
  58. data/lib/ImcSdk/methodmeta/AaaLogoutMeta.rb +18 -0
  59. data/lib/ImcSdk/methodmeta/AaaRefreshMeta.rb +36 -0
  60. data/lib/ImcSdk/methodmeta/ConfigConfMoMeta.rb +22 -0
  61. data/lib/ImcSdk/methodmeta/ConfigConfMosMeta.rb +20 -0
  62. data/lib/ImcSdk/methodmeta/ConfigResolveChildrenMeta.rb +24 -0
  63. data/lib/ImcSdk/methodmeta/ConfigResolveClassMeta.rb +20 -0
  64. data/lib/ImcSdk/methodmeta/ConfigResolveDnMeta.rb +20 -0
  65. data/lib/ImcSdk/methodmeta/ConfigResolveParentMeta.rb +20 -0
  66. data/lib/ImcSdk/methodmeta/EventSubscribeMeta.rb +14 -0
  67. data/lib/ImcSdk/methodmeta/EventUnsubscribeMeta.rb +14 -0
  68. data/lib/ImcSdk/mometa/aaa/AaaLdap.rb +269 -0
  69. data/lib/ImcSdk/mometa/aaa/AaaLdapRoleGroup.rb +122 -0
  70. data/lib/ImcSdk/mometa/aaa/AaaSession.rb +123 -0
  71. data/lib/ImcSdk/mometa/aaa/AaaUser.rb +130 -0
  72. data/lib/ImcSdk/mometa/aaa/AaaUserEp.rb +88 -0
  73. data/lib/ImcSdk/mometa/aaa/AaaUserPasswordExpiration.rb +118 -0
  74. data/lib/ImcSdk/mometa/aaa/AaaUserPolicy.rb +100 -0
  75. data/lib/ImcSdk/mometa/activate/ActivatePIDCatalog.rb +101 -0
  76. data/lib/ImcSdk/mometa/adaptor/AdaptorCfgBackup.rb +143 -0
  77. data/lib/ImcSdk/mometa/adaptor/AdaptorCfgImporter.rb +143 -0
  78. data/lib/ImcSdk/mometa/adaptor/AdaptorConnectorInfo.rb +97 -0
  79. data/lib/ImcSdk/mometa/adaptor/AdaptorEthCompQueueProfile.rb +100 -0
  80. data/lib/ImcSdk/mometa/adaptor/AdaptorEthGenProfile.rb +158 -0
  81. data/lib/ImcSdk/mometa/adaptor/AdaptorEthISCSIProfile.rb +261 -0
  82. data/lib/ImcSdk/mometa/adaptor/AdaptorEthInterruptProfile.rb +116 -0
  83. data/lib/ImcSdk/mometa/adaptor/AdaptorEthOffloadProfile.rb +112 -0
  84. data/lib/ImcSdk/mometa/adaptor/AdaptorEthRdmaProfile.rb +106 -0
  85. data/lib/ImcSdk/mometa/adaptor/AdaptorEthRecvQueueProfile.rb +100 -0
  86. data/lib/ImcSdk/mometa/adaptor/AdaptorEthUSNICProfile.rb +167 -0
  87. data/lib/ImcSdk/mometa/adaptor/AdaptorEthWorkQueueProfile.rb +100 -0
  88. data/lib/ImcSdk/mometa/adaptor/AdaptorExtEthIf.rb +154 -0
  89. data/lib/ImcSdk/mometa/adaptor/AdaptorExtIpV6RssHashProfile.rb +100 -0
  90. data/lib/ImcSdk/mometa/adaptor/AdaptorFcBootTable.rb +106 -0
  91. data/lib/ImcSdk/mometa/adaptor/AdaptorFcCdbWorkQueueProfile.rb +100 -0
  92. data/lib/ImcSdk/mometa/adaptor/AdaptorFcErrorRecoveryProfile.rb +130 -0
  93. data/lib/ImcSdk/mometa/adaptor/AdaptorFcGenProfile.rb +133 -0
  94. data/lib/ImcSdk/mometa/adaptor/AdaptorFcInterruptProfile.rb +96 -0
  95. data/lib/ImcSdk/mometa/adaptor/AdaptorFcPersistentBindings.rb +118 -0
  96. data/lib/ImcSdk/mometa/adaptor/AdaptorFcPortFLogiProfile.rb +100 -0
  97. data/lib/ImcSdk/mometa/adaptor/AdaptorFcPortPLogiProfile.rb +100 -0
  98. data/lib/ImcSdk/mometa/adaptor/AdaptorFcPortProfile.rb +106 -0
  99. data/lib/ImcSdk/mometa/adaptor/AdaptorFcRecvQueueProfile.rb +94 -0
  100. data/lib/ImcSdk/mometa/adaptor/AdaptorFcWorkQueueProfile.rb +94 -0
  101. data/lib/ImcSdk/mometa/adaptor/AdaptorGenProfile.rb +166 -0
  102. data/lib/ImcSdk/mometa/adaptor/AdaptorHostEthIf.rb +163 -0
  103. data/lib/ImcSdk/mometa/adaptor/AdaptorHostFcIf.rb +148 -0
  104. data/lib/ImcSdk/mometa/adaptor/AdaptorIpV4RssHashProfile.rb +100 -0
  105. data/lib/ImcSdk/mometa/adaptor/AdaptorIpV6RssHashProfile.rb +100 -0
  106. data/lib/ImcSdk/mometa/adaptor/AdaptorLinkTraining.rb +79 -0
  107. data/lib/ImcSdk/mometa/adaptor/AdaptorPortProfiles.rb +100 -0
  108. data/lib/ImcSdk/mometa/adaptor/AdaptorRssProfile.rb +94 -0
  109. data/lib/ImcSdk/mometa/adaptor/AdaptorUnit.rb +155 -0
  110. data/lib/ImcSdk/mometa/advanced/AdvancedPowerProfile.rb +140 -0
  111. data/lib/ImcSdk/mometa/auto/AutoPowerProfile.rb +117 -0
  112. data/lib/ImcSdk/mometa/bios/BiosBOT.rb +88 -0
  113. data/lib/ImcSdk/mometa/bios/BiosBootDev.rb +114 -0
  114. data/lib/ImcSdk/mometa/bios/BiosBootDevGrp.rb +112 -0
  115. data/lib/ImcSdk/mometa/bios/BiosBootDevPrecision.rb +152 -0
  116. data/lib/ImcSdk/mometa/bios/BiosBootMode.rb +96 -0
  117. data/lib/ImcSdk/mometa/bios/BiosPassword.rb +73 -0
  118. data/lib/ImcSdk/mometa/bios/BiosPlatformDefaults.rb +88 -0
  119. data/lib/ImcSdk/mometa/bios/BiosProfile.rb +139 -0
  120. data/lib/ImcSdk/mometa/bios/BiosProfileManagement.rb +106 -0
  121. data/lib/ImcSdk/mometa/bios/BiosProfileToken.rb +106 -0
  122. data/lib/ImcSdk/mometa/bios/BiosSettings.rb +88 -0
  123. data/lib/ImcSdk/mometa/bios/BiosUnit.rb +106 -0
  124. data/lib/ImcSdk/mometa/bios/BiosVfASPMSupport.rb +97 -0
  125. data/lib/ImcSdk/mometa/bios/BiosVfAdjacentCacheLinePrefetch.rb +98 -0
  126. data/lib/ImcSdk/mometa/bios/BiosVfAltitude.rb +99 -0
  127. data/lib/ImcSdk/mometa/bios/BiosVfAssertNMIOnPERR.rb +98 -0
  128. data/lib/ImcSdk/mometa/bios/BiosVfAssertNMIOnSERR.rb +98 -0
  129. data/lib/ImcSdk/mometa/bios/BiosVfAutonumousCstateEnable.rb +81 -0
  130. data/lib/ImcSdk/mometa/bios/BiosVfBootOptionRetry.rb +98 -0
  131. data/lib/ImcSdk/mometa/bios/BiosVfCDNEnable.rb +92 -0
  132. data/lib/ImcSdk/mometa/bios/BiosVfCDNSupport.rb +96 -0
  133. data/lib/ImcSdk/mometa/bios/BiosVfCPUEnergyPerformance.rb +98 -0
  134. data/lib/ImcSdk/mometa/bios/BiosVfCPUFrequencyFloor.rb +98 -0
  135. data/lib/ImcSdk/mometa/bios/BiosVfCPUPerformance.rb +98 -0
  136. data/lib/ImcSdk/mometa/bios/BiosVfCPUPowerManagement.rb +98 -0
  137. data/lib/ImcSdk/mometa/bios/BiosVfCkeLowPolicy.rb +98 -0
  138. data/lib/ImcSdk/mometa/bios/BiosVfCmciEnable.rb +98 -0
  139. data/lib/ImcSdk/mometa/bios/BiosVfConsoleRedirection.rb +162 -0
  140. data/lib/ImcSdk/mometa/bios/BiosVfCoreMultiProcessing.rb +118 -0
  141. data/lib/ImcSdk/mometa/bios/BiosVfDCUPrefetch.rb +109 -0
  142. data/lib/ImcSdk/mometa/bios/BiosVfDRAMClockThrottling.rb +98 -0
  143. data/lib/ImcSdk/mometa/bios/BiosVfDemandScrub.rb +98 -0
  144. data/lib/ImcSdk/mometa/bios/BiosVfDirectCacheAccess.rb +100 -0
  145. data/lib/ImcSdk/mometa/bios/BiosVfDramRefreshRate.rb +99 -0
  146. data/lib/ImcSdk/mometa/bios/BiosVfEnhancedIntelSpeedStepTech.rb +98 -0
  147. data/lib/ImcSdk/mometa/bios/BiosVfExecuteDisableBit.rb +98 -0
  148. data/lib/ImcSdk/mometa/bios/BiosVfExtendedAPIC.rb +92 -0
  149. data/lib/ImcSdk/mometa/bios/BiosVfFRB2Enable.rb +98 -0
  150. data/lib/ImcSdk/mometa/bios/BiosVfHWPMEnable.rb +80 -0
  151. data/lib/ImcSdk/mometa/bios/BiosVfHardwarePrefetch.rb +98 -0
  152. data/lib/ImcSdk/mometa/bios/BiosVfIOHResource.rb +99 -0
  153. data/lib/ImcSdk/mometa/bios/BiosVfIntelHyperThreadingTech.rb +98 -0
  154. data/lib/ImcSdk/mometa/bios/BiosVfIntelTurboBoostTech.rb +98 -0
  155. data/lib/ImcSdk/mometa/bios/BiosVfIntelVTForDirectedIO.rb +142 -0
  156. data/lib/ImcSdk/mometa/bios/BiosVfIntelVirtualizationTechnology.rb +98 -0
  157. data/lib/ImcSdk/mometa/bios/BiosVfLOMPortOptionROM.rb +150 -0
  158. data/lib/ImcSdk/mometa/bios/BiosVfLegacyUSBSupport.rb +100 -0
  159. data/lib/ImcSdk/mometa/bios/BiosVfLvDIMMSupport.rb +97 -0
  160. data/lib/ImcSdk/mometa/bios/BiosVfMMCFGBase.rb +99 -0
  161. data/lib/ImcSdk/mometa/bios/BiosVfMemoryInterleave.rb +126 -0
  162. data/lib/ImcSdk/mometa/bios/BiosVfMemoryMappedIOAbove4GB.rb +98 -0
  163. data/lib/ImcSdk/mometa/bios/BiosVfMirroringMode.rb +96 -0
  164. data/lib/ImcSdk/mometa/bios/BiosVfNUMAOptimized.rb +98 -0
  165. data/lib/ImcSdk/mometa/bios/BiosVfOSBootWatchdogTimer.rb +98 -0
  166. data/lib/ImcSdk/mometa/bios/BiosVfOSBootWatchdogTimerPolicy.rb +97 -0
  167. data/lib/ImcSdk/mometa/bios/BiosVfOSBootWatchdogTimerTimeout.rb +98 -0
  168. data/lib/ImcSdk/mometa/bios/BiosVfOnboardNIC.rb +109 -0
  169. data/lib/ImcSdk/mometa/bios/BiosVfOnboardStorage.rb +98 -0
  170. data/lib/ImcSdk/mometa/bios/BiosVfOnboardStorageSWStack.rb +90 -0
  171. data/lib/ImcSdk/mometa/bios/BiosVfOutOfBandMgmtPort.rb +92 -0
  172. data/lib/ImcSdk/mometa/bios/BiosVfPCIOptionROMs.rb +100 -0
  173. data/lib/ImcSdk/mometa/bios/BiosVfPCISlotOptionROMEnable.rb +726 -0
  174. data/lib/ImcSdk/mometa/bios/BiosVfPCIeSSDHotPlugSupport.rb +81 -0
  175. data/lib/ImcSdk/mometa/bios/BiosVfPOSTErrorPause.rb +98 -0
  176. data/lib/ImcSdk/mometa/bios/BiosVfPStateCoordType.rb +97 -0
  177. data/lib/ImcSdk/mometa/bios/BiosVfPackageCStateLimit.rb +105 -0
  178. data/lib/ImcSdk/mometa/bios/BiosVfPatrolScrub.rb +98 -0
  179. data/lib/ImcSdk/mometa/bios/BiosVfPatrolScrubDuration.rb +94 -0
  180. data/lib/ImcSdk/mometa/bios/BiosVfPchUsb30Mode.rb +98 -0
  181. data/lib/ImcSdk/mometa/bios/BiosVfPciRomClp.rb +92 -0
  182. data/lib/ImcSdk/mometa/bios/BiosVfPowerOnPasswordSupport.rb +98 -0
  183. data/lib/ImcSdk/mometa/bios/BiosVfProcessorC1E.rb +98 -0
  184. data/lib/ImcSdk/mometa/bios/BiosVfProcessorC3Report.rb +98 -0
  185. data/lib/ImcSdk/mometa/bios/BiosVfProcessorC6Report.rb +98 -0
  186. data/lib/ImcSdk/mometa/bios/BiosVfProcessorCState.rb +98 -0
  187. data/lib/ImcSdk/mometa/bios/BiosVfPwrPerfTuning.rb +90 -0
  188. data/lib/ImcSdk/mometa/bios/BiosVfQPIConfig.rb +99 -0
  189. data/lib/ImcSdk/mometa/bios/BiosVfQpiSnoopMode.rb +94 -0
  190. data/lib/ImcSdk/mometa/bios/BiosVfResumeOnACPowerLoss.rb +111 -0
  191. data/lib/ImcSdk/mometa/bios/BiosVfSataModeSelect.rb +97 -0
  192. data/lib/ImcSdk/mometa/bios/BiosVfSelectMemoryRASConfiguration.rb +98 -0
  193. data/lib/ImcSdk/mometa/bios/BiosVfSerialPortAEnable.rb +98 -0
  194. data/lib/ImcSdk/mometa/bios/BiosVfSparingMode.rb +96 -0
  195. data/lib/ImcSdk/mometa/bios/BiosVfSrIov.rb +98 -0
  196. data/lib/ImcSdk/mometa/bios/BiosVfTPMSupport.rb +98 -0
  197. data/lib/ImcSdk/mometa/bios/BiosVfUCSMBootOrderRuleControl.rb +96 -0
  198. data/lib/ImcSdk/mometa/bios/BiosVfUSBBootConfig.rb +98 -0
  199. data/lib/ImcSdk/mometa/bios/BiosVfUSBEmulation.rb +98 -0
  200. data/lib/ImcSdk/mometa/bios/BiosVfUSBPortsConfig.rb +164 -0
  201. data/lib/ImcSdk/mometa/bios/BiosVfVgaPriority.rb +97 -0
  202. data/lib/ImcSdk/mometa/bios/BiosVfWorkLoadConfig.rb +90 -0
  203. data/lib/ImcSdk/mometa/bmc/BmcResetReason.rb +77 -0
  204. data/lib/ImcSdk/mometa/certificate/CertificateManagement.rb +94 -0
  205. data/lib/ImcSdk/mometa/chassis/ChassisPIDCatalog.rb +77 -0
  206. data/lib/ImcSdk/mometa/chassis/ChassisPowerBudget.rb +110 -0
  207. data/lib/ImcSdk/mometa/chassis/ChassisPowerMonitor.rb +93 -0
  208. data/lib/ImcSdk/mometa/chassis/ChassisPowerUtilization.rb +77 -0
  209. data/lib/ImcSdk/mometa/comm/CommEpIpmiLan.rb +87 -0
  210. data/lib/ImcSdk/mometa/comm/CommHttp.rb +149 -0
  211. data/lib/ImcSdk/mometa/comm/CommHttps.rb +141 -0
  212. data/lib/ImcSdk/mometa/comm/CommIpmiLan.rb +108 -0
  213. data/lib/ImcSdk/mometa/comm/CommKvm.rb +124 -0
  214. data/lib/ImcSdk/mometa/comm/CommNtpProvider.rb +130 -0
  215. data/lib/ImcSdk/mometa/comm/CommRedfish.rb +86 -0
  216. data/lib/ImcSdk/mometa/comm/CommSavedVMediaMap.rb +148 -0
  217. data/lib/ImcSdk/mometa/comm/CommSnmp.rb +169 -0
  218. data/lib/ImcSdk/mometa/comm/CommSnmpTrap.rb +149 -0
  219. data/lib/ImcSdk/mometa/comm/CommSnmpUser.rb +147 -0
  220. data/lib/ImcSdk/mometa/comm/CommSsh.rb +141 -0
  221. data/lib/ImcSdk/mometa/comm/CommSvcEp.rb +88 -0
  222. data/lib/ImcSdk/mometa/comm/CommSvcRack.rb +73 -0
  223. data/lib/ImcSdk/mometa/comm/CommSyslog.rb +151 -0
  224. data/lib/ImcSdk/mometa/comm/CommSyslogClient.rb +123 -0
  225. data/lib/ImcSdk/mometa/comm/CommVMedia.rb +122 -0
  226. data/lib/ImcSdk/mometa/comm/CommVMediaMap.rb +153 -0
  227. data/lib/ImcSdk/mometa/compute/ComputeBoard.rb +178 -0
  228. data/lib/ImcSdk/mometa/compute/ComputeMbPowerStats.rb +112 -0
  229. data/lib/ImcSdk/mometa/compute/ComputeRackUnit.rb +206 -0
  230. data/lib/ImcSdk/mometa/compute/ComputeRackUnitMbTempStats.rb +101 -0
  231. data/lib/ImcSdk/mometa/compute/ComputeServerNode.rb +192 -0
  232. data/lib/ImcSdk/mometa/compute/ComputeServerNodeMbTempStats.rb +101 -0
  233. data/lib/ImcSdk/mometa/compute/ComputeServerRef.rb +81 -0
  234. data/lib/ImcSdk/mometa/compute/ComputeSharedIOMbPowerStats.rb +89 -0
  235. data/lib/ImcSdk/mometa/compute/ComputeSharedIOMbTempStats.rb +99 -0
  236. data/lib/ImcSdk/mometa/current/CurrentCertificate.rb +178 -0
  237. data/lib/ImcSdk/mometa/custom/CustomPowerProfile.rb +103 -0
  238. data/lib/ImcSdk/mometa/download/DownloadClientCertificate.rb +106 -0
  239. data/lib/ImcSdk/mometa/download/DownloadClientPrivateKey.rb +106 -0
  240. data/lib/ImcSdk/mometa/download/DownloadLdapCACertificate.rb +135 -0
  241. data/lib/ImcSdk/mometa/download/DownloadRootCACertificate.rb +106 -0
  242. data/lib/ImcSdk/mometa/equipment/EquipmentChassis.rb +93 -0
  243. data/lib/ImcSdk/mometa/equipment/EquipmentChassisLocatorLed.rb +106 -0
  244. data/lib/ImcSdk/mometa/equipment/EquipmentFan.rb +223 -0
  245. data/lib/ImcSdk/mometa/equipment/EquipmentFanModule.rb +217 -0
  246. data/lib/ImcSdk/mometa/equipment/EquipmentIndicatorLed.rb +122 -0
  247. data/lib/ImcSdk/mometa/equipment/EquipmentLocatorLed.rb +131 -0
  248. data/lib/ImcSdk/mometa/equipment/EquipmentPsu.rb +235 -0
  249. data/lib/ImcSdk/mometa/equipment/EquipmentPsuColdRedundancy.rb +77 -0
  250. data/lib/ImcSdk/mometa/equipment/EquipmentPsuFan.rb +186 -0
  251. data/lib/ImcSdk/mometa/equipment/EquipmentSharedIOModule.rb +125 -0
  252. data/lib/ImcSdk/mometa/equipment/EquipmentSystemIOController.rb +87 -0
  253. data/lib/ImcSdk/mometa/equipment/EquipmentTpm.rb +164 -0
  254. data/lib/ImcSdk/mometa/error/Error.rb +98 -0
  255. data/lib/ImcSdk/mometa/event/EventManagement.rb +100 -0
  256. data/lib/ImcSdk/mometa/export/ExportClientCertificate.rb +106 -0
  257. data/lib/ImcSdk/mometa/export/ExportClientPrivateKey.rb +106 -0
  258. data/lib/ImcSdk/mometa/export/ExportLdapCACertificate.rb +135 -0
  259. data/lib/ImcSdk/mometa/export/ExportRootCACertificate.rb +106 -0
  260. data/lib/ImcSdk/mometa/fan/FanPolicy.rb +89 -0
  261. data/lib/ImcSdk/mometa/fault/FaultInst.rb +238 -0
  262. data/lib/ImcSdk/mometa/firmware/FirmwareBootDefinition.rb +101 -0
  263. data/lib/ImcSdk/mometa/firmware/FirmwareBootUnit.rb +159 -0
  264. data/lib/ImcSdk/mometa/firmware/FirmwareRunning.rb +124 -0
  265. data/lib/ImcSdk/mometa/firmware/FirmwareUpdatable.rb +197 -0
  266. data/lib/ImcSdk/mometa/generate/GenerateCertificateSigningRequest.rb +435 -0
  267. data/lib/ImcSdk/mometa/generate/GenerateRandomPassword.rb +94 -0
  268. data/lib/ImcSdk/mometa/generated/GeneratedStorageControllerKeyId.rb +77 -0
  269. data/lib/ImcSdk/mometa/huu/HuuController.rb +94 -0
  270. data/lib/ImcSdk/mometa/huu/HuuFirmwareCatalog.rb +100 -0
  271. data/lib/ImcSdk/mometa/huu/HuuFirmwareCatalogComponent.rb +106 -0
  272. data/lib/ImcSdk/mometa/huu/HuuFirmwareComponent.rb +154 -0
  273. data/lib/ImcSdk/mometa/huu/HuuFirmwareRunning.rb +106 -0
  274. data/lib/ImcSdk/mometa/huu/HuuFirmwareUpdateCancel.rb +95 -0
  275. data/lib/ImcSdk/mometa/huu/HuuFirmwareUpdateStatus.rb +118 -0
  276. data/lib/ImcSdk/mometa/huu/HuuFirmwareUpdater.rb +179 -0
  277. data/lib/ImcSdk/mometa/huu/HuuUpdateComponentStatus.rb +178 -0
  278. data/lib/ImcSdk/mometa/io/IoExpander.rb +104 -0
  279. data/lib/ImcSdk/mometa/iod/IodController.rb +94 -0
  280. data/lib/ImcSdk/mometa/iod/IodSnapshotCancel.rb +101 -0
  281. data/lib/ImcSdk/mometa/iod/IodSnapshotStart.rb +192 -0
  282. data/lib/ImcSdk/mometa/iod/IodSnapshotStatus.rb +148 -0
  283. data/lib/ImcSdk/mometa/ip/IpBlocking.rb +118 -0
  284. data/lib/ImcSdk/mometa/ip/IpFiltering.rb +128 -0
  285. data/lib/ImcSdk/mometa/kmip/KmipManagement.rb +95 -0
  286. data/lib/ImcSdk/mometa/kmip/KmipServer.rb +98 -0
  287. data/lib/ImcSdk/mometa/kmip/KmipServerLogin.rb +89 -0
  288. data/lib/ImcSdk/mometa/ldap/LdapCACertificate.rb +107 -0
  289. data/lib/ImcSdk/mometa/ldap/LdapCACertificateManagement.rb +100 -0
  290. data/lib/ImcSdk/mometa/lsboot/LsbootBootSecurity.rb +99 -0
  291. data/lib/ImcSdk/mometa/lsboot/LsbootDef.rb +111 -0
  292. data/lib/ImcSdk/mometa/lsboot/LsbootDevPrecision.rb +139 -0
  293. data/lib/ImcSdk/mometa/lsboot/LsbootEfi.rb +107 -0
  294. data/lib/ImcSdk/mometa/lsboot/LsbootHdd.rb +127 -0
  295. data/lib/ImcSdk/mometa/lsboot/LsbootIscsi.rb +133 -0
  296. data/lib/ImcSdk/mometa/lsboot/LsbootLan.rb +116 -0
  297. data/lib/ImcSdk/mometa/lsboot/LsbootLocalStorage.rb +88 -0
  298. data/lib/ImcSdk/mometa/lsboot/LsbootNVMe.rb +114 -0
  299. data/lib/ImcSdk/mometa/lsboot/LsbootPchStorage.rb +120 -0
  300. data/lib/ImcSdk/mometa/lsboot/LsbootPxe.rb +133 -0
  301. data/lib/ImcSdk/mometa/lsboot/LsbootSan.rb +133 -0
  302. data/lib/ImcSdk/mometa/lsboot/LsbootSd.rb +127 -0
  303. data/lib/ImcSdk/mometa/lsboot/LsbootStorage.rb +107 -0
  304. data/lib/ImcSdk/mometa/lsboot/LsbootUefiShell.rb +114 -0
  305. data/lib/ImcSdk/mometa/lsboot/LsbootUsb.rb +124 -0
  306. data/lib/ImcSdk/mometa/lsboot/LsbootVMedia.rb +138 -0
  307. data/lib/ImcSdk/mometa/lsboot/LsbootVirtualMedia.rb +108 -0
  308. data/lib/ImcSdk/mometa/memory/MemoryArray.rb +200 -0
  309. data/lib/ImcSdk/mometa/memory/MemoryUnit.rb +299 -0
  310. data/lib/ImcSdk/mometa/memory/MemoryUnitEnvStats.rb +112 -0
  311. data/lib/ImcSdk/mometa/mgmt/MgmtBackup.rb +172 -0
  312. data/lib/ImcSdk/mometa/mgmt/MgmtBackupServer.rb +132 -0
  313. data/lib/ImcSdk/mometa/mgmt/MgmtController.rb +118 -0
  314. data/lib/ImcSdk/mometa/mgmt/MgmtIf.rb +388 -0
  315. data/lib/ImcSdk/mometa/mgmt/MgmtImporter.rb +172 -0
  316. data/lib/ImcSdk/mometa/mgmt/MgmtImporterServer.rb +132 -0
  317. data/lib/ImcSdk/mometa/mgmt/MgmtInventory.rb +143 -0
  318. data/lib/ImcSdk/mometa/network/NetworkAdapterEthIf.rb +100 -0
  319. data/lib/ImcSdk/mometa/network/NetworkAdapterUnit.rb +116 -0
  320. data/lib/ImcSdk/mometa/one/OneTimeBootDevice.rb +103 -0
  321. data/lib/ImcSdk/mometa/one/OneTimePrecisionBootDevice.rb +116 -0
  322. data/lib/ImcSdk/mometa/osi/OsiCancel.rb +101 -0
  323. data/lib/ImcSdk/mometa/osi/OsiController.rb +94 -0
  324. data/lib/ImcSdk/mometa/osi/OsiStart.rb +266 -0
  325. data/lib/ImcSdk/mometa/osi/OsiStatus.rb +148 -0
  326. data/lib/ImcSdk/mometa/pci/PciEquipSlot.rb +124 -0
  327. data/lib/ImcSdk/mometa/pid/PidCatalog.rb +100 -0
  328. data/lib/ImcSdk/mometa/pid/PidCatalogCpu.rb +136 -0
  329. data/lib/ImcSdk/mometa/pid/PidCatalogDimm.rb +154 -0
  330. data/lib/ImcSdk/mometa/pid/PidCatalogHdd.rb +130 -0
  331. data/lib/ImcSdk/mometa/pid/PidCatalogPCIAdapter.rb +130 -0
  332. data/lib/ImcSdk/mometa/platform/PlatformEventFilters.rb +109 -0
  333. data/lib/ImcSdk/mometa/power/PowerBudget.rb +146 -0
  334. data/lib/ImcSdk/mometa/power/PowerMonitor.rb +123 -0
  335. data/lib/ImcSdk/mometa/processor/ProcessorEnvStats.rb +112 -0
  336. data/lib/ImcSdk/mometa/processor/ProcessorUnit.rb +213 -0
  337. data/lib/ImcSdk/mometa/self/SelfEncryptStorageController.rb +98 -0
  338. data/lib/ImcSdk/mometa/server/ServerUtilization.rb +112 -0
  339. data/lib/ImcSdk/mometa/sioc/SiocResetReason.rb +77 -0
  340. data/lib/ImcSdk/mometa/sol/SolIf.rb +128 -0
  341. data/lib/ImcSdk/mometa/standard/StandardPowerProfile.rb +108 -0
  342. data/lib/ImcSdk/mometa/storage/StorageController.rb +165 -0
  343. data/lib/ImcSdk/mometa/storage/StorageControllerHealth.rb +100 -0
  344. data/lib/ImcSdk/mometa/storage/StorageControllerNVMe.rb +154 -0
  345. data/lib/ImcSdk/mometa/storage/StorageControllerProps.rb +406 -0
  346. data/lib/ImcSdk/mometa/storage/StorageControllerSettings.rb +220 -0
  347. data/lib/ImcSdk/mometa/storage/StorageEnclosure.rb +82 -0
  348. data/lib/ImcSdk/mometa/storage/StorageEnclosureDisk.rb +149 -0
  349. data/lib/ImcSdk/mometa/storage/StorageEnclosureDiskFwHelper.rb +108 -0
  350. data/lib/ImcSdk/mometa/storage/StorageEnclosureDiskSlotEp.rb +85 -0
  351. data/lib/ImcSdk/mometa/storage/StorageEnclosureDiskSlotZoneHelper.rb +97 -0
  352. data/lib/ImcSdk/mometa/storage/StorageFlexFlashController.rb +193 -0
  353. data/lib/ImcSdk/mometa/storage/StorageFlexFlashControllerProps.rb +202 -0
  354. data/lib/ImcSdk/mometa/storage/StorageFlexFlashOperationalProfile.rb +164 -0
  355. data/lib/ImcSdk/mometa/storage/StorageFlexFlashPhysicalDrive.rb +256 -0
  356. data/lib/ImcSdk/mometa/storage/StorageFlexFlashVirtualDrive.rb +152 -0
  357. data/lib/ImcSdk/mometa/storage/StorageFlexFlashVirtualDriveImageMap.rb +145 -0
  358. data/lib/ImcSdk/mometa/storage/StorageLocalDisk.rb +247 -0
  359. data/lib/ImcSdk/mometa/storage/StorageLocalDiskEp.rb +77 -0
  360. data/lib/ImcSdk/mometa/storage/StorageLocalDiskProps.rb +250 -0
  361. data/lib/ImcSdk/mometa/storage/StorageLocalDiskSlotEp.rb +146 -0
  362. data/lib/ImcSdk/mometa/storage/StorageLocalDiskUsage.rb +124 -0
  363. data/lib/ImcSdk/mometa/storage/StorageOperation.rb +112 -0
  364. data/lib/ImcSdk/mometa/storage/StorageRaidBattery.rb +252 -0
  365. data/lib/ImcSdk/mometa/storage/StorageSasExpander.rb +113 -0
  366. data/lib/ImcSdk/mometa/storage/StorageSasUplink.rb +121 -0
  367. data/lib/ImcSdk/mometa/storage/StorageUnusedLocalDisk.rb +124 -0
  368. data/lib/ImcSdk/mometa/storage/StorageVirtualDrive.rb +307 -0
  369. data/lib/ImcSdk/mometa/storage/StorageVirtualDriveCreatorUsingUnusedPhysicalDrive.rb +223 -0
  370. data/lib/ImcSdk/mometa/storage/StorageVirtualDriveCreatorUsingVirtualDriveGroup.rb +199 -0
  371. data/lib/ImcSdk/mometa/storage/StorageVirtualDriveWithDriveGroupSpace.rb +130 -0
  372. data/lib/ImcSdk/mometa/suggested/SuggestedStorageControllerSecurityKey.rb +77 -0
  373. data/lib/ImcSdk/mometa/sysdebug/SysdebugMEpLog.rb +122 -0
  374. data/lib/ImcSdk/mometa/sysdebug/SysdebugTechSupportExport.rb +149 -0
  375. data/lib/ImcSdk/mometa/system/SystemIOController.rb +81 -0
  376. data/lib/ImcSdk/mometa/thermal/ThermalPowerProfile.rb +89 -0
  377. data/lib/ImcSdk/mometa/top/TopRoot.rb +88 -0
  378. data/lib/ImcSdk/mometa/top/TopSystem.rb +561 -0
  379. data/lib/ImcSdk/mometa/upload/UploadBiosProfile.rb +129 -0
  380. data/lib/ImcSdk/mometa/upload/UploadCertificate.rb +136 -0
  381. data/lib/ImcSdk/mometa/upload/UploadPIDCatalog.rb +129 -0
  382. data/lib/ImcSdk/version.rb +3 -0
  383. data/spec/ImcSdk_spec.rb +11 -0
  384. data/spec/spec_helper.rb +11 -0
  385. data/test/ImcSdk_bios_test.rb +57 -0
  386. data/test/ImcSdk_ipmi_test.rb +65 -0
  387. data/test/ImcSdk_ldap_test.rb +79 -0
  388. data/test/ImcSdk_ntp_test.rb +88 -0
  389. data/test/ImcSdk_powerbudget_test.rb +64 -0
  390. data/test/ImcSdk_remotepresence_test.rb +60 -0
  391. data/test/ImcSdk_serveractions_test.rb +69 -0
  392. data/test/ImcSdk_storage_test.rb +60 -0
  393. data/test/ImcSdk_user_test.rb +98 -0
  394. data/test/test_helper.rb +21 -0
  395. metadata +492 -0
@@ -0,0 +1,438 @@
1
+ # Copyright 2017 Cisco Systems, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+
14
+
15
+ $:.unshift(*Dir[::File.expand_path('./../../', File.dirname(__FILE__))])
16
+
17
+ require 'imccoreutils'
18
+ #
19
+ # This method returns the virtual drive name by raid_level and drive_list
20
+ #
21
+ # @param raid_level [Integer] raid level ex. 0, 1, 5, 6, 10, 50, 60
22
+ # Raid 0 Simple striping.
23
+ # Raid 1 Simple mirroring.
24
+ # Raid 5 Striping with parity.
25
+ # Raid 6 Striping with two parity drives.
26
+ # Raid 10 Spanned mirroring.
27
+ # Raid 50 Spanned striping with parity.
28
+ # Raid 60 Spanned striping with two parity drives.
29
+ # @param drive_list [Array<Array>] list of drives
30
+ # [[1]]
31
+ # [[1,2]]
32
+ # [[1,2],[3,4]]
33
+ # @return [string]
34
+ def vd_name_derive(raid_level, drive_list)
35
+ return "RAID" + raid_level.to_s + "_" + _flatten_to_string(drive_list)
36
+ end
37
+
38
+ #
39
+ # This method queries the virtual drive by name
40
+ #
41
+ # @param handle [ImcHandle] ImcHandle class object
42
+ # @param controller_type [String] Controller type ex. 'SAS'
43
+ # @param controller_slot [String] Controller slot name/number ex. "MEZZ","0"-"9", "HBA"
44
+ # @param virtual_drive_name [String] Name of the virtual drive
45
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
46
+ # @return [StorageVirtualDrive] if virtual drive found.
47
+ # @return [nil] if virtual drive not found.
48
+ #
49
+ def vd_query_by_name(handle:, controller_type:, controller_slot:, virtual_drive_name:, server_id: 1)
50
+ slot_dn = _get_controller_dn(handle, controller_type, controller_slot, server_id)
51
+
52
+ mos = handle.query_children(in_dn: slot_dn, class_id: "storageVirtualDrive")
53
+ for mo in mos
54
+ if mo.name == virtual_drive_name
55
+ return mo
56
+ end
57
+ end
58
+ return nil
59
+ end
60
+
61
+ #
62
+ # Set drive as the boot drive
63
+ #
64
+ # @param handle [ImcHandle] ImcHandle class object
65
+ # @param controller_type [String] Controller type ex. 'SAS'
66
+ # @param controller_slot [String] Controller slot name/number ex. "MEZZ","0"-"9", "HBA"
67
+ # @param virtual_drive_name [String] Name of the virtual drive
68
+ # @param raid_level [Integer] raid level ex. 0, 1, 5, 6, 10, 50, 60
69
+ # Raid 0 Simple striping.
70
+ # Raid 1 Simple mirroring.
71
+ # Raid 5 Striping with parity.
72
+ # Raid 6 Striping with two parity drives.
73
+ # Raid 10 Spanned mirroring.
74
+ # Raid 50 Spanned striping with parity.
75
+ # Raid 60 Spanned striping with two parity drives.
76
+ # @param drive_group [Array<Array>] list of drives
77
+ # [[1]]
78
+ # [[1,2]]
79
+ # [[1,2],[3,4]]
80
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
81
+ # @return [nil]
82
+ #
83
+ def set_as_boot_drive(handle:,
84
+ controller_type:,
85
+ controller_slot:,
86
+ virtual_drive_name: nil,
87
+ raid_level: nil,
88
+ drive_group: nil,
89
+ server_id: 1)
90
+
91
+ vd_name = virtual_drive_name
92
+ if vd_name.nil?
93
+ vd_name = vd_name_derive(raid_level,drive_group)
94
+ end
95
+ vd = vd_query_by_name(handle: handle,
96
+ controller_type: controller_type,
97
+ controller_slot: controller_slot,
98
+ virtual_drive_name: vd_name,
99
+ server_id: server_id)
100
+ vd.set_prop(:admin_action,"set-boot-drive")
101
+ handle.set_mo(mo: vd)
102
+ end
103
+
104
+ #
105
+ # Checks if a virtual drive by the specified name exists.
106
+ #
107
+ # @param handle [ImcHandle] ImcHandle class object
108
+ # @param controller_type [String] Controller type ex. 'SAS'
109
+ # @param controller_slot [String] Controller slot name/number ex. "MEZZ","0"-"9", "HBA"
110
+ # @param virtual_drive_name [String] Name of the virtual drive
111
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
112
+ # @return [TrueClass, StorageVirtualDrive] if virtual drive exists.
113
+ # @return [FalseClass, nil] if virtual drive doesn't exist.
114
+ #
115
+ def virtual_drive_exists(handle:,
116
+ controller_type:,
117
+ controller_slot:,
118
+ virtual_drive_name:,
119
+ server_id: 1)
120
+ mo = vd_query_by_name(handle: handle, controller_type: controller_type, controller_slot: controller_slot,
121
+ virtual_drive_name: virtual_drive_name, server_id: server_id)
122
+ return !mo.nil?, mo
123
+ end
124
+
125
+ #
126
+ # Deletes the specified virtual drive
127
+ #
128
+ # @param handle [ImcHandle] ImcHandle class object
129
+ # @param controller_type [String] Controller type ex. 'SAS'
130
+ # @param controller_slot [String] Controller slot name/number ex. "MEZZ","0"-"9", "HBA"
131
+ # @param virtual_drive_name [String] Name of the virtual drive
132
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
133
+ # @example
134
+ # virtual_drive_delete(handle: imc,
135
+ # controller_slot: 'MEZZ',
136
+ # virtual_drive_name: "RAID0_1")
137
+ #
138
+ def virtual_drive_delete(handle:,
139
+ controller_type:,
140
+ controller_slot:,
141
+ virtual_drive_name:,
142
+ server_id: 1)
143
+ vd = vd_query_by_name(handle: handle,
144
+ controller_type: controller_type,
145
+ controller_slot: controller_slot,
146
+ virtual_drive_name: virtual_drive_name,
147
+ server_id: server_id)
148
+ handle.remove_mo(mo: vd)
149
+ end
150
+
151
+ #
152
+ # Creates virtual drive from unused physical drives
153
+ #
154
+ # @param handle [ImcHandle] ImcHandle class object
155
+ # @param drive_group [Array<Array>] list of drives
156
+ # [[1]]
157
+ # [[1,2]]
158
+ # [[1,2],[3,4]]
159
+ # @param controller_type [String] Controller type ex. 'SAS'
160
+ # @param controller_slot [String] Controller slot name/number ex. "MEZZ","0"-"9", "HBA"
161
+ # @param virtual_drive_name [String] Name of the virtual drive
162
+ # @param raid_level [Integer] raid level ex. 0, 1, 5, 6, 10, 50, 60
163
+ # Raid 0 Simple striping.
164
+ # Raid 1 Simple mirroring.
165
+ # Raid 5 Striping with parity.
166
+ # Raid 6 Striping with two parity drives.
167
+ # Raid 10 Spanned mirroring.
168
+ # Raid 50 Spanned striping with parity.
169
+ # Raid 60 Spanned striping with two parity drives.
170
+ # @param access_policy [String] Access-policy for the virtual drive, ex. ['read-write', 'read-only', 'hidden', 'default', 'blocked']
171
+ # @param read_policy [String]
172
+ # @param disk_cache_policy [String]
173
+ # @param write_policy [String]
174
+ # @param strip_size [String]
175
+ # @param size
176
+ # @param self_encrypt [TrueClass, FalseClass] encrypt the virtual drive if the underlying controller and physical drive support it
177
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
178
+ # @return [StorageVirtualDrive]
179
+ #
180
+ # @example
181
+ # virtual_drive_create(handle: imcHandle,
182
+ # drive_group: [[2]],
183
+ # controller_slot: 'MEZZ')
184
+ #
185
+ def virtual_drive_create(handle:,
186
+ drive_group:,
187
+ controller_type:,
188
+ controller_slot:,
189
+ raid_level: 0,
190
+ virtual_drive_name: nil,
191
+ access_policy: "read-write",
192
+ read_policy: "no-read-ahead",
193
+ cache_policy: "direct-io",
194
+ disk_cache_policy: "unchanged",
195
+ write_policy: "Write Through",
196
+ strip_size: "64k",
197
+ size: nil,
198
+ self_encrypt: false,
199
+ server_id: 1)
200
+ slot_dn = _get_controller_dn(handle, controller_type,
201
+ controller_slot, server_id)
202
+
203
+ dg_str = _list_to_string(drive_group)
204
+ vdn = virtual_drive_name
205
+
206
+ params = {}
207
+ params[:parent_mo_or_dn] = slot_dn
208
+ params[:drive_group] = dg_str
209
+ params[:raid_level] = raid_level.to_s
210
+ params[:access_policy] = access_policy
211
+ params[:read_policy] = read_policy
212
+ params[:cache_policy] = cache_policy
213
+ params[:disk_cache_policy] = disk_cache_policy
214
+ params[:write_policy] = write_policy
215
+ params[:strip_size] = strip_size
216
+
217
+ if self_encrypt
218
+ params[:admin_action] = "enable-self-encrypt"
219
+ end
220
+ params[:virtual_drive_name] = vdn.nil? ? vd_name_derive(raid_level, drive_group) : vdn
221
+
222
+ params[:size] = size.nil? ? _vd_max_size_get(handle,
223
+ controller_type,
224
+ controller_slot,
225
+ drive_group,
226
+ raid_level,
227
+ server_id) : size
228
+
229
+ require "mometa/storage/StorageVirtualDriveCreatorUsingUnusedPhysicalDrive"
230
+ #mo = vd_creator(**params)
231
+ mo = StorageVirtualDriveCreatorUsingUnusedPhysicalDrive.new(**params)
232
+ mo.set_prop(:admin_state, "trigger")
233
+ handle.add_mo(mo: mo)
234
+ return mo
235
+ end
236
+
237
+ #
238
+ # Gets the physical drive
239
+ #
240
+ # @param handle [ImcHandle] ImcHandle class object
241
+ # @param controller_type [String] Controller type ex. 'SAS'
242
+ # @param controller_slot [String] Controller slot name/number ex. "MEZZ","0"-"9", "HBA"
243
+ # @param drive_slot [Integer] Slot in which the drive resides
244
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
245
+ # @return [StorageLocalDisk]
246
+ #
247
+ # @example
248
+ # mo = physical_drive_get(handle: imcHandle, controller_type: 'SAS',
249
+ # controller_slot: 'HBA',
250
+ # drive_slot: 4)
251
+ def physical_drive_get(handle:,
252
+ controller_type:,
253
+ controller_slot:,
254
+ drive_slot:,
255
+ server_id: 1)
256
+ controller_dn = _get_controller_dn(handle, controller_type,
257
+ controller_slot, server_id)
258
+ drive_dn = controller_dn + '/pd-' + drive_slot.to_s
259
+ return handle.query_dn(dn: drive_dn)
260
+ end
261
+
262
+
263
+ private
264
+
265
+ def _vd_max_size_get(handle,
266
+ controller_type,
267
+ controller_slot,
268
+ drive_list,
269
+ raid_level,
270
+ server_id=1)
271
+ =begin
272
+ Returns the usable disk size for the specified virtual_drive
273
+ drive_list:
274
+ [[1]]
275
+ [[1,2],[3,4]]
276
+ min_size = smallest size of all the drives from this disk group
277
+ available_size = accumulated size of all the drives together
278
+ span_depth = number of sub groups [[1,2,3],[4,5,6]] span_depth = 2
279
+ =end
280
+ sizes = _pd_sizes_get(handle,
281
+ controller_type,
282
+ controller_slot,
283
+ drive_list,
284
+ server_id)
285
+ min_size = _pd_min_size_get(sizes)
286
+ total_size = _pd_total_size_get(sizes)
287
+ span_depth = _vd_span_depth_get(drive_list)
288
+
289
+ max_size = _raid_max_size_get(raid_level, total_size, min_size, span_depth)
290
+ return _bytes_to_human(max_size, "MB")
291
+ end
292
+
293
+ def _vd_span_depth_get(drive_list)
294
+ #return len(drive_list)
295
+ return drive_list.size
296
+ end
297
+
298
+ def _raid_max_size_get(raid_level, total_size, min_size, span_depth)
299
+ size = {0 => total_size,
300
+ 1 => total_size/2,
301
+ 5 => total_size - (span_depth * 1 * min_size),
302
+ 6 => total_size - (span_depth * 2 * min_size),
303
+ 10 => total_size/2,
304
+ 50 => total_size - (span_depth * 1 * min_size),
305
+ 60 => total_size - (span_depth * 2 * min_size)}
306
+
307
+ if !size.has_key?(raid_level)
308
+ raise "Unsupported Raid level: " + raid_level.to_s
309
+ end
310
+ return size[raid_level]
311
+ end
312
+
313
+
314
+ def _pd_sizes_get(handle,
315
+ controller_type,
316
+ controller_slot,
317
+ drive_list,
318
+ server_id=1)
319
+ sizes = []
320
+ for each in drive_list
321
+ for drive in each
322
+ dmo = physical_drive_get(handle: handle,
323
+ controller_type: controller_type,
324
+ controller_slot: controller_slot,
325
+ drive_slot: drive,
326
+ server_id: server_id)
327
+ sizes.push(_human_to_bytes(dmo.coerced_size))
328
+ end
329
+ end
330
+ return sizes
331
+ end
332
+
333
+ def _pd_min_size_get(sizes)
334
+ return sizes.min
335
+ end
336
+
337
+
338
+ def _pd_total_size_get(sizes)
339
+ #return sum(sizes)
340
+ return sizes.inject(:+)
341
+ end
342
+
343
+ def _human_to_bytes(size_str)
344
+ =begin
345
+ returns the size in bytes
346
+ supported formats KB, MB, GB, TB, PB, EB, ZB, YB
347
+ KB to bytes = (* 1024) == << 10
348
+ MB to bytes = (* 1024 * 1024) == << 20
349
+ GB to bytes = (* 1024 * 1024 * 1024) == << 30
350
+ =end
351
+ convert = {'KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4,
352
+ 'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8}
353
+ s = size_str.split()
354
+ if !convert.has_key?(s[1])
355
+ raise "unknown size format" + size_str
356
+ end
357
+ return s[0].to_i << (10 * convert[s[1]])
358
+
359
+ end
360
+
361
+ def _bytes_to_human(size, output_format=nil)
362
+ =begin
363
+ converts bytes to human readable format.
364
+ The return is in output_format.
365
+ =end
366
+ convert = {'KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4,
367
+ 'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8}
368
+ unit = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
369
+ if output_format.nil?
370
+ #output_format = unit[int(math.floor(math.log(size, 2))/10)]
371
+ output_format = unit[((Math.log(size, 2)).floor/10).to_i]
372
+ end
373
+ if !convert.has_key?(output_format)
374
+ raise "unknown output format" + output_format
375
+ end
376
+ return (size >> (10 * convert[output_format])).to_s + ' ' + output_format
377
+ end
378
+
379
+ def _flatten_list(drive_list)
380
+ # convert to format imc expects
381
+ # [[1]] => [1]
382
+ # [[1,2],[3,4]] => [1, 2, 3, 4]
383
+ #if !(isinstance(drive_list, list) and isinstance(drive_list[0], list))
384
+ if !(drive_list.is_a?(Array) and drive_list[0].is_a?(Array))
385
+ raise "drive_list needs a list of list(s). i.e [[1,2],[3,4]]"
386
+ end
387
+ dg_list = []
388
+ for each in drive_list
389
+ for sub_each in each
390
+ dg_list.push(sub_each)
391
+ end
392
+ end
393
+ return dg_list
394
+ end
395
+
396
+ def _get_controller_dn(handle, controller_type, controller_slot, server_id=1)
397
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
398
+ return (server_dn + "/board/storage-" + controller_type + "-" + controller_slot)
399
+ end
400
+
401
+ def _get_controller(handle, controller_type, controller_slot, server_id=1)
402
+ mo = handle.query_dn(_get_controller_dn(handle,
403
+ controller_type,
404
+ controller_slot,
405
+ server_id))
406
+ if mo.nil?
407
+ raise ImcOperationError.new("Get Controller Type:#{controller_type} Slot: #{controller_slot}", "Managed Object not found")
408
+ end
409
+ return mo
410
+ end
411
+ def _flatten_to_string(drive_list)
412
+ # convert to format imc expects
413
+ # [[1]] => '1'
414
+ # [[1,2],[3,4]] => '1234'
415
+
416
+ flat_array = _flatten_list(drive_list)
417
+ #for x in _flatten_list(drive_list)
418
+ # flat_array.push(x.to_s.join(''))
419
+ #end
420
+ return flat_array.join('')
421
+ #return ''.join([''.join(x.to_s) for x in _flatten_list(drive_list)])
422
+ end
423
+
424
+ def _list_to_string(drive_list)
425
+ # convert to format imc expects
426
+ # list to string
427
+ # [[1]] => '[1]'
428
+ # [[1,2],[3,4]] => '[1,2][3,4]'
429
+ # imc fails to parse '[1, 2]'
430
+ # it needs to be '[1,2]'
431
+ # and hence the replace(' ', '')
432
+ dg_str = String.new
433
+ for each in drive_list
434
+ dg_str += each.to_s
435
+ end
436
+ #return dg_str.gsub!(' ', '')
437
+ return dg_str.delete(' ')
438
+ end
@@ -0,0 +1,55 @@
1
+ # Copyright 2017 Cisco Systems, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+
14
+
15
+ require_relative "../imcexception.rb"
16
+
17
+ def _get_mo(handle:, dn: nil, **kwargs)
18
+
19
+ if handle.nil?
20
+ raise ImcOperationError.new("Get Managed Object for dn: #{dn}", "Handle is nil")
21
+ end
22
+ if dn
23
+ mo = handle.query_dn(dn: dn)
24
+ if mo.nil?
25
+ raise ImcOperationError.new("Get Managed Object for dn:#{dn}", "Managed Object doesn't exist")
26
+ end
27
+ return mo
28
+ end
29
+
30
+ return nil
31
+ end
32
+
33
+
34
+ def _is_invalid_value(value)
35
+ return ["", nil].include? value
36
+ end
37
+
38
+
39
+ def _is_valid_arg(param, kwargs)
40
+ return !kwargs[param.to_sym].nil?
41
+ end
42
+
43
+ Tuple = Struct.new(:first, :second) do
44
+ def <=>(other)
45
+ return second <=> other.second if first == other.first
46
+ first <=> other.first
47
+ end
48
+
49
+ def to_s
50
+ "(#{first}, #{second})"
51
+ end
52
+ end
53
+
54
+ class TrueClass; def to_i; 1; end; end
55
+ class FalseClass; def to_i; 0; end; end