一种设备面板生成方法和装置 【技术领域】
本发明涉及通讯领域,尤其涉及一种设备面板生成方法和装置。
背景技术
鉴于目前用户的组网环境中往往存在多个厂商的网络设备,因此要求网管对于各个厂商的设备都能够进行简单的管理,包括查询设备的基本状态、进行简单的配置操作等。由于各个网络设备厂商的私有MIB(ManagementInformation Base,管理信息库)实现不一致,因此目前网管只能通过公有MIB对其他厂商的网络设备进行管理,包括通用设备面板的显示。但是有些设备面板的元素是使用私有MIB实现的,网管是否能正确的显示通过私有MIB自定义的设备面板,成为了现有技术中亟待解决的问题。
现有技术中提供了一种设备通用面板的生成方法。其中,通过设备面板制作工具,用户可以根据自己的需要制作其他厂商的设备通用面板。用户可以事先在通用面板背景图中加入设备的厂商名称和设备型号,然后使用面板制作工具在设备背景图上摆放端口、配置端口信息,指定设备的sysObjectID,最后利用制作工具生成相应的资源文件和配置文件。
现有技术中存在问题在于:该方案虽然可以美观的显示不同厂商的设备面板,但是很难与实际情况完全一致,设备logo、底图、端口位置都是画死的,不能处理同一设备插有不同单板的情况,且不能分辨不同的端口类型。同时该方案不能管理设备的单板、风扇、电源等多种实体。
【发明内容】
本发明提供一种设备面板生成方法和装置,用于能够在通用面板上直观地显示出不同厂商设备的面板实际情况。
本发明提供了一种设备面板生成方法,包括:
获取设备的sysObjectID,在设备配置文件中查找所述设备的sysObjectID,确定所述设备对应的MIB配置文件、所述设备中包括的实体以及在所述设备面板中的位置;
根据所述MIB配置文件中的内容,从所述设备获取所述设备中包括的实体的实际信息,所述信息中包括实体的标识;
根据获取的所述实体的标识,在所述设备配置文件中查找所述实体的配置信息,根据所述实体的实际信息选择对应的配置信息并显示在所述设备面板中的位置。
其中,所述设备中包括的实体对应于一个MIB配置文件、或所述设备中包括的实体对应于多个MIB配置文件。
其中,所述在所述设备配置文件中查找所述实体的配置信息,根据所述实体的实际信息选择对应的配置信息并显示在所述设备面板中的位置,包括:
根据所述设备配置文件,获取设备中图片信息的存储路径;
根据所述设备的sysObjectID在所述存储路径中读取所述设备的图片并显示;
根据获取的所述实体的标识,在所述设备配置文件中查找所述实体的配置信息,在所述实体的配置信息中获取与所述实体的实际信息对应的图片,在所述存储路径中读取与所述实体的实际信息对应的图片并显示在所述设备的图片上,显示位置由所述实体在所述设备面板中的位置确定。
其中,所述实体的配置信息至少包括所述实体地标识,还包括所述实体所处的状态、与其他实体的父子关系、所述实体上包括的元素中的一种或多种;
所述实体上包括有元素时,所述在所述存储路径中读取与所述实体的实际信息对应的图片并显示在所述设备的图片上后,还包括:
根据所述实体对应的MIB配置文件,从所述实体中获取所述实体中包括的元素的实际信息,所述信息中包括元素的标识以及在所述实体中的位置;
根据获取的所述元素的标识,在所述设备配置文件中查找所述元素的配置信息,在所述元素的配置信息中获取与所述元素的实际信息对应的图片,在所述存储路径中读取与所述元素的实际信息对应的图片并显示在所述实体的图片上,显示位置由所述元素在所述实体中的位置确定。
其中,所述获取设备的sysObjectID前,还包括:
对于每一设备,生成所述设备的设备配置文件和MIB配置文件,所述设备配置文件中包括所述设备的sysObjectID、对应的MIB配置文件、包括的实体以及每个实体在所述设备面板中的位置;所述MIB配置文件中包括所述设备的每个实体的信息名称。
本发明还提供了一种设备面板的生成装置,包括:
设备配置文件查找单元,用于获取设备的sysObjectID,在设备配置文件中查找所述设备的sysObjectID,确定所述设备对应的MIB配置文件、所述设备中包括的实体以及在所述设备面板中的位置;
实体信息获取单元,用于根据所述设备配置文件查找单元获取的MIB配置文件中的内容,从所述设备获取所述设备中包括的实体的实际信息,所述信息中包括实体的标识;
显示单元,用于根据所述实体信息获取单元获取的所述实体的标识,在所述设备配置文件中查找所述实体的配置信息,根据所述实体的实际信息选择对应的配置信息并显示在所述设备面板中的位置。
其中,所述设备配置文件查找单元查找到的设备中包括的实体对应于一个MIB配置文件、或所述设备中包括的实体对应于多个MIB配置文件。
其中,所述显示单元具体用于:
根据所述设备配置文件,获取设备中图片信息的存储路径;
根据所述设备的sysObjectID在所述存储路径中读取所述设备的图片并显示;
根据获取的所述实体的标识,在所述设备配置文件中查找所述实体的配置信息,在所述实体的配置信息中获取与所述实体的实际信息对应的图片,在所述存储路径中读取与所述实体的实际信息对应的图片并显示在所述设备的图片上,显示位置由所述实体在所述设备面板中的位置确定。
其中,所述实体的配置信息至少包括所述实体的标识,还包括所述实体所处的状态、与其他实体的父子关系、所述实体上包括的元素中的一种或多种;
所述实体上包括有元素时,所述显示单元还用于:
根据所述实体对应的MIB配置文件,从所述实体中获取所述实体中包括的元素的实际信息,所述信息中包括元素的标识以及在所述实体中的位置;
根据获取的所述元素的标识,在所述设备配置文件中查找所述元素的配置信息,在所述元素的配置信息中获取与所述元素的实际信息对应的图片,在所述存储路径中读取与所述元素的实际信息对应的图片并显示在所述实体的图片上,显示位置由所述元素在所述实体中的位置确定。
其中,还包括:
配置文件生成单元,用于对于每一设备,生成所述设备的设备配置文件和MIB配置文件,所述设备配置文件中包括所述设备的sysObjectID、对应的MIB配置文件、包括的实体以及每个实体在所述设备面板中的位置;所述MIB配置文件中包括所述设备的每个实体的信息名称。
与现有技术相比,本发明具有以下优点:
通过使用本发明,为设备提供设备配置文件和MIB配置文件,对于每一设备,通过设备配置文件获取对应的MIB配置文件,根据MIB配置文件从设备中读取设备的实际状态信息,并赋予设备配置文件中包括的实体和元素的实际状态,如单板的具体型号,端口的具体状态等等,达到和实际设备的状态信息完全一致。从而,能够在通用面板上直观地显示出不同厂商设备的面板实际情况,充分的解决了设备上单板、电源、风扇、端口等实体的实际位置和状态的显示。
【附图说明】
图1是本发明提供的设备面板生成方法的流程图;
图2A和图2B是本发明提供的用户通过可视化编辑工具增加设备元素的示意图;
图3是本发明中根据设备配置文件和MIB配置文件生成的面板示意图;
图4是本发明提供的设备面板的生成装置的结构示意图
【具体实施方式】
本发明的核心思想在于,为设备提供设备配置文件和MIB配置文件,对于每一设备,通过设备配置文件获取对应的MIB配置文件,根据MIB配置文件从设备中读取设备的实际状态信息,并赋予设备配置文件中包括的实体和元素的实际状态,如单板的具体型号,端口的具体状态等等,根据实体和元素的实际状态从设备配置文件中获取对应的信息绘制设备的面板。使得设备上单板、电源、风扇、端口等实体和元素的实际位置和状态的显示与设备的实际状态相一致。
具体的,本发明提供了一种设备面板的生成方法,如图1所示,包括:
步骤s101、获取设备的sysObjectID,在设备配置文件中查找所述设备的sysObjectID,确定所述设备对应的MIB配置文件、所述设备中包括的实体以及在所述设备面板中的位置;
步骤s102、根据所述MIB配置文件中的内容,从所述设备获取所述设备中包括的实体的实际信息,所述信息中包括实体的标识;
步骤s103、根据获取的所述实体的标识,在所述设备配置文件中查找所述实体的配置信息,根据所述实体的实际信息选择对应的配置信息并显示在所述设备面板中的位置。
具体的显示方式包括:根据设备配置文件,获取设备中图片信息的存储路径;根据设备的sysObjectID在存储路径中读取设备的图片并显示;根据获取的实体的标识,在设备配置文件中查找实体的配置信息,在实体的配置信息中获取与实体的实际信息对应的图片,在存储路径中读取与实体的实际信息对应的图片并显示在设备的图片上,显示位置由实体在设备面板中的位置确定。
当实体上进一步包括有元素时,在存储路径中读取与实体的实际信息对应的图片并显示在设备的图片上后,还包括:
根据实体对应的MIB配置文件,从实体中获取实体中包括的元素的实际信息,信息中包括元素的标识以及在实体中的位置;
根据获取的元素的标识,在设备配置文件中查找元素的配置信息,在元素的配置信息中获取与元素的实际信息对应的图片,在存储路径中读取与元素的实际信息对应的图片并显示在实体的图片上,显示位置由元素在实体中的位置确定。
本发明中,为了能够正常显示不同设备的面板,需要为每个需要生成面板的设备配置两个文件,一个是设备配置文件,主要用于存储设备上实体的结构信息,代表绘制面板时所需的设备面板上实体的结构;一个是MIB配置文件,主要用于存储设备上涉及的实体状态信息,代表绘制面板所需要获取的实体的状态。通过综合解析这两方面的信息,即可将设备面板上实体的状态在其对应的位置上显示出来。本发明中所提供的方法的关键点是设备配置文件和MIB配置文件的编写和解析。以下对编写和解析分别进行介绍。
如图2A和图2B所示,用户通过可视化编辑工具增加设备元素,增加设备底图,添加设备厂商logo元素(这里如7903E),添加面板上面的端口、指示灯等元素(如图2B的灰色框)。对于单板元素用户只需添加一个空面板(如图2A中的灰色框),标明这个单板的相对位置(槽位)即可。对于设备配置文件,其存储的是设备元素的层次关系和具体位置,如单板在面板的什么位置,电源在面板的什么位置,logo在面板的什么位置等等。设备配置文件的一个具体实例如下:
<List name=″Chassis″value=″3″>
<Templ name=″S7502E″vendortype=″1.3.6.1.4.1.25506.1.207″mib=″EntityTable.xml″>
<Element entClass=″Module″vendortype=″″x=″4″y=″63″index=″0″/>
<Element entClass=″Module″vendortype=″″x=″397″y=″63″index=″1″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″129″index=″2″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″193″index=″3″/>
<Element entClass=″PowerSupply″vendortype=″″x=″30″y=″13″index=″0″/>
<Element entClass=″PowerSupply″vendortype=″″x=″50″y=″13″index=″1″/>
</Templ>
....................................................
</List>
如图3所示,表示了设备通过读取设备的实际状态信息后,根据设备配置文件和MIB配置文件,获取到设备上面0号槽和2号槽位有单板,并获取到单板的唯一标识Vendortype。在设备配置文件中找到对应vendortype的单板并显示在设备上具体的槽位的位置,即将单板对应的图片叠加在设备对应的图片上,叠加的位置由槽位的位置确定。对于单板上面的端口也是如此,通过MIB配置文件读取每个单板上面的端口信息,包括端口唯一标识vendortye,端口排序等。通过在设备配置文件中找到对应vendortype的端口定义并按照设备配置文件中定义的位置显示在单板上面,即将端口对应的图片叠加在单板对应的图片上,叠加的位置由端口的位置确定。
MIB配置文件实际就是从设备读取信息的配置,根据MIB配置文件,可以确定绘制面板时需要从设备上读取的实际状态信息。其中mibName就是mib节点的名称。其中几个核心的标识,如vendortype表示一个实体的唯一标识,通过这个标识来唯一的识别一个实体;relPos表示实体的相对位置,例如对于端口来讲就是第几个端口,对于单板来讲就是第几槽位的单板。MIB配置文件的一个具体实例如下:
-<table-properties>
<name>devEntPhysicalTable</name>
<mibName>entPhysicalTable</mibName>
</table-properties>
-<VB>
<ParaName>entIndex</ParaName>
<MibName>entPhysicalIndex</MibName>
<dataType>Index</dataType>
</VB>
-<VB>
<ParaName>vendorType</ParaName>
<MibName>entPhysicalVendorType</MibName>
<dataType>Normal</dataType>
</VB>
-<VB>
<ParaName>containedIn</ParaName>
<MibName>entPhysicalContainedIn</MibName>
<dataType>Normal</dataType>
</VB>
-<VB>
<ParaName>entClass</ParaName>
<MibName>entPhysicalClass</MibName>
<dataTyPe>Normal</dataType>
</VB>
-<VB>
<ParaName>relPos</ParaName>
<MibName>entPhysicalParentRelPos</MibName>
<dataTyPe>Normal</dataType>
</VB>
- <VB>
<ParaName>entName</ParaName>
<MibName>entPhysicalName</MibName>
<dataTyPe>Normal</dataType>
</VB>
本发明中,网管根据MIB配置文件中的的MIB名称访问设备的MIB,在MIB配置文件中设置有MIB oid值(ParaName)和MIB名称(MibName)的对应关系。网管在访问MIB节点时可以使用MIB名称,而经过MIB配置文件中对应关系的映射后真正向设备下发时就转化成获取抽象的MIB oid值。
下面来具体介绍一下设备配置文件和MIB配置文件各个属性的意义。
本发明中,设备配置文件中各个属性的作用如下:
Project:设备配置文件的根节点定义项;进一步包括以下配置选项:
(1)attributes:
vendor:表示文件厂商,一般使用厂商,例如h3c,cisco,huawei,3com等等,默认;
version:表示文件版本,默认是0.9;
imagepath:表示图片存储的路径,所谓的设备面板实际上就是n个图片的叠加,程序通过该路径来读取图片显示面板;
extend:表示依赖的文件,设备配置文件可以有多个,被依赖的文件中的实体是可以当作本文件中的实体一样使用;
(2)List:设备配置文件的模板列表;进一步包括以下配置选项:
(2.1)attributes:
name:表示实体的类型,对应实体物理表的元素即为Chassis(设备的基本面板),Module(单板),Port(端口)等;
value:表示实体的类型在mib中的值,对应实体物理表的元素即为Chassis(3),Module(9),Port(10)等;
(2.2)Templ:设备配置文件的模板;进一步包括以下配置选项:
(2.2.1)attribute
name:表示实体名称,一般对应设备/单板的名称;
vendortype:表示实体唯一标识,一般对应设备/单板的sysoid或者vendortype;
mib:表示该实体上面的所有子实体所在的mib配置文件,如果子实体不在同一个mib配置文件,那么此项没有;
descr:表示实体描述,一般对应设备/单板的描述;
status:表示子实体使用的状态类型模板,对应本文件中的StatusList属性,例如端口有UP也有DOWN;
(2.2.2)Element:设备配置文件的模板的子实体;
entClass:表示子实体的类型,对应实体物理表的元素即为Chassis,Module,Port等;
vendortype:表示子实体唯一标识,一般对应设备/单板的sysoid或者vendortype,从mib读取的值。如果在配置文件写死,就无需从设备读取;
x:表示子实体相对于父实体的x坐标;
y:表示子实体相对于父实体的y坐标;
index:表示子实体在同类实体中的相对位置排序,例如面板上面有2个端口,通过这个相对位置排序来确定哪个是第一个端口,哪个是第二个端口;
mib:表示子实体所在的mib配置文件,如果所有子实体都在一个mib配置文件中,则没有该项;
rotate:表示子实体旋转的角度,如180,如果没有旋转就没有此项
(2.3)StatusList:设备配置文件的实体状态模板列表;进一步包括以下配置选项:
(2.3.1)attribute
name:表示实体状态模板名称;
(2.3.2)Mibs:设备配置文件的实体状态mib节点;
name:表示实体状态mib节点名称,通过该节点来读取对应的mib数据;
(2.3.3)Statement:设备配置文件的实体状态模板;
name:表示状态名称,一般为颜色,例如green代表up;
value:表示对应的Mibs属性的状态值,多个Mibs使用-来分隔。
通过自定义MIB配置文件,描述生成面板需要读取的设备的mib信息。
MIB配置文件的各个属性的作用如下:
Templ:SNMP配置文件模板项;进一步包括以下配置选项:
(1)scalar:SNMP配置文件一个标量配置模板;
(2)table:SNMP配置文件一个表模板;进一步包括以下配置选项:
(2.1)table-properties:SNMP表格属性;
(2.2)finishCondition:SNMP表格的操作的成功条件;
(2.3)checkIfHaveTheIndex;
(2.4)VB:
ParaName:SNMP表格的变量名,必须与GUI配置文件中的变量名一一对应,表示属于一个配置项;
MibName:SNMP表格的MIB节点名;
Syntax:SNMP表格的MIB节点的语法类型,需要与MIB文件保持一致,一般表示SNMP的数据类型,其值参见标准的SNMP可支持的数据类型;
AlterSyntax:SNMP表格的MIB节点的实际语法类型,如果需要定义与MIB文件中不一致的复合类型来实现数据转换,
可使用本节点,一般表示SNMP的数据类型,其值可使用自定义的扩展数据类型;
MaxAccess:SNMP表格的MIB节点访问属性,表示是否可以读,取值范围:not-accessible(不可访问),read-only(只读),read-write(可读写),read-create(可读可创建);
AlterAccess:变更SNMP表格的MIB节点访问属性,表示是否可以读,取值范围:not-accessible(不可访问),read-only(只读),read-write(可读写),read-create(可读可创建);
dataRange:SNMP表格的MIB节点的取值范围,本部分本期不使用,留待后续扩展,预计支持三种类型:整形最大最小值、字符串长度、枚举值选项;
dataType:SNMP表格的MIB节点的类型,支持四种类型:Index(索引)、Normal(一般节点)、Placeholder(占位符)、RowStatus(行状态);
Padding:是否是填充位,如果是,则在读取和下发时都不处理本项,不写默认为false;
DefaultValues:SNMP表格的MIB节点的缺省值;
(3)linkTable:SNMP配置文件一个关联表模板;进一步包括以下配置选项:
fromIndex:表示本文件中关联的MIB节点名称;
name:表示关联的MIB配置文件名称;
linkIndex:表示关联的MIB配置文件中的MIB节点名。
以下结合具体的实例,描述如何通过设备的设备配置文件和MIB配置文件生成设备的面板。
(1)网管与设备通信,获取到设备的sysObjectID,例如‘1.3.6.1.4.1.25506.1.207’。
(2)该实例中以设备配置文件为common_device.xml为例,网管解析common_device.xml文件,通过该common_device.xml文件,定义了设备中包括的实体,以及各个实体的(x,y)位置和相对位置index。查找List中name=″Chassis″,且子属性Templ的yendorType的值与设备的sysObjectID一致的内容。其中Chassis表示设备的基本面板结构。
假设common_device.xml文件的片断如下:
<Project version=″0.9″imagepath=″img/″vendor=″common″xmlns=″com.h3c.imc.ext″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xsi:schemaLocation=″com.h3c.imc.ext device.xsd″>
<List name=″Chassis″value=″3″>
<Templ name=″S7502E″vendortype=″1.3.6.1.4.1.25506.1.207″mib=″EntityTable.xml″>
<Element entClass=″Module″vendortype=″″x=″4″y=″63″index=″0″/>
<Element entClass=″Module″vendortype=″″x=″397″y=″63″index=″1″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″129″index=″2″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″193″index=″3″/>
<Element entClass=″PowerSupply″vendortype=″″x=″30″y=″13″index=″0″/>
<Element entClass=″PowerSupply″vendortype=″″x=″50″y=″13″index=″1″/>
</Templ>
..............................................
</List>
在本示例的设备配置文件中,查找子属性Templ的vendorType的值与设备的sysObjectID一致的项,为“S7502E”,从其中可以得知“S7502E”对应的MIB配置文件为“EntityTable.xml”。同时可以在imagepath表示的路径下获取以vendortype标识的图片文件,对于该“S7502E”,即可以得到以“1.3.6.1.4.1.25506.1.207”命名的图片,即S7502E设备的基本面板结构。
(3)网管根据设备配置文件即common_device.xml文件,解析到MIB配置文件的值为‘EntityTable.xml’,表明S7502E的Element(实体)的MIB信息存储在‘EntityTable.xml’文件中。同时,网管通过解析设备配置文件即common_device.xml文件,解析到S7502E包括的Element为4个Module和2个powerSupply。
其中,Element(实体)的几个属性的意义如下:
entClass,表示实体的类型,本应用场景中,以实体MIB为参照,创建了Chassis、Module、Port、powerSupply、fan等几种实体类型,该类型可以由用户自定义增加;
Vendortype,表示实体的唯一标识,对于设备来说就是sysObjectOID;
x,y,表示实体在面板的位置,通过(x,y)表示;
Index,表示实体之间的相对位置,本应用场景中4个Module的index分别为0-3,用于表示其不同的相对位置,即设备的0-3槽位。
(4)网管通过解析MIB配置文件即EntityTable.xml获取MIB信息,MIB配置文件的具体内容见前文中的示例。在xml文件中<table-properties>表示读取的MIB表名称,而<VB>是表中的节点。<ParaName>是网管读取MIB的时候的别名,<MibName>则是MIB节点的名称。<dataType>是为了区分不同的数据类型,以方便网管使用SNMP协议读取数据。在实际使用中<ParaName>是预先设定好的,用户根据不同的<ParaName>表达的意义来配上不同的MIB节点。本发明的该实施方式中,该文件是以类实体MIB的结构定义的,下面是各个<ParaName>的含义:
entIndex:实体的一个索引
vendorType:实体的唯一标识
containedIn:实体的父实体索引
entClass:实体的类型,比如是Module还是port等
relPos:实体的相对位置,对应的就是common_device.xml文件中定义的index
entName:实体的名称
(5)网管通过MIB配置文件即EntityTable.xml与设备进行通信,获取到设备上面的实体信息。如表1所示:
表1、设备的实体信息
由于在设备配置文件即common_device.xml文件中,S7502E这个设备定义了4个Module和2个Power,所以网管在实体信息中查找entClass为Module的内容,需要说明的是,该实体类型是可以自定义的,比如用户自定义MIB是使用‘Slot’这个值来代表单板,那么本实例中的Module则变为Slot。
如表1所示,从设备端读取到4条entClass(在表1中对应的MibName为entPhysicalClass)为‘Module’的数据,根据relPos(在表1中对应的MibName为entPhysicalParentRelPos)的0-3,确定0号槽位就是显示这块单板。先读取0,发现这块单板的vendortype(在表1中对应的MibName为entPhysicalVendorType)是‘1.3.6.1.4.1.25506.3.1.9.4.552’(在表1中为LSQ1MPUA0),于是到common_device.xml文件中去查找‘Module’的vendortype值为‘1.3.6.1.4.1.25506.3.1.9.4.552’的数据,发现了如下数据。
<List name=″Module″value=″9″>
<Templ name=″LSQ1MPUA0″vendortype=″1.3.6.1.4.1.25506.3.1.9.4.552″descr=″″>
</Templ>
........................................
</List>
则可以将1.3.6.1.4.1.25506.3.1.9.4.552对应的图片叠加在S7502E图片的0号槽位,0号槽位的位置可以由设备配置文件即common_device.xml中配置的坐标x=″4″y=″63″得到。
之后,再以相似的方式绘制S7502E的其他槽位上的Module、PowerSupply等。进一步上,可以以相似的方式来绘制Module上面的实体如端口、电源等,依此类推,依次类推将Module上的实体逐一绘制到Module上,最终将整个面板上的每个实体绘制出来。
上述的示例中,在设备配置文件即common_device.xml中配置了2个Power,但是表1中所示的设备MIB信息只有一个power和一个fan。根据表1,只有relPos为0的数据可以和设备配置文件中的内容对应,因此面板上只显示第一个powersupply的电源状态,而另外一个电源可能是设备上没有使用,因此就不能显示;而对于fan,虽然在设备上存在,但是由于在common_device.xml文件中没有配置,因此也不在设备上显示。
本发明的另外一个应用场景中,还提供了对于实体配置是在不同MIB配置文件中实现的情况。例如:在上述设备配置文件即common_device.xml文件中,还定义了一个sysObjectID为‘1.3.6.1.4.1.43.1.16.4.3.51’的设备,名称为‘S7903E’,该设备的Templ定义栏没有统一的‘mib’即MIB配置文件的定义,而其‘mib’定义是放到子实体Element中。具体的配置如下所示:
<Templ name=″S7903E″yendortype=″1.3.6.1.4.1.43.1.16.4.3.51″>
<Element entClass=″Module″vendortype=″″x=″4″y=″44″index=″0″
mib=″SlotTable.xml″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″108″index=″1″
mib=″SlotTable.xml″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″172″index=″2″
mib=″SlotTable.xml″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″236″index=″3″
mib=″SlotTable.xml″/>
<Element entClass=″Module″vendortype=″″x=″4″y=″300″index=″4″
mib=″SlotTable.xml″/>
<Element entClass=″PowerSupply″vendortype=″1.3.6.1.4.1.25506.3.1.6.2″x=″4″
y=″4″index=″0″mib=″PowerTable.xml″/>
<Element entClass=″PowerSupply″vendortype=″1.3.6.1.4.1.25506.3.1.6.2″x=″50″
y=″4″index=″1″mib=″PowerTable.xml″/>
<Element entClass=″Fan″vendortype=″1.3.6.1.4.1.25506.3.1.7.1″x=″100″y=″4″
index=″0″mib=″FanTable.xml″/>
</Templ>
对比上述S7502E的配置文件可以发现,S7903E的‘Module’实体都在一个MIB配置文件“SlotTable.xml”中定义,而电源都在MIB配置文件“PowerTable.xml”中定义,风扇都在MIB配置文件“FanTable.xml”中定义。
对于‘SlotTable.xml’,其结构如下所示:
-<Templ name=″webdmSlotTable″componentName=″WebDM″>
-<table>
-<table-properties>
<name>SlotTable</name>
<mibName>hwLswSlotTable</mibName>
</table-properties>
-<VB>
<ParaName>ParentIndex1</ParaName>
<MibName>hwLswFrameIndex</MibName>
<dataType>Index</dataType>
</VB>
-<VB>
<ParaName>SelfIndex</ParaName>
<MibName>hwLswSlotIndex</MibName>
<dataType>Index</dataType>
</VB>
-<VB>
<ParaName>VendorType</ParaName>
<MibName>hwLswSlotType</MibName>
<dataType>Normal</dataType>
</VB>
-<VB>
<ParaName>OperStatus</ParaName>
<MibName>hwLswSlotOperStatus</MibName>
<dataType>Normal</dataType>
</VB>
</table>
</Templ>
该MIB配置文件“SlotTable.xml”中,显示了区别于前述实施例中描述的MIB配置文件“‘EntityTable.xml’所示的另外一种架构。其中,进一步通过index来表示父子关系。其中包括有‘ParentIndex1’,‘SelfIndex’,‘VendorType’和‘OperStatus’四个节点。其中,‘OperStatus’表示实体状态;‘ParentIndexl’表示父实体索引,这里之所以加个‘1’表示可能还会有多父实体索引的情况;‘SelfIndex’表示自己的索引;‘VendorType’表示实体的唯一标识,有了这个标识,才能到‘common_device.xml’文件中找到相应的实体定义。如表2所示,为网管根据MIB配置文件获取到的端口状态的表格。第一条数据中‘ParentIndex1’(对应的MibName为hwLswFrameIndex)是‘0’,‘SelfIndex’(对应的MibName为hwLswSlotIndex)也是‘0’,也就是设备的0号槽位的单板;同理,第二条数据就是设备上的2号槽位的单板。SlotType就是定义的‘VendorType’。
表2、端口状态的表格
Instance hwLswSlotIndex hwLswSlotType 0.0 0 type-LSQ1SRP1CB(513) 0.2 2 type-LSQ1GT24SC(530)
另外,还可能需要定义成多parent索引的情况,其中第一条数据表示在2号槽位的0号子卡上面的97号口。表3为网管根据MIB配置文件获取到的端口状态的表格。
表3、端口状态的表格
Instance hwLswPortIndex hwLswPortType hwLswPortIfIndex 0.2.0.97 97 type-1000BASE-T(43) 10 0.2.0.98 98 type-1000BASE-T(43) 11 0.2.0.99 99 type-1000BASE-T(43) 12 0.2.0.100 100 type-1000BASE-T(43) 13 0.2.0.101 101 type-1000BASE-T(43) 14 0.2.0.102 102 type-1000BASE-T(43) 15 0.2.0.103 103 type-1000BASE-T(43) 16 0.2.0.104 104 type-1000BASE-T(43) 17 0.2.0.105 105 type-1000BASE-T(43) 18 0.2.0.106 106 type-1000BASE-T(43) 19
这里需要说明的是,用户在定义设备配置文件“common_device.xml”时,虽然对于这款设备可能不存在实际的子卡概念,但是用户可能会因为某种原因存在如下的定义,将端口直接画在单板上面,这个也没有关系。因为在判断父子关系时需要回溯寻找上一层。例如0.2.0.97这条数据,通过解析‘common_device.xml’文件知道端口的父亲是2号槽位的单板,那么只判断前两位是否是0.2即可,如果是就证明这条数据的端口是属于2号槽位单板的。
<Templ name=″LSQ1GT24SC0″vendortype=″1.3.6.1.4.1.43.45.1.10.3.1.9.4.530″descr=″″
mib=″PortTable.xml″>
<Element entClass=″Port″vendortype=″″index=″0″x=″89″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″1″x=″89″y=″32″/>
<Element entClass=″Port″vendortype=″″index=″2″x=″117″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″3″x=″117″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″4″x=″145″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″5″x=″145″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″6″x=″173″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″7″x=″173″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″8″x=″201″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″9″x=″201″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″10″x=″229″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″11″x=″229″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″12″x=″273″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″13″x=″273″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″14″x=″301″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″15″x=″301″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″16″x=″329″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″17″x=″329″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″18″x=″357″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″19″x=″357″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″20″x=″385″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″21″x=″385″
y=″32″/>
<Element entClass=″Port″vendortype=″″index=″22″x=″413″y=″10″/>
<Element entClass=″Port″vendortype=″″rotate=″180″index=″23″x=″413″
y=″32″/>
</Templ>
本发明中,还需要确定实体的当前状态。对于有些实体,除了需要知道其是否在位外,还要能获取当前的状态,比如端口来说,要知道它的管理态和运行态,这就要相应的MIB节点支持。在设备配置文件common_device.xml文件中,有如下定义:
<List name=″Status″>
<StatusList name=″port1″>
<Mibs name=″ifAdminStatus″/>
<Mibs name=″ifOperStatus″/>
<Statement name=″green″value=″1-1″/>
<Statement name=″blue″value=″2-1″/>
<Statement name=″cyan″value=″1-2″/>
</StatusList>
</List>
其中,定义了多个status状态,例如ifAdminStatus=″1″,ifOperStatus=″1″表示状态为″green″。那么在端口<PortList>的每个端口定义中,都有一个status的属性,表示使用哪个status定义,如果是‘port1’就表示使用port1这个定义,那么此时,端口的图片名称即为‘vendortype_rotate_green’,举例说明就是‘1.3.6.1.4.1.25506.3.1.10.4.43_180_green.gif’这样就可以根据不同的状态来显示不同的图片。而同样,ifAdminStatus和ifOperStatus的MIB值的读取就要通过MIB配置文件配置的MIB节点。在MIB配置文件EntityTable.xml中有如下配置
<linkTable fromIndex=″entIndex″name=″entAliasMappingTable.xml″linkIndex=″entPhysicalIndex″/>
其表明一种关联关系,其中‘entIndex’与entAliasMappingTable.xml文件中的‘entPhysicalIndex’在MIB中值相同,完成关联,类似数据库中的外键的概念。对于单板也是如此,看到了在‘Status’定义中,有一个‘Module1’的单板状态定义,OperStatus=1的时候表示green是单板正常在位,blue表示单板为备板正常在位,red表示单板目前有问题,这些状态也是用户根据实际的MIB值和实现进行自定义的。看SlotTable.xml文件里面,就有OperStatus节点,网管就是通过这个节点值的读取,来获得对应单板的状态,并使用正确的图片进行显示。
本发明中还提供了一种设备面板的生成装置,如图4所示,包括:
设备配置文件查找单元10,用于获取设备的sysObjectID,在设备配置文件中查找设备的sysObjectID,确定设备对应的MIB配置文件、设备中包括的实体以及在设备面板中的位置。对于设备中包括的不同的实体,不同的实体可能对应于一个MIB配置文件、也可能不同的实体对应于不同的多个MIB配置文件。
实体信息获取单元20,用于根据设备配置文件查找单元10获取的MIB配置文件中的内容,从设备获取设备中包括的实体的实际信息,信息中包括实体的标识;
显示单元30,用于根据实体信息获取单元20获取的实体的标识,在设备配置文件中查找实体的配置信息,根据实体的实际信息选择对应的配置信息并显示在设备面板中的位置。实体的配置信息至少包括实体的标识,还包括实体所处的状态、与其他实体的父子关系、实体上包括的元素中的一种或多种。
对于显示单元30,其具体用于:
根据设备配置文件,获取设备中图片信息的存储路径;
根据设备的sysObjectID在存储路径中读取设备的图片并显示;
根据获取的实体的标识,在设备配置文件中查找实体的配置信息,在实体的配置信息中获取与实体的实际信息对应的图片,在存储路径中读取与实体的实际信息对应的图片并显示在设备的图片上,显示位置由实体在设备面板中的位置确定。
其中,当实体上还包括有元素(如作为实体的单板,其上包括有端口、插卡、指示灯等元素)时,显示单元30还用于:
根据实体对应的MIB配置文件,从实体中获取实体中包括的元素的实际信息,信息中包括元素的标识以及在实体中的位置;
根据获取的元素的标识,在设备配置文件中查找元素的配置信息,在元素的配置信息中获取与元素的实际信息对应的图片,在存储路径中读取与元素的实际信息对应的图片并显示在实体的图片上,显示位置由元素在实体中的位置确定。
另外,该设备中还包括:
配置文件生成单元40,用于对于每一设备,根据用户的配置生成设备的设备配置文件和MIB配置文件,设备配置文件中包括设备的sysObjectID、对应的MIB配置文件、包括的实体以及每个实体在设备面板中的位置;MIB配置文件中包括设备的每个实体的信息名称。并将生成的设备配置文件和MIB配置文件提供给设备配置文件查找单元10、实体信息获取单元20以及显示单元30。
本发明提供的方法和设备中,用户可以使用设备配置文件自定义设备面板的底图、厂商logo、设备型号、单板、电源、风扇、端口等外观和位置。达到和实际设备外观完全一致。另外,为设备提供设备配置文件和MIB配置文件,对于每一设备,通过设备配置文件获取对应的MIB配置文件,根据MIB配置文件从设备中读取设备的实际状态信息,并赋予设备配置文件中包括的实体和元素的实际状态,如单板的具体型号,端口的具体状态等等,达到和实际设备的状态信息完全一致。从而,能够在通用面板上直观地显示出不同厂商设备的面板实际情况,充分的解决了设备上单板、电源、风扇、端口等实体的实际位置和状态的显示。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的单元或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的单元可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的单元可以合并为一个单元,也可以进一步拆分成多个子单元。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。