CN110460461B - Yang模式语言到命令行的映射方法及系统 - Google Patents
Yang模式语言到命令行的映射方法及系统 Download PDFInfo
- Publication number
- CN110460461B CN110460461B CN201910620745.0A CN201910620745A CN110460461B CN 110460461 B CN110460461 B CN 110460461B CN 201910620745 A CN201910620745 A CN 201910620745A CN 110460461 B CN110460461 B CN 110460461B
- Authority
- CN
- China
- Prior art keywords
- command
- node
- yang
- container
- mark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0213—Standardised network management protocols, e.g. simple network management protocol [SNMP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0226—Mapping or translating multiple network management protocols
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种YANG模式语言到命令行的映射方法及系统,涉及SDN网络设备北向接口领域。该方法包括以下步骤:加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则;根据映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本。本发明提高了转化方案的可靠性,确保信息模型在SDN网络设备在升级演进过程前向兼容。
Description
技术领域
本发明涉及SDN网络设备北向接口领域,具体是涉及一种YANG模式语言到命令行的映射方法及系统。
背景技术
随着SDN(Software Defined Networks,软件定义网络)技术演进,网络设备的信息管理由TELENT+命令行管理方式,向NETCONF+YANG管理转变。
YANG模式语言在SDN网络设备中用于描述北向接口信息模型,为考虑前向兼容,在设计YANG模型时,应支持兼容原有命令行(Command Line)管理方式下的设备信息模型。
诸如XSD(XML Schemas Definition,XML文件结构定义文件)、JSON(JavaScriptObject Notation,JavaScript对象表示法)、YANG之类的模式语言都可以将信息模型进行结构化的描述,例如:元素声明、属性声明、简单类型定义和复杂类型定义,以及逻辑约束规则等等。命令行属于人机交互语言,针对配置功能,命令行的设计本身是基于视图+关键字的风格,这种风格利于人工识别,但无法直观的体现信息模型。因此,从模式语言到命令行的转换(Conversion)存在较大困难。
当前模式语言到命令行的转换方案中,传统的方式是采用手工控制方式,编写命令行控制脚本,并将模式语言中的信息映射至命令行控制脚本,在设计命令行控制脚本时,该过程需穷举所有模式语言的信息使用场景,将模式语言的信息数据逐一映射到控制脚本中。传统转换方案无法做到自动化,容易存在信息遗漏,且依赖人工编写控制脚本,维护难度较大。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:在SDN网络设备的YANG模型设计中,从模式语言到命令行的转化时,急需一种能从YANG模式语言到命令行的映射方法,解决当前转化方案中存在可靠性、可维护的问题,确保信息模型前向兼容。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种YANG模式语言到命令行的映射方法及系统,提高了转化方案的可靠性,确保信息模型在SDN网络设备在升级演进过程前向兼容。
本发明提供一种YANG模式语言到命令行的映射方法,包括以下步骤:
加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则;
根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本。
在上述方案的基础上,所述映射关系包括:
若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字;若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字;若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型列表映射到命令关键字;
若某命令包含多个句元,则将YANG模式语言的隐含型容器映射到命令关键字;若某命令仅包含单个句元,则将YANG模式语言的数据节点映射到命令关键字。
在上述方案的基础上,所述扩展标记的添加规则包括:
若某命令执行后进入某子视图,在列表内增加进入子视图标记;
若某命令包含多个句元,在容器内增加隐含型容器标记;
若容器内的节点为列表的关键字节点,在该节点中增加关键字标记;
若容器内的多个节点之间输出命令行时存在先后次序,则在该句元对应的YANG语言节点中增加前序命令节点标识;
若容器、列表或节点在输出命令行时不需要输出参数ID,在该容器、列表或节点中增加省略输出参数ID标识。
在上述方案的基础上,根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本,具体包括以下步骤:
在NETCONF框架中,将YANG模式的实例数据转化为树形XML数据,并根据所述扩展标记的添加规则,添加YANG模式语言中的扩展标记;
采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本。
在上述方案的基础上,所述采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本,具体包括以下步骤:
读取脚本XML数据,采用SAX对XML数据进行扫描,将容器、列表、数据节点元素逐条解析,并转化成命令行文本:
优先查找该节点下是否存在携带关键字标记的子节点元素,若存在,则将该节点与所有携带关键字标记的子节点合并生成一条命令行;
若读取到进入子视图标记,则在携带进入子视图标记的容器或列表下的所有节点数据后,增加退出命令;
若读取到隐含型容器标记,则将该节点数据缓存,并读取该节点下的所有子节点元素,并根据子节点元素的前序命令节点标记确定相互之间先后顺序,最终与该节点合并生成命令行;
若读取到省略输出参数ID标记,则将该容器、列表或节点中转化为命令行时,仅输出XML标记内容。
本发明提供一种YANG模式语言到命令行的映射系统,包括:
映射关系加载单元,用于:加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则;
数据转化单元,用于:根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本。
在上述方案的基础上,所述映射关系包括:
若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字;若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字;若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型列表映射到命令关键字;
若某命令包含多个句元,则将YANG模式语言的隐含型容器映射到命令关键字;若某命令仅包含单个句元,则将YANG模式语言的数据节点映射到命令关键字。
在上述方案的基础上,所述扩展标记的添加规则包括:
若某命令执行后进入某子视图,在列表内增加进入子视图标记;
若某命令包含多个句元,在容器内增加隐含型容器标记;
若容器内的节点为列表的关键字节点,在该节点中增加关键字标记;
若容器内的多个节点之间输出命令行时存在先后次序,则在该句元对应的YANG语言节点中增加前序命令节点标识;
若容器、列表或节点在输出命令行时不需要输出参数ID,在该容器、列表或节点中增加省略输出参数ID标识。
在上述方案的基础上,所述数据转化单元具体用于:
在NETCONF框架中,将YANG模式的实例数据转化为树形XML数据,并根据所述扩展标记的添加规则,添加YANG模式语言中的扩展标记;
采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本。
在上述方案的基础上,所述数据转化单元采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本,具体包括以下步骤:
读取脚本XML数据,采用SAX对XML数据进行扫描,将容器、列表、数据节点元素逐条解析,并转化成命令行文本:
优先查找该节点下是否存在携带关键字标记的子节点元素,若存在,则将该节点与所有携带关键字标记的子节点合并生成一条命令行;
若读取到进入子视图标记,则在携带进入子视图标记的容器或列表下的所有节点数据后,增加退出命令;
若读取到隐含型容器标记,则将该节点数据缓存,并读取该节点下的所有子节点元素,并根据子节点元素的前序命令节点标记确定相互之间先后顺序,最终与该节点合并生成命令行;
若读取到省略输出参数ID标记,则将该容器、列表或节点中转化为命令行时,仅输出XML标记内容。
与现有技术相比,本发明的优点如下:
本发明利用YANG模式语言的信息模型描述,以及XML脚本可扩展的特性,加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则,并通过利用现有NETCONF管理框架,以及XML数据解析接口SAX,将YANG模式语言的实例数据转化为命令行执行脚本。本发明能够解决当前转化方案中存在的命令行场景无法穷举的问题,提高了转化方案的可靠性,确保信息模型在SDN网络设备在升级演进过程前向兼容;避免手工编写命令行脚本文件,改由模型驱动生成命令数据,提高SDN业务上线开发和部署速度。
附图说明
图1是本发明实施例中YANG模式语言到命令行的映射方法的流程图。
图2是本发明实施例中步骤S2的具体流程图。
具体实施方式
现在将详细参照本发明的具体实施例,在附图中例示了本发明的例子。尽管将结合具体实施例描述本发明,但将理解,不是想要将本发明限于所述的实施例。相反,想要覆盖由所附权利要求限定的在本发明的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。
注意:接下来要介绍的示例仅是一个具体的例子,而不作为限制本发明的实施例必须为如下具体的步骤、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。
YANG模式语言自带一套完整的语法描述,对数据模型进行描述,本发明实施例中所采用的语法描述包括:
container(容器)指多个信息数据节点(leaf)的集合,其中,presence container(隐含型容器)在本发明实施例中有使用。
list(列表)表示支持多条目数据节点(leaf)集合(即可以存在多个实例),其中list(普通型列表)在本发明实例中有使用。
leaf(数据节点)表示单个信息数据。YANG语法内可在leaf内完整定义该信息数据的相关内容,包含参数id、参数数据类型、参数数据范围、参数缺省值等等。
module(模型)是YANG语法自带标记,表示信息模型。为完成一个完整的功能,需要将各类信息进行集中管理和维护,在module(模型)中,可将所有数据进行组织,包括container/list/leaf均数据模型内部的管理范畴。
基于上述YANG模式语言,参见图1所示,本发明实施例提供一种YANG模式语言到命令行的映射方法,包括以下步骤:
步骤S1、加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则;
步骤S2、根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本。
YANG模式语言支持灵活自定义扩展标记,为满足本发明实施例设计需求,对YANG模式语言进行了扩展。本发明实施例的所有扩展标记均携带了ext前缀(extension的缩写,表示扩展的意思),与YANG语法自带的标记区分,便于辨认。
作为优选的实施方式,映射关系包括:
若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字;若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字;若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型列表映射到命令关键字;
若某命令包含多个句元,则将YANG模式语言的隐含型容器映射到命令关键字;若某命令仅包含单个句元,则将YANG模式语言的数据节点映射到命令关键字。
作为优选的实施方式,所述扩展标记的添加规则包括:
若某命令执行后进入某子视图,在列表内增加进入子视图标记;
若某命令包含多个句元,在容器内增加隐含型容器标记;
若容器内的节点为列表的关键字节点,在该节点中增加关键字标记;
若容器内的多个节点之间输出命令行时存在先后次序,则在该句元对应的YANG语言节点中增加前序命令节点标识;
若容器、列表或节点在输出命令行时不需要输出参数ID,在该容器、列表或节点中增加省略输出参数ID标识。
上文提及的在YANG模式语言中的扩展标记,具体包括:
ext:into-viewer为进入子视图标记;
ext:pre-cli-tag为前序命令节点标记;
ext:no-tag-output为省略输出参数ID标记;
ext:presence为隐含型容器标记;
ext:key为关键字标记。
本发明实施例设计ext扩展标记的添加规则,主要是针对命令行的信息描述特点进行定制,各个ext扩展标记的含义如下:
1)ext:into-viewer(进入子视图标记)
命令行信息描述中,“视图”用于管理多个信息集合。
在某个视图下,可以注册多个不同的“命令关键字”。
命令关键字是某命令在某视图下的唯一标识。
视图本身也支持嵌套。
每个视图在其父视图下都有特定的命令,输入后可进入子视图。
例如:在“视图M”下,存在命令关键字a、b、c命令,其中a命令输入后可进入“子视图A”,b命令和c命令输入后不进入子视图。
在本发明实施例中,ext:into-viewer(进入子视图标记)用于区分命令在输入后,是否会进入某个子视图,当容器或者列表携带ext:into-viewer标记后,成为子视图型容器或子视图型列表。
2)ext:pre-cli-tag(前序命令节点标记)
命令行在设计时,往往可能会将多个信息参数放在一条命令中进行配置,但在输入时,会有参数的输入先后次序。
例如:某命令需要同时输入a、b两个参数,但要求a参数在前,b参数在后。
在本发明实施例中,ext:pre-cli-tag(前序命令节点标记)用于控制参数之间的先后顺序,对于在后面的参数,要求指定其前序参数id。
例如:针对b参数,可指定其ext:pre-cli-tag(前序命令节点标记)的id为a,在生成命令行数据时,可指定a参数在前,b参数在后。
3)ext:no-tag-output(省略输出参数ID标记)
命令行由于是人机交互方式,在实际输入时,为了方便人工输入,会对某些参数进行简化输入,即,仅要求输入参数的值,省略输入参数的id。
例如:网络设备中的命令interface name ge0/1/1,其中,interface(接口)是命令关键字,不可省略,name ge0/1/1是一个整体,表示一个参数,其中参数的id为name(名称),参数的值为ge/1/1,作为共识,业内人员都能明白ge0/1/1这种格式的字符串隐含“name”,表示接口名称。因此,在输入命令时,可省略输入“name”,直接用interface ge0/1/1完成输入。
针对这种命令行使用场景,在本发明实施例中,使用ext:no-tag-output(省略输出参数ID标记),对不需输出参数id的container/list/leaf,可通过设置该标记进行区分。
4)ext:presence(隐含型容器标记)
在本发明实施例中,需要将YANG模式语言数据实例转化为XML(ExtensibleMarkup Language,可扩展标记语言)数据,本发明实施例设计中,需要额外携带一些YANG模式语言的信息,若某个容器是隐含型容器(presence container),则生成ext:presence(隐含型容器标记)。
5)ext:key(关键字标记)
在本发明实施例中,需要将模式语言数据实例转化为XML数据,本发明实施例设计中,需要额外携带一些YANG模式语言的信息。
例如:list(列表)数据,需要明确其关键字(key)用于区分不同的条目实例。因此,在本发明实施例中,列表数据的关键字节点,均需生成ext:key(关键字标记)。
在YANG模式语言中添加扩展标记的添加规则包括:根据加载的扩展标记添加规则,如命令执行后是否进入子视图、是否创建实例条目、命令是否包含多个参数等,在YANG模式语言的container(容器)、list(列表)或leaf(数据节点)中添加对应的扩展标记,下面举例进行详细说明。
具体而言,若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字,并在container(容器)内增加ext:into-viewer(进入子视图标记)。
若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字,并在list(列表)内增加ext:into-viewer(进入子视图标记)。
若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型list(列表)映射到命令关键字,不增加标记;
若某命令包含多个参数,则将YANG模式语言的隐含型容器(presence container)映射到命令关键字,在container(容器)内增加ext:presence(隐含型容器标记);
若某命令仅包含单个参数,则将YANG模式语言的leaf(数据节点)映射到命令关键字,不增加标记;
对于逻辑相关的若干container(容器)或list(列表),则通过YANG模式语言的module(模型)语句,组织成逻辑模型。
若container(容器)内的多个leaf(数据节点)之间输出命令行时存在先后次序,即:某后序leaf(数据节点)从命令行格式上是必须处在另外一个前序leaf(数据节点)后面,则在后序leaf(数据节点)内增加ext:pre-cli-tag(前序命令节点标记)。
若某leaf(数据节点)在输出命令行时不需要leaf(数据节点)定义的语句ID,则在该leaf(数据节点)内增加ext:no-tag-output(省略输出参数ID标记)。
作为优选的实施方式,参见图2所示,步骤S2具体包括以下步骤:
步骤S21、根据扩展标记的添加规则,在NETCONF框架中,将YANG模式的实例数据转化为树形XML脚本,并携带上在YANG模式语言中的ext(extension的缩写,表示扩展)标记,具体包括:ext:into-viewer(进入子视图标记)、ext:pre-cli-tag(前序命令节点标记)、ext:no-tag-output(省略输出参数ID标记)、ext:presence(隐含型容器标记)、ext:key(关键字标记);
步骤S22、利用SAX(Simple API for XML,XML数据解析接口)根据映射关系和扩展标记,解析XML数据,并生成命令行脚本。
SAX表示一种XML脚本文件的解析接口和方法,为业界成熟技术,因此不在本发明实施例内具体描述技术细节。
作为优选的实施方式,步骤S21具体包括以下步骤:
在NETCONF框架中,将YANG模型内container(容器)、list(列表)、leaf(数据节点)转化成XML格式数据,并携带扩展标记。当前业界的NETCONF管理框架中,均支持将YANG模式的配置实例数据转化为XML格式,此处不再赘述。
例如:将YANG模式语言中的隐含型容器转化为XML格式数据时,在container(容器)内增加ext:presence(隐含型容器标记)。
对于YANG模式语言中的list(列表),若leaf(数据节点)属于list(列表)的关键字(key)信息,则需要在转化为XML格式数据时,在list(列表)内增加ext:key(关键字标记)。
作为优选的实施方式,步骤S22具体包括以下步骤:
读取XML格式数据,利用SAX数据解析接口,对XML格式数据进行扫描;按照XML格式数据节点深度以及YANG模式语言的映射关系,将container(容器)、list(列表)、leaf(数据节点)等元素逐条解析并转化成命令行文本。
优先查找当前leaf(数据节点)深度下携带ext:key(关键字标记)的子节点元素,如果存在携带ext:key(关键字标记)的子节点元素,则将当前leaf(数据节点)与所有携带ext:key(关键字标记)的子节点元素合并,生成一条命令行。
若读取到ext:into-viewer(进入子视图标记),则表示某container(容器)或list(列表)执行后进入子视图,待该container(容器)和list(列表)下的所有leaf(数据节点)执行结束后,在container(容器)内增加exit退出命令。
若读取到ext:presence(隐含型容器标记),则缓存当前leaf(数据节点),并读取该leaf(数据节点)下的所有子元素,并根据子元素的ext:pre-cli-tag(前序命令节点标记),确定相互之间的先后顺序,最终与该leaf(数据节点)合并,生成命令行。
若读取到ext:no-tag-output(省略输出参数ID标记),将container(容器)、list(列表)或leaf(数据节点)转化为命令行时,仅输出XML标记内容。
本发明实施例支持复杂的命令行配置视图定义:利用YANG模型自身的container(容器)、list(列表)这一类容器语句,可将复杂的命令行配置视图(以及视图之间的嵌套关系)体现在YANG模式语言。本发明实施例基于现有NETCONF管理框架和SAX数据解析接口,可完成YANG模式语言到命令行脚本的自动映射转换(Automatic Mapping and Conversion)。
本发明实施例将模式语言转化XML数据后,再解析转化为命令行,通过添加用于补充描述命令行信息模型扩展标记,标识句元与视图的关联关系、关键字描述、句元之间的先后次序等等,从语义角度将命令行信息模型所缺失的信息补充完整。
本发明实施例还提供一种YANG模式语言到命令行的映射系统,包括规则定义单元和转化单元,其中:
映射关系加载单元,用于:加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则;
数据转化单元,用于:根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本。
所述映射关系包括:
若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字;若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字;若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型列表映射到命令关键字;
若某命令包含多个句元,则将YANG模式语言的隐含型容器映射到命令关键字;若某命令仅包含单个句元,则将YANG模式语言的数据节点映射到命令关键字。
对于YANG模式语言的module(模型)语句,需整体下发一个或多个视图内的不同命令行,将逻辑相关的若干container(容器)或list(列表)根据上述映射关系分别映射到命令关键字。
所述扩展标记的添加规则包括:
若某命令执行后进入某子视图,在列表内增加进入子视图标记;
若某命令包含多个句元,在容器内增加隐含型容器标记;
若容器内的节点为列表的关键字节点,在该节点中增加关键字标记;
若容器内的多个节点之间输出命令行时存在先后次序,则在该句元对应的YANG语言节点中增加前序命令节点标识;
若容器、列表或节点在输出命令行时不需要输出参数ID,在该容器、列表或节点中增加省略输出参数ID标识。
在YANG模式语言中的扩展标记,具体包括:
ext:into-viewer(进入子视图标记);
ext:pre-cli-tag(前序命令节点标记);
ext:no-tag-output(省略输出参数ID标记);
ext:presence(隐含型容器标记);
ext:key(关键字标记)。
在YANG模式语言中添加扩展标记时,根据加载的扩展标记添加规则,如命令执行后是否进入子视图、是否创建实例条目、命令是否包含多个参数等,在YANG模式语言的container(容器)、list(列表)或leaf(数据节点)中添加对应的扩展标记,下面举例进行详细说明。
具体而言,若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字,并在container(容器)内增加ext:into-viewer(进入子视图标记)。
若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字,并在list(列表)内增加ext:into-viewer(进入子视图标记)。
若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型list(列表)映射到命令关键字,不增加标记;
若某命令包含多个参数,则将YANG模式语言的隐含型容器(presence container)映射到命令关键字,在container(容器)内增加ext:presence(隐含型容器标记)。
若某命令仅包含单个参数,则将YANG模式语言的leaf(数据节点)映射到命令关键字,不增加标记。
若container(容器)内的多个leaf(数据节点)之间输出命令行时存在先后次序,即:某后序leaf(数据节点)从命令行格式上是必须处在另外一个前序leaf(数据节点)后面,则在后序leaf(数据节点)内增加ext:pre-cli-tag(前序命令节点标记)。
若某leaf(数据节点)在输出命令行时不需要leaf(数据节点)定义的语句ID,则在该leaf(数据节点)内增加ext:no-tag-output(省略输出参数ID标记)。
作为优选的实施方式,数据转化单元具体用于:
在NETCONF框架中,将YANG模式的实例数据转化为树形XML数据,根据所述扩展标记的添加规则,添加YANG模式语言中的扩展标记;
采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本。
SAX表示一种XML脚本文件的解析接口和方法,为业界成熟技术,因此不在本发明实施例内具体描述技术细节。
作为优选的实施方式,数据转化单元具体用于:
在NETCONF框架中,将YANG模型内container(容器)、list(列表)、leaf(数据节点)转化成XML格式数据,并根据扩展标记添加规则添加对应的扩展标记。当前业界的NETCONF管理框架中,均支持将YANG模式的配置实例数据转化为XML格式,此处不再赘述。
例如:将YANG模式语言中的隐含型容器转化为XML格式数据时,在container(容器)内增加ext:presence(隐含型容器标记)。
对于YANG模式语言中的list(列表),若leaf(数据节点)属于list(列表)的关键字(key)信息,则需要在转化为XML格式数据时,在list(列表)内增加ext:key(关键字标记)。
作为优选的实施方式,数据转化单元根据映射关系和扩展标记,将XML脚本数据转化为命令行脚本,具体包括以下步骤:
读取XML格式数据,利用SAX数据解析接口,对XML格式数据进行扫描;按照XML格式数据节点深度以及YANG模式语言的映射关系,将container(容器)、list(列表)、leaf(数据节点)等元素逐条解析并转化成命令行文本。
优先查找当前leaf(数据节点)深度下携带ext:key(关键字)标记的子节点元素,如果存在携带ext:key(关键字)标记的子节点元素,则将当前leaf(数据节点)与所有携带ext:key(关键字)标记的子节点元素合并,生成一条命令行。
若读取到ext:into-viewer(进入子视图)标记,则表示某container(容器)或list(列表)执行后进入子视图,待该container(容器)和list(列表)下的所有leaf(数据节点)执行结束后,在container(容器)内增加exit退出命令。
若读取到ext:presence(隐含型容器标记),则缓存当前leaf(数据节点),并读取该leaf(数据节点)下的所有子元素,并根据子元素的ext:pre-cli-tag(前序命令节点标记),确定相互之间的先后顺序,最终与该leaf(数据节点)合并,生成命令行。
若读取到ext:no-tag-output(省略输出参数ID标记),将container(容器)、list(列表)或leaf(数据节点)转化为命令行时,仅输出XML标记内容。
本发明实施例采用模型驱动数据的思想,通过对YANG模式语言进行标记扩展,自定义一组从YANG模式语言到命令行的自动映射方法,并采用现有NETCONF管理框架,以及XML数据解析接口SAX,将符合自定义YANG模式语言的实例数据转化为命令行执行脚本。基于该映射方法,可避免采用手工控制编写命令行控制脚本,从而解决YANG模式语言到命令行的自动映射,提高SDN网络设备业务开发效率。
注意:上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本发明的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本发明的效果,这种合并和组合而成的实施例也被包括在本发明中,在此不一一描述这种合并和组合。
本发明实施例中提及的优点、优势、效果等仅是示例,而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,本发明实施例公开的上述具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明实施例必须采用上述具体的细节来实现。
本发明实施例中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子,并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。本发明实施例所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。本发明实施例所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本发明实施例中的步骤流程图以及以上方法描述仅作为例示性的例子,并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
另外,本发明各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本发明的概念来结合本文中的各个实施例中相关的部分步骤和部分装置,以构思新的实施例,而这些新的实施例也包括在本发明的范围内。
本发明实施例中的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、ASIC(Application Specific Integrated Circuit,专用集成电路)或处理器。
在实际应用中,可以利用被设计用于执行上述功能的通用处理器、DSP(DigitalSignal Processor,数字信号处理器)、ASIC、FPGA(Field Programmable Gate Array,现场可编程门阵列)或CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合,来实现上述各个例示的逻辑块、模块和电路。其中,通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的一个或多个微处理器或任何其他这样的配置。
结合本发明实施例描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括RAM(Random Access Memory,随机存储器)、ROM(Read-Only Memory,只读存储器)、快闪存储器、EPROM(Electrically Programmable Read-OnlyMemory,可擦除的可编程只读存储器)、EEPROM(Electrically-ErasableProgrammable Read-Only Memory,电可擦可编程只读存储器)、寄存器、硬碟、可移动碟、CD-ROM(Compact Disc Read-Only Memory,紧凑型光盘只读储存器)等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
本发明实施例的方法包括用于实现上述的方法的一个或多个动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
本发明实施例中的功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为一个或多个指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(CD)、激光盘、光盘、DVD(Digital Versatile Disc,数字多功能光盘)、软碟和蓝光盘,其中碟通过磁再现数据,而盘利用激光光学地再现数据。
因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由一个或多个处理器执行以进行在此所述的操作。计算机程序产品可以包括包装的材料。
本发明实施例中的软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、DSL(Digital Subscriber Line,数字用户线路)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
此外,用于实现本发明实施例中的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此所述的方法的手段的传送。或者,在此所述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此所述的方法和技术提供给设备的任何其他适当的技术。
其他例子和实现方式在本发明实施例和所附权利要求的范围和精神内。例如,由于软件的本质,以上所述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
本领域技术人员可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (8)
1.一种YANG模式语言到命令行的映射方法,其特征在于,包括以下步骤:
加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则;
根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本;
所述映射关系包括:
若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字;若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字;若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型列表映射到命令关键字;
若某命令包含多个句元,则将YANG模式语言的隐含型容器映射到命令关键字;若某命令仅包含单个句元,则将YANG模式语言的数据节点映射到命令关键字。
2.如权利要求1所述的YANG模式语言到命令行的映射方法,其特征在于:所述扩展标记的添加规则包括:
若某命令执行后进入某子视图,在列表内增加进入子视图标记;
若某命令包含多个句元,在容器内增加隐含型容器标记;
若容器内的节点为列表的关键字节点,在该节点中增加关键字标记;
若容器内的多个节点之间输出命令行时存在先后次序,则在该句元对应的YANG语言节点中增加前序命令节点标识;
若容器、列表或节点在输出命令行时不需要输出参数ID,在该容器、列表或节点中增加省略输出参数ID标识。
3.如权利要求2所述的YANG模式语言到命令行的映射方法,其特征在于:根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本,具体包括以下步骤:
在NETCONF框架中,将YANG模式的实例数据转化为树形XML数据,并根据所述扩展标记的添加规则,添加YANG模式语言中的扩展标记;
采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本。
4.如权利要求3所述的YANG模式语言到命令行的映射方法,其特征在于:所述采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本,具体包括以下步骤:
读取脚本XML数据,采用SAX对XML数据进行扫描,将容器、列表、数据节点元素逐条解析,并转化成命令行文本:
优先查找该节点下是否存在携带关键字标记的子节点元素,若存在,则将该节点与所有携带关键字标记的子节点合并生成一条命令行;
若读取到进入子视图标记,则在携带进入子视图标记的容器或列表下的所有节点数据后,增加退出命令;
若读取到隐含型容器标记,则将该节点数据缓存,并读取该节点下的所有子节点元素,并根据子节点元素的前序命令节点标记确定相互之间先后顺序,最终与该节点合并生成命令行;
若读取到省略输出参数ID标记,则将该容器、列表或节点中转化为命令行时,仅输出XML标记内容。
5.一种YANG模式语言到命令行的映射系统,其特征在于,包括:
映射关系加载单元,用于:加载YANG模式语言与命令行脚本的映射关系,以及YANG模式语言中的扩展标记的添加规则;
数据转化单元,用于:根据所述映射关系和扩展标记的添加规则,将YANG模式语言的实例数据转化为命令行脚本;
所述映射关系包括:
若某命令执行后进入某子视图,且不创建实例条目,则将YANG模式语言的子视图型容器映射到命令关键字;若某命令执行后进入某子视图,且同时创建实例条目,则将YANG模式语言的子视图型列表映射到命令关键字;若某命令执行后创建实例条目,但不进入子视图,则将YANG模式语言的普通型列表映射到命令关键字;
若某命令包含多个句元,则将YANG模式语言的隐含型容器映射到命令关键字;若某命令仅包含单个句元,则将YANG模式语言的数据节点映射到命令关键字。
6.如权利要求5所述的YANG模式语言到命令行的映射系统,其特征在于:所述扩展标记的添加规则包括:
若某命令执行后进入某子视图,在列表内增加进入子视图标记;
若某命令包含多个句元,在容器内增加隐含型容器标记;
若容器内的节点为列表的关键字节点,在该节点中增加关键字标记;
若容器内的多个节点之间输出命令行时存在先后次序,则在该句元对应的YANG语言节点中增加前序命令节点标识;
若容器、列表或节点在输出命令行时不需要输出参数ID,在该容器、列表或节点中增加省略输出参数ID标识。
7.如权利要求6所述的YANG模式语言到命令行的映射系统,其特征在于:所述数据转化单元具体用于:
在NETCONF框架中,将YANG模式的实例数据转化为树形XML数据,并根据所述扩展标记的添加规则,添加YANG模式语言中的扩展标记;
采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本。
8.如权利要求7所述的YANG模式语言到命令行的映射系统,其特征在于:所述数据转化单元采用SAX解析XML数据,根据映射关系和所述扩展标记,将XML数据转换成命令行脚本,具体包括以下步骤:
读取脚本XML数据,采用SAX对XML数据进行扫描,将容器、列表、数据节点元素逐条解析,并转化成命令行文本:
优先查找该节点下是否存在携带关键字标记的子节点元素,若存在,则将该节点与所有携带关键字标记的子节点合并生成一条命令行;
若读取到进入子视图标记,则在携带进入子视图标记的容器或列表下的所有节点数据后,增加退出命令;
若读取到隐含型容器标记,则将该节点数据缓存,并读取该节点下的所有子节点元素,并根据子节点元素的前序命令节点标记确定相互之间先后顺序,最终与该节点合并生成命令行;
若读取到省略输出参数ID标记,则将该容器、列表或节点中转化为命令行时,仅输出XML标记内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910620745.0A CN110460461B (zh) | 2019-07-10 | 2019-07-10 | Yang模式语言到命令行的映射方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910620745.0A CN110460461B (zh) | 2019-07-10 | 2019-07-10 | Yang模式语言到命令行的映射方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110460461A CN110460461A (zh) | 2019-11-15 |
CN110460461B true CN110460461B (zh) | 2022-01-11 |
Family
ID=68482636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910620745.0A Active CN110460461B (zh) | 2019-07-10 | 2019-07-10 | Yang模式语言到命令行的映射方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110460461B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925517B (zh) * | 2019-12-06 | 2024-02-20 | 中国电信股份有限公司 | 业务功能实现方法、装置和系统 |
CN113452536B (zh) * | 2020-03-24 | 2023-01-06 | 华为技术有限公司 | 一种原子对象的管理方法及装置 |
US20220141256A1 (en) * | 2020-11-02 | 2022-05-05 | Research & Business Foundation Sungkyunkwan University | Method and system for performing security management automation in cloud-based security services |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9374465B1 (en) * | 2015-02-11 | 2016-06-21 | Language Line Services, Inc. | Multi-channel and multi-modal language interpretation system utilizing a gated or non-gated configuration |
CN105847041A (zh) * | 2016-03-18 | 2016-08-10 | 烽火通信科技股份有限公司 | 一种基于网管系统命令行数据的交互方法 |
CN109144489A (zh) * | 2017-06-16 | 2019-01-04 | 上海赛特斯信息科技股份有限公司 | 基于Yang语言模型的状态数据处理方法 |
CN109947995A (zh) * | 2019-02-14 | 2019-06-28 | 烽火通信科技股份有限公司 | 一种高级模型与低级模型的自动映射方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102424056B1 (ko) * | 2017-10-31 | 2022-07-25 | 한국전자통신연구원 | Netconf 기반의 네트워크 시스템 명령어를 yang 언어로 모델링하는 방법 및 장치 |
-
2019
- 2019-07-10 CN CN201910620745.0A patent/CN110460461B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9374465B1 (en) * | 2015-02-11 | 2016-06-21 | Language Line Services, Inc. | Multi-channel and multi-modal language interpretation system utilizing a gated or non-gated configuration |
CN105847041A (zh) * | 2016-03-18 | 2016-08-10 | 烽火通信科技股份有限公司 | 一种基于网管系统命令行数据的交互方法 |
CN109144489A (zh) * | 2017-06-16 | 2019-01-04 | 上海赛特斯信息科技股份有限公司 | 基于Yang语言模型的状态数据处理方法 |
CN109947995A (zh) * | 2019-02-14 | 2019-06-28 | 烽火通信科技股份有限公司 | 一种高级模型与低级模型的自动映射方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于YANG语言的网络配置协议报文转命令行方案设计与实现;邓昊文;《CNKI》;20210301;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110460461A (zh) | 2019-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110460461B (zh) | Yang模式语言到命令行的映射方法及系统 | |
US10534830B2 (en) | Dynamically updating a running page | |
US9678724B2 (en) | System and method for combining text editing and tree encoding for computer programs | |
US7506324B2 (en) | Enhanced compiled representation of transformation formats | |
CN103620586B (zh) | 将源代码链接到运行元素 | |
US20100088676A1 (en) | Comparing and merging structured documents syntactically and semantically | |
Voelter et al. | Supporting Diverse Notations in MPS'Projectional Editor. | |
CN105446725B (zh) | 用于模型驱动开发的方法和系统 | |
CN101763255B (zh) | 一种专用界面工具的格式转换方法及装置 | |
CN102096588A (zh) | 一种包含控件的页面的建立方法 | |
US20090113289A1 (en) | Method for automatically creating transforms | |
US20160306736A1 (en) | Translation verification testing | |
CN110333863A (zh) | 一种生成、显示小程序页面的方法及装置 | |
CN105446986A (zh) | 用于处理web页面的方法和装置 | |
CN110489625A (zh) | 一种网页数据采集模板的生成方法和装置 | |
CN112069129A (zh) | 基于国产cpu的配置文件格式转换方法、装置及介质 | |
CN115202626A (zh) | 一种支持多技术栈组件的低代码前端开发方法 | |
US10956681B2 (en) | Creating apps from natural language descriptions | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
Couto et al. | Application of ontologies in identifying requirements patterns in use cases | |
CN102830957A (zh) | 一种生成界面代码和电视机应用软件的方法 | |
US20050177788A1 (en) | Text to XML transformer and method | |
US20090217156A1 (en) | Method for Storing Localized XML Document Values | |
US8732212B2 (en) | System for simplifying an XML-based schema | |
Böhms et al. | IntUBE energy information integration platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |