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,219 @@
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 "mometa/power/PowerBudget"
17
+ require "mometa/standard/StandardPowerProfile"
18
+ require "imccoreutils"
19
+ require_relative "../utils"
20
+
21
+ # This list is currently maintained manually.
22
+ # Ideally all such config/capabilites should come from a capability file
23
+ SUPPORTED_MODELS = ['UCSC-C220-M4', 'UCSC-C240-M4', 'UCSC-C3K-M4']
24
+ SUPPORTED_VARIANTS = ['M4', 'M5']
25
+
26
+ #
27
+ # This api returns the list of rack server models that support power cap and power budgeting
28
+ #
29
+ def get_supported_models()
30
+ return SUPPORTED_MODELS
31
+ end
32
+
33
+ #
34
+ # This api gets the min and max power limits for the platform, cpu and memory
35
+ # for this specific server
36
+ #
37
+ # @param handle [ImcHandle] ImcHandle class object
38
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
39
+ # @return [PowerBudget]
40
+ #
41
+ def server_power_budget_get(handle: , server_id: 1)
42
+ if !_is_supported_model(handle)
43
+ return
44
+ end
45
+
46
+ power_budget_mo = handle.query_children(in_dn: ImcCoreUtils.get_server_dn(handle, server_id),
47
+ class_id: "PowerBudget")
48
+ if !power_budget_mo
49
+ raise ImcOperationError.new("Get Power Budget",
50
+ "Invalid Server Id configured")
51
+ end
52
+
53
+ return power_budget_mo[0]
54
+ end
55
+
56
+ #
57
+ # Enables power characterization.
58
+ #
59
+ # @param handle [ImcHandle] ImcHandle class object.
60
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
61
+ # @return [PowerBudget]
62
+ #
63
+ def server_power_characterization_enable(handle:, server_id: 1)
64
+ if !_is_supported_model(handle)
65
+ return
66
+ end
67
+ power_budget_mo = PowerBudget.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
68
+
69
+ power_budget_mo.set_prop(:pow_char_enable, "enabled")
70
+ handle.set_mo(mo: power_budget_mo)
71
+ return handle.query_dn(dn: power_budget_mo.dn)
72
+ end
73
+
74
+ #
75
+ # Disables power characterization.
76
+ #
77
+ # @param handle [ImcHandle] ImcHandle class object.
78
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
79
+ # @return [PowerBudget]
80
+ #
81
+ def server_power_characterization_disable(handle:, server_id: 1)
82
+
83
+ if !_is_supported_model(handle)
84
+ return
85
+ end
86
+ server_standard_power_cap_disable(handle: handle, server_id: server_id)
87
+ power_budget_mo = PowerBudget.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
88
+
89
+ power_budget_mo.set_prop(:pow_char_enable, "disabled")
90
+ handle.set_mo(mo: power_budget_mo)
91
+ return handle.query_dn(dn: power_budget_mo.dn)
92
+ end
93
+
94
+ #
95
+ # Enables power capping feature on the server.
96
+ #
97
+ # @param handle [ImcHandle] ImcHandle class object.
98
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
99
+ # @return [PowerBudget]
100
+ #
101
+ def server_power_capping_enable(handle:, server_id: 1)
102
+ if !_is_supported_model(handle)
103
+ return
104
+ end
105
+ power_budget_mo = PowerBudget.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
106
+ power_budget_mo.set_prop(:admin_state, "enabled")
107
+ handle.set_mo(mo: power_budget_mo)
108
+ return power_budget_mo
109
+ end
110
+
111
+ #
112
+ # Disables power capping feature on the server.
113
+ #
114
+ # @param handle [ImcHandle] ImcHandle class object.
115
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
116
+ # @return [PowerBudget]
117
+ #
118
+ def server_power_capping_disable(handle:, server_id: 1)
119
+
120
+ if !_is_supported_model(handle)
121
+ return
122
+ end
123
+ power_budget_mo = PowerBudget.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
124
+ power_budget_mo.set_prop(:admin_state, "disabled")
125
+ handle.set_mo(mo: power_budget_mo)
126
+ return power_budget_mo
127
+ end
128
+
129
+ #
130
+ # This method sets up the standard power cap configuration profile
131
+ #
132
+ # @param handle [ImcHandle] ImcHandle class object
133
+ # @param throttle [TrueClass, FalseClass] Power limit in Watts.
134
+ # Range can be retrieved from min_power and max_power
135
+ # fields of PowerBudget object
136
+ # @param correction_time [Integer] Time in seconds before power_limit is enforced
137
+ # and corrective action is taken. Range (1-600)s
138
+ # @param corrective_action [String] valid values ["none","alert","shutdown","alert,shutdown"]
139
+ # @param hard_cap [TrueClass, FalseClass] Enable hard power cap
140
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
141
+ # @return [StandardPowerProfile]'
142
+ # @example
143
+ # server_standard_power_cap_set(handle,
144
+ # correction_time: 5,
145
+ # corrective_action: "alert")
146
+ # @example
147
+ # server_standard_power_cap_set(handle, throttle: true,
148
+ # power_limit: 200, correction_time: 5,
149
+ # corrective_action: "alert, shutdown")
150
+ def server_standard_power_cap_set(handle:, power_limit:, throttle: false,
151
+ correction_time: 3, corrective_action: "alert",
152
+ hard_cap: false, server_id: 1)
153
+ if !_is_supported_model(handle)
154
+ return
155
+ end
156
+
157
+ power_budget_dn = ImcCoreUtils.get_server_dn(handle, server_id) + "/budget"
158
+ stdpowerprof_mo = StandardPowerProfile.new(parent_mo_or_dn: power_budget_dn)
159
+
160
+ params = {
161
+ :allow_throttle => throttle ? "yes" : "no",
162
+ :power_limit => power_limit.to_s,
163
+ :corr_time => correction_time.to_s,
164
+ :corr_action => corrective_action,
165
+ :profile_enabled => "yes",
166
+ :hard_cap => hard_cap ? "yes" : "no"
167
+ }
168
+
169
+ stdpowerprof_mo.set_prop_multiple(**params)
170
+ handle.set_mo(mo: stdpowerprof_mo)
171
+ return stdpowerprof_mo
172
+ end
173
+
174
+ #
175
+ # This method disables the standard power profile
176
+ #
177
+ # @param handle [ImcHandle] ImcHandle class object.
178
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
179
+ # @return [nil]
180
+ #
181
+ def server_standard_power_cap_disable(handle:, server_id: 1)
182
+ if !_is_supported_model(handle)
183
+ return
184
+ end
185
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
186
+ power_budget_dn = server_dn + "/budget"
187
+ stdpowerprof_mo = StandardPowerProfile.new(parent_mo_or_dn: power_budget_dn)
188
+ stdpowerprof_mo.set_prop(:profile_enabled, "no")
189
+ handle.set_mo(mo: stdpowerprof_mo)
190
+ end
191
+
192
+ #
193
+ # Starts a power characterization run.
194
+ # From 3.0(1c) onwards, server_power_characterization_enable needs to be
195
+ # explicitly done, before invoking this api.
196
+ #
197
+ # @param handle [ImcHandle] ImcHandle class object.
198
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
199
+ # @return [PowerBudget]
200
+ #
201
+ def server_power_characterization_start(handle:, server_id: 1)
202
+ if !_is_supported_model(handle)
203
+ return
204
+ end
205
+ power_budget_mo = PowerBudget.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
206
+ power_budget_mo.set_prop(:admin_action, PowerBudgetConsts::ADMIN_ACTION_START_POWER_CHAR)
207
+ handle.set_mo(mo: power_budget_mo)
208
+ return handle.query_dn(dn: power_budget_mo.dn)
209
+ end
210
+
211
+ private
212
+ def _is_supported_model(handle)
213
+ for variant in SUPPORTED_VARIANTS
214
+ if handle.model.include? variant
215
+ return true
216
+ end
217
+ end
218
+ return false
219
+ end
@@ -0,0 +1,170 @@
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 "apis/admin/ipmi"
18
+ require "mometa/comm/CommKvm"
19
+ require "mometa/sol/SolIf"
20
+
21
+ #
22
+ # This method will setup and enable kvm console access
23
+ #
24
+ # @param handle [ImcHandle] ImcHandle class object
25
+ # @param max_sessions [Integer] Max no. of sessions allowed (1-4)
26
+ # @param port [Integer] Port used for kvm communication
27
+ # @param encrypt [TrueClass, FalseClass] Encrypt video information sent over kvm
28
+ # @param mirror_locally [TrueClass, FalseClass] Mirror the kvm session on local monitor
29
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
30
+ # @return [CommKvm]
31
+ # @example
32
+ # kvm_setup(handle: ImcHandle,
33
+ # max_sessions: 4,
34
+ # port: 4000,
35
+ # encrypt: true,
36
+ # mirror_locally: false)
37
+ #
38
+ def kvm_setup(handle: , max_sessions: 1, port: 2068,\
39
+ encrypt: false, mirror_locally: false, server_id: 1)
40
+ kvm_mo = CommKvm.new(parent_mo_or_dn: _get_comm_mo_dn(handle, server_id))
41
+ params = {
42
+ :admin_state => "enabled",
43
+ :total_sessions => max_sessions.to_s,
44
+ :port => port.to_s,
45
+ :encryption_state => encrypt ? "enabled" : "disabled",
46
+ :local_video_state => mirror_locally ? "enabled" : "disabled"
47
+ }
48
+
49
+ kvm_mo.set_prop_multiple(**params)
50
+ handle.set_mo(mo: kvm_mo)
51
+ return kvm_mo
52
+ end
53
+
54
+ #
55
+ # This method will disable kvm console access
56
+ #
57
+ # @param handle [ImcHandle] ImcHandle class object
58
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
59
+ # @return [nil]
60
+ #
61
+ def kvm_disable(handle:, server_id: 1)
62
+ kvm_mo = CommKvm.new(parent_mo_or_dn: _get_comm_mo_dn(handle, server_id))
63
+ kvm_mo.set_prop(:admin_state, "disabled")
64
+ handle.set_mo(mo: kvm_mo)
65
+ end
66
+
67
+ #
68
+ # This method will check if kvm console access is enabled
69
+ #
70
+ # @param handle [ImcHandle] ImcHandle class object
71
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
72
+ # @return [nil]
73
+ #
74
+ def is_kvm_enabled(handle:, server_id: 1)
75
+ kvm_mo = CommKvm.new(parent_mo_or_dn: _get_comm_mo_dn(handle, server_id))
76
+ kvm_mo = handle.query_dn(dn: kvm_mo.dn)
77
+ return(kvm_mo.admin_state.downcase == "enabled")
78
+ end
79
+
80
+ #
81
+ # This method will setup serial over lan connection
82
+ #
83
+ # @param handle [ImcHandle] ImcHandle class object
84
+ # @param speed [String] valid values - "9600", "19200", "38400", "57600", "115200"
85
+ # @param comport [Strong] valid values :- "com0", "com1"
86
+ # @param ssh_port [Integer] port for ssh
87
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
88
+ # @return [SolIf]
89
+ def sol_setup(handle:, speed:, comport:, ssh_port: nil, server_id: 1)
90
+ solif_mo = SolIf.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
91
+ params = {
92
+ :admin_state => SolIfConsts::ADMIN_STATE_ENABLE,
93
+ :speed => speed.to_s,
94
+ :comport => comport
95
+ }
96
+ if !ssh_port.nil?
97
+ params[:ssh_port] = ssh_port.to_s
98
+ end
99
+
100
+ solif_mo.set_prop_multiple(**params)
101
+ handle.set_mo(mo: solif_mo)
102
+ return handle.query_dn(dn: solif_mo.dn)
103
+ end
104
+
105
+ #
106
+ # This method will disable Serial over Lan connection
107
+ #
108
+ # @param handle [ImcHandle] ImcHandle class object
109
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
110
+ # @return [nil]
111
+ #
112
+ def sol_disable(handle:, server_id: 1)
113
+ solif_mo = SolIf.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
114
+ solif_mo.set_prop(:admin_state, SolIfConsts::ADMIN_STATE_DISABLE)
115
+ handle.set_mo(mo: solif_mo)
116
+ end
117
+
118
+ #
119
+ # This method will check if Serial over Lan connection is enabled
120
+ #
121
+ # @param handle [ImcHandle] ImcHandle class object
122
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
123
+ # @return [nil]
124
+ #
125
+ def is_sol_enabled(handle:, server_id: 1)
126
+ solif_mo = SolIf.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
127
+ solif_mo = handle.query_dn(dn: solif_mo.dn)
128
+ return ["enable", "enabled"].include? solif_mo.admin_state.downcase
129
+ end
130
+
131
+
132
+ #
133
+ # This method will check if the specified SOL settings are already applied.
134
+ #
135
+ # @param handle [ImcHandle] ImcHandle class object
136
+ # @param server_id [Integer] ServerId to be specified for C3260 platforms
137
+ # @param kwargs [Hash] key-value paired arguments.
138
+ # @return [TrueClass, SolIf] if settings match
139
+ # @return [FalseClass, SolIf] if settings don't match
140
+ #
141
+ def sol_settings_exist(handle:, server_id: 1, **kwargs)
142
+ exists = true
143
+ solif_mo = SolIf.new(parent_mo_or_dn: ImcCoreUtils.get_server_dn(handle, server_id))
144
+ solif_mo = handle.query_dn(dn: solif_mo.dn)
145
+ if _is_valid_arg("admin_state", kwargs)
146
+ if solif_mo.admin_state.downcase != kwargs[:admin_state].downcase
147
+ exists = false
148
+ end
149
+ end
150
+
151
+ if _is_valid_arg("speed", kwargs)
152
+ if solif_mo.speed.to_s != kwargs[:speed].to_s
153
+ exists = false
154
+ end
155
+ end
156
+
157
+ if _is_valid_arg("comport", kwargs)
158
+ if solif_mo.comport != kwargs[:comport]
159
+ exists = false
160
+ end
161
+ end
162
+
163
+ if _is_valid_arg("ssh_port", kwargs)
164
+ if solif_mo.ssh_port.to_s != kwargs[:ssh_port].to_s
165
+ exists = false
166
+ end
167
+ end
168
+
169
+ return exists, solif_mo
170
+ end
@@ -0,0 +1,382 @@
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"
17
+
18
+ #
19
+ # This method will return the oper power status of the rack server
20
+ #
21
+ # @param handle [ImcHandle] ImcHandle class object
22
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
23
+ # @return [String] Oper Power state
24
+ # @example
25
+ # For classic or non-C3260 series servers:-
26
+ # server_power_state_get(handle)
27
+ # For modular or C3260 series servers, server_id should also be passed in the params:-
28
+ # server_power_state_get(handle: handle, server_id: 1)
29
+ # @note If server_id is not specified, this will assume server_id="1"
30
+ #
31
+ def server_power_state_get(handle:, server_id: 1)
32
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
33
+ server_mo = handle.query_dn(dn: server_dn)
34
+ if server_mo
35
+ return server_mo.oper_power
36
+ end
37
+
38
+ raise ImcOperationError.new("Get Server Power State",
39
+ "Managed Object not found for dn: #{server_dn}")
40
+ end
41
+
42
+ #
43
+ # This method will send the server the power up signal, and then polls
44
+ # the server every $interval until either $timeout or it comes online.
45
+ #
46
+ # @param handle [ImcHandle] ImcHandle class object
47
+ # @param timeout [Integer] timeout in seconds
48
+ # @param interval [Integer]
49
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
50
+ # @param kwargs [Hash] key=>value paired arguments
51
+ # @return [ComputeRackUnit] for non C3260 platforms
52
+ # @return [ComputeServerNode] for C3260 platforms
53
+ # @example
54
+ # server_power_up(handle: ImcHandle)
55
+ # @example
56
+ # server_power_up(handle: ImcHandle, timeout: 120, interval: 10)
57
+ # @example
58
+ # server_power_up(handle: ImcHandle, server_id: 2, timeout: 60)
59
+ #
60
+ def server_power_up(handle:, timeout: 60, interval: 5, server_id: 1, **kwargs)
61
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
62
+ # Turn power on only if not already powered up
63
+ if server_power_state_get(handle: handle,server_id: server_id) != "on"
64
+ _set_power_state(handle, server_dn, "up")
65
+ end
66
+
67
+ # Poll until the server is powered up
68
+ _wait_for_power_state(handle, "on", timeout: timeout,
69
+ interval: interval, server_id: server_id)
70
+
71
+ # Return object with current state
72
+ return handle.query_dn(dn: server_dn)
73
+
74
+ end
75
+
76
+ #
77
+ # This method will power down the rack server, even if tasks are still
78
+ # running on it. Then polls the server every $interval until either $timeout
79
+ #
80
+ # @param handle [ImcHandle] ImcHandle class object
81
+ # @param timeout [Integer] timeout in seconds
82
+ # @param interval [Integer]
83
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
84
+ # @param kwargs [Hash] key=>value paired arguments
85
+ # @return [ComputeRackUnit] for non C3260 platforms
86
+ # @return [ComputeServerNode] for C3260 platforms
87
+ # @example
88
+ # server_power_down(handle: ImcHandle)
89
+ # @example
90
+ # server_power_down(handle: ImcHandle, timeout: 120, interval: 10)
91
+ # @example
92
+ # server_power_down(handle: ImcHandle, server_id: 2, timeout: 60)
93
+ #
94
+ def server_power_down(handle:, timeout: 60, interval: 5, server_id: 1, **kwargs)
95
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
96
+ # Turn power off only if not already powered down
97
+ if server_power_state_get(handle: handle,server_id: server_id) != "off"
98
+ _set_power_state(handle, server_dn, "down")
99
+ end
100
+
101
+ # Poll until the server is powered up
102
+ _wait_for_power_state(handle, "off", timeout: timeout,
103
+ interval: interval, server_id: server_id)
104
+
105
+ return handle.query_dn(dn: server_dn)
106
+ end
107
+
108
+ #
109
+ # This method will power down the rack server gracefully
110
+ #
111
+ # @param handle [ImcHandle] ImcHandle class object
112
+ # @param timeout [Integer] timeout in seconds
113
+ # @param interval [Integer]
114
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
115
+ # @param kwargs [Hash] key=>value paired arguments
116
+ # @return [ComputeRackUnit] for non C3260 platforms
117
+ # @return [ComputeServerNode] for C3260 platforms
118
+ # @example
119
+ # server_power_down_gracefully(handle: ImcHandle)
120
+ # @example
121
+ # server_power_down_gracefully(handle: ImcHandle, timeout: 120, interval: 10)
122
+ # @example
123
+ # server_power_down_gracefully(handle: ImcHandle, server_id: 2, timeout: 60)
124
+ #
125
+ def server_power_down_gracefully(handle:, timeout: 120, interval: 5,
126
+ server_id: 1, **kwargs)
127
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
128
+ # Gracefully power off only if not already powered down
129
+ if server_power_state_get(handle: handle, server_id: server_id) != "off"
130
+ _set_power_state(handle, server_dn, "graceful-down")
131
+ end
132
+
133
+ # Poll until the server is powered up
134
+ _wait_for_power_state(handle, "off", timeout: timeout,
135
+ interval: interval, server_id: server_id)
136
+
137
+ return handle.query_dn(dn: server_dn)
138
+
139
+ end
140
+
141
+ #
142
+ # This method will power cycle the rack server immediately.
143
+ #
144
+ # @param handle [ImcHandle] ImcHandle class object
145
+ # @param timeout [Integer] timeout in seconds
146
+ # @param interval [Integer]
147
+ # @param server_id [Integer] Server Id to be specified for C3260 platforms
148
+ # @param kwargs [Hash] key=>value paired arguments
149
+ # @return [ComputeRackUnit] for non C3260 platforms
150
+ # @return [ComputeServerNode] for C3260 platforms
151
+ # @example
152
+ # server_power_cycle(handle: ImcHandle)
153
+ # @example
154
+ # server_power_cycle(handle: ImcHandle, timeout: 120, interval: 10)
155
+ # @example
156
+ # server_power_cycle(handle: ImcHandle, server_id: 2, timeout: 60)
157
+ #
158
+ def server_power_cycle(handle:, timeout: 120, interval: 5, server_id: 1, **kwargs)
159
+ server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
160
+ _set_power_state(handle, server_dn, "cycle")
161
+
162
+ # Poll until the server is powered up
163
+ _wait_for_power_state(handle, "on", timeout: timeout,
164
+ interval: interval, server_id: server_id)
165
+
166
+ return handle.query_dn(dn: server_dn)
167
+ end
168
+
169
+ #
170
+ # This method will return the locator led status on the server or chassis
171
+ #
172
+ # @param handle [ImcHandle] ImcHandle class object
173
+ # @param kwargs [Hash] key=>value paired arguments
174
+ # @return [string] status of locator led
175
+ # @example Turns on locator led on the server (for non-C3260 platforms)
176
+ # get_locator_led_status(handle: ImcHandle)
177
+ # @example Turns on locator led on the specified server (for C3260 platforms)
178
+ # get_locator_led_status(handle: ImcHandle, :server_id => 1)
179
+ # @example Turns on locator led on the chassis (for C3260 platforms)
180
+ # get_locator_led_status(handle: ImcHandle, :chassis_id => 1)
181
+ #
182
+ def get_locator_led_status(handle:, **kwargs)
183
+ led_mo = nil
184
+ led_status = String.new
185
+ if _is_valid_arg("chassis_id", kwargs)
186
+ led_mo = _get_chassis_locator_led_state(handle, kwargs)
187
+ end
188
+
189
+ if _is_valid_arg("server_id", kwargs) or \
190
+ handle.platform == IMC_PLATFORM::TYPE_CLASSIC
191
+ led_mo = _get_server_locator_led_state(handle, kwargs)
192
+ end
193
+ if !led_mo.nil?
194
+ led_status = led_mo.oper_state
195
+ end
196
+ return led_status
197
+ end
198
+
199
+ #
200
+ # This method will turn on the locator led on the server or chassis
201
+ #
202
+ # @param handle [ImcHandle] ImcHandle class object
203
+ # @param kwargs [Hash] key=>value paired arguments
204
+ # @return [nil]
205
+ # @example Turns on locator led on the server (for non-C3260 platforms)
206
+ # locator_led_on(handle: ImcHandle)
207
+ # @example Turns on locator led on the specified server (for C3260 platforms)
208
+ # locator_led_on(handle: ImcHandle, :server_id => 1)
209
+ # @example Turns on locator led on the chassis (for C3260 platforms)
210
+ # locator_led_on(handle: ImcHandle, :chassis_id => 1)
211
+ #
212
+ def locator_led_on(handle:, **kwargs)
213
+
214
+ if _is_valid_arg("chassis_id", kwargs)
215
+ _set_chassis_locator_led_state(handle, true, kwargs)
216
+ end
217
+
218
+ if _is_valid_arg("server_id", kwargs) or \
219
+ handle.platform == IMC_PLATFORM::TYPE_CLASSIC
220
+ _set_server_locator_led_state(handle, true, kwargs)
221
+ end
222
+ end
223
+
224
+ #
225
+ # This method will turn off the locator led on the server or on the chassis
226
+ #
227
+ # @param handle [ImcHandle] ImcHandle class object
228
+ # @param kwargs [Hash] key=>value paired arguments
229
+ # @return [nil]
230
+ # @example Turns off locator led on the server (for non-C3260 platforms)
231
+ # locator_led_off(handle: ImcHandle)
232
+ # @example Turns off locator led on the specified server (for C3260 platforms)
233
+ # locator_led_off(handle: ImcHandle, :server_id => 1)
234
+ # @example Turns off locator led on the chassis (for C3260 platforms)
235
+ # locator_led_off(handle: ImcHandle, :chassis_id => 1)
236
+ #
237
+ def locator_led_off(handle:, **kwargs)
238
+ if _is_valid_arg("chassis_id", kwargs)
239
+ _set_chassis_locator_led_state(handle, false, kwargs)
240
+ end
241
+
242
+ if _is_valid_arg("server_id", kwargs) or \
243
+ handle.platform == IMC_PLATFORM::TYPE_CLASSIC
244
+ _set_server_locator_led_state(handle, false, kwargs)
245
+ end
246
+ end
247
+
248
+ #
249
+ # This method will tag the server with the label specified.
250
+ # Applicable to non-C3260 platforms
251
+ #
252
+ # @param handle [ImcHandle] ImcHandle class object
253
+ # @param tag [String] Label to be used to tag the asset
254
+ # @return [ComputeRackUnit]
255
+ # @example
256
+ # tag_server(handle: ImcHandle, tag: "Row21-Rack10-Slot10")
257
+ #
258
+ def tag_server(handle:, tag:)
259
+ require "mometa/compute/ComputeRackUnit"
260
+ mo = ComputeRackUnit.new(parent_mo_or_dn: "sys", server_id: '1')
261
+ mo.set_prop(:asset_tag, tag.to_s)
262
+ handle.set_mo(mo: mo)
263
+ return handle.query_dn(dn: mo.dn)
264
+ end
265
+
266
+ #
267
+ # This method will tag the chassis with the label specified.
268
+ # Applicable to C3260 platforms
269
+ #
270
+ # @param handle [ImcHandle] ImcHandle class object
271
+ # @param tag [String] Label to be used to tag the asset
272
+ # @return [EquipmentChassis]
273
+ # @example
274
+ # tag_chassis(handle: ImcHandle, tag: "Row21-Rack10-Slot10")
275
+ #
276
+ def tag_chassis(handle:, tag:)
277
+ require "mometa/equipment/EquipmentChassis"
278
+ mo = EquipmentChassis.new(parent_mo_or_dn: "sys")
279
+ mo.set_prop(:asset_tag, tag.to_s)
280
+ handle.set_mo(mo: mo)
281
+ return handle.query_dn(dn: mo.dn)
282
+ end
283
+
284
+ private
285
+
286
+ def _set_chassis_locator_led_state(handle, enabled, kwargs)
287
+ chassis_id = kwargs[:chassis_id].to_s
288
+ chassis_dn = "sys/chassis-" + chassis_id
289
+ require "mometa/equipment/EquipmentChassisLocatorLed"
290
+ led_mo = EquipmentChassisLocatorLed.new(parent_mo_or_dn: chassis_dn)
291
+ if enabled
292
+ led_mo.set_prop(:admin_state, EquipmentChassisLocatorLedConsts::ADMIN_STATE_ON)
293
+ else
294
+ led_mo.set_prop(:admin_state, EquipmentChassisLocatorLedConsts::ADMIN_STATE_OFF)
295
+ end
296
+ handle.set_mo(mo: led_mo)
297
+ end
298
+
299
+ def _get_chassis_locator_led_state(handle, kwargs)
300
+ chassis_id = kwargs[:chassis_id].to_s
301
+ chassis_dn = "sys/chassis-" + chassis_id
302
+ require "mometa/equipment/EquipmentChassisLocatorLed"
303
+ led_mo = EquipmentChassisLocatorLed.new(parent_mo_or_dn: chassis_dn)
304
+ handle.query_dn(dn: led_mo.dn)
305
+ end
306
+
307
+ def _set_server_locator_led_state(handle, enabled, kwargs)
308
+ server_dn = ImcCoreUtils.set_server_dn(handle, kwargs)
309
+ require "mometa/equipment/EquipmentLocatorLed"
310
+ led_mo = EquipmentLocatorLed.new(parent_mo_or_dn: server_dn)
311
+ if enabled
312
+ led_mo.set_prop(:admin_state, EquipmentLocatorLedConsts::ADMIN_STATE_ON)
313
+ else
314
+ led_mo.set_prop(:admin_state, EquipmentLocatorLedConsts::ADMIN_STATE_OFF)
315
+ end
316
+
317
+ handle.set_mo(mo: led_mo)
318
+ end
319
+
320
+ def _get_server_locator_led_state(handle, kwargs)
321
+ server_dn = ImcCoreUtils.set_server_dn(handle, kwargs)
322
+ require "mometa/equipment/EquipmentLocatorLed"
323
+ led_mo = EquipmentLocatorLed.new(parent_mo_or_dn: server_dn)
324
+ handle.query_dn(dn: led_mo.dn)
325
+ end
326
+
327
+ def _set_power_state(handle, server_dn, state)
328
+ server_mo = handle.query_dn(dn: server_dn)
329
+ if handle.platform == IMC_PLATFORM::TYPE_CLASSIC
330
+ mo_class = ComputeRackUnitConsts
331
+ elsif handle.platform == IMC_PLATFORM::TYPE_MODULAR
332
+ mo_class = ComputeServerNodeConsts
333
+ else
334
+ raise ImcOperationError.new("Set Power State", "Unknown platform: #{handle.platform} found")
335
+ end
336
+
337
+ state_dict = {
338
+ :up => mo_class::ADMIN_POWER_UP,
339
+ :down => mo_class::ADMIN_POWER_DOWN,
340
+ "graceful-down".to_sym => mo_class::ADMIN_POWER_SOFT_SHUT_DOWN,
341
+ :cycle => mo_class::ADMIN_POWER_CYCLE_IMMEDIATE
342
+ }
343
+ server_mo.set_prop(:admin_power, state_dict[state.to_sym] )
344
+ handle.set_mo(mo: server_mo)
345
+ end
346
+
347
+ def _wait_for_power_state(handle, state, timeout: 60, interval: 5, server_id: 1)
348
+ =begin
349
+ This method should be called after a power state change has been triggered.
350
+ It will poll the server and return when the desired state is achieved.
351
+ Args:
352
+ handle(ImcHandle)
353
+ state(str)
354
+ timeout(int)
355
+ interval(int)
356
+ server_id (int): Server Id to be specified for C3260 platforms
357
+ Returns:
358
+ bool
359
+ =end
360
+ # Verify desired state is valid
361
+ if !(["on", "off"].include? state)
362
+ raise ValueError.new("ERROR invalid state:#{state}")
363
+ end
364
+
365
+ # Verify interval not set to zero
366
+ if interval < 1 or !(interval.is_a? Integer)
367
+ raise ValueError.new("ERROR: interval must be positive integer")
368
+ end
369
+
370
+ wait_time = 0
371
+ while server_power_state_get(handle: handle,server_id: server_id) != state do
372
+ # Raise error if we've reached timeout
373
+ if wait_time > timeout
374
+ raise ImcOperationError.new( \
375
+ "Power State Change", \
376
+ "#{handle.ip}: ERROR - Power #{state} did not complete within #{timeout} sec")
377
+ end
378
+ # Wait interval sec between checks
379
+ sleep(interval)
380
+ wait_time += interval
381
+ end
382
+ end