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.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/.yardopts +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/ImcSdk.gemspec +43 -0
- data/LICENSE +201 -0
- data/Makefile +9 -0
- data/README.md +79 -0
- data/Rakefile +15 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/docs/ImcHandle.html +2900 -0
- data/docs/_index.html +109 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +492 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +147 -0
- data/docs/js/app.js +248 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +619 -0
- data/docs/top-level-namespace.html +10218 -0
- data/lib/ImcSdk.rb +395 -0
- data/lib/ImcSdk/apis/admin/ipmi.rb +99 -0
- data/lib/ImcSdk/apis/admin/ldap.rb +304 -0
- data/lib/ImcSdk/apis/admin/ntp.rb +202 -0
- data/lib/ImcSdk/apis/admin/user.rb +221 -0
- data/lib/ImcSdk/apis/server/bios.rb +311 -0
- data/lib/ImcSdk/apis/server/power.rb +219 -0
- data/lib/ImcSdk/apis/server/remotepresence.rb +170 -0
- data/lib/ImcSdk/apis/server/serveractions.rb +382 -0
- data/lib/ImcSdk/apis/server/storage.rb +438 -0
- data/lib/ImcSdk/apis/utils.rb +55 -0
- data/lib/ImcSdk/imcbasetype.rb +121 -0
- data/lib/ImcSdk/imcconstants.rb +1351 -0
- data/lib/ImcSdk/imccore.rb +220 -0
- data/lib/ImcSdk/imccoremeta.rb +271 -0
- data/lib/ImcSdk/imccoreutils.rb +441 -0
- data/lib/ImcSdk/imcdriver.rb +187 -0
- data/lib/ImcSdk/imcexception.rb +86 -0
- data/lib/ImcSdk/imcfiltertype.rb +228 -0
- data/lib/ImcSdk/imcgenutils.rb +29 -0
- data/lib/ImcSdk/imcmeta.rb +975 -0
- data/lib/ImcSdk/imcmethod.rb +182 -0
- data/lib/ImcSdk/imcmethodfactory.rb +190 -0
- data/lib/ImcSdk/imcmo.rb +669 -0
- data/lib/ImcSdk/imcsession.rb +549 -0
- data/lib/ImcSdk/imcxmlcodec.rb +94 -0
- data/lib/ImcSdk/methodmeta/AaaGetComputeAuthTokensMeta.rb +16 -0
- data/lib/ImcSdk/methodmeta/AaaKeepAliveMeta.rb +14 -0
- data/lib/ImcSdk/methodmeta/AaaLoginMeta.rb +36 -0
- data/lib/ImcSdk/methodmeta/AaaLogoutMeta.rb +18 -0
- data/lib/ImcSdk/methodmeta/AaaRefreshMeta.rb +36 -0
- data/lib/ImcSdk/methodmeta/ConfigConfMoMeta.rb +22 -0
- data/lib/ImcSdk/methodmeta/ConfigConfMosMeta.rb +20 -0
- data/lib/ImcSdk/methodmeta/ConfigResolveChildrenMeta.rb +24 -0
- data/lib/ImcSdk/methodmeta/ConfigResolveClassMeta.rb +20 -0
- data/lib/ImcSdk/methodmeta/ConfigResolveDnMeta.rb +20 -0
- data/lib/ImcSdk/methodmeta/ConfigResolveParentMeta.rb +20 -0
- data/lib/ImcSdk/methodmeta/EventSubscribeMeta.rb +14 -0
- data/lib/ImcSdk/methodmeta/EventUnsubscribeMeta.rb +14 -0
- data/lib/ImcSdk/mometa/aaa/AaaLdap.rb +269 -0
- data/lib/ImcSdk/mometa/aaa/AaaLdapRoleGroup.rb +122 -0
- data/lib/ImcSdk/mometa/aaa/AaaSession.rb +123 -0
- data/lib/ImcSdk/mometa/aaa/AaaUser.rb +130 -0
- data/lib/ImcSdk/mometa/aaa/AaaUserEp.rb +88 -0
- data/lib/ImcSdk/mometa/aaa/AaaUserPasswordExpiration.rb +118 -0
- data/lib/ImcSdk/mometa/aaa/AaaUserPolicy.rb +100 -0
- data/lib/ImcSdk/mometa/activate/ActivatePIDCatalog.rb +101 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorCfgBackup.rb +143 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorCfgImporter.rb +143 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorConnectorInfo.rb +97 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthCompQueueProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthGenProfile.rb +158 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthISCSIProfile.rb +261 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthInterruptProfile.rb +116 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthOffloadProfile.rb +112 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthRdmaProfile.rb +106 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthRecvQueueProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthUSNICProfile.rb +167 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorEthWorkQueueProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorExtEthIf.rb +154 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorExtIpV6RssHashProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcBootTable.rb +106 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcCdbWorkQueueProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcErrorRecoveryProfile.rb +130 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcGenProfile.rb +133 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcInterruptProfile.rb +96 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcPersistentBindings.rb +118 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcPortFLogiProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcPortPLogiProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcPortProfile.rb +106 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcRecvQueueProfile.rb +94 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorFcWorkQueueProfile.rb +94 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorGenProfile.rb +166 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorHostEthIf.rb +163 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorHostFcIf.rb +148 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorIpV4RssHashProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorIpV6RssHashProfile.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorLinkTraining.rb +79 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorPortProfiles.rb +100 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorRssProfile.rb +94 -0
- data/lib/ImcSdk/mometa/adaptor/AdaptorUnit.rb +155 -0
- data/lib/ImcSdk/mometa/advanced/AdvancedPowerProfile.rb +140 -0
- data/lib/ImcSdk/mometa/auto/AutoPowerProfile.rb +117 -0
- data/lib/ImcSdk/mometa/bios/BiosBOT.rb +88 -0
- data/lib/ImcSdk/mometa/bios/BiosBootDev.rb +114 -0
- data/lib/ImcSdk/mometa/bios/BiosBootDevGrp.rb +112 -0
- data/lib/ImcSdk/mometa/bios/BiosBootDevPrecision.rb +152 -0
- data/lib/ImcSdk/mometa/bios/BiosBootMode.rb +96 -0
- data/lib/ImcSdk/mometa/bios/BiosPassword.rb +73 -0
- data/lib/ImcSdk/mometa/bios/BiosPlatformDefaults.rb +88 -0
- data/lib/ImcSdk/mometa/bios/BiosProfile.rb +139 -0
- data/lib/ImcSdk/mometa/bios/BiosProfileManagement.rb +106 -0
- data/lib/ImcSdk/mometa/bios/BiosProfileToken.rb +106 -0
- data/lib/ImcSdk/mometa/bios/BiosSettings.rb +88 -0
- data/lib/ImcSdk/mometa/bios/BiosUnit.rb +106 -0
- data/lib/ImcSdk/mometa/bios/BiosVfASPMSupport.rb +97 -0
- data/lib/ImcSdk/mometa/bios/BiosVfAdjacentCacheLinePrefetch.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfAltitude.rb +99 -0
- data/lib/ImcSdk/mometa/bios/BiosVfAssertNMIOnPERR.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfAssertNMIOnSERR.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfAutonumousCstateEnable.rb +81 -0
- data/lib/ImcSdk/mometa/bios/BiosVfBootOptionRetry.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCDNEnable.rb +92 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCDNSupport.rb +96 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCPUEnergyPerformance.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCPUFrequencyFloor.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCPUPerformance.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCPUPowerManagement.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCkeLowPolicy.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCmciEnable.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfConsoleRedirection.rb +162 -0
- data/lib/ImcSdk/mometa/bios/BiosVfCoreMultiProcessing.rb +118 -0
- data/lib/ImcSdk/mometa/bios/BiosVfDCUPrefetch.rb +109 -0
- data/lib/ImcSdk/mometa/bios/BiosVfDRAMClockThrottling.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfDemandScrub.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfDirectCacheAccess.rb +100 -0
- data/lib/ImcSdk/mometa/bios/BiosVfDramRefreshRate.rb +99 -0
- data/lib/ImcSdk/mometa/bios/BiosVfEnhancedIntelSpeedStepTech.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfExecuteDisableBit.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfExtendedAPIC.rb +92 -0
- data/lib/ImcSdk/mometa/bios/BiosVfFRB2Enable.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfHWPMEnable.rb +80 -0
- data/lib/ImcSdk/mometa/bios/BiosVfHardwarePrefetch.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfIOHResource.rb +99 -0
- data/lib/ImcSdk/mometa/bios/BiosVfIntelHyperThreadingTech.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfIntelTurboBoostTech.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfIntelVTForDirectedIO.rb +142 -0
- data/lib/ImcSdk/mometa/bios/BiosVfIntelVirtualizationTechnology.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfLOMPortOptionROM.rb +150 -0
- data/lib/ImcSdk/mometa/bios/BiosVfLegacyUSBSupport.rb +100 -0
- data/lib/ImcSdk/mometa/bios/BiosVfLvDIMMSupport.rb +97 -0
- data/lib/ImcSdk/mometa/bios/BiosVfMMCFGBase.rb +99 -0
- data/lib/ImcSdk/mometa/bios/BiosVfMemoryInterleave.rb +126 -0
- data/lib/ImcSdk/mometa/bios/BiosVfMemoryMappedIOAbove4GB.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfMirroringMode.rb +96 -0
- data/lib/ImcSdk/mometa/bios/BiosVfNUMAOptimized.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfOSBootWatchdogTimer.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfOSBootWatchdogTimerPolicy.rb +97 -0
- data/lib/ImcSdk/mometa/bios/BiosVfOSBootWatchdogTimerTimeout.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfOnboardNIC.rb +109 -0
- data/lib/ImcSdk/mometa/bios/BiosVfOnboardStorage.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfOnboardStorageSWStack.rb +90 -0
- data/lib/ImcSdk/mometa/bios/BiosVfOutOfBandMgmtPort.rb +92 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPCIOptionROMs.rb +100 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPCISlotOptionROMEnable.rb +726 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPCIeSSDHotPlugSupport.rb +81 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPOSTErrorPause.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPStateCoordType.rb +97 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPackageCStateLimit.rb +105 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPatrolScrub.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPatrolScrubDuration.rb +94 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPchUsb30Mode.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPciRomClp.rb +92 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPowerOnPasswordSupport.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfProcessorC1E.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfProcessorC3Report.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfProcessorC6Report.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfProcessorCState.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfPwrPerfTuning.rb +90 -0
- data/lib/ImcSdk/mometa/bios/BiosVfQPIConfig.rb +99 -0
- data/lib/ImcSdk/mometa/bios/BiosVfQpiSnoopMode.rb +94 -0
- data/lib/ImcSdk/mometa/bios/BiosVfResumeOnACPowerLoss.rb +111 -0
- data/lib/ImcSdk/mometa/bios/BiosVfSataModeSelect.rb +97 -0
- data/lib/ImcSdk/mometa/bios/BiosVfSelectMemoryRASConfiguration.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfSerialPortAEnable.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfSparingMode.rb +96 -0
- data/lib/ImcSdk/mometa/bios/BiosVfSrIov.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfTPMSupport.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfUCSMBootOrderRuleControl.rb +96 -0
- data/lib/ImcSdk/mometa/bios/BiosVfUSBBootConfig.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfUSBEmulation.rb +98 -0
- data/lib/ImcSdk/mometa/bios/BiosVfUSBPortsConfig.rb +164 -0
- data/lib/ImcSdk/mometa/bios/BiosVfVgaPriority.rb +97 -0
- data/lib/ImcSdk/mometa/bios/BiosVfWorkLoadConfig.rb +90 -0
- data/lib/ImcSdk/mometa/bmc/BmcResetReason.rb +77 -0
- data/lib/ImcSdk/mometa/certificate/CertificateManagement.rb +94 -0
- data/lib/ImcSdk/mometa/chassis/ChassisPIDCatalog.rb +77 -0
- data/lib/ImcSdk/mometa/chassis/ChassisPowerBudget.rb +110 -0
- data/lib/ImcSdk/mometa/chassis/ChassisPowerMonitor.rb +93 -0
- data/lib/ImcSdk/mometa/chassis/ChassisPowerUtilization.rb +77 -0
- data/lib/ImcSdk/mometa/comm/CommEpIpmiLan.rb +87 -0
- data/lib/ImcSdk/mometa/comm/CommHttp.rb +149 -0
- data/lib/ImcSdk/mometa/comm/CommHttps.rb +141 -0
- data/lib/ImcSdk/mometa/comm/CommIpmiLan.rb +108 -0
- data/lib/ImcSdk/mometa/comm/CommKvm.rb +124 -0
- data/lib/ImcSdk/mometa/comm/CommNtpProvider.rb +130 -0
- data/lib/ImcSdk/mometa/comm/CommRedfish.rb +86 -0
- data/lib/ImcSdk/mometa/comm/CommSavedVMediaMap.rb +148 -0
- data/lib/ImcSdk/mometa/comm/CommSnmp.rb +169 -0
- data/lib/ImcSdk/mometa/comm/CommSnmpTrap.rb +149 -0
- data/lib/ImcSdk/mometa/comm/CommSnmpUser.rb +147 -0
- data/lib/ImcSdk/mometa/comm/CommSsh.rb +141 -0
- data/lib/ImcSdk/mometa/comm/CommSvcEp.rb +88 -0
- data/lib/ImcSdk/mometa/comm/CommSvcRack.rb +73 -0
- data/lib/ImcSdk/mometa/comm/CommSyslog.rb +151 -0
- data/lib/ImcSdk/mometa/comm/CommSyslogClient.rb +123 -0
- data/lib/ImcSdk/mometa/comm/CommVMedia.rb +122 -0
- data/lib/ImcSdk/mometa/comm/CommVMediaMap.rb +153 -0
- data/lib/ImcSdk/mometa/compute/ComputeBoard.rb +178 -0
- data/lib/ImcSdk/mometa/compute/ComputeMbPowerStats.rb +112 -0
- data/lib/ImcSdk/mometa/compute/ComputeRackUnit.rb +206 -0
- data/lib/ImcSdk/mometa/compute/ComputeRackUnitMbTempStats.rb +101 -0
- data/lib/ImcSdk/mometa/compute/ComputeServerNode.rb +192 -0
- data/lib/ImcSdk/mometa/compute/ComputeServerNodeMbTempStats.rb +101 -0
- data/lib/ImcSdk/mometa/compute/ComputeServerRef.rb +81 -0
- data/lib/ImcSdk/mometa/compute/ComputeSharedIOMbPowerStats.rb +89 -0
- data/lib/ImcSdk/mometa/compute/ComputeSharedIOMbTempStats.rb +99 -0
- data/lib/ImcSdk/mometa/current/CurrentCertificate.rb +178 -0
- data/lib/ImcSdk/mometa/custom/CustomPowerProfile.rb +103 -0
- data/lib/ImcSdk/mometa/download/DownloadClientCertificate.rb +106 -0
- data/lib/ImcSdk/mometa/download/DownloadClientPrivateKey.rb +106 -0
- data/lib/ImcSdk/mometa/download/DownloadLdapCACertificate.rb +135 -0
- data/lib/ImcSdk/mometa/download/DownloadRootCACertificate.rb +106 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentChassis.rb +93 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentChassisLocatorLed.rb +106 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentFan.rb +223 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentFanModule.rb +217 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentIndicatorLed.rb +122 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentLocatorLed.rb +131 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentPsu.rb +235 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentPsuColdRedundancy.rb +77 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentPsuFan.rb +186 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentSharedIOModule.rb +125 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentSystemIOController.rb +87 -0
- data/lib/ImcSdk/mometa/equipment/EquipmentTpm.rb +164 -0
- data/lib/ImcSdk/mometa/error/Error.rb +98 -0
- data/lib/ImcSdk/mometa/event/EventManagement.rb +100 -0
- data/lib/ImcSdk/mometa/export/ExportClientCertificate.rb +106 -0
- data/lib/ImcSdk/mometa/export/ExportClientPrivateKey.rb +106 -0
- data/lib/ImcSdk/mometa/export/ExportLdapCACertificate.rb +135 -0
- data/lib/ImcSdk/mometa/export/ExportRootCACertificate.rb +106 -0
- data/lib/ImcSdk/mometa/fan/FanPolicy.rb +89 -0
- data/lib/ImcSdk/mometa/fault/FaultInst.rb +238 -0
- data/lib/ImcSdk/mometa/firmware/FirmwareBootDefinition.rb +101 -0
- data/lib/ImcSdk/mometa/firmware/FirmwareBootUnit.rb +159 -0
- data/lib/ImcSdk/mometa/firmware/FirmwareRunning.rb +124 -0
- data/lib/ImcSdk/mometa/firmware/FirmwareUpdatable.rb +197 -0
- data/lib/ImcSdk/mometa/generate/GenerateCertificateSigningRequest.rb +435 -0
- data/lib/ImcSdk/mometa/generate/GenerateRandomPassword.rb +94 -0
- data/lib/ImcSdk/mometa/generated/GeneratedStorageControllerKeyId.rb +77 -0
- data/lib/ImcSdk/mometa/huu/HuuController.rb +94 -0
- data/lib/ImcSdk/mometa/huu/HuuFirmwareCatalog.rb +100 -0
- data/lib/ImcSdk/mometa/huu/HuuFirmwareCatalogComponent.rb +106 -0
- data/lib/ImcSdk/mometa/huu/HuuFirmwareComponent.rb +154 -0
- data/lib/ImcSdk/mometa/huu/HuuFirmwareRunning.rb +106 -0
- data/lib/ImcSdk/mometa/huu/HuuFirmwareUpdateCancel.rb +95 -0
- data/lib/ImcSdk/mometa/huu/HuuFirmwareUpdateStatus.rb +118 -0
- data/lib/ImcSdk/mometa/huu/HuuFirmwareUpdater.rb +179 -0
- data/lib/ImcSdk/mometa/huu/HuuUpdateComponentStatus.rb +178 -0
- data/lib/ImcSdk/mometa/io/IoExpander.rb +104 -0
- data/lib/ImcSdk/mometa/iod/IodController.rb +94 -0
- data/lib/ImcSdk/mometa/iod/IodSnapshotCancel.rb +101 -0
- data/lib/ImcSdk/mometa/iod/IodSnapshotStart.rb +192 -0
- data/lib/ImcSdk/mometa/iod/IodSnapshotStatus.rb +148 -0
- data/lib/ImcSdk/mometa/ip/IpBlocking.rb +118 -0
- data/lib/ImcSdk/mometa/ip/IpFiltering.rb +128 -0
- data/lib/ImcSdk/mometa/kmip/KmipManagement.rb +95 -0
- data/lib/ImcSdk/mometa/kmip/KmipServer.rb +98 -0
- data/lib/ImcSdk/mometa/kmip/KmipServerLogin.rb +89 -0
- data/lib/ImcSdk/mometa/ldap/LdapCACertificate.rb +107 -0
- data/lib/ImcSdk/mometa/ldap/LdapCACertificateManagement.rb +100 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootBootSecurity.rb +99 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootDef.rb +111 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootDevPrecision.rb +139 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootEfi.rb +107 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootHdd.rb +127 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootIscsi.rb +133 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootLan.rb +116 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootLocalStorage.rb +88 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootNVMe.rb +114 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootPchStorage.rb +120 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootPxe.rb +133 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootSan.rb +133 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootSd.rb +127 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootStorage.rb +107 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootUefiShell.rb +114 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootUsb.rb +124 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootVMedia.rb +138 -0
- data/lib/ImcSdk/mometa/lsboot/LsbootVirtualMedia.rb +108 -0
- data/lib/ImcSdk/mometa/memory/MemoryArray.rb +200 -0
- data/lib/ImcSdk/mometa/memory/MemoryUnit.rb +299 -0
- data/lib/ImcSdk/mometa/memory/MemoryUnitEnvStats.rb +112 -0
- data/lib/ImcSdk/mometa/mgmt/MgmtBackup.rb +172 -0
- data/lib/ImcSdk/mometa/mgmt/MgmtBackupServer.rb +132 -0
- data/lib/ImcSdk/mometa/mgmt/MgmtController.rb +118 -0
- data/lib/ImcSdk/mometa/mgmt/MgmtIf.rb +388 -0
- data/lib/ImcSdk/mometa/mgmt/MgmtImporter.rb +172 -0
- data/lib/ImcSdk/mometa/mgmt/MgmtImporterServer.rb +132 -0
- data/lib/ImcSdk/mometa/mgmt/MgmtInventory.rb +143 -0
- data/lib/ImcSdk/mometa/network/NetworkAdapterEthIf.rb +100 -0
- data/lib/ImcSdk/mometa/network/NetworkAdapterUnit.rb +116 -0
- data/lib/ImcSdk/mometa/one/OneTimeBootDevice.rb +103 -0
- data/lib/ImcSdk/mometa/one/OneTimePrecisionBootDevice.rb +116 -0
- data/lib/ImcSdk/mometa/osi/OsiCancel.rb +101 -0
- data/lib/ImcSdk/mometa/osi/OsiController.rb +94 -0
- data/lib/ImcSdk/mometa/osi/OsiStart.rb +266 -0
- data/lib/ImcSdk/mometa/osi/OsiStatus.rb +148 -0
- data/lib/ImcSdk/mometa/pci/PciEquipSlot.rb +124 -0
- data/lib/ImcSdk/mometa/pid/PidCatalog.rb +100 -0
- data/lib/ImcSdk/mometa/pid/PidCatalogCpu.rb +136 -0
- data/lib/ImcSdk/mometa/pid/PidCatalogDimm.rb +154 -0
- data/lib/ImcSdk/mometa/pid/PidCatalogHdd.rb +130 -0
- data/lib/ImcSdk/mometa/pid/PidCatalogPCIAdapter.rb +130 -0
- data/lib/ImcSdk/mometa/platform/PlatformEventFilters.rb +109 -0
- data/lib/ImcSdk/mometa/power/PowerBudget.rb +146 -0
- data/lib/ImcSdk/mometa/power/PowerMonitor.rb +123 -0
- data/lib/ImcSdk/mometa/processor/ProcessorEnvStats.rb +112 -0
- data/lib/ImcSdk/mometa/processor/ProcessorUnit.rb +213 -0
- data/lib/ImcSdk/mometa/self/SelfEncryptStorageController.rb +98 -0
- data/lib/ImcSdk/mometa/server/ServerUtilization.rb +112 -0
- data/lib/ImcSdk/mometa/sioc/SiocResetReason.rb +77 -0
- data/lib/ImcSdk/mometa/sol/SolIf.rb +128 -0
- data/lib/ImcSdk/mometa/standard/StandardPowerProfile.rb +108 -0
- data/lib/ImcSdk/mometa/storage/StorageController.rb +165 -0
- data/lib/ImcSdk/mometa/storage/StorageControllerHealth.rb +100 -0
- data/lib/ImcSdk/mometa/storage/StorageControllerNVMe.rb +154 -0
- data/lib/ImcSdk/mometa/storage/StorageControllerProps.rb +406 -0
- data/lib/ImcSdk/mometa/storage/StorageControllerSettings.rb +220 -0
- data/lib/ImcSdk/mometa/storage/StorageEnclosure.rb +82 -0
- data/lib/ImcSdk/mometa/storage/StorageEnclosureDisk.rb +149 -0
- data/lib/ImcSdk/mometa/storage/StorageEnclosureDiskFwHelper.rb +108 -0
- data/lib/ImcSdk/mometa/storage/StorageEnclosureDiskSlotEp.rb +85 -0
- data/lib/ImcSdk/mometa/storage/StorageEnclosureDiskSlotZoneHelper.rb +97 -0
- data/lib/ImcSdk/mometa/storage/StorageFlexFlashController.rb +193 -0
- data/lib/ImcSdk/mometa/storage/StorageFlexFlashControllerProps.rb +202 -0
- data/lib/ImcSdk/mometa/storage/StorageFlexFlashOperationalProfile.rb +164 -0
- data/lib/ImcSdk/mometa/storage/StorageFlexFlashPhysicalDrive.rb +256 -0
- data/lib/ImcSdk/mometa/storage/StorageFlexFlashVirtualDrive.rb +152 -0
- data/lib/ImcSdk/mometa/storage/StorageFlexFlashVirtualDriveImageMap.rb +145 -0
- data/lib/ImcSdk/mometa/storage/StorageLocalDisk.rb +247 -0
- data/lib/ImcSdk/mometa/storage/StorageLocalDiskEp.rb +77 -0
- data/lib/ImcSdk/mometa/storage/StorageLocalDiskProps.rb +250 -0
- data/lib/ImcSdk/mometa/storage/StorageLocalDiskSlotEp.rb +146 -0
- data/lib/ImcSdk/mometa/storage/StorageLocalDiskUsage.rb +124 -0
- data/lib/ImcSdk/mometa/storage/StorageOperation.rb +112 -0
- data/lib/ImcSdk/mometa/storage/StorageRaidBattery.rb +252 -0
- data/lib/ImcSdk/mometa/storage/StorageSasExpander.rb +113 -0
- data/lib/ImcSdk/mometa/storage/StorageSasUplink.rb +121 -0
- data/lib/ImcSdk/mometa/storage/StorageUnusedLocalDisk.rb +124 -0
- data/lib/ImcSdk/mometa/storage/StorageVirtualDrive.rb +307 -0
- data/lib/ImcSdk/mometa/storage/StorageVirtualDriveCreatorUsingUnusedPhysicalDrive.rb +223 -0
- data/lib/ImcSdk/mometa/storage/StorageVirtualDriveCreatorUsingVirtualDriveGroup.rb +199 -0
- data/lib/ImcSdk/mometa/storage/StorageVirtualDriveWithDriveGroupSpace.rb +130 -0
- data/lib/ImcSdk/mometa/suggested/SuggestedStorageControllerSecurityKey.rb +77 -0
- data/lib/ImcSdk/mometa/sysdebug/SysdebugMEpLog.rb +122 -0
- data/lib/ImcSdk/mometa/sysdebug/SysdebugTechSupportExport.rb +149 -0
- data/lib/ImcSdk/mometa/system/SystemIOController.rb +81 -0
- data/lib/ImcSdk/mometa/thermal/ThermalPowerProfile.rb +89 -0
- data/lib/ImcSdk/mometa/top/TopRoot.rb +88 -0
- data/lib/ImcSdk/mometa/top/TopSystem.rb +561 -0
- data/lib/ImcSdk/mometa/upload/UploadBiosProfile.rb +129 -0
- data/lib/ImcSdk/mometa/upload/UploadCertificate.rb +136 -0
- data/lib/ImcSdk/mometa/upload/UploadPIDCatalog.rb +129 -0
- data/lib/ImcSdk/version.rb +3 -0
- data/spec/ImcSdk_spec.rb +11 -0
- data/spec/spec_helper.rb +11 -0
- data/test/ImcSdk_bios_test.rb +57 -0
- data/test/ImcSdk_ipmi_test.rb +65 -0
- data/test/ImcSdk_ldap_test.rb +79 -0
- data/test/ImcSdk_ntp_test.rb +88 -0
- data/test/ImcSdk_powerbudget_test.rb +64 -0
- data/test/ImcSdk_remotepresence_test.rb +60 -0
- data/test/ImcSdk_serveractions_test.rb +69 -0
- data/test/ImcSdk_storage_test.rb +60 -0
- data/test/ImcSdk_user_test.rb +98 -0
- data/test/test_helper.rb +21 -0
- metadata +492 -0
@@ -0,0 +1,221 @@
|
|
1
|
+
# Copyright 2017 Cisco Systems, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11
|
+
# See the License for the specific language governing permissions and
|
12
|
+
# limitations under the License.
|
13
|
+
|
14
|
+
$:.unshift(*Dir[::File.expand_path('./../../', File.dirname(__FILE__))])
|
15
|
+
#This module implements apis to create/delete/modify local users
|
16
|
+
|
17
|
+
require "mometa/aaa/AaaUser"
|
18
|
+
require "mometa/aaa/AaaUserPolicy"
|
19
|
+
require "mometa/aaa/AaaUserPasswordExpiration"
|
20
|
+
|
21
|
+
#
|
22
|
+
# This method will enable/disable strong password policy for users.
|
23
|
+
#
|
24
|
+
# @param handle [ImcHandle] ImcHandle class object.
|
25
|
+
# @param enable [TrueClass, FalseClass] setting to true will enable strong password.
|
26
|
+
# @return [AaaUserPolicy] modified AaaUserPolicy object.
|
27
|
+
def set_strong_password(handle:, enable: false)
|
28
|
+
mos = handle.query_classid(class_id: "AaaUserPolicy")
|
29
|
+
user_policy = mos[0]
|
30
|
+
enable ? user_policy.set_prop(:user_password_policy, "enabled") : user_policy.set_prop(:user_password_policy, "disabled")
|
31
|
+
|
32
|
+
handle.set_mo(mo: user_policy)
|
33
|
+
return handle.query_dn(dn: user_policy.dn)
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# This method will check if strong password policy is enabled.
|
38
|
+
#
|
39
|
+
# @param handle [ImcHandle] ImcHandle class object.
|
40
|
+
# @return [TrueClass, FalseClass] true if strong password in enabled.
|
41
|
+
#
|
42
|
+
def is_strong_password_set(handle:)
|
43
|
+
mos = handle.query_classid(class_id: "AaaUserPolicy")
|
44
|
+
if mos.size == 0
|
45
|
+
raise ImcOperationError.new("Check Password Strength", "MO does not exist")
|
46
|
+
end
|
47
|
+
return (mos[0].user_password_policy == "enabled")
|
48
|
+
end
|
49
|
+
|
50
|
+
#
|
51
|
+
# This method sets up the password expiration policy for local users
|
52
|
+
#
|
53
|
+
# @param handle [ImcHandle] ImcHandle class object.
|
54
|
+
# @param password_expiry_duration [Integer] The time period after which the set password expires.
|
55
|
+
# Setting this to zero will disable password expiry.
|
56
|
+
# @param password_history [Integer] Specifies in number of instances,
|
57
|
+
# the new password entered should not have been used in the past.
|
58
|
+
# @param password_notification_period [Integer] Specifies in number of days,
|
59
|
+
# the user will be notified before password expiry.
|
60
|
+
# @param password_grace_period [Integer] Specifies in number of days,
|
61
|
+
# the old password will still be valid after the password expiry
|
62
|
+
# @return [AaaUserPasswordExpiration] Modified AaaUserPasswordExpiration object.
|
63
|
+
def password_expiration_set(handle:,
|
64
|
+
password_expiry_duration:,
|
65
|
+
password_history: 0,
|
66
|
+
password_notification_period: 15,
|
67
|
+
password_grace_period: 0)
|
68
|
+
|
69
|
+
mo = AaaUserPasswordExpiration.new(parent_mo_or_dn: "sys/user-ext")
|
70
|
+
args = {
|
71
|
+
:password_expiry_duration => password_expiry_duration.to_s,
|
72
|
+
:password_history => password_history.to_s,
|
73
|
+
:password_notification_period => password_notification_period.to_s,
|
74
|
+
:password_grace_period => password_grace_period.to_s
|
75
|
+
}
|
76
|
+
mo.set_prop_multiple(**args)
|
77
|
+
handle.set_mo(mo: mo)
|
78
|
+
return handle.query_dn(dn: mo.dn)
|
79
|
+
end
|
80
|
+
|
81
|
+
#
|
82
|
+
# This method will check if the password expiration policy exists
|
83
|
+
#
|
84
|
+
# @param handle [ImcHandle] ImcHandle class object.
|
85
|
+
# @param kwargs [Hash] key-value paired arguments
|
86
|
+
# @return [TrueClass, AaaUserPasswordExpiration] if policy exists.
|
87
|
+
# @return [FalseClass, nil] if policy doesn't exist.
|
88
|
+
def password_expiration_exists(handle:, **kwargs)
|
89
|
+
mo = AaaUserPasswordExpiration.new(parent_mo_or_dn: "sys/user-ext")
|
90
|
+
mo = handle.query_dn(dn: mo.dn)
|
91
|
+
if mo.nil?
|
92
|
+
return false, nil
|
93
|
+
end
|
94
|
+
return mo.check_prop_match(**kwargs), mo
|
95
|
+
end
|
96
|
+
|
97
|
+
#
|
98
|
+
# This method will create a new local user and setup it's role.
|
99
|
+
#
|
100
|
+
# @param handle [ImcHandle] ImcHandle class object.
|
101
|
+
# @param name [String] username of the local user.
|
102
|
+
# @param pwd [String] password for the local user.
|
103
|
+
# @param priv [String] Priviledge of the local user. Values could be "admin", "read-only" or "user".
|
104
|
+
# @return [AaaUser] AaaUser object corresponding to the user created.
|
105
|
+
# @raise [Exception] if limit on the number of users has exceeded.
|
106
|
+
# @example 1
|
107
|
+
# local_user_exists(handle, name, pwd, priv)
|
108
|
+
# @example 2
|
109
|
+
# local_user_exists(handle, name)
|
110
|
+
# @note If the privileges have changed for an existing user, (1) will fail, but (2) will pass in that case.
|
111
|
+
#
|
112
|
+
def local_user_create(handle:, name:, pwd:, priv: "read-only")
|
113
|
+
|
114
|
+
user = _get_local_user(handle, name)
|
115
|
+
if !user.nil?
|
116
|
+
return local_user_modify(handle: handle, name: name, :priv => priv, :account_status => AaaUserConsts::ACCOUNT_STATUS_ACTIVE)
|
117
|
+
end
|
118
|
+
|
119
|
+
available_user_id = _get_free_user_id(handle)
|
120
|
+
|
121
|
+
new_user = AaaUser.new( parent_mo_or_dn: "sys/user-ext", id: available_user_id)
|
122
|
+
args = {:name => name,
|
123
|
+
:pwd => pwd,
|
124
|
+
:priv => priv,
|
125
|
+
:account_status => AaaUserConsts::ACCOUNT_STATUS_ACTIVE}
|
126
|
+
new_user.set_prop_multiple(**args)
|
127
|
+
|
128
|
+
handle.set_mo(mo: new_user)
|
129
|
+
#return new_user
|
130
|
+
return handle.query_dn(dn: new_user.dn)
|
131
|
+
end
|
132
|
+
|
133
|
+
#
|
134
|
+
# This method will modify the user with the username specified
|
135
|
+
#
|
136
|
+
# @param handle [ImcHandle] ImcHandle class object
|
137
|
+
# @param name [String] username of the local user to be modified.
|
138
|
+
# @param kwargs [Hash] key-value paired arguments
|
139
|
+
# @return [AaaUser] AaaUser object corresponding to the user modified.
|
140
|
+
# @raise [Exception] When the user not found.
|
141
|
+
#
|
142
|
+
def local_user_modify(handle:, name:, **kwargs)
|
143
|
+
found_user = _get_local_user(handle, name)
|
144
|
+
if found_user.nil?
|
145
|
+
raise ImcOperationError.new("Modify Local User", "User doesn't exist")
|
146
|
+
end
|
147
|
+
|
148
|
+
found_user.set_prop_multiple(**kwargs)
|
149
|
+
handle.set_mo(mo: found_user)
|
150
|
+
return handle.query_dn(dn: found_user.dn)
|
151
|
+
end
|
152
|
+
|
153
|
+
#
|
154
|
+
# This method deactivates the user referred to by the username passed
|
155
|
+
#
|
156
|
+
# @param handle [ImcHandle] ImcHandle class object.
|
157
|
+
# @param name [String] username of the local user to be deleted.
|
158
|
+
# @return [nil]
|
159
|
+
# @raise [ImcOperationError] if the user is not found.
|
160
|
+
#
|
161
|
+
def local_user_delete(handle:, name:)
|
162
|
+
found_user = _get_local_user(handle, name=name)
|
163
|
+
if found_user.nil?
|
164
|
+
raise ImcOperationError.new("Delete Local User", "User doesn't exist")
|
165
|
+
end
|
166
|
+
|
167
|
+
kwargs = {}
|
168
|
+
kwargs[:admin_action] = AaaUserConsts::ADMIN_ACTION_CLEAR
|
169
|
+
kwargs[:account_status] = AaaUserConsts::ACCOUNT_STATUS_INACTIVE
|
170
|
+
kwargs[:priv] = AaaUserConsts::PRIV_READ_ONLY
|
171
|
+
found_user.set_prop_multiple(**kwargs)
|
172
|
+
|
173
|
+
handle.set_mo(mo: found_user)
|
174
|
+
return handle.query_dn(dn: found_user.dn)
|
175
|
+
end
|
176
|
+
|
177
|
+
#
|
178
|
+
# This method checks if a user exists with attributes passed
|
179
|
+
#
|
180
|
+
# @param handle [ImcHandle] ImcHandle class object.
|
181
|
+
# @param kwargs [Hash] key-value paired arguments used for user attributes
|
182
|
+
# @return [TrueClass, AaaUser] if the user exists with the properties
|
183
|
+
# @return [FalseClass, nil] if the user doen't exist with the properties
|
184
|
+
# @example
|
185
|
+
# local_user_exists(handle: handle, :user => "abc", :priv => "admin")
|
186
|
+
#
|
187
|
+
def local_user_exists(handle: nil, **kwargs)
|
188
|
+
users = _get_local_users(handle)
|
189
|
+
users.each do |user|
|
190
|
+
if user.check_prop_match(**kwargs)
|
191
|
+
return true, user
|
192
|
+
end
|
193
|
+
end
|
194
|
+
return false, nil
|
195
|
+
end
|
196
|
+
|
197
|
+
private
|
198
|
+
def _get_free_user_id(handle)
|
199
|
+
users = _get_local_users(handle)
|
200
|
+
for user in users
|
201
|
+
if user.account_status == AaaUserConsts::ACCOUNT_STATUS_INACTIVE && user.name.to_s.empty?
|
202
|
+
return user.id
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
raise ImcOperationError.new("Create Local User", "Max number of users already configured")
|
207
|
+
end
|
208
|
+
|
209
|
+
def _get_local_users(handle)
|
210
|
+
return handle.query_classid(class_id: "AaaUser")
|
211
|
+
end
|
212
|
+
|
213
|
+
def _get_local_user(handle, name)
|
214
|
+
users = _get_local_users(handle)
|
215
|
+
users.each do |user|
|
216
|
+
if user.name == name
|
217
|
+
return user
|
218
|
+
end
|
219
|
+
end
|
220
|
+
return nil
|
221
|
+
end
|
@@ -0,0 +1,311 @@
|
|
1
|
+
# Copyright 2017 Cisco Systems, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11
|
+
# See the License for the specific language governing permissions and
|
12
|
+
# limitations under the License.
|
13
|
+
|
14
|
+
|
15
|
+
$:.unshift(*Dir[::File.expand_path('./../../', File.dirname(__FILE__))])
|
16
|
+
require "imccoreutils"
|
17
|
+
require "mometa/lsboot/LsbootDevPrecision"
|
18
|
+
require_relative "../utils"
|
19
|
+
|
20
|
+
PRECISION_DEVICE_DICT = {
|
21
|
+
:hdd => {
|
22
|
+
:class_id => "LsbootHdd",
|
23
|
+
:type => "LOCALHDD"
|
24
|
+
},
|
25
|
+
:iscsi => {
|
26
|
+
:class_id => "LsbootIscsi",
|
27
|
+
:type => "ISCSI",
|
28
|
+
:subtype => "ISCSI"
|
29
|
+
},
|
30
|
+
:pchstorage => {
|
31
|
+
:class_id => "LsbootPchStorage",
|
32
|
+
:type => "PCHSTORAGE"
|
33
|
+
},
|
34
|
+
:pxe => {
|
35
|
+
:class_id => "LsbootPxe",
|
36
|
+
:type => "PXE",
|
37
|
+
:subtype => "PXE"
|
38
|
+
},
|
39
|
+
:san => {
|
40
|
+
:class_id => "LsbootSan",
|
41
|
+
:type => "SAN",
|
42
|
+
:subtype => "SAN"
|
43
|
+
},
|
44
|
+
:sdcard => {
|
45
|
+
:class_id => "LsbootSd",
|
46
|
+
:type => "SDCARD",
|
47
|
+
:subtype => "SDCARD"
|
48
|
+
},
|
49
|
+
:uefishell => {
|
50
|
+
:class_id => "LsbootUefiShell",
|
51
|
+
:type => "UEFISHELL"
|
52
|
+
},
|
53
|
+
:usb => {
|
54
|
+
:class_id => "LsbootUsb",
|
55
|
+
:type => "USB"
|
56
|
+
},
|
57
|
+
:vmedia => {
|
58
|
+
:class_id => "LsbootVMedia",
|
59
|
+
:type => "VMEDIA"
|
60
|
+
},
|
61
|
+
:nvme => {
|
62
|
+
:class_id => "LsbootNVMe",
|
63
|
+
:type => "NVME"
|
64
|
+
},
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
POLICY_DEVICE_DICT = {
|
69
|
+
:efi => {:class_id => "LsbootEfi", :access => "read-only"},
|
70
|
+
:lan => {:class_id => "LsbootLan", :access => "read-only"},
|
71
|
+
:storage => {:class_id => "LsbootStorage", :access => "read-write"},
|
72
|
+
:cdrom => {:class_id => "LsbootVirtualMedia", :access => "read-only"},
|
73
|
+
:fdd => {:class_id => "LsbootVirtualMedia", :access => "read-write"}
|
74
|
+
}
|
75
|
+
|
76
|
+
#
|
77
|
+
# This method will set the boot order precision.
|
78
|
+
#
|
79
|
+
# @param handle [ImcHandle] ImcHandle class object
|
80
|
+
# @param reboot_on_update [TrueClass, FalseClass]
|
81
|
+
# @param reapply [TrueClass, FalseClass]
|
82
|
+
# @param configured_boot_mode [String] Configured boot mode, ex. "Legacy", "Uefi", "None"
|
83
|
+
# @param boot_devices [Array<Hash>] format
|
84
|
+
# [{"order" => '1', "device-type" => "vmedia", "name" => "vmedia"},
|
85
|
+
# {"order" => '2', "device-type" => "hdd", "name" => "hdd"}]
|
86
|
+
# boot-order(string): Order
|
87
|
+
# boot-device-type(string): "hdd", "iscsi", "pchstorage", "pxe",
|
88
|
+
# "san", "sdcard", "uefishell", "usb",
|
89
|
+
# "vmedia"
|
90
|
+
# boot-device-name(string): Unique label for the boot device
|
91
|
+
# @param server_id [Integer] Server Id to be specified for C3260 platforms
|
92
|
+
# @return [LsBootDevPrecision]
|
93
|
+
#
|
94
|
+
# @example
|
95
|
+
# boot_order_precision_set(handle: ImcHandle,
|
96
|
+
# reboot_on_update: false,
|
97
|
+
# reapply: false,
|
98
|
+
# configured_boot_mode: "Uefi",
|
99
|
+
# boot_devices: [{"order" => '1', "device-type" => "vmedia", "name" => "vmedia"},
|
100
|
+
# {"order" => '2', "device-type" => "hdd", "name" => "hdd"}]
|
101
|
+
#
|
102
|
+
def boot_order_precision_set(
|
103
|
+
handle:,
|
104
|
+
reboot_on_update: false,
|
105
|
+
reapply: false,
|
106
|
+
configured_boot_mode: "Legacy",
|
107
|
+
boot_devices: Array.new,
|
108
|
+
server_id: 1)
|
109
|
+
|
110
|
+
# Insert version check here to gracefully handle older versions of CIMC
|
111
|
+
|
112
|
+
# IMC expects the devices to be configured in sorted order
|
113
|
+
boot_devices = boot_devices.sort_by { |x| x[:order] }
|
114
|
+
server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
|
115
|
+
lsbootdevprecision_mo = LsbootDevPrecision.new(parent_mo_or_dn: server_dn)
|
116
|
+
args = Hash.new
|
117
|
+
args[:reboot_on_update] = "no"
|
118
|
+
lsbootdevprecision_mo.reboot_on_update = "no"
|
119
|
+
if reboot_on_update
|
120
|
+
args[:reboot_on_update] = "yes"
|
121
|
+
end
|
122
|
+
|
123
|
+
args[:reapply] = "no"
|
124
|
+
if reapply
|
125
|
+
args[:reapply] = "yes"
|
126
|
+
end
|
127
|
+
args[:configured_boot_mode] = configured_boot_mode
|
128
|
+
lsbootdevprecision_mo.set_prop_multiple(**args)
|
129
|
+
#lsbootdevprecision_mo.set_prop(:configured_boot_mode, configured_boot_mode)
|
130
|
+
handle.set_mo(mo: lsbootdevprecision_mo)
|
131
|
+
|
132
|
+
boot_order_child_mos = handle.query_children(in_dn: lsbootdevprecision_mo.dn)
|
133
|
+
for mo in boot_order_child_mos
|
134
|
+
handle.remove_mo(mo: mo)
|
135
|
+
end
|
136
|
+
|
137
|
+
for device in boot_devices
|
138
|
+
_add_boot_device(handle, lsbootdevprecision_mo.dn, device)
|
139
|
+
end
|
140
|
+
|
141
|
+
lsbootdevprecision_mo = handle.query_classid(class_id: "LsbootDevPrecision")
|
142
|
+
return lsbootdevprecision_mo
|
143
|
+
end
|
144
|
+
|
145
|
+
#
|
146
|
+
# Check if boot order precision match
|
147
|
+
#
|
148
|
+
# @param handle [ImcHandle] ImcHandle class object
|
149
|
+
# @param kwargs [Hash]
|
150
|
+
# @return [FalseClass, String, nil] if LsbootDevPrecision mo not found
|
151
|
+
# @return [FalseClass, String, LsbootDevPrecision] if settings do not match
|
152
|
+
# @return [TrueClass, nil, LsbootDevPrecision] if settings match
|
153
|
+
#
|
154
|
+
def boot_order_precision_exists(handle:, **kwargs)
|
155
|
+
|
156
|
+
server_dn = ImcCoreUtils.set_server_dn(handle, kwargs)
|
157
|
+
mos = handle.query_children(in_dn: server_dn,
|
158
|
+
class_id: "LsbootDevPrecision")
|
159
|
+
if mos.size == 0
|
160
|
+
return false, "no Mos found", nil
|
161
|
+
end
|
162
|
+
mo = mos[0]
|
163
|
+
args = {}
|
164
|
+
if _is_valid_arg(:reboot_on_update, kwargs)
|
165
|
+
reboot_on_update = kwargs.fetch(:reboot_on_update)
|
166
|
+
if reboot_on_update.is_a? TrueClass or reboot_on_update.is_a? FalseClass
|
167
|
+
reboot_on_update = reboot_on_update ? "yes" : "no"
|
168
|
+
end
|
169
|
+
args[:reboot_on_update] = reboot_on_update
|
170
|
+
end
|
171
|
+
if _is_valid_arg(:configured_boot_mode, kwargs)
|
172
|
+
args[:configured_boot_mode] = kwargs.fetch(:configured_boot_mode)
|
173
|
+
end
|
174
|
+
#args = {:reboot_on_update => reboot_on_update,
|
175
|
+
# :configured_boot_mode => kwargs.fetch(:configured_boot_mode, 'Uefi')}
|
176
|
+
|
177
|
+
if !mo.check_prop_match(**args)
|
178
|
+
return false, "parent MO property values do not match", mo
|
179
|
+
end
|
180
|
+
|
181
|
+
if _is_valid_arg(:boot_devices, kwargs)
|
182
|
+
in_boot_order = kwargs[:boot_devices].sort_by { |x| x[:order]}
|
183
|
+
configured_boot_order = boot_precision_configured_get(
|
184
|
+
handle: handle, server_id: kwargs.fetch(:server_id, 1))
|
185
|
+
|
186
|
+
if in_boot_order.size != configured_boot_order.size
|
187
|
+
return false, "length mismatch", mo
|
188
|
+
end
|
189
|
+
|
190
|
+
for i in (0..in_boot_order.size-1)
|
191
|
+
if !(in_boot_order[i][:order] == configured_boot_order[i][:order] and
|
192
|
+
in_boot_order[i][:'device-type'] == configured_boot_order[i][:'device-type'] and
|
193
|
+
in_boot_order[i][:name] == configured_boot_order[i][:name])
|
194
|
+
return false, "dictionaries do not match", mo
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
return true, nil, mo
|
199
|
+
end
|
200
|
+
|
201
|
+
#
|
202
|
+
# Get the configured boot precision settings
|
203
|
+
#
|
204
|
+
# @param handle [ImcHandle] ImcHandle class object
|
205
|
+
# @param server_id [Integer] Server Id to be specified for C3260 platforms
|
206
|
+
# @return [Array<Hash>]
|
207
|
+
def boot_precision_configured_get(handle:, server_id: 1)
|
208
|
+
|
209
|
+
configured_boot_order = []
|
210
|
+
class_to_name_dict = {}
|
211
|
+
PRECISION_DEVICE_DICT.each do |key, value|
|
212
|
+
classname = value[:class_id]
|
213
|
+
class_to_name_dict[classname.to_sym] = key
|
214
|
+
end
|
215
|
+
|
216
|
+
server_dn = ImcCoreUtils.get_server_dn(handle, server_id)
|
217
|
+
pmo = LsbootDevPrecision.new(parent_mo_or_dn: server_dn)
|
218
|
+
mos = handle.query_children(in_dn: pmo.dn)
|
219
|
+
for mo in mos
|
220
|
+
#class_id = mo.instance_variable_get("@class_id")
|
221
|
+
device = {:order => mo.order,
|
222
|
+
:'device-type' => class_to_name_dict[mo.instance_variable_get("@class_id").to_sym].to_s,
|
223
|
+
:name => mo.name}
|
224
|
+
configured_boot_order.push(device)
|
225
|
+
end
|
226
|
+
return configured_boot_order.sort_by {|x| x[:order]}
|
227
|
+
end
|
228
|
+
|
229
|
+
private
|
230
|
+
|
231
|
+
def _add_boot_device(handle, parent_dn, boot_device)
|
232
|
+
=begin
|
233
|
+
This method verifies and adds the boot device in the boot order
|
234
|
+
Used by boot_order_precision_set and boot_order_policy_set
|
235
|
+
Args:
|
236
|
+
handle(ImcHandle)
|
237
|
+
boot_device(dict): This is a dictionary of the format
|
238
|
+
{"order" => '1', "device-type" => "vmedia", "name" => "vmedia"}
|
239
|
+
Returns:
|
240
|
+
None
|
241
|
+
=end
|
242
|
+
|
243
|
+
device = _get_device(parent_dn,
|
244
|
+
boot_device[:'device-type'],
|
245
|
+
boot_device[:name])
|
246
|
+
if device.nil?
|
247
|
+
raise ValueError.new("Unsupported boot-device #{boot_device["device-type"]} with label #{boot_device["name"]}")
|
248
|
+
end
|
249
|
+
|
250
|
+
device.order = boot_device[:order]
|
251
|
+
device_props = {}
|
252
|
+
#for key, value in boot_device.iteritems()
|
253
|
+
boot_device.each do |key, value|
|
254
|
+
if !(["order", "device-type", "name"].include? key.to_s)
|
255
|
+
device_props[key.to_sym] = value
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
device.set_prop_multiple(**device_props)
|
260
|
+
if device.instance_variable_defined? ("@state")
|
261
|
+
device.set_prop(:state, "enabled")
|
262
|
+
end
|
263
|
+
handle.add_mo(mo: device, modify_present: true)
|
264
|
+
end
|
265
|
+
|
266
|
+
def _get_device(parent_dn, device_type, device_name)
|
267
|
+
|
268
|
+
if _is_boot_order_precision(parent_dn)
|
269
|
+
if !(PRECISION_DEVICE_DICT.has_key? (device_type.to_sym))
|
270
|
+
return nil
|
271
|
+
end
|
272
|
+
|
273
|
+
mo_class = ImcCoreUtils.load_class(PRECISION_DEVICE_DICT[device_type.to_sym][:class_id].to_s)
|
274
|
+
mo_class_param_hash = {}
|
275
|
+
mo_class.prop_map.each do |key, value|
|
276
|
+
mo_class_param_hash[:value] = nil
|
277
|
+
end
|
278
|
+
class_obj = mo_class.new(parent_mo_or_dn: parent_dn, :name => device_name)
|
279
|
+
if PRECISION_DEVICE_DICT[device_type.to_sym].has_key? "type".to_sym
|
280
|
+
class_obj.set_prop(:type, PRECISION_DEVICE_DICT[device_type.to_sym][:type] )
|
281
|
+
end
|
282
|
+
if PRECISION_DEVICE_DICT[device_type.to_sym].has_key? "subtype".to_sym
|
283
|
+
class_obj.set_prop(:subtype, PRECISION_DEVICE_DICT[device_type.to_sym][:subtype])
|
284
|
+
end
|
285
|
+
elsif _is_boot_order_policy(parent_dn)
|
286
|
+
if !(POLICY_DEVICE_DICT.has_key? device_type.to_sym)
|
287
|
+
return nil
|
288
|
+
end
|
289
|
+
|
290
|
+
mo_class = ImcCoreUtils.load_class(POLICY_DEVICE_DICT[device_type.to_sym][:class_id].to_s)
|
291
|
+
access = POLICY_DEVICE_DICT[device_type.to_sym][:access]
|
292
|
+
|
293
|
+
#cdrom and fdd are of type LsbootVirtualMedia and have "access" as the
|
294
|
+
#naming property. Other objects under LsbootDef do not need this.
|
295
|
+
#Hence cdrom and fdd need special handling below.
|
296
|
+
|
297
|
+
if ["cdrom", "fdd"].include?(device_type)
|
298
|
+
class_obj = mo_class.new(parent_mo_or_dn: parent_dn, access: access)
|
299
|
+
else
|
300
|
+
class_obj = mo_class.new(parent_mo_or_dn: parent_dn)
|
301
|
+
class_obj.set_prop(:access, access)
|
302
|
+
end
|
303
|
+
else
|
304
|
+
return nil
|
305
|
+
end
|
306
|
+
return class_obj
|
307
|
+
end
|
308
|
+
|
309
|
+
def _is_boot_order_precision(dn)
|
310
|
+
return dn.include?("precision")
|
311
|
+
end
|