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,395 @@
1
+ $:.unshift(*Dir[::File.expand_path('./ImcSdk/', File.dirname(__FILE__))])
2
+
3
+ require 'version'
4
+ require 'imcsession'
5
+ require 'imcexception'
6
+ require 'imcmethodfactory'
7
+ require 'imcconstants'
8
+
9
+ # ImcHandle class is the user interface point for any Imc communication.
10
+ # @author Amit Mandal(amimanda@cisco.com)
11
+ # @!attribute [rw] to_commit
12
+
13
+ class ImcHandle < ImcSession
14
+
15
+ attr_accessor :to_commit
16
+
17
+ # Create an object of ImcHandle class
18
+ #
19
+ # @param ip [String] The IP or Hostname of the IMC Server
20
+ # @param username [String] The username as configured on the Imc Server
21
+ # @param password [String] The password as configured on the Imc Server
22
+ # @param port [Integer, nil] The port number to be used during connection
23
+ # @param secure [bool, nil] true for secure connection, otherwise false
24
+ # @param proxy [String, nil] The proxy object to be used to connect
25
+ # @example
26
+ # handle = ImcHandle.new (ip: "192.168.1.1",username: "admin",password: "password")
27
+ # @example
28
+ # handle = ImcHandle.new (ip: "192.168.1.1",username: "admin",password: "password", secure: true)
29
+ # @example
30
+ # handle = ImcHandle.new (ip: "192.168.1.1",username: "admin",password: "password", secure: false)
31
+ # @example
32
+ # handle = ImcHandle.new (ip: "192.168.1.1",username: "admin",password: "password", port: 80)
33
+ # @example
34
+ # handle = ImcHandle.new (ip: "192.168.1.1",username: "admin",password: "password", port: 443)
35
+ # @example
36
+ # handle = ImcHandle.new (ip: "192.168.1.1",username: "admin",password: "password", port: 100, secure: true)
37
+ # @example
38
+ # handle = ImcHandle.new(ip: "192.168.1.1",username: "admin",password: "password", port: 100, secure: false)
39
+
40
+ def initialize(ip:, username:, password:, port: "80", secure: nil, proxy: nil)
41
+ super(ip: ip, username: username, password: password, port: port, secure: secure, proxy: proxy)
42
+ self.to_commit = {}
43
+ end
44
+
45
+ #def set_dump_xml()
46
+ # #Enables the logging of xml requests and responses
47
+ # super
48
+ #end
49
+
50
+ #def unset_dump_xml()
51
+ #Disables the logging of xml request and responses
52
+ # super
53
+ #end
54
+
55
+ # Initiated a connection to the server referenced by the ImcHandle. A cookie is populated in the ImcHandle, if the login is successful.
56
+ #
57
+ # @param auto_refresh [TrueClass, FalseCalss] If set to true, it refresh the cookie continuously
58
+ # @param force [TrueClass, FalseClass] If set to true it reconnects even if cookie exists and is valid for respective connection.
59
+ # @param timeout [Integer] Timeout value in seconds
60
+ # @return [TrueClass, FalseClass] true on successful connect
61
+ # @example
62
+ # handle.login()
63
+ # @example
64
+ # handle.login(auto_refresh: true)
65
+ # @example
66
+ # handle.login(force: true)
67
+ # @example
68
+ # handle.login(auto_refresh: true, force: true)
69
+ # @note Where handle is an object of ImcHandle class.
70
+ def login(auto_refresh: false, force: false, timeout: "60")
71
+ return _login(auto_refresh: auto_refresh, force: force, timeout: timeout)
72
+ end
73
+
74
+ # Disconnects from the server referenced by the ImcHandle.
75
+ #
76
+ # @param timeout [Integer] timeout value in seconds.
77
+ # @return [TrueClass, FalseClass] true on successful disconnect
78
+ #
79
+ # @example
80
+ # handle.logout()
81
+ # @example
82
+ # handle.logout(timout: 60)
83
+ # @note Where handle is an object of ImcHandle class.
84
+
85
+ def logout(timeout: "60")
86
+ return _logout(timeout: timeout)
87
+ end
88
+
89
+ #
90
+ # process_xml_elem is a helper method which posts xml elements to the
91
+ # server and returns parsed response. It's role is to operate on the
92
+ # output of methods from Imcmethodfactory, which return xml element
93
+ # node(s).
94
+ #
95
+ # @param elem [] XML Element Object
96
+ # @return [External Method Object, MO List] MO List or External Method Object
97
+ #
98
+ # @example
99
+ # elem = imcmethodfactory.config_resolve_class(cookie: handle.cookie, class_id: "computeRackUnit")
100
+ # objs = handle.process_xml_elem(elem)
101
+ #
102
+ def process_xml_elem(elem, timeout: "60")
103
+ response = self.post_elem(elem, timeout: timeout)
104
+ if response.error_code != 0
105
+ raise ImcException.new(response.error_code, response.error_descr)
106
+ end
107
+ if response.is_outconfig_available()
108
+ return response.get_outconfig_child()
109
+ else
110
+ return response
111
+ end
112
+ end
113
+
114
+ # Returns a token that is used for IMC authentication.
115
+ #
116
+ # @param timeout [Integer] timeout value(in seconds)
117
+ # @return [String] Token used for IMC Authentication
118
+ #
119
+ # @example
120
+ # handle.get_auth_token()
121
+ #
122
+ def get_auth_token(timeout: "60")
123
+
124
+ auth_token = nil
125
+ mo = self.query_classid(class_id: NamingId::COMPUTE_BOARD)
126
+ if mo.nil?
127
+ mo = self.query_classid(class_id: NamingId::COMPUTE_RACK_UNIT)
128
+ end
129
+
130
+ if !mo.nil?
131
+ elem = aaa_get_compute_auth_tokens(cookie: self.cookie)
132
+ response = self.post_elem(elem, timeout: timeout)
133
+
134
+ if response.error_code != 0
135
+ raise ImcException.new(response.error_code, response.error_descr)
136
+ end
137
+
138
+ if response.instance_variable_defined?(:@out_tokens)
139
+ auth_token = response.instance_variable_get(:@out_tokens).split(',').first
140
+ end
141
+ end
142
+ return auth_token
143
+ end
144
+
145
+ #
146
+ # Finds an object using it's distinguished name.
147
+ #
148
+ # @param dn [String] distinguished name of the object to be queried for.
149
+ # @param hierarchy [TrueClass, FalseClass] Gets all objects in hierarchy if true
150
+ # @param need_response [TrueClass, FalseClass] returns the response xml node, instead of parsed objects.
151
+ # @param timeout [Integer] timeout value(in seconds)
152
+ # @return [ManagedObject, Array<ManagedObject>, ExternalMethod] Return Managed Object by default, returns Array<ManagedObject> if hierarchy is set to true,
153
+ # returns ExternalMethod if need_response is set to true.
154
+ #
155
+ # @example
156
+ # obj = handle.query_dn(dn: "sys/rack-unit-1")
157
+ # @example
158
+ # obj = handle.query_dn(dn: "sys/rack-unit-1", hierarchy: true)
159
+ # @example
160
+ # obj = handle.query_dn(dn: "sys/rack-unit-1", need_response: true
161
+ # @example
162
+ # obj = handle.query_dn(dn: "sys/rack-unit-1", hierarchy: true, need_response: true)
163
+
164
+ def query_dn(dn:, hierarchy: false, need_response: false, timeout: "60")
165
+
166
+ if dn.nil?
167
+ raise ValueError.new ("Provide dn.")
168
+ end
169
+
170
+ elem = config_resolve_dn(self.cookie, dn, hierarchy)
171
+
172
+ response = self.post_elem(elem, timeout: timeout)
173
+
174
+ if response.error_code != 0
175
+ raise ImcException.new(response.error_code, response.error_descr)
176
+ end
177
+
178
+ if need_response
179
+ return response
180
+ end
181
+
182
+ if hierarchy
183
+ out_mo_list = ImcCoreUtils.extract_molist_from_method_response(response, hierarchy)
184
+ return out_mo_list
185
+ end
186
+
187
+ mo = nil
188
+ child = response.get_outconfig_child()
189
+ if child.size > 0
190
+ mo = child[0]
191
+ end
192
+ return mo
193
+ end
194
+
195
+ #
196
+ # Finds an object using it's class id.
197
+ #
198
+ # @param class_id [String] class id of the object to be queried for.
199
+ # @param hierarchy [TrueClass, FalseClass] if set to true will return all the child hierarchical objects.
200
+ # @param need_response [TrueClass, FalseClass] if set to true will return only response object.
201
+ # @param timeout [Integer] timeout value(in seconds)
202
+ # @return [Array<ManagedObject>, Method_Response, nil] returns Method_Response if need_response is set to true
203
+ #
204
+ # @example
205
+ # obj = handle.query_classid(class_id: "computeRackUnit")
206
+ # @example
207
+ # obj = handle.query_classid(class_id: "computeRackUnit", hierarchy: true)
208
+ # @example
209
+ # obj = handle.query_classid(class_id: "computeRackUnit", need_response: true)
210
+ #
211
+ def query_classid(class_id:, hierarchy: false, need_response: false, timeout: "60" )
212
+
213
+ if class_id.nil?
214
+ raise ValueError("Provide Parameter class_id")
215
+ end
216
+
217
+ meta_class_id = ImcCoreUtils.find_class_id_in_mo_meta_ignore_case(class_id)
218
+
219
+ if meta_class_id.nil?
220
+ meta_class_id = class_id
221
+ end
222
+
223
+ elem = config_resolve_class(self.cookie, class_id = meta_class_id, hierarchy)
224
+
225
+ response = self.post_elem(elem, timeout: timeout)
226
+
227
+ if response.error_code != 0
228
+ raise ImcException.new(response.error_code, response.error_descr)
229
+ end
230
+
231
+ if need_response
232
+ return response
233
+ end
234
+
235
+ out_mo_list = ImcCoreUtils.extract_molist_from_method_response(response, hierarchy)
236
+ return out_mo_list
237
+
238
+ end
239
+
240
+ #
241
+ # Finds children of a given managed object or distinguished name.
242
+ # Arguments can be specified to query only a specific type(class_id) of children.
243
+ # Arguments can also be specified to query only direct children or the entire hierarchy of children.
244
+ #
245
+ # @param in_mo [ManagedObject] query children managed object under this object.
246
+ # @param in_dn [String] query children managed object for a given managed object of the respective dn.
247
+ # @param class_id [String] by default nil, if given finds only specific childred object for a given class_id.
248
+ # @param hierarchy [TrueClass, FalseClass] if set to true will return all the child hierarchical objects.
249
+ # @param timeout [Integer] timeout value in seconds
250
+ # @return [Array<ManagedObject>, nil]
251
+ #
252
+ # @example
253
+ # mo_list = handle.query_children(in_mo: mo)
254
+ # @example
255
+ # mo_list = handle.query_children(in_mo: mo, class_id: "classid")
256
+ # @example
257
+ # mo_list = handle.query_children(in_dn: dn)
258
+ # @example
259
+ # mo_list = handle.query_children(in_dn: dn, class_id: "classid")
260
+ #
261
+ def query_children(in_mo: nil, in_dn: nil, class_id: nil, hierarchy: false, timeout: "60")
262
+ if in_mo.nil? and in_dn.nil?
263
+ raise ValueError("[Error]: GetChild: Provide in_mo or in_dn")
264
+ end
265
+
266
+ if in_mo
267
+ parent_dn = in_mo.dn
268
+ elsif
269
+ parent_dn = in_dn
270
+ end
271
+
272
+ if class_id
273
+ meta_class_id = ImcCoreUtils.find_class_id_in_mo_meta_ignore_case(class_id)
274
+ if meta_class_id.nil?
275
+ meta_class_id = class_id
276
+ end
277
+ else
278
+ meta_class_id = class_id
279
+ end
280
+
281
+ elem = config_resolve_children(self.cookie, class_id = meta_class_id, in_dn = parent_dn, hierarchy)
282
+
283
+ response = post_elem(elem, timeout: timeout)
284
+
285
+ if response.error_code != 0
286
+ raise ImcException.new(response.error_code, response.error_descr)
287
+ end
288
+
289
+ out_mo_list = ImcCoreUtils.extract_molist_from_method_response(response, hierarchy)
290
+
291
+ return out_mo_list
292
+ end
293
+ #
294
+ # Add a Managed Object to the IMC Server
295
+ #
296
+ # @param mo [ManagedObject] Managed Object to the added to the IMC Server
297
+ # @param modify_present [TrueClass, FalseClass] Over-write an existing object if true
298
+ # @param timeout [Integer] timoeout value(in seconds)
299
+ # @return [nil]
300
+ # @example
301
+ # handle.add_mo(mo: mo)
302
+ #
303
+ def add_mo(mo:, modify_present: true, timeout: "60")
304
+ if ImcGenUtils::AFFIRMATIVE_LIST.include? modify_present
305
+ if self.query_dn(dn: mo.dn).nil?
306
+ mo.set_prop("status","created")
307
+ else
308
+ mo.set_prop("status", "modified")
309
+ end
310
+ else
311
+ mo.set_prop("status", "created")
312
+ end
313
+
314
+ self.to_commit[mo.dn] = mo
315
+ _commit(timeout: timeout)
316
+ end
317
+
318
+ #
319
+ # Modifies a managed object and adds it to the ImcHandle commit buffer (if not already in it)
320
+ #
321
+ # @param mo [ManagedObject] Managed Object with modified properties
322
+ # @param timeout [Integer, nil] timeout value in seconds
323
+ # @return [nil]
324
+ #
325
+ # @example
326
+ # handle.set_mo(mo: mo)
327
+ #
328
+ def set_mo(mo:, timeout: "60")
329
+ #mo.instance_variable_set(:@status, "modified")
330
+ mo.set_prop("status", "modified")
331
+ self.to_commit[mo.instance_variable_get(:@dn)] = mo
332
+ _commit(timeout: timeout)
333
+ end
334
+
335
+ #
336
+ # Remove a Managed Object from the IMC Server
337
+ #
338
+ # @param mo [ManagedObject] Managed Object to be removed.
339
+ # @param timeout [Integer] timeout value(in seconds).
340
+ # @return [nil] Nothing is returned.
341
+ #
342
+ # @example
343
+ # handle.remove_mo(mo: mo)
344
+ #
345
+ def remove_mo(mo:, timeout: "60")
346
+ mo.set_prop("status", "deleted")
347
+ if mo.instance_variable_defined?(:@parent_mo) and !mo.parent_mo.nil?
348
+ mo.parent_mo.child_remove(mo)
349
+ end
350
+
351
+ self.to_commit[mo.dn] = mo
352
+ _commit(timeout: timeout)
353
+ end
354
+
355
+ #private methods
356
+ private
357
+ #
358
+ # Commit the buffer to the server. Pushes all the configuration changes so far to the server.
359
+ # Configuration could be added to the commit buffer using add_mo(), set_mo(), and remove_mo().
360
+ #
361
+ # @param timeout [Integer] timeout value in seconds.
362
+ # @return [nil]
363
+ # @example
364
+ # self._commit()
365
+ #
366
+ def _commit(timeout: "60")
367
+
368
+ mo_dict = self.to_commit
369
+ if mo_dict.nil? or mo_dict.empty?
370
+ return nil
371
+ end
372
+
373
+ config_map = ConfigMap.new()
374
+
375
+ mo_dict.each do |mo_dn, mo|
376
+ config_map.child_add(mo)
377
+ elem = config_conf_mo(self.cookie, mo_dn, config_map, false)
378
+
379
+ response = post_elem(elem, timeout: timeout)
380
+
381
+ if response.error_code != 0
382
+ self.to_commit = {}
383
+ raise ImcException.new(response.error_code, response.error_descr)
384
+ end
385
+
386
+ child = response.get_outconfig_child()
387
+ for pair_ in child do
388
+ for out_mo in pair_.child do
389
+ out_mo.sync_mo(mo_dict[out_mo.dn])
390
+ end
391
+ end
392
+ self.to_commit = {}
393
+ end
394
+ end
395
+ end
@@ -0,0 +1,99 @@
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
+
16
+ require_relative "../utils.rb"
17
+ require "imccoreutils"
18
+
19
+ require "mometa/comm/CommIpmiLan"
20
+
21
+ #
22
+ # Enable IPMI over LAN.
23
+ #
24
+ # @param handle [ImcHandle] ImcHandle class object
25
+ # @param priv [String] Optional privilege level: "admin", "user", or "read-only"
26
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
27
+ # @return [CommIpmiLan]
28
+ # @raise [ValueError] if privilege or key is invalid
29
+ # @example
30
+ # if ipmi_enable(handle) then puts "IPMI Enable" end
31
+ #
32
+ def ipmi_enable(handle:, priv: CommIpmiLanConsts::PRIV_ADMIN,
33
+ key: '0'*40, server_id: 1)
34
+
35
+ # Verify key is a hex number
36
+ begin
37
+ key.to_i(16).to_s(16)
38
+ rescue
39
+ raise ValueError.new("#{handle.ip}: ERROR: Encryption key is not hex number: #{key}")
40
+ end
41
+ # Create enabled IPMI object
42
+ ipmi_mo = CommIpmiLan.new(parent_mo_or_dn: _get_comm_mo_dn(handle, server_id))
43
+
44
+ args = {:admin_state => "enabled",
45
+ :priv => priv,
46
+ :key => key}
47
+ ipmi_mo.set_prop_multiple(**args)
48
+
49
+ # Configure IPMI object on CIMC
50
+ handle.set_mo(mo: ipmi_mo)
51
+ return handle.query_dn(dn: ipmi_mo.dn)
52
+ end
53
+
54
+ #
55
+ # Disable IPMI over LAN.
56
+ #
57
+ # @param handle [ImcHandle] ImcHandle class object
58
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms.
59
+ # @return [CommIpmiLan]
60
+ #
61
+ def ipmi_disable(handle:, server_id: 1)
62
+
63
+ # Create disabled IPMI object
64
+ ipmi_mo = CommIpmiLan.new(parent_mo_or_dn: _get_comm_mo_dn(handle, server_id))
65
+ ipmi_mo.set_prop(:admin_state, "disabled")
66
+
67
+ # Configure IPMI object on CIMC
68
+ handle.set_mo(mo: ipmi_mo)
69
+ return handle.query_dn(dn: ipmi_mo.dn)
70
+ end
71
+
72
+ #
73
+ # Check if IPMI over LAN is enabled
74
+ #
75
+ # @param handle [ImcHandle] ImcHandle class object
76
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
77
+ # @return [TrueClass, FalseClass] true if enable, else false
78
+ #
79
+ def is_ipmi_enabled(handle:, server_id: 1)
80
+ ipmi_mo = CommIpmiLan.new(parent_mo_or_dn:_get_comm_mo_dn(handle, server_id))
81
+ ipmi_mo = handle.query_dn(dn: ipmi_mo.dn)
82
+
83
+ return (ipmi_mo.admin_state.downcase == "enabled")
84
+ end
85
+
86
+ private
87
+ #
88
+ # Internal method to get the IPMI mo's parent_dn based on the type of platform
89
+ #
90
+ def _get_comm_mo_dn(handle, server_id=1)
91
+
92
+ if handle.platform == IMC_PLATFORM::TYPE_CLASSIC
93
+ return("sys/svc-ext")
94
+ elsif handle.platform == IMC_PLATFORM::TYPE_MODULAR
95
+ return(ImcCoreUtils.get_server_dn(handle, server_id) + "/svc-ext")
96
+ else
97
+ raise ImcValidationException("Invalid platform detected: #{handle.platform}")
98
+ end
99
+ end