OVSDB客户端代码自动生成方法、系统、设备及介质技术方案

技术编号:27067695 阅读:19 留言:0更新日期:2021-01-15 14:49
本发明专利技术公开了一种OVSDB客户端代码自动生成方法、系统、设备及介质,方法包括:获取待解析的Schema文件并进行合法性检查;定义解析后的数据格式,将合法的Schema文件中的内容解析到该数据格式中;基于解析后的数据生成数据库Go语言代码,包括:结合模板代码文件生成公共代码;结合模板代码文件生成每个表项的代码;对生成的代码进行格式化。本发明专利技术使用预先写好的模板代码文件生成所有代码,通过生成OVSDB各表项增删改查API避免用户直接构造数据库操作代码,使用结构化的表项数据避免非结构化的字符串映射,降低了Go语言项目集成OVSDB的难度,增加了代码可读性和可维护性。

【技术实现步骤摘要】
OVSDB客户端代码自动生成方法、系统、设备及介质
本专利技术属于SDN(软件定义网络)以及数据库领域,特别涉及一种OVSDB客户端代码自动生成方法、系统、设备及介质。
技术介绍
SDN网络中的协议按照功能可以分为管理层面协议与控制层面协议。以SDN控制器为界限,按照可编程接口的层级可以分为南向接口与北向接口。OpenFlow协议严格的来说,是一种控制层面的南向接口协议,而OVSDB管理协议,是管理层面的南向接口协议。OVSDB管理协议(OpenvSwitchDatabaseManagementProtocol,开放虚拟交换机数据库管理协议)起初由VMware公司提出,负责管理开源的软件交换机(OpenvSwitch,OVS)的开放虚拟交换机数据库(OpenvSwitchDatabase,OVSDB),是一个用于实现对虚拟交换机的可编程访问和配置管理的SDN管理协议。OVSDB管理协议定义了一套RPC接口,用户可通过远程调用的方式管理OVSDB,主要包括通信协议(JSON-RPC)方法和所支持的OVSDB操作。OVS是OVSDB的主要应用,其数据模式由OVSDBSchema(DB-SCHEMA)定义,交换机支持通过OVSDB与控制器交互数据,这些数据以表的形式存储在OVSDB数据库中,这些表即为OVSDBSchema表,当交换机和控制器都为OVSDBClient(通过ovsdb管理协议,来与ovsdb数据库服务器进行通信)时,可以在表中增加行,还可以订阅行的添加、删除和修改。随着SDN和虚拟化技术的发展,虚拟交换机依靠灵活、弹性、经济的特性已经逐渐取代部分传统硬件交换机,在数据中心网络中占据一席之地。OVSDB也在不停优化强化补齐功能短板,例如安全性、对协议栈的兼容、容灾与逃生等。OVSDB作为数据库基于JSON格式的Schema定义数据库表结构及各成员表项关系,支持RPC接口访问等特性也可以作为通用数据库得到更广泛的应用。现有技术中OVSDB管理协议存在如下一些问题:1、存在数据库大量硬编码且重复性高的操作,繁琐且容易出错;2、业务开发阶段,数据库表项字段新增修改频繁,需要修改的代码可能无法及时发现,遗留BUG;3、ovsdb-client操作命令行要自行构造数据库操作,使用起来比较麻烦,也无法实现测试数据的快速生成。目前OVSDB集成在OVS项目内使用c语言实现其服务端代码及客户端代码。
技术实现思路
专利技术目的:针对现有技术中存在的问题,本专利技术公开了一种OVSDB客户端代码自动生成方法、系统、设备及介质,利用数据库Schema文件自动生成其定义的相关数据库Go语言代码,包含客户端连接、各表项操作API、表项数据结构、相关成员范围定义,降低了Go语言用户使用OVSDB的复杂度,提高代码可读性及可维护性。技术方案:本专利技术采用如下技术方案:一种OVSDB客户端代码自动生成方法,其特征在于,包括如下步骤:S1、获取待解析的Schema文件,并对Schema文件进行合法性检查,Schema文件中定义了包括数据库的属性和数据库中各表项的属性;S2、定义解析后的数据格式,将合法的Schema文件中的内容解析到该数据格式中,得到解析后的数据;S3、基于解析后的数据和模板代码文件生成数据库Go语言代码,其中模板代码文件中包括预先生成的代码模板,包括步骤:S31、遍历解析后的数据,根据数据库属性,结合模板代码文件生成公共代码;S32、遍历解析后的数据,根据各表项属性,结合模板代码文件生成每个表项的API代码;S33、对公共代码和每个表项的API代码进行格式化,得到最终的数据库Go语言代码。优选地,步骤S1中,对Schema文件进行合法性检查包括操作:检查Schema文件是否存在以及打开和读取是否正常;检查Schema文件内容是否符合Json格式语法;检查Schema文件内容中的相关关键字是否符合RFC7047规范;检查是否能够使用ovsdb-tool工具将Schema文件创建为临时数据库文件。优选地,若Schema文件进行合法性检查通过,删除临时数据库文件;若Schema文件进行合法性检查未通过,返回具体错误信息并指导开发人员定位修改Schema文件。优选地,步骤S2中,根据RFC7047规范定义解析后的数据格式。优选地,步骤S2中,调用Go标准库json反序列化函数将Schema文件中的内容解析到定义的数据格式中。优选地,执行步骤S31前,创建生成代码的存放路径目录,若该目录已存在则清空该目录下的旧文件。优选地,步骤S33包括操作:使用gofmt工具对代码进行格式化,包括换行、空格、括号匹配;使用goimport工具对代码进行格式化,导入依赖包。一种OVSDB客户端代码自动生成系统,其特征在于,包括:合法性检查模块:用于获取待解析的Schema文件,并对Schema文件进行合法性检查,Schema文件中定义了包括数据库的属性和数据库中各表项的属性;解析模块:定义解析后的数据格式,将合法的Schema文件中的内容解析到该数据格式中,得到解析后的数据;代码生成模块:基于解析后的数据和模板代码文件生成数据库Go语言代码,其中模板代码文件中包括预先生成的代码模板,包括:公共代码生成模块:遍历解析后的数据,根据数据库属性,结合模板代码文件生成公共代码;表项代码生成模块:遍历解析后的数据,根据各表项属性,结合模板代码文件生成每个表项的API代码;格式化模块:对公共代码和每个表项的API代码进行格式化,得到最终的数据库Go语言代码。优选地,合法性检查模块对Schema文件进行合法性检查包括:Schema文件的打开和读取是否正常、Schema文件内容是否符合Json格式语法、Schema文件内容中的相关关键字是否符合RFC7047规范、是否能够使用ovsdb-tool工具将Schema文件创建为临时数据库文件。优选地,若Schema文件进行合法性检查通过,合法性检查模块删除临时数据库文件;若Schema文件进行合法性检查未通过,合法性检查模块返回具体错误信息并指导开发人员定位修改Schema文件。优选地,解析模块根据RFC7047规范定义解析后的数据格式。优选地,解析模块调用Go标准库json反序列化函数将Schema文件中的内容解析到定义的数据格式中。优选地,代码生成模块还包括目录创建模块,创建生成代码的存放路径目录,若该目录已存在则清空该目录下的旧文件。优选地,格式化模块执行包括以下操作:使用gofmt工具对代码进行格式化,包括换行、空格、括号匹配;使用goimport工具对代码进行格式化,导入依赖包。一种OVSDB客户端代码自动生成设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述任意一项所述OVSDB客户端代码自动生成方法。...

【技术保护点】
1.一种OVSDB客户端代码自动生成方法,其特征在于,包括如下步骤:/nS1、获取待解析的Schema文件,并对Schema文件进行合法性检查,Schema文件中定义了包括数据库的属性和数据库中各表项的属性;/nS2、定义解析后的数据格式,将合法的Schema文件中的内容解析到该数据格式中,得到解析后的数据;/nS3、基于解析后的数据和模板代码文件生成数据库Go语言代码,其中模板代码文件中包括预先生成的代码模板,包括步骤:/nS31、遍历解析后的数据,根据数据库属性,结合模板代码文件生成公共代码;/nS32、遍历解析后的数据,根据各表项属性,结合模板代码文件生成每个表项的API代码;/nS33、对公共代码和每个表项的API代码进行格式化,得到最终的数据库Go语言代码。/n

【技术特征摘要】
1.一种OVSDB客户端代码自动生成方法,其特征在于,包括如下步骤:
S1、获取待解析的Schema文件,并对Schema文件进行合法性检查,Schema文件中定义了包括数据库的属性和数据库中各表项的属性;
S2、定义解析后的数据格式,将合法的Schema文件中的内容解析到该数据格式中,得到解析后的数据;
S3、基于解析后的数据和模板代码文件生成数据库Go语言代码,其中模板代码文件中包括预先生成的代码模板,包括步骤:
S31、遍历解析后的数据,根据数据库属性,结合模板代码文件生成公共代码;
S32、遍历解析后的数据,根据各表项属性,结合模板代码文件生成每个表项的API代码;
S33、对公共代码和每个表项的API代码进行格式化,得到最终的数据库Go语言代码。


2.根据权利要求1所述的一种OVSDB客户端代码自动生成方法,其特征在于,步骤S1中,对Schema文件进行合法性检查包括操作:检查Schema文件是否存在以及打开和读取是否正常;检查Schema文件内容是否符合Json格式语法;检查Schema文件内容中的相关关键字是否符合RFC7047规范;检查是否能够使用ovsdb-tool工具将Schema文件创建为临时数据库文件。


3.根据权利要求2所述的一种OVSDB客户端代码自动生成方法,其特征在于,若Schema文件进行合法性检查通过,删除临时数据库文件;若Schema文件进行合法性检查未通过,返回具体错误信息并指导开发人员定位修改Schema文件。


4.根据权利要求1所述的一种OVSDB客户端代码自动生成方法,其特征在于,步骤S2中,根据RFC7047规范定义解析后的数据格式。


5.根据权利要求1所述的一种OVSDB客户端代码自动生成方法,其特征在于,步骤S2中,调用Go标准库json反序列化函数将Schema文件中的内容解析到定义的数据格式中。


6.根据权利要求1所述的一种OVSDB客户端代码自动生成方法,其特征在于,执行步骤S31前,创建生成代码的存放路径目录,若该目录已存在则清空该目录下的旧文件。


7.根据权利要求1所述的一种OVSDB客户端代码自动生成方法,其特征在于,步骤S33包括操作:使用gofmt工具对代码进行格式化,包括换行、空格、括号匹配;使用goimport工具对代码进行格式化,导入依赖包。


8.一种OVSDB客户端代码自动生成系统,其特征在于,包括:
合法性检查模块:用于获取待解析的Schema文件,并对Schema文件进行合法性检查,Schema文件中定义了包括数据库的属性和数据库中各表项的属性;

【专利技术属性】
技术研发人员:余兆国沈洋
申请(专利权)人:网络通信与安全紫金山实验室
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1