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,304 @@
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_relative "../utils.rb"
17
+
18
+
19
+ LDAP_SERVERS = ['ldap_server1', 'ldap_server2', 'ldap_server3',
20
+ 'ldap_server4', 'ldap_server5', 'ldap_server6']
21
+ LDAP_SERVER_PORTS = ['ldap_server_port1', 'ldap_server_port2',
22
+ 'ldap_server_port3', 'ldap_server_port4',
23
+ 'ldap_server_port5', 'ldap_server_port6']
24
+ LDAP_DN = "sys/ldap-ext"
25
+
26
+ #
27
+ # Checks if the specified LDAP settings are already applied
28
+ #
29
+ # @param handle [ImcHandle] ImcHandle class object
30
+ # @param kwargs [Hash] Key-Value paired arguments
31
+ # @return [TrueClass, AaaLdap] if settings match
32
+ # @return [FalseClass, nil] if settings doen't match
33
+ # @example
34
+ # match, mo = ldap_settings_exist(
35
+ # handle: handle, :enabled => true,
36
+ # :basedn => 'DC=LAB,DC=cisco,DC=com',
37
+ # :domain => 'LAB.cisco.com',
38
+ # :timeout => 20, :group_auth => true,
39
+ # :bind_dn => 'CN=administrator,CN=Users,DC=LAB,DC=cisco,DC=com',
40
+ # :password => 'abcdefg', :ldap_servers=>ldap_servers)
41
+ #
42
+ def ldap_settings_exist(handle:, **kwargs)
43
+
44
+ mo = _get_mo(handle: handle, dn: LDAP_DN)
45
+
46
+ params = _get_ldap_params(kwargs)
47
+ if !mo.check_prop_match(**params)
48
+ return false, mo
49
+ end
50
+
51
+ if _is_valid_arg('ldap_servers', kwargs)
52
+ if ! _check_ldap_server_match(mo, kwargs.delete(:ldap_servers))
53
+ return false, mo
54
+ end
55
+ end
56
+
57
+ if !mo.check_prop_match(**kwargs)
58
+ return false, mo
59
+ end
60
+ return true, mo
61
+ end
62
+
63
+ #
64
+ # Checks if LDAP is enabled
65
+ #
66
+ # @param handle [ImcHandle] ImcHandle class object
67
+ # @return [TrueClass, FalseClass]
68
+ # @example
69
+ # is_ldap_enabled(handle: handle)
70
+ #
71
+ def is_ldap_enabled(handle:)
72
+ mo = _get_mo(handle: handle, dn: LDAP_DN)
73
+ return mo.admin_state.downcase == "enabled"
74
+ end
75
+
76
+ #
77
+ # Gets the ldap role group based on domain and name
78
+ #
79
+ # @param handle [ImcHandle] ImcHandle class object
80
+ # @param domain [String] The LDAP server domain the group resides in.
81
+ # @param name [String] The name of the group in the LDAP server database.
82
+ # @param kwargs [Hash] Key-Value paired arguments for future use
83
+ # @return [AaaLdapRoleGroup]
84
+ # @example
85
+ # ldap_role_group_get(handle: handle, domain: 'abcd.pqrs.com', name: 'abcd')
86
+ #
87
+ def ldap_role_group_get(handle:, domain:, name:, **kwargs)
88
+ mos = handle.query_classid('AaaLdapRoleGroup')
89
+ for mo in mos
90
+ if mo.domain == domain and mo.name == name
91
+ return mo
92
+ end
93
+ end
94
+
95
+ return nil
96
+ end
97
+
98
+ #
99
+ # Configures LDAP
100
+ #
101
+ # @param handle [ImcHandle] ImcHandle class object
102
+ # @param enabled [TrueClass, FalseClass] true to enable LDAP
103
+ # @param basedn [String] Represents the Base Distinguished Name. Describes where to load users and groups from.
104
+ # It must be in the 'dc=domain,dc=com' format for Active Directory servers.
105
+ # @param domain [String] The domain that all users must be in.
106
+ # @param encryption [TrueClass, FalseClass] true to enable encryption
107
+ # @param timeout [Integer] The number of seconds the Cisco IMC waits until the LDAP search operation times out. Value must be between [0-180]
108
+ # @param user_search_precedence [String] Preference to search in local user db versus ldap user db, valid values ['local-user-db', 'ldap-user-db']
109
+ # @param bind_method [String] valid values ['login-credentials', 'configured-credentials', 'anonymous']
110
+ # @param bind_dn [String] Represents the distinguished name (DN) of the user.
111
+ # This field is applicable only for bind_method='configured-credentials'
112
+ # @param password [String] The password of the user. This field is applicable only for bind_method='configured-credentials'
113
+ # @param filter [String] Represents the filter attribute in the schema on the LDAP server.
114
+ # @param attribute [String] Represents the role and locale information. Should match the attribute specified on the LDAP server.
115
+ # @param group_attribute [String] Represents the group attribute in the schema on the LDAP server.
116
+ # @param group_nested_search [Integer] Represents the depth of a nested group search
117
+ # @param group_auth [TrueClass, FalseClass] Enables authentication at the group level for LDAP users that are not found in the local user database.
118
+ # @param ldap_servers [Array] Represents the list of preconfigured LDAP server.
119
+ # List of Hash in the format:-
120
+ # [{:id => 1, :ip => "192.168.1.1", :port => 300},
121
+ # {:id => 2, :ip => "192.168.1.2", :port => 400}]
122
+ # @param locate_directory_using_dns [TrueClass, FalseClass]
123
+ # @param dns_domain_source [String] Represents the method to obtain domain name
124
+ # ['extracted-domain', 'configured-domain', 'extracted-configured-domain']
125
+ # @param dns_search_domain [String] Domain name to be used for DNS query. Disabled when domain_name_source='extracted-domain'
126
+ # @param dns_search_forest [String] Forest name to used for DNS query. Disabled when domain_name_source='extracted-domain'
127
+ # @param kwargs [Hash] Key-Value paired arguments. Reserved for future use
128
+ # @return [AaaLdap]
129
+ # @raise [ImcOperationError] when AaaLdap object doesn't exist
130
+ # @example
131
+ # ldap_configure(handle: handle, enabled: true,
132
+ # basedn: 'DC=LAB,DC=cisco,DC=com',
133
+ # domain: 'LAB.cisco.com',
134
+ # timeout: 20, group_auth: true,
135
+ # bind_dn: 'CN=administrator,CN=Users,DC=LAB,DC=cisco,DC=com',
136
+ # password: 'abcdefg', ldap_servers: ldap_servers)
137
+ #
138
+ def ldap_configure(handle:, enabled: false, basedn: nil, domain: nil,
139
+ encryption: true, timeout: 60, user_search_precedence: 'local-user-db',
140
+ bind_method: 'login-credentials', bind_dn: nil,
141
+ password: nil, filter: 'sAMAccountName',
142
+ attribute: 'CiscoAvPair', group_attribute: 'memberOf',
143
+ group_nested_search: 128, group_auth: false,
144
+ ldap_servers: [], locate_directory_using_dns: false,
145
+ dns_domain_source: 'extracted-domain',
146
+ dns_search_domain: nil, dns_search_forest: nil, **kwargs)
147
+
148
+ mo = _get_mo(handle: handle, dn: LDAP_DN)
149
+
150
+ params = {
151
+
152
+ :admin_state => enabled == true ? 'enabled' : 'disabled',
153
+ :basedn => basedn,
154
+ :domain => domain,
155
+ :encryption => encryption == true ? 'enabled' : 'disabled',
156
+ :timeout => timeout.to_s,
157
+ :user_search_precedence => user_search_precedence,
158
+ :bind_method => bind_method,
159
+ :bind_dn => bind_dn,
160
+ :password => password,
161
+ :filter => filter,
162
+ :attribute => attribute,
163
+ :group_attribute => group_attribute,
164
+ :group_nested_search => group_nested_search.to_s,
165
+ :group_auth => group_auth == true ? 'enabled' : 'disabled',
166
+ :locate_directory_using_dns => locate_directory_using_dns == true ? 'yes' : 'no',
167
+ :dns_domain_source => dns_domain_source,
168
+ :dns_search_domain => dns_search_domain,
169
+ :dns_search_forest => dns_search_forest
170
+ }
171
+
172
+ mo.set_prop_multiple(**params)
173
+
174
+ if ldap_servers
175
+ _set_ldap_servers(mo, ldap_servers)
176
+ end
177
+
178
+ mo.set_prop_multiple(**kwargs)
179
+ handle.set_mo(mo: mo)
180
+ return handle.query_dn(dn: mo.dn)
181
+ end
182
+ #
183
+ # Enables ldap certificate management
184
+ #
185
+ # @param handle [ImcHandle] ImcHandle class object
186
+ # @return [LdapCACertificateManagement]
187
+ #
188
+ def ldap_certificate_management_enable(handle:)
189
+ mo = _get_mo(handle: handle, dn: "sys/ldap-ext/ldap-ca-cert-mgmt")
190
+ mo.set_prop(:binding_certificate, "enabled")
191
+ handle.set_mo(mo: mo)
192
+ return handle.query_dn(dn: mo.dn)
193
+ end
194
+ #
195
+ # Disables ldap certificate management
196
+ #
197
+ # @param handle [ImcHandle] ImcHandle class object
198
+ # @return [LdapCACertificateManagement]
199
+ #
200
+ def ldap_certificate_management_disable(handle:)
201
+ mo = _get_mo(handle: handle, dn: "sys/ldap-ext/ldap-ca-cert-mgmt")
202
+ mo.set_prop(:binding_certificate, "disabled")
203
+ handle.set_mo(mo: mo)
204
+ return handle.query_dn(dn: mo.dn)
205
+ end
206
+
207
+ private
208
+
209
+ def _set_ldap_servers(mo, ldap_servers)
210
+ if ldap_servers.size > LDAP_SERVERS.size
211
+ raise ImcOperationError.new("Configure LDAP", "Cannot configure more than #{_LDAP_SERVERS.size} servers")
212
+ end
213
+ servers = {}
214
+ ports = {}
215
+ for server in ldap_servers
216
+ servers[("ldap_server" + server[:id].to_s).to_sym] = server[:ip]
217
+ ports[("ldap_server_port" + server[:id].to_s).to_sym] = server[:port].to_s
218
+ end
219
+ mo.set_prop_multiple(**servers)
220
+ mo.set_prop_multiple(**ports)
221
+ end
222
+
223
+
224
+ def _get_ldap_params(kwargs)
225
+ params = {}
226
+
227
+ if _is_valid_arg('enabled', kwargs)
228
+ params[:admin_state] = kwargs.delete(:enabled)? 'enabled': 'disabled'
229
+ end
230
+
231
+ if _is_valid_arg('encryption', kwargs)
232
+ params[:encryption] = kwargs.delete(:encryption)? 'enabled': 'disabled'
233
+ end
234
+
235
+ if _is_valid_arg('group_auth', kwargs)
236
+ params[:group_auth] = kwargs.delete(:group_auth)? 'enabled': 'disabled'
237
+ end
238
+
239
+ if _is_valid_arg('locate_directory_using_dns', kwargs)
240
+ params[:locate_directory_using_dns] = kwargs.delete(:locate_directory_using_dns)? 'yes': 'no'
241
+ end
242
+
243
+ if _is_valid_arg('timeout', kwargs)
244
+ params[:timeout] = kwargs.delete(:timeout).to_s
245
+ end
246
+
247
+ if _is_valid_arg('group_nested_search', kwargs)
248
+ params[:group_nested_search] = kwargs.delete(:group_nested_search).to_s
249
+ end
250
+
251
+ # pop the password property if it exists
252
+ if _is_valid_arg('password', kwargs)
253
+ kwargs.delete(:password)
254
+ end
255
+
256
+ return params
257
+
258
+ end
259
+
260
+ def _check_ldap_server_match(ldap_mo, ldap_servers)
261
+ mo = AaaLdap.new(parent_mo_or_dn: "sys")
262
+ _set_ldap_servers(mo, ldap_servers)
263
+ for server, port in LDAP_SERVERS.zip(LDAP_SERVER_PORTS)
264
+ conf_server = ldap_mo.instance_variable_get("@" + server)
265
+ in_server = mo.instance_variable_get("@" + server)
266
+
267
+ match = _check_match(conf_server, in_server)
268
+ # IMC assigns a default value of port even when a valid server ip is
269
+ # not assigned. The following logic will skip checking for ports where
270
+ # the server ip itself is not specified, but default port is set.
271
+ if match.nil?
272
+ next
273
+ end
274
+
275
+ if !match
276
+ return false
277
+ end
278
+
279
+ conf_port = ldap_mo.instance_variable_get("@" + port)
280
+ in_port = mo.instance_variable_get("@" + port)
281
+
282
+ if _check_match(conf_port, in_port) == false
283
+ return false
284
+ end
285
+ end
286
+ return true
287
+ end
288
+
289
+ def _check_match(prop1, prop2)
290
+ if _is_invalid_value(prop1) and _is_invalid_value(prop2)
291
+ return nil
292
+ end
293
+ return prop1 == prop2
294
+ end
295
+
296
+ def _get_free_ldap_role_group_id(handle)
297
+ mos = handle.query_classid('AaaLdapRoleGroup')
298
+ for mo in mos
299
+ if !mo.name and !mo.domain
300
+ return mo.id
301
+ end
302
+ end
303
+ raise ImcOperationError.new("LDAP role group create", "No free role group available")
304
+ end
@@ -0,0 +1,202 @@
1
+ # Copyright 2017 Cisco Systems, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+
14
+ $:.unshift(*Dir[::File.expand_path('./../../', File.dirname(__FILE__))])
15
+
16
+ require_relative "../utils.rb"
17
+ require "imcexception"
18
+
19
+
20
+ COMM_EXT_DN = "sys/svc-ext"
21
+ NTP_DN = "sys/svc-ext/ntp-svc"
22
+ NTP_SERVER_LIST = ["ntp_server1", "ntp_server2", "ntp_server3", "ntp_server4"]
23
+
24
+ #
25
+ # Enables NTP and configures the NTP servers provided
26
+ #
27
+ # @param handle [ImcHandle] ImcHandle class object
28
+ # @param ntp_servers [Array] List of dictionaries in the format
29
+ # [{:id => 1, :ip => "192.168.1.1"},
30
+ # {:id => 2, :ip => "192.168.1.2"}]
31
+ # @note Upto 4 ntp servers can be specified.
32
+ # @return [CommNtpProvider]
33
+ # @example
34
+ # ntp_enable(handle: handle,
35
+ # ntp_servers = [{:id => 1, :ip => "192.168.1.1"},
36
+ # {:id => 2, :ip => "192.168.1.2"}]
37
+ #
38
+ def ntp_enable(handle:, ntp_servers: Array.new)
39
+ mo = _get_mo(handle: handle, dn: NTP_DN)
40
+ mo.set_prop(:ntp_enable, "yes")
41
+ _set_ntp_servers(mo, ntp_servers)
42
+ handle.set_mo(mo: mo)
43
+ return handle.query_dn(dn: mo.dn)
44
+
45
+ end
46
+
47
+ #
48
+ # Disables NTP
49
+ #
50
+ # @param handle [ImcHandle] ImcHandle class object
51
+ # @return [CommNtpProvider]
52
+ #
53
+ def ntp_disable(handle:)
54
+ mo = _get_mo(handle: handle, dn: NTP_DN)
55
+ mo.set_prop(:ntp_enable, "no")
56
+ handle.set_mo(mo: mo)
57
+ return handle.query_dn(dn: mo.dn)
58
+ end
59
+
60
+ #
61
+ # Clears the NTP servers provided in the arguments.
62
+ # Clears all the NTP servers, only if ntp is disabled.
63
+ #
64
+ # @param handle [ImcHandle] ImcHandle class object
65
+ # @param ntp_servers [Array] List of NTP servers in the format ["192.168.1.1", "192.168.1.2"]
66
+ # @return [CommNtpProvider]
67
+ #
68
+ def ntp_servers_clear(handle:, ntp_servers: Array.new)
69
+ mo = _get_mo(handle: handle, dn: NTP_DN)
70
+ args = {}
71
+
72
+ if ntp_servers.size > 0
73
+ NTP_SERVER_LIST.each do |x|
74
+ ntp_server_ip = mo.instance_variable_get("@" + x )
75
+ if ntp_servers.include? ntp_server_ip
76
+ args[x.to_sym] = ""
77
+ end
78
+ end
79
+ #args = {x => "" for x in NTP_SERVER_LIST if mo.instance_variable_get("@" + x) in ntp_servers}
80
+ else
81
+ NTP_SERVER_LIST.each do |x|
82
+ args[x.to_sym] = ""
83
+ end
84
+ end
85
+
86
+ if ["yes", "true"].include? mo.ntp_enable.downcase and args.size == NTP_SERVER_LIST.size
87
+ raise ImcOperationError.new("Clear NTP Servers", "Cannot clear all NTP servers when NTP is enabled")
88
+ end
89
+ mo.set_prop(:ntp_enable, mo.ntp_enable)
90
+ mo.set_prop_multiple(**args)
91
+ handle.set_mo(mo: mo)
92
+ return handle.query_dn(dn: mo.dn)
93
+ end
94
+
95
+ #
96
+ # Modifies the configured NTP servers
97
+ #
98
+ # @param handle [ImcHandle] ImcHandle class object
99
+ # @param ntp_servers [Array] List of dictionaries in the format
100
+ # [{:id => 1, :ip => "192.168.1.1"},
101
+ # {:id => 2, :ip => "192.168.1.2"}]
102
+ # @note Upto 4 ntp servers can be specified.
103
+ # @return [CommNtpProvider]
104
+ # @example
105
+ # ntp_servers_modify(handle: handle,
106
+ # ntp_servers = [{:id => 1, :ip => "192.168.1.1"},
107
+ # {:id => 2, :ip => "192.168.1.2"},
108
+ # {:id => 3, :ip => ""}]
109
+ #
110
+ def ntp_servers_modify(handle:, ntp_servers: Array.new)
111
+
112
+ # While sending the modified list of servers, it is imperative to send
113
+ # ntp_enable property in the request.
114
+ # Hence, query the MO and reassign the same value to ntp_enable
115
+ mo = _get_mo(handle: handle, dn: NTP_DN)
116
+ mo.set_prop(:ntp_enable, mo.ntp_enable)
117
+ _set_ntp_servers(mo, ntp_servers)
118
+ handle.set_mo(mo: mo)
119
+ return handle.query_dn(dn: mo.dn)
120
+ end
121
+
122
+ #
123
+ # Check if NTP is enabled
124
+ #
125
+ # @param handle [ImcHandle] ImcHandle class object
126
+ # @return [TrueClass, FalseClass] true if enabled, else false
127
+ #
128
+ def is_ntp_enabled(handle:)
129
+ mo = _get_mo(handle: handle, dn: NTP_DN)
130
+ return (["true", "yes"].include? mo.ntp_enable.downcase)
131
+ end
132
+ =begin
133
+ def get_ntp_server_list(ntp_mo, ntp_servers)
134
+
135
+ ntp_server_list = []
136
+ for x in ntp_servers
137
+ key = "ntp_server" + x[:id].to_s
138
+ value = ntp_mo.instance_variable_get("@" + prop)
139
+ ntp_server_list.push({:id => x[:id].to_s, :ip => value.to_s })
140
+ end
141
+ return ntp_Server_list
142
+ end
143
+ =end
144
+
145
+ #
146
+ # Check if the specified NTP settings are already applied
147
+ #
148
+ # @param handle [ImcHandle] ImcHandle class object
149
+ # @param kwargs [Hash] key-value paired arguments
150
+ # @return [TrueClass, CommNtpProvider] if settings match
151
+ # @return [FalseClass, CommNtpProvider] if settings don't match
152
+ #
153
+ def ntp_settings_match(handle:, **kwargs)
154
+ ntp_mo = _get_mo(handle: handle, dn: NTP_DN)
155
+
156
+ if _is_valid_arg("ntp_enable", kwargs)
157
+ if ntp_mo.ntp_enable != kwargs[:ntp_enable]
158
+ return false, ntp_mo
159
+ end
160
+ end
161
+
162
+ if _is_valid_arg("ntp_servers", kwargs)
163
+ require "mometa/comm/CommNtpProvider"
164
+ mo = CommNtpProvider.new( parent_mo_or_dn: COMM_EXT_DN)
165
+ _set_ntp_servers(mo, kwargs[:ntp_servers])
166
+ if !_check_ntp_server_match(ntp_mo, mo)
167
+ return false, ntp_mo
168
+ end
169
+ end
170
+
171
+ return true, ntp_mo
172
+ end
173
+
174
+ private
175
+ def _check_ntp_server_match(ntp_mo, mo)
176
+ for prop in NTP_SERVER_LIST
177
+ configured_value = ntp_mo.instance_variable_get("@" + prop)
178
+ in_value = mo.instance_variable_get("@" + prop)
179
+
180
+ if _is_invalid_value(configured_value) and
181
+ _is_invalid_value(in_value)
182
+ next
183
+ end
184
+ if configured_value != in_value
185
+ return false
186
+ end
187
+ end
188
+ return true
189
+ end
190
+
191
+ def _set_ntp_servers(mo, ntp_servers)
192
+ if ntp_servers.size > NTP_SERVER_LIST.size
193
+ raise ImcOperationError.new("Set NTP Servers", "Cannot specify more than #{NTP_SERVER_LIST.size} servers")
194
+ end
195
+ args = {}
196
+ for x in ntp_servers
197
+ key = "ntp_server" + x[:id].to_s
198
+ value = x[:ip]
199
+ args[key.to_sym] = value
200
+ end
201
+ mo.set_prop_multiple(**args)
202
+ end