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,221 @@
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
+ $:.unshift(*Dir[::File.expand_path('./../../', File.dirname(__FILE__))])
15
+ #This module implements apis to create/delete/modify local users
16
+
17
+ require "mometa/aaa/AaaUser"
18
+ require "mometa/aaa/AaaUserPolicy"
19
+ require "mometa/aaa/AaaUserPasswordExpiration"
20
+
21
+ #
22
+ # This method will enable/disable strong password policy for users.
23
+ #
24
+ # @param handle [ImcHandle] ImcHandle class object.
25
+ # @param enable [TrueClass, FalseClass] setting to true will enable strong password.
26
+ # @return [AaaUserPolicy] modified AaaUserPolicy object.
27
+ def set_strong_password(handle:, enable: false)
28
+ mos = handle.query_classid(class_id: "AaaUserPolicy")
29
+ user_policy = mos[0]
30
+ enable ? user_policy.set_prop(:user_password_policy, "enabled") : user_policy.set_prop(:user_password_policy, "disabled")
31
+
32
+ handle.set_mo(mo: user_policy)
33
+ return handle.query_dn(dn: user_policy.dn)
34
+ end
35
+
36
+ #
37
+ # This method will check if strong password policy is enabled.
38
+ #
39
+ # @param handle [ImcHandle] ImcHandle class object.
40
+ # @return [TrueClass, FalseClass] true if strong password in enabled.
41
+ #
42
+ def is_strong_password_set(handle:)
43
+ mos = handle.query_classid(class_id: "AaaUserPolicy")
44
+ if mos.size == 0
45
+ raise ImcOperationError.new("Check Password Strength", "MO does not exist")
46
+ end
47
+ return (mos[0].user_password_policy == "enabled")
48
+ end
49
+
50
+ #
51
+ # This method sets up the password expiration policy for local users
52
+ #
53
+ # @param handle [ImcHandle] ImcHandle class object.
54
+ # @param password_expiry_duration [Integer] The time period after which the set password expires.
55
+ # Setting this to zero will disable password expiry.
56
+ # @param password_history [Integer] Specifies in number of instances,
57
+ # the new password entered should not have been used in the past.
58
+ # @param password_notification_period [Integer] Specifies in number of days,
59
+ # the user will be notified before password expiry.
60
+ # @param password_grace_period [Integer] Specifies in number of days,
61
+ # the old password will still be valid after the password expiry
62
+ # @return [AaaUserPasswordExpiration] Modified AaaUserPasswordExpiration object.
63
+ def password_expiration_set(handle:,
64
+ password_expiry_duration:,
65
+ password_history: 0,
66
+ password_notification_period: 15,
67
+ password_grace_period: 0)
68
+
69
+ mo = AaaUserPasswordExpiration.new(parent_mo_or_dn: "sys/user-ext")
70
+ args = {
71
+ :password_expiry_duration => password_expiry_duration.to_s,
72
+ :password_history => password_history.to_s,
73
+ :password_notification_period => password_notification_period.to_s,
74
+ :password_grace_period => password_grace_period.to_s
75
+ }
76
+ mo.set_prop_multiple(**args)
77
+ handle.set_mo(mo: mo)
78
+ return handle.query_dn(dn: mo.dn)
79
+ end
80
+
81
+ #
82
+ # This method will check if the password expiration policy exists
83
+ #
84
+ # @param handle [ImcHandle] ImcHandle class object.
85
+ # @param kwargs [Hash] key-value paired arguments
86
+ # @return [TrueClass, AaaUserPasswordExpiration] if policy exists.
87
+ # @return [FalseClass, nil] if policy doesn't exist.
88
+ def password_expiration_exists(handle:, **kwargs)
89
+ mo = AaaUserPasswordExpiration.new(parent_mo_or_dn: "sys/user-ext")
90
+ mo = handle.query_dn(dn: mo.dn)
91
+ if mo.nil?
92
+ return false, nil
93
+ end
94
+ return mo.check_prop_match(**kwargs), mo
95
+ end
96
+
97
+ #
98
+ # This method will create a new local user and setup it's role.
99
+ #
100
+ # @param handle [ImcHandle] ImcHandle class object.
101
+ # @param name [String] username of the local user.
102
+ # @param pwd [String] password for the local user.
103
+ # @param priv [String] Priviledge of the local user. Values could be "admin", "read-only" or "user".
104
+ # @return [AaaUser] AaaUser object corresponding to the user created.
105
+ # @raise [Exception] if limit on the number of users has exceeded.
106
+ # @example 1
107
+ # local_user_exists(handle, name, pwd, priv)
108
+ # @example 2
109
+ # local_user_exists(handle, name)
110
+ # @note If the privileges have changed for an existing user, (1) will fail, but (2) will pass in that case.
111
+ #
112
+ def local_user_create(handle:, name:, pwd:, priv: "read-only")
113
+
114
+ user = _get_local_user(handle, name)
115
+ if !user.nil?
116
+ return local_user_modify(handle: handle, name: name, :priv => priv, :account_status => AaaUserConsts::ACCOUNT_STATUS_ACTIVE)
117
+ end
118
+
119
+ available_user_id = _get_free_user_id(handle)
120
+
121
+ new_user = AaaUser.new( parent_mo_or_dn: "sys/user-ext", id: available_user_id)
122
+ args = {:name => name,
123
+ :pwd => pwd,
124
+ :priv => priv,
125
+ :account_status => AaaUserConsts::ACCOUNT_STATUS_ACTIVE}
126
+ new_user.set_prop_multiple(**args)
127
+
128
+ handle.set_mo(mo: new_user)
129
+ #return new_user
130
+ return handle.query_dn(dn: new_user.dn)
131
+ end
132
+
133
+ #
134
+ # This method will modify the user with the username specified
135
+ #
136
+ # @param handle [ImcHandle] ImcHandle class object
137
+ # @param name [String] username of the local user to be modified.
138
+ # @param kwargs [Hash] key-value paired arguments
139
+ # @return [AaaUser] AaaUser object corresponding to the user modified.
140
+ # @raise [Exception] When the user not found.
141
+ #
142
+ def local_user_modify(handle:, name:, **kwargs)
143
+ found_user = _get_local_user(handle, name)
144
+ if found_user.nil?
145
+ raise ImcOperationError.new("Modify Local User", "User doesn't exist")
146
+ end
147
+
148
+ found_user.set_prop_multiple(**kwargs)
149
+ handle.set_mo(mo: found_user)
150
+ return handle.query_dn(dn: found_user.dn)
151
+ end
152
+
153
+ #
154
+ # This method deactivates the user referred to by the username passed
155
+ #
156
+ # @param handle [ImcHandle] ImcHandle class object.
157
+ # @param name [String] username of the local user to be deleted.
158
+ # @return [nil]
159
+ # @raise [ImcOperationError] if the user is not found.
160
+ #
161
+ def local_user_delete(handle:, name:)
162
+ found_user = _get_local_user(handle, name=name)
163
+ if found_user.nil?
164
+ raise ImcOperationError.new("Delete Local User", "User doesn't exist")
165
+ end
166
+
167
+ kwargs = {}
168
+ kwargs[:admin_action] = AaaUserConsts::ADMIN_ACTION_CLEAR
169
+ kwargs[:account_status] = AaaUserConsts::ACCOUNT_STATUS_INACTIVE
170
+ kwargs[:priv] = AaaUserConsts::PRIV_READ_ONLY
171
+ found_user.set_prop_multiple(**kwargs)
172
+
173
+ handle.set_mo(mo: found_user)
174
+ return handle.query_dn(dn: found_user.dn)
175
+ end
176
+
177
+ #
178
+ # This method checks if a user exists with attributes passed
179
+ #
180
+ # @param handle [ImcHandle] ImcHandle class object.
181
+ # @param kwargs [Hash] key-value paired arguments used for user attributes
182
+ # @return [TrueClass, AaaUser] if the user exists with the properties
183
+ # @return [FalseClass, nil] if the user doen't exist with the properties
184
+ # @example
185
+ # local_user_exists(handle: handle, :user => "abc", :priv => "admin")
186
+ #
187
+ def local_user_exists(handle: nil, **kwargs)
188
+ users = _get_local_users(handle)
189
+ users.each do |user|
190
+ if user.check_prop_match(**kwargs)
191
+ return true, user
192
+ end
193
+ end
194
+ return false, nil
195
+ end
196
+
197
+ private
198
+ def _get_free_user_id(handle)
199
+ users = _get_local_users(handle)
200
+ for user in users
201
+ if user.account_status == AaaUserConsts::ACCOUNT_STATUS_INACTIVE && user.name.to_s.empty?
202
+ return user.id
203
+ end
204
+ end
205
+
206
+ raise ImcOperationError.new("Create Local User", "Max number of users already configured")
207
+ end
208
+
209
+ def _get_local_users(handle)
210
+ return handle.query_classid(class_id: "AaaUser")
211
+ end
212
+
213
+ def _get_local_user(handle, name)
214
+ users = _get_local_users(handle)
215
+ users.each do |user|
216
+ if user.name == name
217
+ return user
218
+ end
219
+ end
220
+ return nil
221
+ end
@@ -0,0 +1,311 @@
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
+ require "imccoreutils"
17
+ require "mometa/lsboot/LsbootDevPrecision"
18
+ require_relative "../utils"
19
+
20
+ PRECISION_DEVICE_DICT = {
21
+ :hdd => {
22
+ :class_id => "LsbootHdd",
23
+ :type => "LOCALHDD"
24
+ },
25
+ :iscsi => {
26
+ :class_id => "LsbootIscsi",
27
+ :type => "ISCSI",
28
+ :subtype => "ISCSI"
29
+ },
30
+ :pchstorage => {
31
+ :class_id => "LsbootPchStorage",
32
+ :type => "PCHSTORAGE"
33
+ },
34
+ :pxe => {
35
+ :class_id => "LsbootPxe",
36
+ :type => "PXE",
37
+ :subtype => "PXE"
38
+ },
39
+ :san => {
40
+ :class_id => "LsbootSan",
41
+ :type => "SAN",
42
+ :subtype => "SAN"
43
+ },
44
+ :sdcard => {
45
+ :class_id => "LsbootSd",
46
+ :type => "SDCARD",
47
+ :subtype => "SDCARD"
48
+ },
49
+ :uefishell => {
50
+ :class_id => "LsbootUefiShell",
51
+ :type => "UEFISHELL"
52
+ },
53
+ :usb => {
54
+ :class_id => "LsbootUsb",
55
+ :type => "USB"
56
+ },
57
+ :vmedia => {
58
+ :class_id => "LsbootVMedia",
59
+ :type => "VMEDIA"
60
+ },
61
+ :nvme => {
62
+ :class_id => "LsbootNVMe",
63
+ :type => "NVME"
64
+ },
65
+ }
66
+
67
+
68
+ POLICY_DEVICE_DICT = {
69
+ :efi => {:class_id => "LsbootEfi", :access => "read-only"},
70
+ :lan => {:class_id => "LsbootLan", :access => "read-only"},
71
+ :storage => {:class_id => "LsbootStorage", :access => "read-write"},
72
+ :cdrom => {:class_id => "LsbootVirtualMedia", :access => "read-only"},
73
+ :fdd => {:class_id => "LsbootVirtualMedia", :access => "read-write"}
74
+ }
75
+
76
+ #
77
+ # This method will set the boot order precision.
78
+ #
79
+ # @param handle [ImcHandle] ImcHandle class object
80
+ # @param reboot_on_update [TrueClass, FalseClass]
81
+ # @param reapply [TrueClass, FalseClass]
82
+ # @param configured_boot_mode [String] Configured boot mode, ex. "Legacy", "Uefi", "None"
83
+ # @param boot_devices [Array<Hash>] format
84
+ # [{"order" => '1', "device-type" => "vmedia", "name" => "vmedia"},
85
+ # {"order" => '2', "device-type" => "hdd", "name" => "hdd"}]
86
+ # boot-order(string): Order
87
+ # boot-device-type(string): "hdd", "iscsi", "pchstorage", "pxe",
88
+ # "san", "sdcard", "uefishell", "usb",
89
+ # "vmedia"
90
+ # boot-device-name(string): Unique label for the boot device
91
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
92
+ # @return [LsBootDevPrecision]
93
+ #
94
+ # @example
95
+ # boot_order_precision_set(handle: ImcHandle,
96
+ # reboot_on_update: false,
97
+ # reapply: false,
98
+ # configured_boot_mode: "Uefi",
99
+ # boot_devices: [{"order" => '1', "device-type" => "vmedia", "name" => "vmedia"},
100
+ # {"order" => '2', "device-type" => "hdd", "name" => "hdd"}]
101
+ #
102
+ def boot_order_precision_set(
103
+ handle:,
104
+ reboot_on_update: false,
105
+ reapply: false,
106
+ configured_boot_mode: "Legacy",
107
+ boot_devices: Array.new,
108
+ server_id: 1)
109
+
110
+ # Insert version check here to gracefully handle older versions of CIMC
111
+
112
+ # IMC expects the devices to be configured in sorted order
113
+ boot_devices = boot_devices.sort_by { |x| x[:order] }
114
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
115
+ lsbootdevprecision_mo = LsbootDevPrecision.new(parent_mo_or_dn: server_dn)
116
+ args = Hash.new
117
+ args[:reboot_on_update] = "no"
118
+ lsbootdevprecision_mo.reboot_on_update = "no"
119
+ if reboot_on_update
120
+ args[:reboot_on_update] = "yes"
121
+ end
122
+
123
+ args[:reapply] = "no"
124
+ if reapply
125
+ args[:reapply] = "yes"
126
+ end
127
+ args[:configured_boot_mode] = configured_boot_mode
128
+ lsbootdevprecision_mo.set_prop_multiple(**args)
129
+ #lsbootdevprecision_mo.set_prop(:configured_boot_mode, configured_boot_mode)
130
+ handle.set_mo(mo: lsbootdevprecision_mo)
131
+
132
+ boot_order_child_mos = handle.query_children(in_dn: lsbootdevprecision_mo.dn)
133
+ for mo in boot_order_child_mos
134
+ handle.remove_mo(mo: mo)
135
+ end
136
+
137
+ for device in boot_devices
138
+ _add_boot_device(handle, lsbootdevprecision_mo.dn, device)
139
+ end
140
+
141
+ lsbootdevprecision_mo = handle.query_classid(class_id: "LsbootDevPrecision")
142
+ return lsbootdevprecision_mo
143
+ end
144
+
145
+ #
146
+ # Check if boot order precision match
147
+ #
148
+ # @param handle [ImcHandle] ImcHandle class object
149
+ # @param kwargs [Hash]
150
+ # @return [FalseClass, String, nil] if LsbootDevPrecision mo not found
151
+ # @return [FalseClass, String, LsbootDevPrecision] if settings do not match
152
+ # @return [TrueClass, nil, LsbootDevPrecision] if settings match
153
+ #
154
+ def boot_order_precision_exists(handle:, **kwargs)
155
+
156
+ server_dn = ImcCoreUtils.set_server_dn(handle, kwargs)
157
+ mos = handle.query_children(in_dn: server_dn,
158
+ class_id: "LsbootDevPrecision")
159
+ if mos.size == 0
160
+ return false, "no Mos found", nil
161
+ end
162
+ mo = mos[0]
163
+ args = {}
164
+ if _is_valid_arg(:reboot_on_update, kwargs)
165
+ reboot_on_update = kwargs.fetch(:reboot_on_update)
166
+ if reboot_on_update.is_a? TrueClass or reboot_on_update.is_a? FalseClass
167
+ reboot_on_update = reboot_on_update ? "yes" : "no"
168
+ end
169
+ args[:reboot_on_update] = reboot_on_update
170
+ end
171
+ if _is_valid_arg(:configured_boot_mode, kwargs)
172
+ args[:configured_boot_mode] = kwargs.fetch(:configured_boot_mode)
173
+ end
174
+ #args = {:reboot_on_update => reboot_on_update,
175
+ # :configured_boot_mode => kwargs.fetch(:configured_boot_mode, 'Uefi')}
176
+
177
+ if !mo.check_prop_match(**args)
178
+ return false, "parent MO property values do not match", mo
179
+ end
180
+
181
+ if _is_valid_arg(:boot_devices, kwargs)
182
+ in_boot_order = kwargs[:boot_devices].sort_by { |x| x[:order]}
183
+ configured_boot_order = boot_precision_configured_get(
184
+ handle: handle, server_id: kwargs.fetch(:server_id, 1))
185
+
186
+ if in_boot_order.size != configured_boot_order.size
187
+ return false, "length mismatch", mo
188
+ end
189
+
190
+ for i in (0..in_boot_order.size-1)
191
+ if !(in_boot_order[i][:order] == configured_boot_order[i][:order] and
192
+ in_boot_order[i][:'device-type'] == configured_boot_order[i][:'device-type'] and
193
+ in_boot_order[i][:name] == configured_boot_order[i][:name])
194
+ return false, "dictionaries do not match", mo
195
+ end
196
+ end
197
+ end
198
+ return true, nil, mo
199
+ end
200
+
201
+ #
202
+ # Get the configured boot precision settings
203
+ #
204
+ # @param handle [ImcHandle] ImcHandle class object
205
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
206
+ # @return [Array<Hash>]
207
+ def boot_precision_configured_get(handle:, server_id: 1)
208
+
209
+ configured_boot_order = []
210
+ class_to_name_dict = {}
211
+ PRECISION_DEVICE_DICT.each do |key, value|
212
+ classname = value[:class_id]
213
+ class_to_name_dict[classname.to_sym] = key
214
+ end
215
+
216
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
217
+ pmo = LsbootDevPrecision.new(parent_mo_or_dn: server_dn)
218
+ mos = handle.query_children(in_dn: pmo.dn)
219
+ for mo in mos
220
+ #class_id = mo.instance_variable_get("@class_id")
221
+ device = {:order => mo.order,
222
+ :'device-type' => class_to_name_dict[mo.instance_variable_get("@class_id").to_sym].to_s,
223
+ :name => mo.name}
224
+ configured_boot_order.push(device)
225
+ end
226
+ return configured_boot_order.sort_by {|x| x[:order]}
227
+ end
228
+
229
+ private
230
+
231
+ def _add_boot_device(handle, parent_dn, boot_device)
232
+ =begin
233
+ This method verifies and adds the boot device in the boot order
234
+ Used by boot_order_precision_set and boot_order_policy_set
235
+ Args:
236
+ handle(ImcHandle)
237
+ boot_device(dict): This is a dictionary of the format
238
+ {"order" => '1', "device-type" => "vmedia", "name" => "vmedia"}
239
+ Returns:
240
+ None
241
+ =end
242
+
243
+ device = _get_device(parent_dn,
244
+ boot_device[:'device-type'],
245
+ boot_device[:name])
246
+ if device.nil?
247
+ raise ValueError.new("Unsupported boot-device #{boot_device["device-type"]} with label #{boot_device["name"]}")
248
+ end
249
+
250
+ device.order = boot_device[:order]
251
+ device_props = {}
252
+ #for key, value in boot_device.iteritems()
253
+ boot_device.each do |key, value|
254
+ if !(["order", "device-type", "name"].include? key.to_s)
255
+ device_props[key.to_sym] = value
256
+ end
257
+ end
258
+
259
+ device.set_prop_multiple(**device_props)
260
+ if device.instance_variable_defined? ("@state")
261
+ device.set_prop(:state, "enabled")
262
+ end
263
+ handle.add_mo(mo: device, modify_present: true)
264
+ end
265
+
266
+ def _get_device(parent_dn, device_type, device_name)
267
+
268
+ if _is_boot_order_precision(parent_dn)
269
+ if !(PRECISION_DEVICE_DICT.has_key? (device_type.to_sym))
270
+ return nil
271
+ end
272
+
273
+ mo_class = ImcCoreUtils.load_class(PRECISION_DEVICE_DICT[device_type.to_sym][:class_id].to_s)
274
+ mo_class_param_hash = {}
275
+ mo_class.prop_map.each do |key, value|
276
+ mo_class_param_hash[:value] = nil
277
+ end
278
+ class_obj = mo_class.new(parent_mo_or_dn: parent_dn, :name => device_name)
279
+ if PRECISION_DEVICE_DICT[device_type.to_sym].has_key? "type".to_sym
280
+ class_obj.set_prop(:type, PRECISION_DEVICE_DICT[device_type.to_sym][:type] )
281
+ end
282
+ if PRECISION_DEVICE_DICT[device_type.to_sym].has_key? "subtype".to_sym
283
+ class_obj.set_prop(:subtype, PRECISION_DEVICE_DICT[device_type.to_sym][:subtype])
284
+ end
285
+ elsif _is_boot_order_policy(parent_dn)
286
+ if !(POLICY_DEVICE_DICT.has_key? device_type.to_sym)
287
+ return nil
288
+ end
289
+
290
+ mo_class = ImcCoreUtils.load_class(POLICY_DEVICE_DICT[device_type.to_sym][:class_id].to_s)
291
+ access = POLICY_DEVICE_DICT[device_type.to_sym][:access]
292
+
293
+ #cdrom and fdd are of type LsbootVirtualMedia and have "access" as the
294
+ #naming property. Other objects under LsbootDef do not need this.
295
+ #Hence cdrom and fdd need special handling below.
296
+
297
+ if ["cdrom", "fdd"].include?(device_type)
298
+ class_obj = mo_class.new(parent_mo_or_dn: parent_dn, access: access)
299
+ else
300
+ class_obj = mo_class.new(parent_mo_or_dn: parent_dn)
301
+ class_obj.set_prop(:access, access)
302
+ end
303
+ else
304
+ return nil
305
+ end
306
+ return class_obj
307
+ end
308
+
309
+ def _is_boot_order_precision(dn)
310
+ return dn.include?("precision")
311
+ end