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,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
|