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,441 @@
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
+ #This Module contains the ImcSdk Core Utilities
15
+
16
+ require 'imcmeta'
17
+ require 'imcbasetype'
18
+
19
+
20
+
21
+
22
+ class IMC_PLATFORM
23
+ TYPE_MODULAR = "modular"
24
+ TYPE_CLASSIC = "classic"
25
+ end
26
+ IMC_PLATFORM_LIST = [IMC_PLATFORM::TYPE_MODULAR,
27
+ IMC_PLATFORM::TYPE_CLASSIC]
28
+
29
+ module ImcCoreUtils
30
+
31
+ GLOBAL_HANDLES = []
32
+
33
+ def self.get_imc_obj(class_id, elem, mo_obj=nil)
34
+
35
+ =begin
36
+ This creates object of type ExternalMethod or ManagedObject or GenericMo
37
+ depending on element tag
38
+
39
+ Args:
40
+ class_id (str): class id
41
+ elem (xml element): xml element
42
+ mo_obj : parent managed object
43
+
44
+ Returns:
45
+ object of type ExternalMethod or ManagedObject or GenericMo
46
+ =end
47
+
48
+ if $METHOD_CLASS_ID.include? class_id
49
+ obj = ExternalMethod.new(class_id)
50
+ return obj
51
+ elsif $MO_CLASS_ID.include? class_id
52
+ mo_class_param_hash = {}
53
+ mo_class = ImcCoreUtils.load_class(class_id)
54
+ mo_class.prop_map.each do |key, value|
55
+ mo_class_param_hash[:value] = nil
56
+ end
57
+ p_dn = ""
58
+ if elem.attributes.include? "dn"
59
+ p_dn = File.dirname(elem.attributes["dn"])
60
+ elsif elem.attributes.include? "rn" and mo_obj
61
+ p_dn = mo_obj.dn
62
+ end
63
+
64
+ #if ComputeRackUnit.mo_meta.parents.include? "topRoot"
65
+ #mo_obj = mo_class.new( nil, from_xml_response=true, mo_class_param_hash)
66
+ #else
67
+ mo_obj = mo_class.new(parent_mo_or_dn: p_dn, from_xml_response: true, **mo_class_param_hash)
68
+ #end
69
+ return mo_obj
70
+
71
+ elsif $OTHER_TYPE_CLASS_ID.include? class_id
72
+ obj = Object.const_get(class_id).new
73
+ return obj
74
+ end
75
+
76
+ end
77
+
78
+
79
+ def self.load_class(class_id)
80
+ class_id_array = class_id.split /(?=[A-Z])/
81
+ folder_name = class_id_array[0].downcase
82
+ require_relative "./mometa/" + folder_name + "/" + class_id
83
+ return Object.const_get(class_id)
84
+ end
85
+
86
+
87
+ def self.load_module(module_name)
88
+
89
+ =begin
90
+ This loads the module into the current name space
91
+
92
+ Args:
93
+ module_name (str): module_name
94
+
95
+ Returns:
96
+ module_import
97
+ =end
98
+
99
+
100
+
101
+ end
102
+
103
+ def self.get_mo_property_meta(class_id:, key:, platform: nil)
104
+
105
+ =begin
106
+ Methods returns the mo property meta of the provided key for the given
107
+ class_id.
108
+ Args:
109
+ class_id (str): class_id of mo
110
+ key (str): prop of class_id
111
+ Returns:
112
+ Object of type MoPropertyMeta
113
+ Example:
114
+ prop_meta = get_mo_property_meta(class_id="aaaUser", key="usr_lbl")
115
+ =end
116
+
117
+ #class_obj = load_class(class_id)
118
+ class_obj = Object.const_get(class_id)
119
+
120
+ if platform.nil?
121
+ platform = IMC_PLATFORM::TYPE_CLASSIC
122
+ end
123
+
124
+ if key == "mo_meta"
125
+ return class_obj.mo_meta[platform]
126
+ end
127
+
128
+ prop_meta = class_obj.prop_meta[platform]
129
+ prop_map = class_obj.prop_map[platform]
130
+ if prop_map.include? key
131
+ return prop_meta[prop_map[key]]
132
+ elsif prop_meta.include? key
133
+ return prop_meta[key]
134
+ end
135
+ return nil
136
+ end
137
+
138
+
139
+ def self.find_class_id_in_method_meta_ignore_case(class_id)
140
+
141
+ #Methods whether class_id is valid or not . Given class is case insensitive.
142
+
143
+
144
+ #if class_id in METHOD_CLASS_ID
145
+ if $METHOD_CLASS_ID.include?(class_id)
146
+ return class_id
147
+ end
148
+
149
+ l_class_id = class_id.downcase
150
+ for key in METHOD_CLASS_ID
151
+ if key.downcase == l_class_id
152
+ return key
153
+ end
154
+ end
155
+ return nil
156
+ end
157
+
158
+
159
+ def self.extract_molist_from_method_response(method_response, in_hierarchical=false)
160
+
161
+ =begin
162
+ Methods extracts mo list from response received from imc server i.e.
163
+ external method object
164
+
165
+ Args:
166
+ method_response (ExternalMethod Object): response
167
+ in_hierarchical (bool): if True, return all the hierarchical child of
168
+ managed objects
169
+
170
+ Returns:
171
+ List of ManagedObjects
172
+
173
+ Example:
174
+ response = handle.query_dn("sys/rack-unit-1", need_response=True)\n
175
+ molist = extract_molist_from_method_response(method_response=response,
176
+ in_hierarchical=True)
177
+ =end
178
+
179
+ mo_list=[]
180
+ if method_response.instance_variable_defined?(:@out_config) and method_response.instance_variable_defined?(:@out_config).instance_variable_defined?(:@child)
181
+ if method_response.instance_variable_get(:@out_config).instance_variable_get(:@child).size.equal? 0
182
+ return mo_list
183
+ end
184
+ elsif method_response.instance_variable_defined?(:@out_configs) and method_response.instance_variable_defined?(:@out_config).instance_variable_defined?(:@child)
185
+ if method_response.instance_variable_get(:@out_configs).instance_variable_get(:@child).size.equal? 0
186
+ return mo_list
187
+ end
188
+ end
189
+
190
+ if in_hierarchical
191
+ if method_response.instance_variable_defined?(:@out_config)
192
+ current_mo_list = method_response.instance_variable_get(:@out_config).instance_variable_get(:@child)
193
+ else
194
+ current_mo_list = method_response.instance_variable_get(:@out_configs).instance_variable_get(:@child)
195
+ end
196
+
197
+ while current_mo_list.size > 0
198
+ child_mo_list = []
199
+ for mo in current_mo_list do
200
+ mo_list.push(mo)
201
+ while mo.child_count() > 0
202
+ for child in mo.child do
203
+ mo.child_remove(child)
204
+ child.mark_clean()
205
+ child_mo_list.push(child)
206
+ break
207
+ end
208
+ end
209
+ end
210
+ current_mo_list = child_mo_list
211
+ end
212
+ else
213
+ mo_list = method_response.instance_variable_get(:@out_configs).instance_variable_get(:@child)
214
+ end
215
+ return mo_list
216
+ end
217
+
218
+ def self.find_class_id_in_mo_meta_ignore_case(class_id)
219
+
220
+ #Methods whether class_id is valid or not . Given class is case insensitive.
221
+
222
+ if class_id.nil?
223
+ return nil
224
+ end
225
+ #if class_id in MO_CLASS_ID
226
+ if $MO_CLASS_ID.include?(class_id)
227
+ return class_id
228
+ end
229
+
230
+ # print class_id
231
+ l_class_id = class_id.downcase
232
+ for key in $MO_CLASS_ID
233
+ if key.downcase == l_class_id
234
+ return key
235
+ end
236
+ end
237
+ return nil
238
+ end
239
+ =begin
240
+ def prop_exists(mo, prop_name, platform=nil)
241
+
242
+ if !platform.nil?
243
+ return(platform in mo.prop_meta.keys() and prop_name in mo.prop_meta[platform].keys())
244
+ end
245
+
246
+ for platform in IMC_PLATFORM_LIST
247
+ if platform in mo.prop_meta.keys() and prop_name in mo.prop_meta[platform].keys()
248
+ return true
249
+ end
250
+ end
251
+
252
+ return false
253
+ end
254
+ =end
255
+
256
+
257
+ def self.prop_exists(mo, prop_name, platform=nil)
258
+
259
+ if !platform.nil?
260
+ return(mo.prop_meta.has_key? platform and mo.prop_meta[platform].has_key? prop_name)
261
+ end
262
+
263
+ for platform in IMC_PLATFORM_LIST
264
+ if mo.prop_meta.has_key? platform and \
265
+ mo.prop_meta[platform].has_key? prop_name.to_s
266
+ return true
267
+ end
268
+ end
269
+ return false
270
+ end
271
+
272
+ def self.set_server_dn(handle, kwargs)
273
+ server_id = kwargs.fetch(:server_id, "1")
274
+ return get_server_dn(handle, server_id.to_s)
275
+ end
276
+
277
+ def self.get_server_dn(handle, server_id="1")
278
+ =begin
279
+ This method gives the dn for a particular rack server based on
280
+ the type of platform
281
+ For classic: "sys/rack-unit-1"
282
+ For modular: "sys/chassis-1/server-<server_id>"
283
+ =end
284
+
285
+ if handle.platform == IMC_PLATFORM::TYPE_CLASSIC
286
+ return "sys/rack-unit-1"
287
+ elsif handle.platform == IMC_PLATFORM::TYPE_MODULAR
288
+ return "sys/chassis-1/server-" + server_id.to_s
289
+ else
290
+ raise ImcOperationError.new("Unknown platform type:#{handle.platform} detected")
291
+ end
292
+ end
293
+
294
+
295
+
296
+ def self.get_prop_meta(mo, prop, platform=nil)
297
+ =begin
298
+ Internal Method that returns the property meta object
299
+ =end
300
+
301
+ if !platform.nil?
302
+ return _get_property_from_prop_meta_for_platform(mo, prop, platform)
303
+ end
304
+
305
+ for platform in IMC_PLATFORM_LIST
306
+ prop_ = _get_property_from_prop_meta_for_platform(
307
+ mo,
308
+ prop,
309
+ platform)
310
+ if prop_
311
+ return prop_
312
+ end
313
+ end
314
+ return nil
315
+ end
316
+
317
+ def self.get_handle_from_cookie(cookie)
318
+ for handle in GLOBAL_HANDLES
319
+ if handle.cookie == cookie
320
+ return handle
321
+ end
322
+ end
323
+ return nil
324
+ end
325
+
326
+ def self.add_handle_to_list(handle)
327
+ if !handle.nil? and !(GLOBAL_HANDLES.include? handle)
328
+ GLOBAL_HANDLES.push(handle)
329
+ end
330
+ end
331
+
332
+ def self.remove_handle_from_list(handle)
333
+ if !handle.nil? and GLOBAL_HANDLES.include? handle
334
+ GLOBAL_HANDLES.remove(handle)
335
+ end
336
+ end
337
+
338
+ def self.property_exists_in_prop_map(mo, prop_name)
339
+
340
+ for platform in IMC_PLATFORM_LIST
341
+ if mo.prop_map.has_key? platform and \
342
+ mo.prop_map[platform].has_key? prop_name
343
+ return true
344
+ end
345
+ end
346
+ return false
347
+ end
348
+
349
+ def self.is_writable_prop(mo, prop, platform=nil)
350
+
351
+ for platform in IMC_PLATFORM_LIST
352
+ prop_ = _get_property_from_prop_meta_for_platform(
353
+ mo,
354
+ prop,
355
+ platform)
356
+ if prop_ and prop_.access == MoPropertyMeta::READ_WRITE
357
+ return true
358
+ end
359
+ end
360
+ return false
361
+ end
362
+
363
+ def self.get_property_from_prop_map(mo, prop, platform=nil)
364
+
365
+ if !platform.nil?
366
+ return _get_property_from_prop_map_for_platform(mo, prop, platform)
367
+ end
368
+
369
+ for platform in IMC_PLATFORM_LIST
370
+ prop_ = _get_property_from_prop_map_for_platform(
371
+ mo,
372
+ prop,
373
+ platform)
374
+ if prop_
375
+ return prop_
376
+ end
377
+ end
378
+
379
+ return nil
380
+ end
381
+
382
+ def self.get_mo_meta(mo, platform=nil)
383
+
384
+ if !platform.nil?
385
+ begin
386
+ return mo.mo_meta[platform]
387
+ rescue KeyError
388
+ raise ImcValidationException("The Managed Object:#{mo.class.name} does not exist for this platform"
389
+ )
390
+ end
391
+ end
392
+ for platform in IMC_PLATFORM_LIST
393
+ if mo.mo_meta.has_key? platform
394
+ return mo.mo_meta[platform]
395
+ end
396
+ end
397
+ return nil
398
+ end
399
+
400
+
401
+ def self.validate_mo_version(handle, mo)
402
+ =begin
403
+ This is called from add_mo/set_mo to verify if the mo is supported on
404
+ the particular server
405
+ =end
406
+
407
+ begin
408
+ mo_version = mo.get_version(handle.platform)
409
+ rescue ImcValidationException
410
+ raise ImcValidationException("This functionality is not supported on the current platform")
411
+ end
412
+
413
+ if mo_version > handle.version
414
+ raise ImcOperationError(
415
+ "Validate Version",
416
+ "Platform(version:#{handle.version}) does not support Managed Object:#{mo.class.name}(supported since version:#{mo_version})")
417
+ end
418
+ end
419
+
420
+ private
421
+
422
+ def self._get_property_from_prop_meta_for_platform(mo, prop, platform)
423
+
424
+ if mo.prop_meta.has_key? platform and \
425
+ mo.prop_meta[platform].has_key? prop
426
+ return mo.prop_meta[platform][prop]
427
+ end
428
+ return nil
429
+ end
430
+
431
+ def self._get_property_from_prop_map_for_platform(mo, prop, platform)
432
+
433
+ if mo.prop_map.has_key? platform and \
434
+ mo.prop_map[platform].has_key? prop
435
+ return mo.prop_map[platform][prop]
436
+ end
437
+ return nil
438
+ end
439
+
440
+
441
+ end
@@ -0,0 +1,187 @@
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
+ require 'uri'
15
+ require 'net/http'
16
+ require 'openssl'
17
+
18
+ class SmartRedirectHandler
19
+ #This class is to handle redirection error.
20
+
21
+ def http_error_301(req, fp, code, msg, headers)
22
+ #This is to handle redirection error code 301
23
+ resp_status = [code, headers.get('Location')]
24
+ return resp_status
25
+ end
26
+
27
+ def http_error_302(req, fp, code, msg, headers)
28
+ #This is to handle redirection error code 302
29
+ resp_status = [code, headers.get('Location')]
30
+ return resp_status
31
+ end
32
+ end
33
+
34
+
35
+ class ImcDriver < Object
36
+ =begin
37
+ This class is responsible to create http and https connection using urllib
38
+ library.
39
+
40
+ Args:
41
+ proxy (str): The proxy object to be used to connect
42
+
43
+ Example:
44
+ driver = ImcDriver(proxy="192.168.1.1:80")
45
+ =end
46
+
47
+ attr_accessor :redirect_uri
48
+ attr_accessor :proxy
49
+ attr_reader :headers
50
+ def initialize(proxy=nil)
51
+ @redirect_uri=nil
52
+ @proxy=proxy
53
+ @headers = {}
54
+ @handlers = _get_handlers()
55
+ end
56
+
57
+ def add_header(header_prop, header_value)
58
+ =begin
59
+ Adds header to http/ https web request
60
+
61
+ Args:
62
+ header_prop (str): header name
63
+ header_value (str): header value
64
+
65
+ Returns:
66
+ nil
67
+
68
+ Example:
69
+ driver=ImcDriver.new()\n
70
+ driver.add_header('Cookie', 'xxxxxxxxxxxxxx')\n
71
+ =end
72
+
73
+ self.headers[header_prop] = header_value
74
+ end
75
+
76
+ def remove_header(header_prop)
77
+ =begin
78
+ Removes header from http/ https web request
79
+
80
+ Args:
81
+ header_prop (str): header name
82
+
83
+ Returns:
84
+ nil
85
+
86
+ Example:
87
+ driver=ImcDriver.new()\n
88
+ driver.remove_header('Cookie')\n
89
+ =end
90
+ self.headers.delete(header_prop)
91
+ end
92
+ def post(uri,data=nil, dump_xml=false, read=true, timeout=nil, redirected=false)
93
+ =begin
94
+ sends the web request and receives the response from imc server
95
+
96
+ Args:
97
+ uri (str): URI of the the IMC Server
98
+ data (str): request data to send via post request
99
+ dump_xml (bool): if True, displays request and response
100
+ read (bool): if True, returns response.read() else returns object.
101
+ timeout (int): if set, this will be used as timeout in secs for urllib2
102
+
103
+ Returns:
104
+ response xml string or response object
105
+
106
+ Example:
107
+ response = post("http://192.168.1.1:80", data=xml_str)
108
+
109
+ =end
110
+ begin
111
+ request = _create_request(uri=uri, data=data)
112
+ uri = URI(uri)
113
+ if @proxy
114
+ http = Net::HTTP::Proxy(@proxy.host, @proxy.port, @proxy.user, @proxy.password).new(uri.host, uri.post)
115
+ else
116
+ http = Net::HTTP.new(uri.host, uri.port)
117
+ end
118
+ http.read_timeout = timeout.to_i
119
+
120
+ if uri.scheme == 'https'
121
+ http.use_ssl= true
122
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
123
+ end
124
+ response = http.request(request)
125
+
126
+ case response
127
+ when Net::HTTPSuccess
128
+ #do nothing
129
+ when Net::HTTPRedirection then
130
+ if(response.code == "301" or response.code == "302")
131
+ location = response['Location']
132
+ self.redirect_uri = uri = URI.parse(location)
133
+ response = post(uri, data, dump_xml, read, timeout, true)
134
+ end
135
+ else
136
+ raise 'Unexpected response: ' + response.inspect
137
+ end
138
+ if read and !redirected
139
+ response = response.body.force_encoding('utf-8')
140
+ end
141
+ return response
142
+ rescue => exception
143
+ raise exception
144
+ end
145
+ end
146
+
147
+ private
148
+
149
+ def _create_request(uri, data=nil)
150
+ =begin
151
+ Internal method to create http/https web request
152
+
153
+ Args:
154
+ uri (str): protocol://web_address:port
155
+ data (str): data to send over web request
156
+
157
+ Returns:
158
+ web request object
159
+ =end
160
+ uri = URI(uri)
161
+ request = Net::HTTP::Post.new(uri.path)
162
+ request["Content-Type"] = "text/xml"
163
+ request.body = data
164
+ @headers.each do |key, value|
165
+ request[key] = value
166
+ end
167
+ return request
168
+ end
169
+
170
+ def _get_handlers(tls_proto=nil)
171
+ =begin
172
+ Internal method to handle redirection and use TLS protocol.
173
+ =end
174
+
175
+ # tls_handler implements a fallback mechanism for servers that
176
+ # do not support TLS 1.1/1.2
177
+ tls_handler = "" #tls_proto == "tlsv1"? TLS1Handler.new : TLSHandler.new
178
+ #tls_handler = (TLSHandler, TLS1Handler)[tls_proto == "tlsv1"]
179
+ handlers = [SmartRedirectHandler.new, tls_handler]
180
+ if self.proxy
181
+ proxy_handler = urllib2.ProxyHandler(
182
+ {'http' => self.__proxy, 'https' => self.__proxy})
183
+ handlers.append(proxy_handler)
184
+ end
185
+ return handlers
186
+ end
187
+ end