一种控制器中模型代码配置方法和装置与流程

文档序号:16463674发布日期:2019-01-02 22:41阅读:138来源:国知局
本发明涉及通信技术,尤指一种控制器中模型代码配置方法和装置。
背景技术
::在软件定义网络(softwaredefinednetwork,简称sdn)控制器研发过程中,经常要应对网络中的设备升级、控制器系统重构及新功能研发等各种场景。为解决当前设备与控制器严重的不同步问题,目前多采用过滤设备升级后新的特性,或对修改特性进行忽略的策略,或针对升级设备进行控制器端的适配,虽然从一定程度上能够保证原有功能的正常,但是设备升级后新特性的支持、测试和部署严重滞后,同时当设备版本变更频繁,同步增多的应用模型会造成冗余代码急剧增加,系统编译时间过长,研发效率降低,维护成本增加等一系列问题。技术实现要素:本发明至少一实施例提供了一种控制器中模型代码配置方法和装置,使得控制器更好的支持设备新特性。为了达到本发明目的,本发明至少一实施例提供了一种控制器中模型代码配置方法,包括:获取设备的待转化的yang文件,建立所述待转化的yang文件所需模板,对所述模板进行配置;根据所述待转化的yang文件以及配置的所述模板,生成模型代码;将所述模型代码导入到控制器。在一可选实施例中,所述建立所述待转化的yang文件所需模板包括如下至少之一:为所述待转化的yang文件新建模板,或者,从预先建立的模板库中获取所述待转化的yang文件所需模板。在一可选实施例中,根据所述待转化的yang文件以及配置的所述模板,生成模型代码前还包括:根据所述待转化的yang文件进行如下至少之一配置:路径配置、关键字冲突配置、自定义的字段映射配置。在一可选实施例中,所述根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:如果所述待转化的yang文件为同一设备的多个版本的yang文件,对该多个yang文件进行结构的比对提取,提取共有结构并记录,生成所述共有结构的代码,所述待转化的yang文件的模型代码继承该共有结构的代码。在一可选实施例中,所述根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:获取已记录的共有结构,判断所述待转化的yang文件中是否包含所述已记录的共有结构,如果包含,则所述待转化的yang文件的模型代码继承所述待转化的yang文件所包含的共有结构的代码。在一可选实施例中,所述方法还包括:在根据所述待转化的yang文件以及配置的所述模板,生成模型代码前,将yang的扩展的巴科斯范式语法转译为语法分析器antlr的文法,将所述待转化的yang文件转化为antlr文法的文件后进行词法分析和语法分析。本发明至少一实施例提供一种控制器中模型代码配置装置,包括:配置模块,设置为,获取设备的待转化的yang文件,建立所述待转化的yang文件所需模板,对所述模板进行配置;代码生成模块,设置为,根据所述待转化的yang文件以及配置的所述模板,生成模型代码;导入模块,设置为,将所述模型代码导入到所述控制器。在一可选实施例中,所述配置模块还设置为,根据所述待转化的yang文件进行如下至少之一配置:路径配置、关键字冲突配置、自定义的字段映射配置。在一可选实施例中,所述代码生成模块根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:如果所述待转化的yang文件为同一设备的多个版本的yang文件,对该多个yang文件进行结构的比对提取,提取共有结构并记录,生成所述共有结构的代码,所述待转化的yang文件的模型代码继承该共有结构的代码。在一可选实施例中,所述代码生成模块根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:获取已记录的共有结构,判断所述待转化的yang文件中是否包含所述已记录的共有结构,如果包含,则所述待转化的yang文件的模型代码继承所述待转化的yang文件所包含的共有结构的代码。在一可选实施例中,所述代码生成模块还设置为,在根据所述待转化的yang文件以及配置的所述模板,生成模型代码前,将yang的扩展的巴科斯范式语法转译为语法分析器antlr的文法,将所述待转化的yang文件转化为antlr文法的文件后进行词法分析和语法分析。本发明至少一实施例提供一种控制器中模型代码配置装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,执行以下操作:获取设备的待转化的yang文件,建立所述待转化的yang文件所需模板,对所述模板进行配置;根据所述待转化的yang文件以及配置的所述模板,生成模型代码;将所述模型代码导入到控制器。在一可选实施例中,所述根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:如果所述待转化的yang文件为同一设备的多个版本的yang文件,对该多个yang文件进行结构的比对提取,提取共有结构并记录,生成所述共有结构的代码,所述待转化的yang文件的模型代码继承该共有结构的代码。在一可选实施例中,所述根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:获取已记录的共有结构,判断所述待转化的yang文件中是否包含所述已记录的共有结构,如果包含,则所述待转化的yang文件的模型代码继承所述待转化的yang文件所包含的共有结构的代码。与现有技术相比,本申请中,通过调用模板,将模型生成规则及配置外置,增强模型代码适用性。另外,对多版本进行比对,对共有结构进行提取,可以复用共有结构,简化模型代码的生成。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。图1为本发明一实施例提供的一种控制器中模型代码配置方法流程图;图2为本发明一实施例提供的一种控制器中模型代码配置方法流程图;图3为本发明一实施例提供的一种控制器中模型代码配置装置框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。yang(adatamodelinglanguageforthenetworkconfigurationprotocol,网络配置协议数据建模语言)是一种用于模型配置和状态数据建模的语法,鉴于其结构上的简单与灵活,可以将实际协议实现与外部系统交换信息相分离。antlr(anothertoolforlanguagerecognition,语法分析器)是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。本申请中,利用语言工具antlr和模板引擎beetl(beetemplatelanguage)对yang模型进行定制的模型编译生成,同时加入yang文件版本比对功能,尽可能复用模型,简化设计,从而使控制器中的yang模型的自适应成为可能,缩短控制器对设备新版本的响应时间,提高研发效率。本发明至少一实施例提供一种控制器配置方法,如图1所示,包括:步骤101,获取设备的待转化的yang文件,建立所述待转化的yang文件所需模板,对所述模板进行配置;步骤102,根据所述待转化的yang文件以及配置的所述模板,生成模型代码;步骤103,将所述模型代码导入到控制器。在一实施例中,所述步骤101中所述建立所述待转化的yang文件所需模板包括如下至少之一:为所述待转化的yang文件新建模板,或者,从预先建立的模板库中获取所述待转化的yang文件所需模板。在一可选实施例中,所述步骤101中,还进行辅助配置,所述辅助配置包括以下至少之一:路径配置、关键字冲突配置、自定义的字段映射配置。还可包括其他必要的配置。在一可选实施例中,步骤102中,分别根据各模板生成一段代码,将各模板生成的代码进行组合,最终形成完成的模型代码。在一可选实施例中,步骤102中,如果所述待转化的yang文件为同一设备的多个版本的yang文件,对该多个yang文件进行结构的比对提取,提取共有结构并记录,生成所述共有结构的代码,所述待转化的yang文件的模型代码继承该共有结构的代码。需要说明的是,如果设备只有一个yang文件,没有其他版本的yang文件,则无需进行结构的比对提取。存在多个yang文件时,可以进行结构的比对提取,从而复用共有结构,提高代码生成效率。在一可选实施例中,步骤102中,根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:获取已记录的共有结构,判断所述待转化的yang文件中是否包含所述已记录的共有结构,如果包含,则所述待转化的yang文件的模型代码继承所述待转化的yang文件所包含的共有结构的代码。当然,与可以和同一设备的其他当前不需要转化的版本的yang文件进行比较,提取共有结构,继承共有结构的代码。在一可选实施例中,所述根据所述待转化的yang文件以及配置的所述模板,生成模型代码前还包括:将yang的扩展的巴科斯范式语法转译为语法分析器antlr的文法;将所述设备待转化的yang文件转化为antlr文法的文件后进行词法分析和语法分析。通过上述词法分析和语法分析可以判断yang文件的正确性。当然,也可以使用除antlr外的其他语法分析器。在一可选实施例中,进行模板配置时,基于beetl模板引擎。当然,也可以基于其他模板引擎。需要说明的是,模板引擎与模板需要对应。与现有技术相比较,本申请有如下优点:bcb分离及可配置,将模型生成规则及配置外置,增强模型代码适用性。多版本yang文件比对及共性提取,减少冗余,强化复用,降低维护成本,简化开发。另外,使用antlr语法,支持对新语法规则的定义,使系统对新功能支持简单灵活。丰富的调用接口,支持maven的build-plugin配置生成、restful、本地接口。实施例一图2为本发明一实施例提供的控制器中模型代码配置方法流程图。下面结合具体l2switch(二层交换业务)的使用实施例对图1所示的方法进行详细说明。如图2所示,包括:步骤201,建立用于模型代码生成的模板库;所述模板库中包括多个模板,以满足模型代码生成的需求。在使用过程中,也可以根据需要新增模板。相关技术中,直接根据yang文件生成模型代码,本申请中,建立多个模板,根据yang文件生成模型代码时,调用模板,从而利于平台间的移植和模型间的复用。步骤202,基于rfc0620中yang语言的abnf定义,将abnf语法转译成antlr文法。转译时可参考rfc5234中定义的anbf语法和http://www.antlr.org/中定义的antlr文法,一个转译示例如表1所示。注意antlr不支持左递归文法,需要消除左递归方法的定义。表1abnf与antlr转译步骤203,进行基础代码块(basecodeblock,简称bcb)配置yang模型代码生成中bcb指构建完整的模型对象代码所要求的信息总和。例如java语言类中的get/set方法定义,equals/hashcode方法定义和属性定义等。bcb配置包括:辅助配置和模板配置。其中辅助配置包括以下至少之一:路径配置、关键字冲突配置、自定义的字段映射配置。比如,路径配置包括:yang文件目录、源码生成路径(即生成的模型代码的保存地址)、本地repository(存储库)地址、远程repository地址。当然,如果有需要,可以包括其他路径。路径配置的一个实例如下表2-1。表2-1中配置了控制器中待转化的yang文件所在的目录,以及根据yang文件生成的模型代码的输出路径。表2-1路径配置示例关键字冲突配置和自定义映射配置的一个示例如表2-2所示:表2-2路径配置示例其中表2-2中,conflict-config为冲突配置,如hypen-replace即-的替换字符串配置,period-replace即.的替换字符串配置,uderscore-replace即_的替换字符串配置,java-key-prefix即java关键字的前缀配置。mapping-config即自定义的映射配置。同时需要说明的是可以针对需求新增配置,以控制模型代码的生成。模板配置时可以采用模板引擎对最终输出模型代码的各组成部分进行模板配置。例如,可以采用beetl模板引擎。其中,模板配置的一个示例如表3所示。表3中配置了addto-impl模板。表3addto-impl模板配置相关技术中,odl(opendaylight)控制器和onos控制器都内嵌一套模型代码生成规则,由于规则固化导致两套模型代码无法兼容且适配复杂,平台移植几乎不可能。本申请中,采用上述bcb配置外置,借用模板引擎,使应用模型代码生成动态可控,为平台间的移植、模型间的复用以及接口间的适配提供方法。步骤204,获取设备的待转化的yang文件,判断是否存在共有结构。其中,待转化的yang文件可以是一个或多个版本,各版本的yang文件,可以通过yang语法的yang-version与revision进行版本区分。对设备不同版本yang文件中重点分析表4中的三类情况:表4yang文件比对版本1结构版本2结构提取共有结构abcabdababcabababcefg—第一类:版本1与版本2的yang定义中都包含了相同的a、b结构,则提取a、b结构作一次代码生成,供版本1和版本2生成模型代码引用,且版本1中再增加c结构代码,版本2中再增加d结构代码,完成两个版本的模型代码输出。第二类:与第一类不同的是版本1比版本2多一个c结构,处理方法与第一类类似,提取a、b结构作一次代码生成,供版本1和版本2生成模型代码引用,且版本1中再增加c结构代码,完成两个版本的模型代码输出。第三类:版本1与版本2的yang文件中无共有结构,无法提取。该步骤通过扫描比对后,对共有结构进行提取,借助面向对象语言封装、继承、多态可实现重用。最终以接口配置形式,固化在控制器设备管理组件中。表5表5通过xml文件记录比对后的共有结构信息,如共有结构physicalport,在1.0版本中的实现为physicalportone,在1.1版本中实现为physicalportonepointone。而针对physicallink,则都使用同样的实现,即共有结构physicallinkcommon。当控制器与设备协商确定yang文件的版本号后,根据版本号获取该yang文件的模型代码进行业务开发与使用。步骤205:根据步骤204中的比对结果,基于yang文件和配置的bcb生成模型代码,该模型代码可以是基于java代码生成的接口、组件、系统,将模型代码导入到控制器中。由于模型代码需要能够促进与多种设备的交互,所以所生成的代码是无状态的且非单例服务模式。由于它在结构上的简单性和灵活性,它可以按照定义的模式自动生成代码从而缓解开发的压力。实施例二下面以一个具体实例进一步说明本申请。在硬件设备领域中,yang作为数据建模语言,描述了设备的属性及功能。控制器管理设备则需要对设备的信息进行存储,包括缓存及持久化。orm框架采用元数据来描述对象关系映射细节,可以将javabean与数据库表、字段映射,orm框架在运行时就能参照orm信息,将对象持久化到数据库中,因此需要在javabean上增加orm信息。采用相关技术中的yang代码生成工具和方法时,如果需在最终代码中增加orm信息,由于生成规则的硬编码,则需要修改大量代码,且风险不可控。本申请中基于bcb,只需要在相关模板中增加相关内容,无需分别修改各版本的yang文件的模型代码。在传统的javabean模型中增加orm(objectrelationalmapping,对象关系映射)信息,用于映射至各类关系型数据库,称为ormjavabean模型。相关技术中由yang文件生成的javabean代码如表6所示。表6javabean代码本申请中基于bcb生成的ormjavabean代码如下表7。表7ormjavabean代码从上述简单的示例对比,ormjavabean中针对属性增加了@column,针对类增加了@table等注解,即增加了orm信息。可以在bcb中进行配置,由于注解存在于属性、类上,所以在属性模板与类模板中增加相应配置,如表8和表9所示。表8属性模板表9类模板通过上述模板的配置,使javabean的生成增加orm信息。同时所见即所得,提高了开发测试效率。ormjavabean生成后,app应用则对javabean进行数据的持久化。整个需求响应的过程只需要针对bcb进行配置,通过修改模板从而使得最终代码发生改变,不需要直接对最终生成的代码进行修改,修改的工作量大大减小。本发明一实施例提供一种控制器中模型代码配置装置,如图3所示,包括:配置模块301,设置为,获取设备的待转化的yang文件,建立所述待转化的yang文件所需模板,对所述模板进行配置;代码生成模块302,设置为,根据所述待转化的yang文件以及配置的所述模板,生成模型代码;导入模块303,设置为,将所述模型代码导入到所述控制器。在一可选实施例中,所述配置模块301还设置为,根据所述待转化的yang文件进行如下至少之一配置:路径配置、关键字冲突配置、自定义的字段映射配置。在一可选实施例中,所述代码生成模块302根据所述待转化的yang文件以及配置的所述模板,生成模型代码包括:如果所述待转化的yang文件为同一设备的多个版本的yang文件,对该多个yang文件进行结构的比对提取,提取共有结构并记录,生成所述共有结构的代码,所述待转化的yang文件的模型代码继承该共有结构的代码。在一可选实施例中,所述代码生成模块302根据所述待转化的yang文件以及配置的所述模板,生成模型代码还可包括:获取已记录的共有结构,判断所述待转化的yang文件中是否包含所述已记录的共有结构,如果包含,则所述待转化的yang文件的模型代码继承所述待转化的yang文件所包含的共有结构的代码。在一可选实施例中,所述代码生成模块302还设置为,在根据所述待转化的yang文件以及配置的所述模板,生成模型代码前,将yang的扩展的巴科斯范式语法转译为语法分析器antlr的文法,将所述待转化的yang文件转化为antlr文法的文件后进行词法分析和语法分析。本发明一实施例提供一种控制器配置装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,执行以下操作:获取设备的待转化的yang文件,建立所述待转化的yang文件所需模板,对所述模板进行配置;根据所述待转化的yang文件以及配置的所述模板,生成模型代码;将所述模型代码导入到控制器。本发明一实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:获取设备的待转化的yang文件,建立所述待转化的yang文件所需模板,对所述模板进行配置;根据所述待转化的yang文件以及配置的所述模板,生成模型代码;将所述模型代码导入到控制器。所述计算机可读存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1