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,182 @@
|
|
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 Classes
|
15
|
+
|
16
|
+
require_relative 'imccore'
|
17
|
+
require_relative 'imccoreutils'
|
18
|
+
|
19
|
+
|
20
|
+
class ExternalMethod < ImcBase
|
21
|
+
|
22
|
+
@@external_method_attrs = { "errorCode" => "error_code",
|
23
|
+
"errorDescr" => "error_descr",
|
24
|
+
"invocationResult" => "invocation_result",
|
25
|
+
"response" => "response"}
|
26
|
+
|
27
|
+
attr_accessor :error_code
|
28
|
+
attr_accessor :error_descr
|
29
|
+
|
30
|
+
def initialize(method_id)
|
31
|
+
super(method_id)
|
32
|
+
meta = File.dirname(__FILE__) + "/methodmeta/" + method_id + "Meta.rb"
|
33
|
+
load meta
|
34
|
+
@error_code = 0
|
35
|
+
@error_descr = nil
|
36
|
+
@invocation_result = nil
|
37
|
+
@response = nil
|
38
|
+
self.mark_clean()
|
39
|
+
end
|
40
|
+
|
41
|
+
def set_property(prop,value)
|
42
|
+
self.instance_variable_set("@" + prop, value)
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_property(prop)
|
46
|
+
if self.instance_variable_defined?("@" + prop)
|
47
|
+
return self.instance_variable_get("@" + prop)
|
48
|
+
else
|
49
|
+
return nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def child_add(mo)
|
54
|
+
#This method adds child external method object to a external method object.
|
55
|
+
childs.push(mo)
|
56
|
+
end
|
57
|
+
|
58
|
+
def set_attr(key, value)
|
59
|
+
#This method sets the attribute of external method object
|
60
|
+
if @@method_prop_meta.include?(key)
|
61
|
+
set_property(key, value)
|
62
|
+
elsif key.equal?("error_code")
|
63
|
+
@error_code = value
|
64
|
+
elsif key.equal?("error_descr")
|
65
|
+
@error_descr = value
|
66
|
+
elsif key.equal?("invocation_result")
|
67
|
+
@invocation_result = value
|
68
|
+
elsif key.equal?("response")
|
69
|
+
@response = value
|
70
|
+
else
|
71
|
+
#no such property
|
72
|
+
return nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def get_error_response(error_code, error_descr)
|
77
|
+
# This methos sets error attributes of an external method object.
|
78
|
+
|
79
|
+
@error_code = error_code
|
80
|
+
@error_descr = error_descr
|
81
|
+
@response = "yes"
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
def to_xml(xml_doc=nil, option=nil, elem_name=nil)
|
86
|
+
# This method writes the xml representation of the external method object.
|
87
|
+
cookie = nil
|
88
|
+
if self.instance_variable_defined?("@cookie")
|
89
|
+
cookie = self.get_property("cookie")
|
90
|
+
end
|
91
|
+
xml_obj = elem_create(@@method_meta.xml_attribute, xml_doc, elem_name)
|
92
|
+
|
93
|
+
@@method_prop_meta.each do |prop, prop_meta|
|
94
|
+
if xml_obj.name == "aaaLogout" and prop == "in_delay_secs" and get_property(prop).to_i > 300
|
95
|
+
next
|
96
|
+
end
|
97
|
+
|
98
|
+
if prop_meta.inp_out == "Output"
|
99
|
+
next
|
100
|
+
end
|
101
|
+
|
102
|
+
if prop_meta.is_complex_type
|
103
|
+
if !get_property(prop).nil?
|
104
|
+
#x = get_property(prop)
|
105
|
+
get_property(prop).to_xml(xml_obj, option, prop_meta.xml_attribute, cookie=cookie)
|
106
|
+
end
|
107
|
+
elsif
|
108
|
+
key = prop_meta.xml_attribute
|
109
|
+
value = get_property(prop)
|
110
|
+
xml_obj.add_attribute(key, value)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
child_to_xml(xml_obj, option, cookie=cookie)
|
114
|
+
return xml_obj
|
115
|
+
end
|
116
|
+
|
117
|
+
def from_xml(elem, handle=nil)
|
118
|
+
# This method updates/fills the object from xml representation of the External method object.
|
119
|
+
|
120
|
+
if elem.attributes
|
121
|
+
elem.attributes.each do |attr_name, attr_value|
|
122
|
+
if @@method_prop_map.include? attr_name
|
123
|
+
attr1 = @@method_prop_map[attr_name]
|
124
|
+
method_prop_meta = @@method_prop_meta[attr1]
|
125
|
+
if method_prop_meta.inp_out.equal? "Input" or method_prop_meta.is_complex_type
|
126
|
+
pass
|
127
|
+
end
|
128
|
+
set_attr(attr1, attr_value)
|
129
|
+
elsif @@external_method_attrs.include? attr_name
|
130
|
+
set_attr @@external_method_attrs[attr_name], attr_value
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
if elem.children
|
136
|
+
for child_elem in elem.children do
|
137
|
+
if !child_elem.instance_variable_defined?(:@name)
|
138
|
+
next
|
139
|
+
end
|
140
|
+
child_name = child_elem.name
|
141
|
+
|
142
|
+
if @@method_prop_map.include? child_name
|
143
|
+
child_name = @@method_prop_map[child_name]
|
144
|
+
method_prop_meta = @@method_prop_meta[child_name]
|
145
|
+
if method_prop_meta.inp_out == "Output" and method_prop_meta.is_complex_type
|
146
|
+
child_obj = ImcCoreUtils.get_imc_obj(method_prop_meta.field_type, child_elem, nil)
|
147
|
+
if !child_obj.nil?
|
148
|
+
set_attr(child_name, child_obj)
|
149
|
+
child_obj.from_xml(child_elem, handle)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
def get_outconfig_child()
|
157
|
+
if self.instance_variable_defined?(:@out_config)
|
158
|
+
return self.instance_variable_get(:@out_config).instance_variable_get(:@child)
|
159
|
+
elsif self.instance_variable_defined?(:@out_configs)
|
160
|
+
return self.instance_variable_get(:@out_configs).instance_variable_get(:@child)
|
161
|
+
else
|
162
|
+
return Array.new
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def is_outconfig_available()
|
167
|
+
if self.instance_variable_defined?(:@out_config) or self.instance_variable_defined?(:@out_configs)
|
168
|
+
return true
|
169
|
+
else
|
170
|
+
false
|
171
|
+
end
|
172
|
+
end
|
173
|
+
=begin
|
174
|
+
private
|
175
|
+
def to_s()
|
176
|
+
|
177
|
+
#TBD implementation
|
178
|
+
end
|
179
|
+
=end
|
180
|
+
|
181
|
+
|
182
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
# Copyright 2015 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
|
+
#This is an auto-generated module.
|
16
|
+
#It contains supporting classes for External Method.
|
17
|
+
|
18
|
+
|
19
|
+
require_relative 'imcmethod'
|
20
|
+
require_relative 'imccoremeta'
|
21
|
+
require_relative 'imcconstants'
|
22
|
+
|
23
|
+
|
24
|
+
def aaa_get_compute_auth_tokens(cookie)
|
25
|
+
# Auto-generated IMC XML API Method.
|
26
|
+
method = ExternalMethod.new("AaaGetComputeAuthTokens")
|
27
|
+
|
28
|
+
method.set_property("cookie",cookie)
|
29
|
+
|
30
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
31
|
+
return xml_request
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
def aaa_keep_alive(cookie)
|
36
|
+
# Auto-generated IMC XML API Method.
|
37
|
+
method = ExternalMethod.new("AaaKeepAlive")
|
38
|
+
|
39
|
+
method.set_property("cookie",cookie)
|
40
|
+
|
41
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
42
|
+
return xml_request
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
def aaa_login(in_name, in_password)
|
47
|
+
# Auto-generated IMC XML API Method.
|
48
|
+
method = ExternalMethod.new("AaaLogin")
|
49
|
+
|
50
|
+
method.set_property("in_name",in_name)
|
51
|
+
method.set_property("in_password",in_password)
|
52
|
+
|
53
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
54
|
+
return xml_request
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
def aaa_logout(in_cookie)
|
59
|
+
# Auto-generated IMC XML API Method.
|
60
|
+
method = ExternalMethod.new("AaaLogout")
|
61
|
+
|
62
|
+
method.set_property("in_cookie",in_cookie)
|
63
|
+
|
64
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
65
|
+
return xml_request
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
def aaa_refresh(in_cookie, in_name, in_password)
|
70
|
+
# Auto-generated IMC XML API Method.
|
71
|
+
method = ExternalMethod.new("AaaRefresh")
|
72
|
+
|
73
|
+
method.set_property("in_cookie",in_cookie)
|
74
|
+
method.set_property("in_name",in_name)
|
75
|
+
method.set_property("in_password",in_password)
|
76
|
+
|
77
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
78
|
+
return xml_request
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
def config_conf_mo(cookie, dn, in_config, in_hierarchical=YesOrNo.FALSE)
|
83
|
+
# Auto-generated IMC XML API Method.
|
84
|
+
method = ExternalMethod.new("ConfigConfMo")
|
85
|
+
|
86
|
+
method.set_property("cookie",cookie)
|
87
|
+
method.set_property("dn",dn)
|
88
|
+
method.set_property("in_config",in_config)
|
89
|
+
method.set_property("in_hierarchical", (ImcGenUtils::AFFIRMATIVE_LIST.include? in_hierarchical) ? true : false)
|
90
|
+
|
91
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
92
|
+
return xml_request
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
def config_conf_mos(cookie, in_configs, in_hierarchical=YesOrNo.FALSE)
|
97
|
+
# Auto-generated IMC XML API Method.
|
98
|
+
method = ExternalMethod.new("ConfigConfMos")
|
99
|
+
|
100
|
+
method.set_property("cookie",cookie)
|
101
|
+
method.set_property("in_configs",in_configs)
|
102
|
+
method.set_property("in_hierarchical", (ImcGenUtils::AFFIRMATIVE_LIST.include? in_hierarchical) ? true : false)
|
103
|
+
|
104
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
105
|
+
return xml_request
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
def config_resolve_children(cookie, class_id, in_dn, in_hierarchical=YesOrNo.FALSE)
|
110
|
+
# Auto-generated IMC XML API Method.
|
111
|
+
method = ExternalMethod.new("ConfigResolveChildren")
|
112
|
+
|
113
|
+
meta_class_id = ImcCoreUtils.find_class_id_in_mo_meta_ignore_case(class_id)
|
114
|
+
if !meta_class_id.nil?
|
115
|
+
class_id = ImcGenUtils.word_l(meta_class_id)
|
116
|
+
end
|
117
|
+
method.set_property("class_id",class_id)
|
118
|
+
method.set_property("cookie",cookie)
|
119
|
+
method.set_property("in_dn",in_dn)
|
120
|
+
method.set_property("in_hierarchical", (ImcGenUtils::AFFIRMATIVE_LIST.include? in_hierarchical) ? true : false)
|
121
|
+
|
122
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
123
|
+
return xml_request
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
def config_resolve_class(cookie, class_id, in_hierarchical=YesOrNo.FALSE)
|
128
|
+
# Auto-generated IMC XML API Method.
|
129
|
+
method = ExternalMethod.new("ConfigResolveClass")
|
130
|
+
|
131
|
+
meta_class_id = ImcCoreUtils.find_class_id_in_mo_meta_ignore_case(class_id)
|
132
|
+
if !meta_class_id.nil?
|
133
|
+
class_id = ImcGenUtils.word_l(meta_class_id)
|
134
|
+
end
|
135
|
+
method.set_property("class_id",class_id)
|
136
|
+
method.set_property("cookie",cookie)
|
137
|
+
method.set_property("in_hierarchical", (ImcGenUtils::AFFIRMATIVE_LIST.include? in_hierarchical) ? true : false)
|
138
|
+
|
139
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
140
|
+
return xml_request
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
def config_resolve_dn(cookie, dn, in_hierarchical=YesOrNo.FALSE)
|
145
|
+
# Auto-generated IMC XML API Method.
|
146
|
+
method = ExternalMethod.new("ConfigResolveDn")
|
147
|
+
|
148
|
+
method.set_property("cookie",cookie)
|
149
|
+
method.set_property("dn",dn)
|
150
|
+
method.set_property("in_hierarchical", (ImcGenUtils::AFFIRMATIVE_LIST.include? in_hierarchical) ? true : false)
|
151
|
+
|
152
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
153
|
+
return xml_request
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
def config_resolve_parent(cookie, dn, in_hierarchical=YesOrNo.FALSE)
|
158
|
+
# Auto-generated IMC XML API Method.
|
159
|
+
method = ExternalMethod.new("ConfigResolveParent")
|
160
|
+
|
161
|
+
method.set_property("cookie",cookie)
|
162
|
+
method.set_property("dn",dn)
|
163
|
+
method.set_property("in_hierarchical", (ImcGenUtils::AFFIRMATIVE_LIST.include? in_hierarchical) ? true : false)
|
164
|
+
|
165
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
166
|
+
return xml_request
|
167
|
+
|
168
|
+
end
|
169
|
+
|
170
|
+
def event_subscribe(cookie)
|
171
|
+
# Auto-generated IMC XML API Method.
|
172
|
+
method = ExternalMethod.new("EventSubscribe")
|
173
|
+
|
174
|
+
method.set_property("cookie",cookie)
|
175
|
+
|
176
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
177
|
+
return xml_request
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
def event_unsubscribe(cookie)
|
182
|
+
# Auto-generated IMC XML API Method.
|
183
|
+
method = ExternalMethod.new("EventUnsubscribe")
|
184
|
+
|
185
|
+
method.set_property("cookie",cookie)
|
186
|
+
|
187
|
+
xml_request = method.to_xml(nil, WriteXmlOption::DIRTY, nil)
|
188
|
+
return xml_request
|
189
|
+
|
190
|
+
end
|
data/lib/ImcSdk/imcmo.rb
ADDED
@@ -0,0 +1,669 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
# Copyright 2017 Cisco Systems, Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
# This module contains the Managed Object and Generic Managed Object class
|
16
|
+
|
17
|
+
require_relative 'imcgenutils'
|
18
|
+
require_relative 'imccoreutils'
|
19
|
+
require_relative 'imccoremeta'
|
20
|
+
require_relative 'imcxmlcodec'
|
21
|
+
|
22
|
+
private
|
23
|
+
class GenericProp
|
24
|
+
|
25
|
+
attr_accessor :name
|
26
|
+
attr_accessor :value
|
27
|
+
attr_accessor :is_dirty
|
28
|
+
|
29
|
+
#Internal class to handle the unknown property
|
30
|
+
def initialize(name, value, is_dirty)
|
31
|
+
@name = name
|
32
|
+
@value = value
|
33
|
+
@is_dirty = is_dirty
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class ManagedObject < ImcBase
|
38
|
+
|
39
|
+
# This class structures/represents all the managed objects.
|
40
|
+
|
41
|
+
attr_reader :parent_mo
|
42
|
+
attr_reader :parent_dn
|
43
|
+
attr_reader :dn
|
44
|
+
attr_reader :mo_class
|
45
|
+
DUMMY_DIRTY = "0x1L"
|
46
|
+
|
47
|
+
@@internal_prop = ["dirty_mask", "class_id", "child", "handle",'']
|
48
|
+
@@internal_prop.freeze
|
49
|
+
def initialize(class_id: nil, parent_mo_or_dn: nil, from_xml_response: false, **kwargs)
|
50
|
+
|
51
|
+
@parent_mo = nil
|
52
|
+
@status = nil
|
53
|
+
@parent_dn = nil
|
54
|
+
@xtra_props = {}
|
55
|
+
@xtra_props_dirty_mask = 0x1
|
56
|
+
@mo_class = Object.const_get(self.class.name)
|
57
|
+
|
58
|
+
if parent_mo_or_dn
|
59
|
+
if parent_mo_or_dn.is_a? ManagedObject
|
60
|
+
@parent_mo = parent_mo_or_dn
|
61
|
+
@parent_dn = @parent_mo.dn
|
62
|
+
elsif parent_mo_or_dn.is_a? String
|
63
|
+
@parent_dn = parent_mo_or_dn
|
64
|
+
else
|
65
|
+
raise ValueError.new('parent mo or dn must be specified')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
if !from_xml_response
|
70
|
+
rn_set()
|
71
|
+
dn_set()
|
72
|
+
end
|
73
|
+
|
74
|
+
mo_meta = ImcCoreUtils.get_mo_meta(@mo_class)
|
75
|
+
xml_attribute = mo_meta.xml_attribute
|
76
|
+
|
77
|
+
super(ImcGenUtils.word_u(xml_attribute))
|
78
|
+
|
79
|
+
if @parent_mo
|
80
|
+
@parent_mo.child_add(self)
|
81
|
+
end
|
82
|
+
|
83
|
+
if kwargs
|
84
|
+
kwargs.each do |prop_name, prop_value|
|
85
|
+
if ImcCoreUtils.prop_exists(@mo_class, prop_name.to_s)
|
86
|
+
set_prop(prop_name, prop_value)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def mark_dirty()
|
93
|
+
#Method to mark the managed object dirty
|
94
|
+
if self.class.name.equal? "ManagedObject" and !self.is_dirty()
|
95
|
+
self.dirty_mask = ManagedObject.DUMMY_DIRTY
|
96
|
+
elsif instance_variable_defined?("mo_meta")
|
97
|
+
self.dirty_mask = self.mo_meta.mask
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
def is_dirty()
|
103
|
+
#This method checks if managed object is dirty
|
104
|
+
condition1 = @dirty_mask.to_i.equal? 0
|
105
|
+
condition2 = child_is_dirty()
|
106
|
+
return !condition1 || condition2
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
def make_rn()
|
111
|
+
#This method returns the Rb for a managed Object
|
112
|
+
|
113
|
+
mo_meta = ImcCoreUtils.get_mo_meta(self.mo_class)
|
114
|
+
rn_pattern = mo_meta.rn
|
115
|
+
rn_pattern.scan(/\[([^\]]*)\]/) do |prop|
|
116
|
+
prop_name = prop[0]
|
117
|
+
|
118
|
+
if ImcCoreUtils.prop_exists(@mo_class, prop_name)
|
119
|
+
prop_value = self.instance_variable_get("@" + prop_name)
|
120
|
+
|
121
|
+
if prop_value
|
122
|
+
rn_pattern = rn_pattern.gsub(/\[#{prop_name}\]/, prop_value)
|
123
|
+
else
|
124
|
+
raise ImcValidationException("Property #{prop} was None in make_rn")
|
125
|
+
end
|
126
|
+
|
127
|
+
else
|
128
|
+
#log.debug('Property "%s" was not found in make_rn arguments' % prop)
|
129
|
+
raise ImcValidationException("Property #{prop} was not found in make_rn arguments")
|
130
|
+
end
|
131
|
+
end
|
132
|
+
return rn_pattern
|
133
|
+
end
|
134
|
+
|
135
|
+
def to_xml(xml_doc=nil, option=nil, elem_name=nil, cookie=nil)
|
136
|
+
#Method writes the xml representation of the Managed Object
|
137
|
+
|
138
|
+
#unknown_properties = []
|
139
|
+
|
140
|
+
if option == WriteXmlOption::DIRTY and !is_dirty()
|
141
|
+
return
|
142
|
+
end
|
143
|
+
|
144
|
+
platform = nil
|
145
|
+
handle = nil
|
146
|
+
|
147
|
+
if cookie
|
148
|
+
handle = ImcCoreUtils.get_handle_from_cookie(cookie)
|
149
|
+
|
150
|
+
if handle
|
151
|
+
platform = handle.platform
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
156
|
+
mo_meta = ImcCoreUtils.get_mo_meta(self.mo_class)
|
157
|
+
xml_attribute = mo_meta.xml_attribute
|
158
|
+
xml_obj = elem_create(xml_attribute, xml_doc=xml_doc, elem_name)
|
159
|
+
|
160
|
+
self.instance_variables.each do |key|
|
161
|
+
key_str = key.to_s
|
162
|
+
key_str[0] = ''
|
163
|
+
#hash = self.class.prop_meta
|
164
|
+
if key_str != "rn" and ImcCoreUtils.prop_exists(
|
165
|
+
self.mo_class,
|
166
|
+
key_str,
|
167
|
+
platform=platform)
|
168
|
+
mo_prop_meta = ImcCoreUtils.get_prop_meta(self.mo_class, key_str, platform=platform)
|
169
|
+
|
170
|
+
if option != WriteXmlOption::DIRTY or (!mo_prop_meta.mask.nil? and (self.dirty_mask & mo_prop_meta.mask !=0))
|
171
|
+
value = instance_variable_get(key)
|
172
|
+
if !value.nil?
|
173
|
+
if handle
|
174
|
+
if(mo_prop_meta.version.le(handle.version))
|
175
|
+
xml_obj.add_attribute(mo_prop_meta.xml_attribute, value)
|
176
|
+
end
|
177
|
+
else
|
178
|
+
xml_obj.add_attribute(mo_prop_meta.xml_attribute, value)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
else
|
184
|
+
|
185
|
+
if !@xtra_props.has_key? key
|
186
|
+
#This is an internal property
|
187
|
+
#This should not be a part of the xml
|
188
|
+
next
|
189
|
+
end
|
190
|
+
|
191
|
+
if option != WriteXmlOption.DIRTY or xtra_props[key].is_dirty
|
192
|
+
value = xtra_props[key].value
|
193
|
+
if !value.nil?
|
194
|
+
xml_obj.add_attribute(key, value)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
if !xml_obj.attributes.include?("dn")
|
202
|
+
xml_obj.add_attribute('dn', self.instance_variable_get(:@dn))
|
203
|
+
end
|
204
|
+
|
205
|
+
child_to_xml(xml_obj, option)
|
206
|
+
return xml_obj
|
207
|
+
end
|
208
|
+
|
209
|
+
def check_prop_match(**kwargs)
|
210
|
+
kwargs.each do |prop_name, prop_value|
|
211
|
+
#prop_name_s = prop_name.to_s
|
212
|
+
if prop_value.nil?
|
213
|
+
next
|
214
|
+
end
|
215
|
+
if !ImcCoreUtils.prop_exists(self.mo_class, prop_name.to_s)
|
216
|
+
raise ValueError.new("Invalid Property Name Exception - Prop #{prop_name}")
|
217
|
+
end
|
218
|
+
if prop_value != self.instance_variable_get("@" + prop_name.to_s)
|
219
|
+
return false
|
220
|
+
end
|
221
|
+
end
|
222
|
+
return true
|
223
|
+
end
|
224
|
+
|
225
|
+
def set_prop_multiple(**kwargs)
|
226
|
+
kwargs.each do |prop_name, prop_value|
|
227
|
+
if ImcCoreUtils.prop_exists(self.mo_class, prop_name)
|
228
|
+
set_prop(prop_name.to_s, prop_value)
|
229
|
+
else
|
230
|
+
ImcWarning("Invalid Property Name for Class [#{self.class.to_s}]: Prop <#{prop_name.to_s}>, setting it forcefully")
|
231
|
+
set_prop(prop_name.to_s, prop_value, forced: true)
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
def from_xml(elem, handle=nil)
|
237
|
+
# Method updates the object from the xml representation of the managed object.
|
238
|
+
|
239
|
+
@handle = handle
|
240
|
+
if elem.attributes
|
241
|
+
if !self.class.name.equal? "ManagedObject"
|
242
|
+
elem.attributes.each do |attr_name, attr_value|
|
243
|
+
if ImcCoreUtils.property_exists_in_prop_map(self.mo_class, attr_name)
|
244
|
+
attr_name = ImcCoreUtils.get_property_from_prop_map(self.mo_class, attr_name)
|
245
|
+
else
|
246
|
+
@xtra_props[attr_name.to_sym] = GenericProp.new(attr_name, attr_value, false)
|
247
|
+
end
|
248
|
+
self.instance_variable_set("@" + attr_name, attr_value)
|
249
|
+
end
|
250
|
+
else
|
251
|
+
elem.attributes.each do |attr_name, attr_value|
|
252
|
+
self.instance_variable_set("@" + attr_name, attr_value)
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
|
258
|
+
if elem.children
|
259
|
+
elem.children.each do |child_elem|
|
260
|
+
if !child_elem.is_a? Element
|
261
|
+
next
|
262
|
+
end
|
263
|
+
if !self.class.name.equal? "ManagedObject" and ImcCoreUtils.get_mo_meta(self.mo_class).field_names.include? child_elem.name
|
264
|
+
next
|
265
|
+
end
|
266
|
+
|
267
|
+
class_id = ImcGenUtils.word_u(child_elem.name)
|
268
|
+
child_obj = ImcCoreUtils.get_imc_obj(class_id, child_elem, nil)
|
269
|
+
|
270
|
+
child_obj.from_xml(child_elem, handle)
|
271
|
+
self.child_add(child_obj)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
def get_version(platform)
|
277
|
+
=begin
|
278
|
+
Method to get the IMC version from which this MO is supported
|
279
|
+
=end
|
280
|
+
mo_meta = ImcCoreUtils.get_mo_meta(self, platform)
|
281
|
+
return mo_meta.version
|
282
|
+
end
|
283
|
+
|
284
|
+
def sync_mo(mo)
|
285
|
+
#Method to return string representation of a managed object.
|
286
|
+
#TBD
|
287
|
+
end
|
288
|
+
|
289
|
+
def show_tree(level=0)
|
290
|
+
#Method to return string representation of a managed object.
|
291
|
+
end
|
292
|
+
|
293
|
+
def show_hierarchy(level=0, depth=nil, show_level=[])
|
294
|
+
#Method to print hierarchy
|
295
|
+
end
|
296
|
+
|
297
|
+
def set_prop(name, value, mark_dirty: true, forced: false)
|
298
|
+
=begin
|
299
|
+
Internal method to set the properties after validation
|
300
|
+
|
301
|
+
Args:
|
302
|
+
name (str): property name
|
303
|
+
value (str): property value
|
304
|
+
mark_dirty (bool): if True, property will be part of xml request
|
305
|
+
forced (bool): if True, set the value without validation
|
306
|
+
|
307
|
+
Returns:
|
308
|
+
None
|
309
|
+
=end
|
310
|
+
|
311
|
+
if value.nil?
|
312
|
+
return
|
313
|
+
end
|
314
|
+
if !forced
|
315
|
+
#prop_meta = @mo_class.prop_meta[name.to_s]
|
316
|
+
prop_meta = ImcCoreUtils.get_prop_meta(self.mo_class, name.to_s)
|
317
|
+
#if prop_meta.access != MoPropertyMeta::READ_WRITE
|
318
|
+
if !ImcCoreUtils.is_writable_prop(self.mo_class, name.to_s)
|
319
|
+
if self.instance_variable_defined?("@" + name) and prop_meta.access != MoPropertyMeta::CREATE_ONLY
|
320
|
+
raise ValueError.new("#{name} is not a read-write property.")
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
if !prop_meta.validate_property_value(value)
|
325
|
+
raise ValueError.new("Invalid Value Exception - #{self.class.name}: Prop <#{name}>, Value <#{value}> ")
|
326
|
+
end
|
327
|
+
|
328
|
+
if prop_meta.mask and mark_dirty
|
329
|
+
@dirty_mask |= prop_meta.mask
|
330
|
+
end
|
331
|
+
end
|
332
|
+
self.instance_variable_set("@" + name.to_s, value)
|
333
|
+
end
|
334
|
+
|
335
|
+
|
336
|
+
private
|
337
|
+
|
338
|
+
def setattr(name, value)
|
339
|
+
|
340
|
+
if self.instance_variable_defined? "prop_meta" and \
|
341
|
+
ImcCoreUtils.prop_exists(self, name)
|
342
|
+
|
343
|
+
if ImcCoreUtils.prop_exists(self.mo_class, name)
|
344
|
+
if self.instance_variable_defined?("@" + name)
|
345
|
+
set_prop(name, value)
|
346
|
+
end
|
347
|
+
else
|
348
|
+
if value
|
349
|
+
#if not self.prop_meta[name].validate_property_value(value):
|
350
|
+
# raise ValueError.new("Invalid Value Exception - [#{self.class.name}]: Prop <#{name}>, Value<#{value}>. ")
|
351
|
+
#end
|
352
|
+
self.instance_variable_set("@" + name, value)
|
353
|
+
prop = ImcCoreUtils.get_prop_meta(self, name)
|
354
|
+
if !prop.mask.nil?
|
355
|
+
self.dirty_mask |= prop.mask
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
359
|
+
elsif name.start_with("_")
|
360
|
+
self.instance_variable_set("@"+name, value)
|
361
|
+
else
|
362
|
+
# These are properties which the current version of imc sdk
|
363
|
+
# does not know of.
|
364
|
+
# The code will come here lot often, when using older version of
|
365
|
+
# imcsdk with newer releases on the IMC.
|
366
|
+
# This needs to be handled so that the same sdk can work across
|
367
|
+
# multiple imc releases
|
368
|
+
self.xtra_props[name.to_sym] = GenericProp.new(name, value, true)
|
369
|
+
self.dirty_mask |= self.xtra_props_dirty_mask
|
370
|
+
self.instance_variable_set("@"+name, value)
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
def rn_set()
|
375
|
+
|
376
|
+
#Internal method to set rn
|
377
|
+
|
378
|
+
if ImcCoreUtils.prop_exists(self.mo_class, "rn")
|
379
|
+
@rn = make_rn()
|
380
|
+
else
|
381
|
+
@rn = ""
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
def dn_set()
|
386
|
+
|
387
|
+
#Internal method to set dn
|
388
|
+
if ImcCoreUtils.prop_exists(self.mo_class, "dn")
|
389
|
+
if !self.parent_dn.nil?
|
390
|
+
@dn = @parent_dn + '/' + @rn
|
391
|
+
else
|
392
|
+
@dn = @rn
|
393
|
+
end
|
394
|
+
else
|
395
|
+
@dn = ""
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
end
|
400
|
+
|
401
|
+
def generic_mo_from_xml(xml_str)
|
402
|
+
#create GenericMo Object from xml String
|
403
|
+
=begin
|
404
|
+
create GenericMo object from xml string
|
405
|
+
=end
|
406
|
+
root_elem = ET.fromstring(xml_str)
|
407
|
+
class_id = root_elem.name
|
408
|
+
gmo = GenericMo.new(class_id)
|
409
|
+
gmo.from_xml(root_elem)
|
410
|
+
return gmo
|
411
|
+
end
|
412
|
+
|
413
|
+
def generic_mo_from_xml_elem(elem)
|
414
|
+
#create GenericMo object from xml element
|
415
|
+
=begin
|
416
|
+
create GenericMo object from xml element
|
417
|
+
=end
|
418
|
+
|
419
|
+
#from . import imcxmlcodec as xc
|
420
|
+
xml_str = ImcXmlCodec.to_xml_str(elem)
|
421
|
+
gmo = generic_mo_from_xml(xml_str)
|
422
|
+
return gmo
|
423
|
+
end
|
424
|
+
|
425
|
+
|
426
|
+
class GenericMo < ImcBase
|
427
|
+
|
428
|
+
=begin
|
429
|
+
This class implements a Generic Managed Object.
|
430
|
+
Args:
|
431
|
+
class_id (str): class id of managed object
|
432
|
+
parent_mo_or_dn (ManagedObject or str): parent managed object or dn
|
433
|
+
=end
|
434
|
+
|
435
|
+
# Every variable that should not be a part of the final xml
|
436
|
+
# should start with a underscore in this class
|
437
|
+
|
438
|
+
|
439
|
+
def initialize(class_id, parent_mo_or_dn=nil, **kwargs)
|
440
|
+
@properties = {}
|
441
|
+
|
442
|
+
if parent_mo_or_dn.is_a? GenericMo
|
443
|
+
@parent_mo = parent_mo_or_dn
|
444
|
+
@parent_dn = parent_mo_or_dn.dn
|
445
|
+
elsif parent_mo_or_dn.is_a? String
|
446
|
+
@parent_dn = parent_mo_or_dn
|
447
|
+
@parent_mo = nil
|
448
|
+
elsif parent_mo_or_dn.nil?
|
449
|
+
@parent_dn=""
|
450
|
+
@parent_mo=nil
|
451
|
+
else
|
452
|
+
raise ValueError.new("parent_mo_or_dn should be an instance of str or Generic Mo")
|
453
|
+
end
|
454
|
+
|
455
|
+
super(class_id)
|
456
|
+
|
457
|
+
if kwargs
|
458
|
+
kwargs.each do |key, value|
|
459
|
+
instance_variable_set(:key, value.to_s)
|
460
|
+
properties[:key] = value.to_s
|
461
|
+
end
|
462
|
+
end
|
463
|
+
if self.instance_variable_defined?("@rn") and self.instance_variable_defined?("@dn")
|
464
|
+
|
465
|
+
elsif self.instance_variable_defined?("@rn") and !self.instance_variable_defined?("@dn")
|
466
|
+
if self.parent_dn and self.parent_dn != ""
|
467
|
+
self.dn = self.parent_dn + '/' + self.rn
|
468
|
+
self.properties[:dn] = self.dn
|
469
|
+
else
|
470
|
+
self.dn = self.rn
|
471
|
+
self.properties[:dn] = self.dn
|
472
|
+
end
|
473
|
+
elsif !self.instance_variable_defined?("@rn") and self.instance_variable_defined?("@dn")
|
474
|
+
self.rn = File.basename(self.dn)
|
475
|
+
self.properties[:rn] = self.rn
|
476
|
+
else
|
477
|
+
self.rn = ""
|
478
|
+
self.dn = ""
|
479
|
+
end
|
480
|
+
if self.parent_mo
|
481
|
+
self.parent_mo.child_add(self)
|
482
|
+
end
|
483
|
+
end
|
484
|
+
|
485
|
+
def to_xml(xml_doc=nil, option=nil, cookie=nil)
|
486
|
+
=begin
|
487
|
+
This method returns the xml element node for the current object
|
488
|
+
with it's hierarchy.
|
489
|
+
Args:
|
490
|
+
xml_doc: document to which the Mo attributes are added.
|
491
|
+
Can be None.
|
492
|
+
option: not required for Generic Mo class object
|
493
|
+
Example:
|
494
|
+
from imcmsdk.imcmo import GenericMo\n
|
495
|
+
args = {"a": 1, "b": 2, "c":3}\n
|
496
|
+
obj = GenericMo("testLsA", "org-root", **args)\n
|
497
|
+
obj1 = GenericMo("testLsB", "org-root", **args)\n
|
498
|
+
obj.add_child(obj1)\n
|
499
|
+
elem = obj.write_xml()\n
|
500
|
+
import imcmsdk.imcxmlcodec as xc\n
|
501
|
+
xc.to_xml_str(elem)\n
|
502
|
+
Output:
|
503
|
+
'<testLsA a="1" b="2" c="3" dn="org-root/" rn="">\n
|
504
|
+
<testLsB a="1" b="2" c="3" dn="org-root/" rn="" />\n
|
505
|
+
</testLsA>'
|
506
|
+
=end
|
507
|
+
|
508
|
+
if xml_doc.nil?
|
509
|
+
xml_obj = Element.new (ImcGenUtils.word_l(self._class_id))
|
510
|
+
else
|
511
|
+
xml_obj = xml_obj.add_element(ImcGenUtils.word_l(self._class_id))
|
512
|
+
end
|
513
|
+
self.instance_variables.each do |key|
|
514
|
+
if !key.start_with?("_")
|
515
|
+
#xml_obj.set(key, getattr(self, key))
|
516
|
+
value = instance_variable_get(key)
|
517
|
+
if !value.nil?
|
518
|
+
xml_obj.add_attribute(key, value)
|
519
|
+
end
|
520
|
+
end
|
521
|
+
end
|
522
|
+
self.child_to_xml(xml_obj)
|
523
|
+
return xml_obj
|
524
|
+
end
|
525
|
+
|
526
|
+
def from_xml(elem, handle=nil)
|
527
|
+
=begin
|
528
|
+
This method is form objects out of xml element.
|
529
|
+
This is called internally from imcxmlcode.from_xml_str
|
530
|
+
method.
|
531
|
+
Example:
|
532
|
+
xml = '<testLsA a="1" b="2" c="3" dn="org-root/" rn="">
|
533
|
+
<testLsB a="1" b="2" c="3" dn="org-root/" rn="" /></testLsA>'\n
|
534
|
+
obj = xc.from_xml_str(xml)\n
|
535
|
+
print type(obj)\n
|
536
|
+
Outputs:
|
537
|
+
<class 'imcsdk.imcmo.GenericMo'>
|
538
|
+
=end
|
539
|
+
|
540
|
+
if elem.nil?
|
541
|
+
return nil
|
542
|
+
end
|
543
|
+
self.handle = handle
|
544
|
+
self.class_id = elem.name
|
545
|
+
if elem.attributes
|
546
|
+
elem.attributes.each do |attr_name, attr_value|
|
547
|
+
self.instance_variable_set("@" + attr_name, attr_value)
|
548
|
+
self.properties[attr_name.to_sym] = attr_value.to_s
|
549
|
+
end
|
550
|
+
end
|
551
|
+
if self.rn and self.dn
|
552
|
+
|
553
|
+
elsif self.rn and !self.dn
|
554
|
+
if self.parent_dn and self.parent_dn != ""
|
555
|
+
self.dn = self.parent_dn + '/' + self.rn
|
556
|
+
self.properties[:dn] = self.dn
|
557
|
+
else
|
558
|
+
self.dn = self.rn
|
559
|
+
self.properties[:dn] = self.dn
|
560
|
+
end
|
561
|
+
elsif !self.rn and self.dn
|
562
|
+
self.rn = File.basename(self.dn)
|
563
|
+
self.properties[:rn] = self.rn
|
564
|
+
end
|
565
|
+
|
566
|
+
#children = elem.getchildren()
|
567
|
+
if elem.children
|
568
|
+
elem.children.each do |child_elem|
|
569
|
+
if !child_elem.is_a? Element
|
570
|
+
next
|
571
|
+
end
|
572
|
+
class_id = ImcGenUtils.word_u(child.name)
|
573
|
+
pdn = nil
|
574
|
+
if self.instance_variable_defined?("@dn")
|
575
|
+
pdn = self.dn
|
576
|
+
end
|
577
|
+
child_obj = GenericMo.new(class_id, pdn)
|
578
|
+
self.child_add(child_obj)
|
579
|
+
child_obj.from_xml(child, handle)
|
580
|
+
end
|
581
|
+
end
|
582
|
+
end
|
583
|
+
|
584
|
+
|
585
|
+
def to_mo()
|
586
|
+
=begin
|
587
|
+
Converts GenericMo to ManagedObject
|
588
|
+
=end
|
589
|
+
|
590
|
+
#from . import imcmeta
|
591
|
+
|
592
|
+
class_id = ImcGenUtils.word_u(self.class_id)
|
593
|
+
if !($MO_CLASS_ID.include? class_id)
|
594
|
+
return nil
|
595
|
+
end
|
596
|
+
mo = _get_mo_obj(class_id)
|
597
|
+
if !mo # or not isinstance(mo, ManagedObject):
|
598
|
+
return nil
|
599
|
+
end
|
600
|
+
|
601
|
+
for prop in self.properties
|
602
|
+
if ImcCoreUtils.property_exists_in_prop_map(mo, prop)
|
603
|
+
prop = ImcCoreUtils.get_property_from_prop_map(mo, prop)
|
604
|
+
value = self.properties[prop]
|
605
|
+
mo.instance_variable_set(prop.to_sym, value)
|
606
|
+
#mo.__dict__[ImcCoreUtils.get_property_from_prop_map(mo, prop)] = \
|
607
|
+
# self.properties[prop]
|
608
|
+
else
|
609
|
+
ImcWarning("Property #{ImcGenUtils.word_u(prop)} Not Exist in MO #{child_id}")
|
610
|
+
end
|
611
|
+
end
|
612
|
+
if self.child.size
|
613
|
+
for ch_ in self.child
|
614
|
+
mo_ch = ch_.to_mo()
|
615
|
+
mo.child_add(mo_ch)
|
616
|
+
end
|
617
|
+
end
|
618
|
+
|
619
|
+
return mo
|
620
|
+
end
|
621
|
+
|
622
|
+
private
|
623
|
+
|
624
|
+
|
625
|
+
def _get_mo_obj(class_id)
|
626
|
+
=begin
|
627
|
+
Internal methods to create managed object from class_id
|
628
|
+
=end
|
629
|
+
|
630
|
+
#import inspect
|
631
|
+
mo_class = ImcCoreUtils.load_class(class_id)
|
632
|
+
mo_class_params = mo_class.instance_method(:initialize).parameters.map(&:last).map(&:to_s)
|
633
|
+
|
634
|
+
mo_class_param_dict = {}
|
635
|
+
for param in mo_class_params
|
636
|
+
prop = ImcCoreUtils.get_prop_meta(mo_class, param)
|
637
|
+
mo_param = prop.xml_attribute
|
638
|
+
if !(self.properties.include? mo_param)
|
639
|
+
if self.properties.inlcude?("rn")
|
640
|
+
rn_str = self.properties['rn']
|
641
|
+
elsif self.properties.include?("dn")
|
642
|
+
rn_str = File.basename(self.properties['dn'])
|
643
|
+
end
|
644
|
+
|
645
|
+
mo_meta = ImcCoreUtils.get_mo_meta(mo_class)
|
646
|
+
rn_pattern = mo_meta.rn
|
647
|
+
np_dict = ImcCoreUtils.get_naming_props(rn_str, rn_pattern)
|
648
|
+
if !(np_dict.inlcude?(param))
|
649
|
+
mo_class_param_dict[param] = ""
|
650
|
+
else
|
651
|
+
mo_class_param_dict[param] = np_dict[param]
|
652
|
+
end
|
653
|
+
else
|
654
|
+
mo_class_param_dict[param] = self.properties[mo_param]
|
655
|
+
end
|
656
|
+
end
|
657
|
+
|
658
|
+
p_dn = ""
|
659
|
+
|
660
|
+
mo_meta = ImcCoreUtils.get_mo_meta(mo_class)
|
661
|
+
class_parents = mo_meta.parents
|
662
|
+
if class_parents.include?("topRoot")
|
663
|
+
mo_obj = mo_class(**mo_class_param_dict)
|
664
|
+
else
|
665
|
+
mo_obj = mo_class(p_dn, **mo_class_param_dict)
|
666
|
+
end
|
667
|
+
return mo_obj
|
668
|
+
end
|
669
|
+
end
|