DSP

CIM call

2019-07-13 19:50发布

这几天搞CIM相关的东西,之前对CIM完全不了解,网上DMTF的官网一堆官话,看完还是不明确,下载DSP的文档读起来也十分拗口,对instance,association,reference,各种invokemethod感到比较困惑,请教CSF同学之后茅塞顿开,趁有时间赶紧记录下来。
1. 安装ecute,这样可以使用eclipse的插件方便的图形化的展示所有的CIM类,包括类的方法和属性 2. 看到这些方法和属性之后还是零散的概念,这时再来看DMTF中DSP的文档,特别是文档中展示的各个功能模块之间的类图,很好的解释了类间关系和是用功能时候的过程 3. 特别深刻的是:CIM中各个类之间不是和我想象的java的各个类之间通过聚合,组合等联系在一起的,而是通过association table,在table中的每一项都是相关联的类名。 4. association可以拿到一个实例关联的实例对象,reference也可以拿到一个实例关联的实例对象,然而对于像ComputerSystem这样的大类来说,如果直接通过reference来拿相关联的实例对象会拿到很多无用的,这样会很慢,而通过associator拿到关联的实例对象后,再通过associator反过来再拿reference更合适。
看完之后可能有点儿晕,两个例子: 读取,设置bootorder: 读取: 通过CIM_ComputerSystem的instance拿到host的instance,通过此instance associator instance (ElementSettingData,BootConfigSetting),拿到BootConfigSetting的instance之后,通过BootConfigSetting的instance拿其Reference,可以得到ElementSettingData读取isNext属性,如果是3表示下一次boot时候使用。 如何知道这个BootConfigSetting对应的是什么设备呢,再通过associator instance(OrderComponent, BootSourceSetting),得到BootSourceSetting的实例,查看这些实例中assignsequence便可以知道下次启动是什么设备
设置: 查看BootConfigSetting的类的方法,有SetBoorOrder,需要传入Source,这个Source就是上述读取的步骤中通过associator instance得到的BootSourceSetting的实例,比如我们传入”PXE“的实例,就可以设置下次从PXE启动了。
其他的功能都是类似的,只要我们认真观察类图,查看文档,就能尝试出来,CIM开始变得容易起来。