专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » 通用信息模型 CIM 开发介绍 »正文

通用信息模型 CIM 开发介绍

来源: 发布时间:星期六, 2009年12月19日 浏览:0次 评论:0
  概述

  通用信息模型 (CIM) 提供了种对被管理信息通用定义包括系统、网络、应用和服务并且能供被扩展 CIM 使得信息管理者可以在网络中以种通用标准交互而 CIM Profile 定义了某个特定领域 CIM 模型和联系当前CIM 已经被世界上很多公司所采纳作为他们构建上层信息管理软件Software基础模型比如 IBM, HP 和 EMC 等随着趋势发展对这种技术进行次全面和基础介绍将对刚进入这个领域开发者具有非常重要意义本文目标读者包括希望进入 CIM 开发领域工程人员和对 CIM 技术有着浓厚兴趣开发者

  背景知识介绍

  CIM

  CIM ( 通用信息模型 ) 是由 DMTF 制定用于管理计算机系统和网络工业规范标准它提供了个共同概念框架将所有系统进行分类并确定了部分网络环境而且描绘了这些部分互动 CIM 概念适用于所有领域管理而且所有领域可以独立进行技术实施由公共信息模型开发出管理软件Software可以统异构环境下产品管理 CIM 由以下几部分组成 :

  CIM 规范标准- 定义了整合管理模型语言和思路方法论

  CIM 标准模型- 定义了对计算机系统应用网络和设备描述信息模型 CIM 标准模型由以下及部分组成:

  核心模型 - 提供了基本受管对象假设信息内容包括系列描述和分析受管系统类和他们的间关联信息

  公共模型 - 实现了管理领域公共概念这些概念独立于各个特殊技术和实现可以说这个模型提供了个管理软件Software发展基础

  拓展模型 - 他们是在公共基础上拓展些和平台相关模型比如操作系统模型等些大公司如 IBM 公司都有根据自己产品所拓展出系列为自己产品服务模型

  DMTF

  DMTF ( 分布式管理任务组织 ) 是工业界计算机和电信行业企业间合作组织它领导着个人电脑企业级服务器和网络管理标准制定和发展并致力于建立整合跨平台和协议计算机和网络管理思路方法以求能使得区别产品整合管理成本消耗达到最小CIM 就是由 DMTF 制定发布

  WBEM

  WBEM ( 基于 Web 企业管理 ) 是系列网络管理规范标准 . 它标准化了企业网络中受管资源描述和使用遵循 WBEM 所开发网络管理工具都可以实现低成本管理

  MOF

  CIM 以受管对象格式 (MOF) 来描述对受管资源建立模型它和 IDL 语言(对象管理组接口定义语言)很相似是用文本格式描述面向对象类和例子定义 MOF 规范标准主要内容有元素类属性思路方法等描述还包括注释编译暗示些 CIM 规范标准特别语义

  CIM Profile

  CIM profile 是 DMTF 组织或其它相关组织织定定义了在特定环境下 CIM 模型实现它内容包括 CIM 类关联信息思路方法和属性它为 CIM 模型在具体化条件下应用提供了统和便利个 profile 都清晰指出每个类属性思路方法在具体条件应用下都应该被例子化

  CIM Server

  CIM Server 是 CIM 技术中个核心组件用来管理和操作信息模型对象现在已经有很多区别版本 CIM Server:

  SMALL-FOOTPRINT CIM BROKER (SFCB) - SFCB 是个轻量级 CIM 后台 (CIMOM) 用来处理 CIM 客户端请求随后根据请求内容进行系统管理操作 SFCB 支持标准 http/https 和 CIM-XML http 编码的上操作它实现高度模块化可以很容易补充删除或自定义区别管理应用软件Software SFCB 由于它轻量级大小十分适用于嵌入式环境

  Open Pegasus - Pegasus 是个 DMTF CIM 和 WBEM 标准开源项目它由 C 编写所以可以很方便将面向对象 CIM 管理对象转变成模块因此他被各个操作系统平台所支持包括 UNIX, Linux, OpenVMS, and Microsoft Windows

  OpenWBEM - OpenWBEM 是个企业级 wbem 实现开源项目它由 C 编写可用于任何商业和非商业用途它提供了个基础管理开发框架克服跨平台障碍并赋予真正互操作性开发人员可以使用 openwbem以提供配置和变更管理系统健康监测和企业范围管理功能

  WBEM Services - WBEM Services 项目是用 Java 编写适用于任何商业和非商业用途基于 wbem 实现内容包括应用编程接口服务器端和客户端应用和工具

  通用信息模型技术总揽


图 1. 通用信息模型技术框架图




  如上图所示DMTF组织底层技术基础是通用信息模型 (CIM) CIM 模型定义了套规范标准并提供了如何和其他管理模型进行整合细节层是 CIM 规范标准它为受管元素提供了更多丰富语义和面向对象描述该 CIM 规范标准有利于管理元素精简整合和成本降低使得管理信息交换处于个独立平台和技术中立方式再上层便是基于 Web 企业管理 (WBEM)它提供了系列网络管理标准来实现分布式系统管理 , 不仅如此 , 它还提供套基于标准管理工具促进区别平台下数据交流这两层技术总揽提供了特定管理环境下种统标准方式来描述和管理受管资源以达到分布式管理简化最上层是 DMTF 或基于 DMTF 技术其他组织些具体项目它们提供了提供了垂直方向具体应用和功能 , 包括比如公共诊断模型 (CDM), 桌面和移动系统硬件架构 (DASH) 服务器硬件系统管理结构 (SMASH), 和存储网络工业协会 (SNIA's) 发布存储管理规范标准 (SMI-S).

  个完整开发案例

  基于前面章节 CIM 技术介绍和基本概念我们将通过个完整 CIM Profile 开发案例把最基本 CIM 开发过程介绍给大家简要说来开发 CIM 主要是指运用 CIM 技术开发出符合通用管理接口同时满足自己需求信息模型主要包括下面 4个步骤:理解 CIM profile扩展 CIM profile实现 CIM provider 和最后测试和验证过程


清单 1. 需求案例
IBM 计算机系统中安装了个新软件Software -IBM Lotus Notes我们如何对它进行对象模型化并开发符合 CIM 标准管理 
 使得 CIM 客户端可以访问到这个 Lotus Notes 对象?


  理解 CIM Profile

  研究上面需求步就是如何建模首先我们还要回顾下前面介绍个概念:CIM ProfileCIM Profile 里面定义了某个特定领域对象 CIM 模型到目前为止已经发布 CIM Profile 基本上已经涵盖了在工业生产生活中所常见对象模型我们列举出小部分已经发布 CIM Profile如下所示:


表 1. 已经发布些 CIM Profile 举例
编号 名称 介绍
DSP1027 Power State Management Profile 计算机电源状态管理模型
DSP1028 Alarm Device Profile 警报设备模型
DSP1029 OS Status Profile 操作系统状态模型
DSP1030 Battery Profile 电源模型



  那么 CIM Profile 和我们建模有什么关系呢?简言的就是我们 CIM 开发就是要扩展这些标准 CIM Profile创建符合 CIM 标准具体模型这样好处有几点:

  已经存在 CIM Profile 已经为我们搭建起了个标准现实世界模型框架我们可以通过类继承实现模型重用

  标准 CIM Profile 具有通用性接口标准和统这样便于将来跨系统跨平台操作

  针对案例需求我们选择了 "DSP1023 Software Inventory Profile" DSP1023 描述了可以安装在系统中软件Software对象模型比如 BIOS固件应用以及软件Software和管理设备关系等对于这份文档中更多信息在此就不详细介绍说明了我们需要重点关注是如何模型化 Lotus Notes 这样个应用软件Software在 DSP1023 中有这样个用例图可以作为参考如下图所示:


图 2. Software Inventory Profile 用例类图


  注:上图中类名都省略了前缀 "CIM_"

  在上图中CIM_Computer 代表了计算机系统CIM_SoftwareIdentity 代表了安装在系统中软件Software这两者是通过 CIM_InstalledSoftwareIdentity 关联起来 IBM Lotus Notes 就是种 CIM_SoftwareIdentity因此我们可以利用这个框架来扩展

  在 CIM 中对于类和对象是由MOF来描述定义MOF 通过文本形式规范标准了类对象属性思路方法等我们以 CIM_SoftwareIdentity 为例来看下它如何定义:


清单 2. CIM_SoftwareIdentity MOF 文件
// Copyright (c) 2005 DMTF. All rights reserved. 
 // 
 // CIM_SoftwareIdentity 
 // 
  [Version ( "2.14.0" ), UMLPackagePath ( "CIM::Core::Software" ), 
  Description ( 
    "SoftwareIdentity provides descriptive information about a " 
    "software component for as tracking and/or ation " 
    "dependency management. ")] 
  CIM_SoftwareIdentity : CIM_LogicalElement { 
  [Key]  InstanceID; 
  u16 MajorVersion; 
  u16 MinorVersion; 
  u16 RevisionNumber; 
  u16 BuildNumber; 
   VersionString; 
   TargetOperatings; 
   Manufacturer; 
   Languages; 
  u16 Classications; 
   ClassicationDescriptions; 
   SerialNumber; 
  datetime ReleaseDate; 
 };


  注:在上面 MOF 文件中我们省略了很多属性描述和注释内容

  对于上面 MOF 中各个属性具体含义有兴趣读者可以从DMTF 网站WebSite上下载详细 MOF 文件进行学习

  扩展 CIM Profile

  所谓扩展 CIM Profile就是继承 CIM Profile 中创建符合具体需求子类如下图所示:


图 3. 扩展用例类图


  查看原图(大图)

  如图所示IBM_Computer 继承了 CIM_Computer代表了特殊计算机系统并相应地可以添加些 IBM 计算机特殊属性和行为; IBM_SoftwareIdentity 代表了 IBM 公司开发软件Software当然我们将要模型化 Lotus Notes 就属于这简化起见我们把重点放在 IBM_SoftwareIdentity 模型化上创建它 MOF 如下:


清单 3. IBM_SoftwareIdentity MOF 文件
[Version ( "1.0" ), Description ( 
    "To describe IBM software ")] 
  IBM_SoftwareIdentity : CIM_SoftwareIdentity 
 { 
   IBMProductName; 
 };


  如上所示我们只需要在 CIM_SoftwareIdentity 基础上再增加个特殊 IBMProductName 属性用来描述该产品 IBM 名称当然开发者在实际项目中可以根据需要添加他们自己属性和行为

  实现 CIM Provider

  对 CIM 模型访问操作是通过叫做 "CIM Provider" 来实现接下来我们要做事情就是把对于特定类操作转化为具体 CIM Provider 这样任何满足 CIM 规范标准客户端都可以通过标准 CIM Client 接口到我们 IBM_SoftwareIdentity 对象并进行些标准操作比如访问特定对象枚举所有该类对象等 CIM 整体框架如下图所示:


图 4. CIM 框架


  图中绿色部分叫做 CIM Provider就是我们所要实现工作就是对具体 CIM 模型对象提供访问功能这些是以动态连接库形式被 CIM Server 并提供给远端 CIM client 使用

  图中黄色部分叫做 CIM client它是具有 CIM 交互能力客户端可以连接到 CIM server并通过 CIM provider 访问和操作 CIM 模型对象

  灰色部分是 CIM server这是 CIM 体系核心对上接口有 WBEM 标准对下接口有 CMPI现在已经有很多实现版本如:OpenPegasus, OpenWBEM, WBEM service 和 SFCB 等

  在本例中我们选择使用 SFCB 作为 CIM serverCIM provider 实现接口选择 CMPI创建 CIM provider 选择使用 CIMPLE有关更加详细 CIMPLE 使用思路方法我们在此就不详述有兴趣读者可以参考“基于 CIMPLE 接口 CIM Provider 实现及其性能测试”

  继续我们具体案例针对 IBM_SoftwareIdentity CIM provider 使用 CIMPLE 开发关键部分代码如下所示:


清单 4. IBM_SoftwareIdentity CIM Provider
// Generated by genprov 1.2.0 
 # "IBM_SoftwareIdentity_Provider.h" 
 CIMPLE_NAMESPACE_BEGIN 
…… 
 Enum_Instances_Status IBM_SoftwareIdentity_Provider::enum_instances( 
  const IBM_SoftwareIdentity* model, 
  Enum_Instances_Handler<IBM_SoftwareIdentity>* handler) 
 { 
    IBM_SoftwareIdentity* inst = IBM_SoftwareIdentity::create(true); // 创建个新对象 
    inst->InstanceID.("My Lotus Notes Instance"); // 设置对象关键字 
    inst->IBMProductName.("IBM Lotus Notes"); // 设置子类属性 
    inst->MajorVersion.(1); // 设置主版本号 
    inst->MinorVersion.(0); // 设置副版本号 
    inst->RevisionNumber.(10); 
    inst->BuildNumber.(500); 
    inst->VersionString.("version 1.0"); 
    Array<String> TOS; 
    TOS.append("Windows"); 
    TOS.append("Linux"); 
    inst->TargetOperatings.(TOS); 
    inst->Manufacturer.("IBM"); 
    inst->SerialNumber.("ADDFI2356R"); 
 
    handler->handle(inst); 
     ENUM_INSTANCES_OK; 
 } 
…… 
 /*@END@*/ 
 CIMPLE_NAMESPACE_END


  在这个 CIM provider 我们主要实现了个思路方法:enum_instances 当 CIM client 需要枚举出所有 IBM_SoftwareIdentity 对象时候这个思路方法就会被返回结果是个部分属性设置好对象代码编写完成后编译成动态连接库格式放置到 SFCB 指定 CIM Provider 库文件目录下面就完成了编码这

  此时SFCB 还不能正确地我们 CIM provider SFCB 还不知道这个新添加 provider 任何信息所以我们要增加个 CIM Provider 注册文件并注册到 CIM server 中注册文件如下所示:


清单 5. IBM_SoftwareIdentity 注册文件
[IBM_SoftwareIdentity]   // CIM provider 操作目标类 
  provider: IBM_SoftwareIdentity_Provider // CIM provider 名字 
  location: dwSoftwareInventoryDemoModule // CIM provider 生成动态连接库名字 
  type: instance // CIM provider 类型 
  : root/cimv2  // IBM_SoftwareIdentity 类所在名字空间 
 #


  注:上面注册文件格式只适用于 SFCB其它 CIM Server 注册文件格式请读者参考具体规范标准

  在上面文件中要强调下 "type" 意义这个属性描述了 CIM provider 所能提供对象访问能力当类型是 "instance" 时候CIM provider 可以提供些枚举对象能力;当类型是 "method" 时候它可以提供执行特定思路方法能力;当类型是 "association" 时候它可以提供前后关联能力本例中我们 CIM provider 功能就是提供对象访问能力所以类型设置为 "instance"

  安装到 CIM Server

  通过前面几节工作我们现在有 3个成果:

  MOF 文件:描述了 IBM_SoftwareIdentity 类信息

  CIM provider 库文件:部分

  SFCB 注册文件:把 CIM provider 信息告知 SFCB 文件

  最后要做就是如何把这些安装到 SFCB 中去下面步骤简要介绍了安装过程在本例中我们开发环境是 OpenSuse10.3SFCB 版本是 1.2.5

  复制 MOF 文件和注册文件到目录 /var/lib/sfcb/stage 下面

  运行 SFCB 工具 sfcbrepos 把这两个文件编译成 SFCB 可以识别 2进制形式

  重新启动 SFCB

  到现在为止我们就完成了所有开发步骤也就是完成了个扩展自 "DSP1023 CIM profile" IBM_SoftwareIdentity 类其所有操作符合标准 CIM/WBEM 接口可以提供 CIM 者标准访问这个对象能力

  测试和验证

  最后个 CIM 开发人员都必须要做事情就是测试和验证有多种测试思路方法比如说编写 CIM 客户端或者使用已有些 CIM 客户端工具软件Software在本例中我们使用开源软件SoftwareEcute CIM Explorer这样款工具软件Software来进行测试


图 5. CIM Explorer 登陆界面


  登陆到 SFCB 的后进行枚举 IBM_SoftwareIdentity 所有对象操作结果显示如下:


图 6. IBM_SoftwareIdentity 对象


  查看原图(大图)

  从上图可以看到我们可以得到这样个 IBM_SoftwareIdentity 对象其属性正是的前在代码中定义好由此可以知道我们 CIM provider 被正确到了

  整理总结

  在信息管理技术领域如何把要管理对象模型化个首要和基本问题通用信息模型 CIM 给我们在这方面工作带来了更加统规范标准本文立足基本概念力求完整地呈现给读者个简单开发流程希望能为将要进入相关领域开发人员做些技术方面铺垫

  本文举例源代码或素材下载

标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: