一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于配置节点的方法和装置与流程

2022-07-10 13:27:56 来源:中国专利 TAG:

用于配置节点的方法和装置
1.本技术要求于2020年12月22日提交的申请号为202011531306.1、发明名称为“一种获取配置的方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及网络技术领域,特别涉及一种用于配置节点的方法和装置。


背景技术:

3.在网络技术领域中,命令行界面(command-line interface,cli)作为人机交互的工具,用户使用cli提供的一系列命令行来和网络设备进行互动,其易用性直接决定着用户的使用体验。其中,命令行包括用于配置数据节点的配置命令,cli应该至少具有体验良好的增删查改命令行的功能,以便用户基于cli进行节点配置。
4.目前,在处理节点配置的过程中,一般需要网络配置协议(network configuration protocol,netconf)服务器对cli提供的配置命令所对应的配置进行验证,如验证通过后,netconf服务器才会运行配置命令所对应的配置。
5.其中,节点配置的验证过程可以是:netconf服务器对该配置命令所对应的配置进行验证,若该配置未通过验证,则netconf服务器向cli发送未通过验证的原因,由cli显示未通过验证的原因,以便用户通过未通过验证的原因和用户手册,在cli上尝试构建新的配置命令,并将新的配置命令所对应的新配置发送给netconf服务器,以期新配置能够修复问题。
6.在一些复杂的节点配置过程中,一般待验证的配置比较多,一旦未通过验证的配置也较多时,则需要用户根据netconf服务器返回的各个配置未通过验证的原因,重新构建新的配置命令,导致节点配置时间过长,节点配置效率低。


技术实现要素:

7.本技术实施例提供了一种用于配置节点的方法和装置,能够提高节点配置的效率。该技术方案如下:
8.第一方面,提供了一种用于配置节点的方法,应用于服务器,所述方法包括:
9.获取第一报文,其中,所述第一报文包括第一信息以及第一参数,所述第一信息用于标识对第一数据节点的配置的存储位置,所述第一参数用于标识在满足第一预设条件时开启输出配置信息的模式;当获取到所述第一报文后,基于所述第一信息对所述第一数据节点的所述配置进行验证;基于所述第一参数,在验证结果满足所述第一预设条件时,输出所述配置信息。
10.该方法中,当接收到包括第一信息的报文后,服务器对该第一信息所标识的存储位置内数据节点的配置进行验证,在该数据节点的配置未通过验证时,若该报文包括第一参数,则服务器基于该第一参数开启输出配置信息的模式,并输出建议的配置信息,无须用
户自己构建新的配置命令,来解决该数据节点的配置未通过验证的问题,从而降低了节点配置的时长,提高了节点配置的效率。
11.在一种可能的实现方式中,所述输出所述配置信息包括:
12.基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果;基于所述第一结果,输出所述配置信息;其中,所述第一结果包括所述配置未通过验证的原因。
13.在一种可能的实现方式中,所述第一数据节点的所述配置包括删除所述第一数据节点,所述逻辑关系包括所述第二数据节点引用所述第一数据节点;
14.所述基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果包括:
15.若所述第二数据节点已经建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第二数据节点缺少引用的所述第一数据节点。
16.在一种可能的实现方式中,所述配置信息包括删除所述第二数据节点。
17.在一种可能的实现方式中,所述第一数据节点的所述配置包括建立所述第一数据节点,所述逻辑关系包括所述第一数据节点引用所述第二数据节点;
18.所述基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果包括:
19.若所述第二数据节点还未建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点缺少引用的所述第二数据节点。
20.在一种可能的实现方式中,所述配置信息包括建立所述第二数据节点。
21.在一种可能的实现方式中,所述第一数据节点的所述配置包括建立所述第一数据节点,所述逻辑关系包括所述第一数据节点与所述第二数据节点同时存在;
22.所述基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果包括:
23.若所述第二数据还未建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第二数据节点缺失。
24.在一种可能的实现方式中,所述配置信息包括建立所述第二数据节点。
25.在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括在所述第一数据节点的参数值满足第二预设条件时,所述第二数据节有效;
26.所述基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果包括:
27.若所述第一配置参数值不满足所述第二预设条件,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点的参数值不满足所述第二预设条件。
28.在一种可能的实现方式中,所述配置信息包括:将所述第一数据节点的参数值配置为满足所述第二预设条件。
29.在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括在所述数据结构包括的多个数据节
点中至少一个数据节点的参数值满足第三预设条件时,所述第二数据节点有效,其中,所述多个数据节点包括所述第一数据节点;
30.所述基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果包括:
31.当所述多个数据节点中不存在满足所述第三预设条件的数据节点时,若所述第一配置参数值不满足所述第三预设条件,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述多个数据节点中至少一个数据节点的参数值不满足第三预设条件。
32.在一种可能的实现方式中,所述配置信息包括:
33.建立所述多个数据节点中还未建立的第三数据节点,且将所述第三数据节点的参数值配置为满足所述第三预设条件;
34.或,将所述第一数据节点的参数值配置为满足所述第三预设条件。
35.在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括所述第二数据节点的参数值具有特有属性;
36.所述基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果包括:
37.若所述第二数据节点的参数值为所述第一配置参数值,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因为所述第二数据节点与所述第一数据节点的参数值出现冲突。
38.在一种可能的实现方式中,所述配置信息包括将所述第一数据节点的参数值配置为除所述第一配置参数值以外的任一参数值。
39.在一种可能的实现方式中,所述第一数据节点的所述配置包括在所述第二数据节点中建立第一个数的所述第一数据节点,所述逻辑关系包括所述第二数据节点中所述第一数据节点的个数属于目标范围;
40.所述基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果包括:
41.若所述第一个数不属于所述目标范围,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点的个数不属于所述目标范围。
42.在一种可能的实现方式中,所述配置信息包括:删除第二个数的所述第一数据节点;
43.或,在所述第二数据节点中建立第三个数的所述第一数据节点。
44.在一种可能的实现方式中,所述第一参数包括第一子参数,所述第一子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第一模式或者第二模式,其中,所述第一模式为输出的配置信息包括配置链中的第一个配置,所述第二模式为输出的配置信息包括所述配置链,所述配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置。
45.在一种可能的实现方式中,所述第一参数包括第二子参数,所述第二子参数用于
标识在满足所述第一预设条件时,开启输出配置信息的第三模式或者第四模式,其中,所述第三模式为输出所述配置信息,所述第四模式为输出所述配置信息以及所述第一数据节点的所述配置。
46.在一种可能的实现方式中,所述第一报文为提交commit报文或验证validate报文。
47.第二方面,提供了一种用于配置节点的方法,应用于cli,所述方法包括:
48.生成第一报文,向服务器输出所述第一报文,其中,所述第一报文包括第一信息以及第一参数,所述第一信息用于标识对第一数据节点的配置的存储位置,所述第一参数用于标识在满足第一预设条件时开启输出配置信息的模式。
49.在一种可能实现方式中,所述第一参数包括第一子参数,所述第一子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第一模式或者第二模式,其中,所述第一模式为输出的配置信息包括配置链中的第一个配置,所述第二模式为输出的配置信息包括所述配置链,所述配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置。
50.在一种可能实现方式中,所述第一参数包括第二子参数,所述第二子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第三模式或者第四模式,其中,所述第三模式为输出所述配置信息,所述第四模式为输出所述配置信息以及所述第一数据节点的所述配置。
51.在一种可能实现方式中,所述第一报文为提交报文或验证报文。
52.在一种可能实现方式中,所述向服务器输出所述第一报文之后,所述方法还包括:
53.接收所述配置信息,并显示所述配置信息所包括的配置。
54.第三方面,提供了一种用于配置节点的装置,所述装置包括:
55.获取单元,用于获取第一报文,所述第一报文包括第一信息以及第一参数,所述第一信息用于标识对第一数据节点的配置的存储位置,所述第一参数用于标识在满足第一预设条件时开启输出配置信息的模式;
56.验证单元,用于基于所述第一信息对所述第一数据节点的所述配置进行验证;
57.输出单元,用于基于所述第一参数,在验证结果满足所述第一预设条件时,输出所述配置信息。
58.在一种可能的实现方式中,所述输出单元包括:
59.获取子单元,用于基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果,所述第一结果包括所述配置未通过验证的原因;
60.输出子单元,用于基于所述第一结果,输出所述配置信息。
61.在一种可能的实现方式中,所述第一数据节点的所述配置包括删除所述第一数据节点,所述逻辑关系包括所述第二数据节点引用所述第一数据节点;
62.所述获取子单元,用于若所述第二数据节点已经建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第二数据节点缺少引用的所述第一数据节点。
63.在一种可能的实现方式中,所述配置信息包括删除所述第二数据节点。
64.在一种可能的实现方式中,所述第一数据节点的所述配置包括建立所述第一数据节点,所述逻辑关系包括所述第一数据节点引用所述第二数据节点;
65.所述获取子单元,用于若所述第二数据节点还未建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点缺少引用的所述第二数据节点。
66.在一种可能的实现方式中,所述配置信息包括建立所述第二数据节点。
67.在一种可能的实现方式中,所述第一数据节点的所述配置包括建立所述第一数据节点,所述逻辑关系包括所述第一数据节点与所述第二数据节点同时存在;
68.所述获取子单元,用于若所述第二数据还未建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第二数据节点缺失。
69.在一种可能的实现方式中,所述配置信息包括建立所述第二数据节点。
70.在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括在所述第一数据节点的参数值满足第二预设条件时,所述第二数据节有效;
71.所述获取子单元,用于若所述第一配置参数值不满足所述第二预设条件,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点的参数值不满足所述第二预设条件。
72.在一种可能的实现方式中,所述配置信息包括:将所述第一数据节点的参数值配置为满足所述第二预设条件。
73.在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括在所述数据结构包括的多个数据节点中至少一个数据节点的参数值满足第三预设条件时,所述第二数据节点有效,其中,所述多个数据节点包括所述第一数据节点;
74.所述获取子单元,用于当所述多个数据节点中不存在满足所述第三预设条件的数据节点时,若所述第一配置参数值不满足所述第三预设条件,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述多个数据节点中至少一个数据节点的参数值不满足第三预设条件。
75.在一种可能的实现方式中,所述配置信息包括:
76.建立所述多个数据节点中还未建立的第三数据节点,且将所述第三数据节点的参数值配置为满足所述第三预设条件;
77.或,将所述第一数据节点的参数值配置为满足所述第三预设条件。
78.在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括所述第二数据节点的参数值具有特有属性;
79.所述获取子单元,用于若所述第二数据节点的参数值为所述第一配置参数值,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因为所述第二数据节点与所述第一数据节点的参数值出现冲突。
80.在一种可能的实现方式中,所述配置信息包括将所述第一数据节点的参数值配置为除所述第一配置参数值以外的任一参数值。
81.在一种可能的实现方式中,所述第一数据节点的所述配置包括在所述第二数据节点中建立第一个数的所述第一数据节点,所述逻辑关系包括所述第二数据节点中所述第一数据节点的个数属于目标范围;
82.所述获取子单元,用于若所述第一个数不属于所述目标范围,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点的个数不属于所述目标范围。
83.在一种可能的实现方式中,所述配置信息包括:
84.删除第二个数的所述第一数据节点;
85.或,在所述第二数据节点中建立第三个数的所述第一数据节点。
86.在一种可能的实现方式中,所述第一参数包括第一子参数,所述第一子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第一模式或者第二模式,其中,所述第一模式为输出的配置信息包括配置链中的第一个配置,所述第二模式为输出的配置信息包括所述配置链,所述配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置。
87.在一种可能的实现方式中,所述第一参数包括第二子参数,所述第二子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第三模式或者第四模式,其中,所述第三模式为输出所述配置信息,所述第四模式为输出所述配置信息以及所述第一数据节点的所述配置。
88.在一种可能的实现方式中,所述第一报文为提交报文或验证报文。
89.第四方面,提供了一种用于配置节点的装置,所述装置包括:
90.生成单元,用于生成第一报文,所述第一报文包括第一信息以及第一参数,所述第一信息用于标识对第一数据节点的配置的存储位置,所述第一参数用于标识在满足第一预设条件时开启输出配置信息的模式;
91.输出单元,用于向服务器输出所述第一报文。
92.在一种可能实现方式中,所述第一参数包括第一子参数,所述第一子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第一模式或者第二模式,其中,所述第一模式为输出的配置信息包括配置链中的第一个配置,所述第二模式为输出的配置信息包括所述配置链,所述配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置。
93.在一种可能实现方式中,所述第一参数包括第二子参数,所述第二子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第三模式或者第四模式,其中,所述第三模式为输出所述配置信息,所述第四模式为输出所述配置信息以及所述第一数据节点的所述配置。
94.在一种可能实现方式中,所述第一报文为提交报文或验证报文。
95.在一种可能实现方式中,所述装置还包括:
96.接收单元,用于接收所述配置信息;
97.显示单元,用于显示所述配置信息所包括的配置。
98.第五方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条程序代码,该程序代码由该处理器加载并执行以实现如上述第一方面或上
述第一方面的任一种可选方式提供的方法所执行的操作。
99.第六方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条程序代码,该程序代码由该处理器加载并执行以实现如上述第二方面或上述第二方面的任一种可选方式提供的方法所执行的操作。
100.第七方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该程序代码由处理器加载并执行以实现如上述任一种方法所执行的操作。
101.第八方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括程序代码,该程序代码存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该程序代码,处理器执行该程序代码,使得该计算机设备执行上述第一方面或者第一方面的各种可选实现方式中提供的方法,或使得该计算机设备执行上述第二方面或者第二方面的各种可选实现方式中提供的方法。
附图说明
102.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
103.图1是本技术实施例提供的一种用于配置节点的系统的示意图;
104.图2是本技术实施例提供的一种用于配置节点的方法流程图;
105.图3是本技术实施例提供的一种计算机设备的结构示意图;
106.图4是本技术实施例提供的一种用于配置节点的方法流程图;
107.图5是本技术实施例提供的一种基于引用关系出错确定配置信息的过程;
108.图6是本技术实施例提供的一种基于不满足条件关系确定配置信息的过程;
109.图7是本技术实施例提供的一种用于配置节点的方法流程图;
110.图8是本技术实施例提供的一种用于配置节点的装置的结构示意图;
111.图9是本技术实施例提供的一种用于配置节点的装置的结构示意图。
具体实施方式
112.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
113.为了便于理解本技术,在此先对本技术涉及到的名词进行如下介绍:
114.数据结构:使用数据建模语言对业务数据进行建模后所得到的一种实例化结构,数据建模语言例如yang,业务数据例如配置数据、状态数据或配置数据和状态数据的组合等,数据结构例如采用yang对业务数据进行建模后所得到的数据树。
115.数据节点:数据节点在数据结构中实例化,该数据结构包括多种数据节点,例如容器(container)、叶(leaf)节点,叶列表,列表,任何数据(anydata)节点和任何可扩展语言(any extensible markup language,anyxml)节点。其中,容器为数据结构中的内部数据节点,该容器最多存在于数据结构中的一个实例中。容器没有价值,而是一组子节点集。容器是属于某一模型的数据节点,例如ifm/interfaces/interface name中的数据节点ifm为
xx-ifm模型中的一个容器,容器中的多个接口(interfaces)为子节点。叶节点为数据结构中最多存在一个实例的数据节点,叶节点具有数值,但没有子节点,例如ifm/interfaces/interface name中数据节点name为一个叶节点,数据节点name能够具有一个具体的数值。叶列表类似于叶节点,但定义了一组唯一可识别的数据节点,而不是单个数据节点,叶列表中的每个数据节点都有一个数值,但没有子节点。列表为可能存在于数据结构的多个实例中的内部数据节点,列表没有数据值,而是一组子节点。anydata节点包括多个未知的子节点,这多个未知的子节点可以采用yang建模得到。anyxml节点为包含未知可扩展语言(extensible markup language,xml)数据块的数据节点。
116.服务器:通过某种网络管理协议向客户端提供对数据结构访问的实体。该服务器包括备选(candidate)数据集以及运行(running)数据集,其中,备选数据集用于暂存cli发送的对各个数据节点的配置,对一个数据节点的配置可以理解为对该数据节点进行的配置操作。运行数据集用于存储验证通过的数据节点的配置,服务器通过执行运行数据集中的配置,构建该数据结构。
117.cli:为服务器与用户之间进行交互的界面,是一个客户端。用户在cli上下达各种类型的命令(如编辑(edit)命令、提交(commit)命令以及校验(validate)命令等),其中,cli将用户下达的命令发送给服务器,服务器于接收到命令对数据节点的配置进行处理。不同类型的命令用于指示服务器对数据节点的配置进行不同类型的处理。例如编辑命令用于指示将数据节点的配置编辑至服务器中的备选数据集,提交(commit)命令用于指示对备选数据集中数据节点的配置进行验证,并将验证通过的配置提交至运行数据集。验证报文用于指示对数据库中数据节点的配置进行验证,该数据库包括备选数据集、运行数据集以及其他类型的数据集中的至少一个。该cli为任一种类型的cli,例如模型驱动(model driven,md)-cli。cli以及服务器通过交互,对数据节点的配置进行处理,处理的过程包括配置的编辑过程、提交过程以及查询过程等。以md-cli例,用户通过编辑下述伪代码1中的各个命令行,实现登陆md-cli-》配置编辑-》配置提交-》配置查询-》退出md-cli的用户操作,其中一个命令行为用户在cli上编辑的一个命令,或者认为是用户下达的一个命令。
118.伪代码1:
119.《root@sys》
120.mdcli》system-view#进入系统视图
121.[root@sys]
[0122]
mdcli》edit-config#进入编辑模式
[0123]
[(gl)root@sys]
[0124]
mdcli》ifm interfaces interface name eth0#配置编辑
[0125]
[*(gl)root@sys]/ifm/interfaces/interface[name="eth0"]
[0126]
mdcli》display this candidate#查询备选数据集
[0127]
{
[0128]
"name":"eth0"#查询结果
[0129]
}
[0130]
[*(gl)root@sys]/ifm/interfaces/interface[name="eth0"]
[0131]
mdcli》display this#查询运行数据集
[0132]
[*(gl)root@sys]/ifm/interfaces/interface[name="eth0"]
[0133]
mdcli》commit#配置提交
[0134]
[(gl)root@sys]/ifm/interfaces/interface[name="eth0"]
[0135]
mdcli》display this#再次查询运行数据集
[0136]
{
[0137]
"name":"eth0"#查询结果
[0138]
}
[0139]
[(gl)root@sys]/ifm/interfaces/interface[name="eth0"]
[0140]
mdcli》exit#退出
[0141]
基于上述伪代码1进行如下描述:用户在md-cli内编辑用于指示进入系统视图的登录命令,并通过对该登录命令进行确认操作,以向md-cli下达登录命令。当md-cli检测到用户对该登录命令行进行了确认操作后,进入系统视图。之后,用户在md-cli内编辑用于指示进入编辑模式的模式命令,当md-cli检测到用户对该模式命令行进行了确认操作后,md-cli进入编辑模式。之后,在编辑模式下,用户在md-cli内编辑用于表示数据节点的配置的配置命令,例如配置命令为:ifm/interfaces/interface[name="eth0"],该配置命令所表示的配置为将模型ifm下的数据节点name的参数值配置为eth0。用户通过对该配置命令行进行确认操作,以向cli下达编辑命令。当检测到用户对该配置命令行进行了确认操作后,md-cli将该编辑命令所指示的配置发送给服务器,由服务器将该配置存储在备选数据集。之后,用户在md-cli上编辑用于查询备选数据集的第一查询命令,并通过对该第一查询命令进行确认操作,以向md-cli下达第一查询命令,当检测到用户对该第一查询命令进行了确认操作后,md-cli向服务器发送该第一查询命令。服务器接收到该第一查询命令后,向md-cli返回备选数据集中的该配置,并由md-cli显示查询到的该配置。
[0142]
用户除了能够查询备选数据集中的配置以外,还能够查询运行数据集中的配置。以上述伪代码1为例,用户在md-cli内编辑用于查询运行数据集的第二查询指令,并通过对该第二查询命令进行确认操作,以向md-cli下达第二查询命令;当md-cli检测到用户对该第二查询命令进行了确认操作后,向服务器发送第二查询命令,若备选数据集中的配置还未提交至运行数据集,则运行数据集为空,服务器基于第二查询命令向cli反馈运行数据集为空(也即是没有查询结果)
[0143]
之后为了能够运行备选数据集中的配置,用户在md-cli内编辑用于提交备选数据集的提交命令,并通过对该提交命令进行确认操作,以向md-cli下达提交命令,当md-cli检测到用户对该提交命令进行确认操作后,向服务器发送提交命令。当服务器接收到该提交命令后,该服务器对备选数据集中的各个配置进行验证,将验证通过的配置提交至运行数据集。后续当用户在查询运行数据集中的配置时,服务器将运行数据集中的配置返回md-cli,由md-cli显示运行数据集中的配置。以上述的伪代码1为例,若服务器已经将备选数据集中数据节点name的配置提交到运行数据集,则用户在查询运行数据集时,md-cli能够显示"name":"eth0"。
[0144]
需要说明的是,上述伪代码1是以用户向服务器提交一个配置的编辑任务为例进行说明的,在一种可能的实现方式,当md-cli进入编辑模式后,用户在md-cli中编辑多个配置命令,以便cli将每个配置命令所指示的配置发送该服务器。
[0145]
在一种可能的实现方式中,用户在cli内所编辑的配置命令的格式可以有多种形式,本技术实施例对配置命令的格式不做限定。例如上述伪代码1中的配置命令使用的是每个数据节点以空格分离,从左到右依次深入的方式来配置数据节点。另一种方式是使用接触(touch)命令,其遵循接触路径值(touch path value)的方式来进行编辑数据节点的配置。例如下述2个等价命令,这个2个命令用于指示同一个数据节点的同一个配置。
[0146]
ifm interfaces interface name eth0
[0147]
《==》
[0148]
touch/ifm/interfaces/interface/name eth0
[0149]
在一种可能的实现方式,cli和服务器之间通过netconf报文的形式来互通信息,例如cli通过向服务器发送netconf报文,以向服务器下达命令。对于cli所接收到的任一命令,cli将该任一命令转化为对应类型的netconf报文,并将该转化后的报文发送给服务器,以实现向服务器下达该任一命令。例如cli将编辑模式下的配置命令转化为编辑报文,将提交命令转化为提交报文,将校验命令转化为校验报文。
[0150]
可选地,netconf报文为rpc报文。例如在用户下达上面所提到的touch命令后,cli会把命令转化成如下编辑报文下发给服务器。
[0151][0152]
当服务器将编辑报文所指示的配置存储在备选数据集后,向cli返回下述的编辑成功报文,已告知cli已经编辑成功。
[0153]
《rpc-reply message-id="101"
[0154]
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"》
[0155]
《ok/》
[0156]
《/rpc-reply》
[0157]
图1是本技术实施例提供的一种用于配置节点的系统的示意图,参见图1,该系统
100包括cli 101以及服务器102。在一种可能的实现方式中,该cli 101包括建议转换(recommend transform)模块1011,该cli 101的显示界面用于显示用户编辑的各种命令以及显示服务器102返回的信息。
[0158]
在一种可能的实现方式中,服务器102包括编辑模块1021、校验模块1022、提交模块1023以及建议模块1024。其中,编辑模块1021用于处理配置与编辑的相关任务,编辑模块1021的操作对象一般为备选数据集,例如编辑模块1021将配置命令所指示的配置存储到备选数据集。校验模块1022用对数据库中存储的数据节点的配置进行验证。提交模块1023用于将备选数据集中的配置提交至运行数据集,以便运行提交的配置操作。建议模块1024用于针对校验模块1022验证未通过的配置,向cli 101返回建议的配置信息。
[0159]
为了进一步说明该cli 101以及服务器102中的各个模块之间的交互过程,以图2所示的本技术实施例提供的一种用于配置节点的方法流程图为例,进行如下描述:
[0160]
其中,节点配置为数据节点的配置的简称,在节点配置的编辑过程中,当cli 101处于编辑模式时,用户在cli 101的显示界面内编辑用于指示数据节点的配置的配置命令,并向cli 101下达编辑指令,cli 101将该配置命令转换为编辑报文,发送给服务器102中的编辑模块1021。当编辑模块1021接收到该编辑报文后,对该编辑报文所指示的数据节点的配置进行初始验证,若该数据节点的配置通过初始验证,则编辑模块1021将该数据节点的配置存储在备选数据集,并向cli 101返回编辑成功报文。当cli 101接收到该编辑成功报文后,cli 101在显示界面内显示编辑成功的消息,以告知用户其编辑的数据节点的配置已经编辑成功。其中,初始验证是为了验证cli 101所提供的数据节点的配置是否符合基本的预定义规则。以该数据节点的配置包括建立一个数据节点为例,若该数据节点为预定义的数据结构中的数据节点,则初始验证通过,否则初始验证不通过。若该数据节点的配置所包括的数据节点的参数值小于该数据节点的阈值,则初始验证通过,否则初始验证不通过。
[0161]
在节点配置的提交过程中,用户在cli 101的显示界面内编辑包括第一参数的提交命令,以向cli 101下达提交命令;cli 101将该提交命令转换为包括该第一参数的提交报文,并将该提交报文发送至服务器102中的提交模块1023。当该提交模块1023接收到该提交报文后,调用校验模块1022对备选数据集中数据节点的配置进行验证,若该数据节点的配置未通过验证,则该校验模块1022基于校验报文包括的第一参数,向建议模块1024发送该数据节点的配置,由建议模块1024基于该数据节点的配置计算建议的配置信息,并将该配置信息转换为建议报文发送给cl。当cli 101接收到该建议报文后,由cli 101中的建议转换模块1011,将该建议报文所在指示的配置信息转换为建议的配置命令,并将该建议的配置命令显示在cli 101的显示界面内,以展示给用户。用户对建议的配置命令进行检查和调整,参照上述节点设备的编辑过程,用户将检查和调整后的配置命令所指示的配置存储在服务器102中的备选数据集。用户再次向cli 101发送包括第一参数的提交命令,cli 101将接收到的提交命令转换为包括第一参数的提交报文,并发送给服务器102中的提交模块1023,再由提交模块1023对备选数据集中数据节点的配置(包括检查和调整后的配置命令所指示的配置)进行验证。若还存在验证未通过的配置操作,则服务器102再次向cli 101返回建议报文。用户再次将检查和调整后的配置命令存储在服务器102的备选数据集并重新下达提交命令。若备选数据集中数据节点的配置通过验证,服务器102向cli 101返回提交成功报文,当cli 101接收到该提交成功报文后,在显示界面上显示提交成功的消息,以告
知用户备选数据集中的配置已经提交到运行数据集。
[0162]
需要说明的是,该系统100可以部署在一个计算机设备上,也可以部署在多个计算机设备。当该系统100部署在一个计算机设备上时,cli 101以及服务器102分别相当于一个独立的处理模块。当该系统100部署在多个计算机设备时,cli 101的功能可以由一个计算机设备来实现,服务器102的功能可以由一个或多个计算机设备实现。
[0163]
参见图3所示的本技术实施例提供的一种计算机设备的结构示意图,该计算机设备300可因配置或性能不同而产生比较大的差异,包括一个或一个以上处理器301和一个或一个以上的存储器302,其中,所述处理器包括中央处理器(central processing units,cpu)所述存储器302中存储有至少一条程序代码,所述至少一条程序代码由所述处理器301加载并执行以实现下述各个方法实施例提供的用于配置节点的方法,在一种可能的实现方式中,若cli配置在该计算机设备300上,则该计算节点设备300用于执行下述各个方法实施例中cli所执行的步骤;在一种可能的实现方式中,若服务器配置在该计算机设备300上,则该计算机设备300用于执行下述各个方法实施例中服务器所执行的操作;在一种可能的实现方式中,若节点设备的系统配置在该计算机设备300上,则该计算机设备300用于执行下述各个方法实施例中各个设备所执行的操作。当然,该配置操作处理设备300还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该配置操作处理设备300还可以包括其他用于实现设备功能的部件,在此不做赘述。
[0164]
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由终端中的处理器执行以完成下述实施例中的配置操作的处理方法。例如,该计算机可读存储介质是非临时计算机可读存储介质,如只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
[0165]
为了进一步体现cli与服务器配合完成节点配置的验证过程,参见图4所示的本技术实施例提供的一种用于配置节点的方法流程图。
[0166]
401、cli获取第一命令。
[0167]
其中,该第一命令包括第一信息以及第一参数。该第一信息用于标识对第一数据节点的配置的存储位置,例如若该第一信息为备选数据集的标识,该第一数据节点的配置存储在备选数据集,若该第一信息为运行数据集的标识,该第一数据节点的配置存储在运行数据集。
[0168]
该第一数据节点的配置为该第一信息所标识的存储位置内存储的任一个配置,其中,该第一数据节点的配置有至少一种,该第一数据节点的配置包括删除该第一数据节点、建立该第一数据节点或将该第一数据节点的参数值配置为第一配置参数值中的任一个。该第一配置参数值为任一数据类型的数据,例如数值或字符串。
[0169]
需要说明的是,当该第一数据节点的配置包括将该第一数据节点的参数值配置为第一配置参数值时,该第一数据节点的配置可能是建立第一数据节点的配置,也可能是修改第一数据节点的参数值的配置。例如若该第一数据节点的配置包括建立参数值为第一配置参数值的一数据节点,则该第一数据节点的配置为建立第一数据节点的配置,若该第一数据节点的配置包括将第一数据节点参数值修改为第一配置参数值,则该第一数据节点的配置为修改第一数据节点的参数值的配置。
[0170]
该第一参数用于标识在满足第一预设条件时开启输出配置信息的模式。其中,第一预设条件包括该第一数据节点的配置未通验证,输出的配置信息为针对该第一数据节点的配置未通过验证的问题,所建议的配置信息。
[0171]
该第一参数开启的输出配置信息的模式不同,输出的配置信息有所不同。在一种可能的实现方式中,该第一参数包括第一建议子参数。该第一建议子参数用于标识在满足该第一预设条件时,开启输出配置信息的第一模式或者第二模式,其中,该第一模式为输出的配置信息包括配置链中的第一个配置操作,该第二模式为输出的配置信息包括配置链,该配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置。该配置链为服务器针对该第一数据节点的配置不满足第一预设条件时进行递归推荐(need-recursion)
[0172]
当第一子参数取值不同时,该第一子参数的标识作用不同。例如当该第一子参数取值为“假(false)”时,该第一子参数用于指示标识在满足该第一预设条件时,开启输出配置信息的第一模式。当该第一子参数取值为“真(ture)”时,该第一子参数用于指示标识在满足该第一预设条件时,开启输出配置信息的第二模式。
[0173]
在一种可能的实现方式中,该第一参数包括第二子参数,该第二子参数用于标识在满足该第一预设条件时,开启输出配置信息的第三模式或者第四模式,其中,该第三模式为输出该配置信息,该第四模式为输出所述配置信息以及该第一数据节点的配置。当第二子参数的取值不同时,该第二子参数所标识的作用不同。例如当该第二子参数取值为真时,该第二子参数用于标识在满足该第一预设条件时,开启输出配置信息的第三模式。当该第二子参数取值为假时,该第二子参数用于标识在满足该第一预设条件时,开启输出配置信息的第四模式。
[0174]
该第一命令为提交命令或者验证命令。当该第一命令为提交命令时,该第一信息的标识为备选数据集的标识,该第一命令用于指示对备选数据集中的配置进行验证,并将验证通过的配置存储到运行数据集。当该第一命令为提交命令时,若提交命令所指示的待提交的配置默认存储在备选数据集,则该第一命令不包括该第一信息。当该第一命令为验证命令时,该第一命令用于指示对该第一数据节点的配置操作进行验证。由于验证命令能够指示对备选数据集中的配置操作进行验证,也能够指示对运行数据集中的配置操作进行验证,则当该第一命令为验证命令时,该第一命令包括第一信息,以明确指示对哪个存储位置中存储的配置进行验证。
[0175]
在一种可能的实现方式中,用户在cli上编辑该第一命令,当该cli检测到用户对该第一命令进行了确认操作时时,该cli获取第一命令。
[0176]
402、该cli基于该第一命令,生成第一报文,该第一报文包括第一信息以及第一参数。
[0177]
该第一报文为提交报文或者验证报文。当该第一命令为提交命令时,该第一报文为提交报文,当该第一命令为验证命令时,该第一报文为验证报文。
[0178]
在一种可能的实现方式中,若该第一命令为提交命令,则该cli基于提交报文的报文格式,将该提交命令转换为提交报文。可选地,该提交报文为rpc报文。可选地,该提交报文的报文格式如下述伪代码2所示。
[0179]
伪代码2:
[0180][0181][0182]
其中,伪代码2中的“recommend”为第一参数,是一个容器,伪代码2中的“need-recursion”和“only-supplement”分别为第一子参数和第二子参数,第一子参数和第二子参数均是第一参数的子节点,“need-recursion”和“only-supplement”的参数值决定了开启的输出配置信息的模式。
[0183]
当该第一命令为验证命令时,该cli基于验证报文的报文格式,将该验证命令转换为验证报文。可选地,该验证报文为rpc报文。可选地,该验证报文的报文格式如下述伪代码
3所示。
[0184]
伪代码3:
[0185]
[0186][0187]
其中,伪代码3中输入的数据来源(source)为一个容器,选择的配置源(choice config-source)为数据来源的一个数据节点,包括运行数据集、备选数据集、启动(startu)数据集等多个叶节点,这个多个叶节点也即是第一信息,当这个多个叶节点中的一个叶节点有效时,该验证报文指示对该叶节点所代表的数据集中的配置进行验证。伪代码3中的“recommend”为第一参数,是一个容器,伪代码3中的“need-recursion”和“only-supplement分别”为第一子参数和第二子参数。
[0188]
403、该cli向服务器发送该第一报文。
[0189]
404、该服务器获取该第一报文。
[0190]
在一种可能的实现中,当获取到第一报文后,该服务器基于该第一报文的报文格式,确定该第一报文为提交报文或者为验证报文,并从该第一报文中获取第一信息,以便服务器基于该第一信息确定待处理的配置所在的存储位置,并对该第一信息所指示的存储位置内的各个配置进行验证。其中,该第一信息所指示的存储位置内的各个配置也即是待处理的配置。下述步骤405所示的过程为该服务器接收到第一报文后,对该存储位置内存储的任一配置操作进行验证的过程。
[0191]
405、服务器对该第一数据节点的配置操作进行验证。
[0192]
在建立数据结构之前或者建立该数据结构的过程中,用户在服务器内预定义数据结构中各个数据节点之间的逻辑关系,以便后续服务器在获取到第一报文后,基于预定义的逻辑关系以,对该第一信息所指示的存储位置内的各个配置进行验证。
[0193]
在一种可能的实现方式中,对于第一数据节点的配置,该服务器基于该第一数据节点与该第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,对该第一数据节点的配置操作进行验证。其中,该第一数据节点所属数据结构为当前正在建立的数据结构,该第二数据节点为该数据结构中与该第一数据节点具有逻辑关系的任一数据节点。
[0194]
第一数据节点与第二数据节点之间的逻辑关系可以有至少一个,服务器基于不同的逻辑关系,对该第一数据节点的配置进行验证的验证方式有所不同,请参见下述验证方式1-7。
[0195]
验证方式1、该逻辑关系包括该第二数据节点引用该第一数据节点。
[0196]
或者可以理解为,预定义的该第二数据节点为第一数据节点的子节点,该第一数据节点为该第二数据节点的父节点。
[0197]
当该第一数据节点的配置包括删除该第一数据节点时,后续若服务器运行该第一数据节点的配置,则服务器将会删除该第一数据节点。若此时第二数据节点已经建立,后续一旦运行该第一数据节点的配置,将会导致第一数据节点被删除,那么已经建立的第二数据节点将会缺少引用的第一数据节点,从而使得第二数据节点不满足该逻辑关系。因此,当该配置操作包括删除该第一数据节点时,若该第二数据节点已经建立,则服务器确定该第一数据节点的配置未通过验证。
[0198]
在一种可能的实现方式中,在该逻辑关系中,采用leafref函数或者instance-identifier函数来修饰第二数据节点,以指示第二数据节点的类型和该第二数据节点所引用的数据节点的类型相同,当该逻辑关系中第二数据节点的需求实例(require-instance)取值为“真”时,若其引用的数据节点不存在,则服务器确定第二数据节点不满足该逻辑关系(也即是第二数据节点不合法),而第二数据节点不满足该逻辑关系是该第一数据节点的配置所导致的,因此,服务器确认该第一数据节点的配置未通过验证。
[0199]
以伪代码4为预定义的acl模型和ifm模型中部分数据节点之间的逻辑关系为例,对验证方式1进行如下说明:
[0200]
伪代码4:
[0201]
[0202][0203]
通过上述伪代码4可知,acl模型的容器list rule-interface下的数据节点interface-name引用了ifm模型的容器interfaces下的数据节点name,且数据节点interface-name由leafref函数所修饰,且require-instance为true。以数据节点interface-name为第二数据节点,数据节点name为第一数据节点为例,若第一数据节点的配置包括删除数据节点interface-name引用的数据节点name,后续将导致数据节点interface-name缺乏引用节点,因此服务器对该数据节点interface-name的配置验证不通过。
[0204]
在一种可能的实现方式中,该逻辑关系为运行数据集中限定的逻辑关系(或者认为是已经通过验证的配置所限定的逻辑关系),也可以为运行数据集以外单独配置的逻辑关系。
[0205]
以下述伪代码5所示的运行数据集为例,该运行数据集中限定了ifm模型中的数据节点name被acl模型中数据节点if-name所引用。
[0206]
伪代码5:
[0207]
[0208][0209]
当伪代码5中ifm模型中的数据节点name为第一数据节点,acl模型中数据节点if-name为第二数据节点时,若该第一数据节点的配置包括删除ifm模型中的数据节点name,例如,该配置由配置命令:remove/ifm/interfaces/interface[name='eth0']来表示。如果该配置当前位于备选数据集,一旦对该配置验证通过,则该配置后续会被提交至运行数据集。当该配置被运行时,服务器将会删除ifm模型中的数据节点name,那么将会导致acl模型中数据节点if-name缺乏引用节点。如果acl模型中数据节点if-name缺乏引用节点,后续会引发服务器向cli发送用于报错的错误报文,以指示acl模型中数据节点if-name缺乏引用的数据节点name,当cli接收到该错误报文,显示该错误报文所指示的错误信息,例如错误消息表示为:
[0210]
leafref"/xx-ifm:ifm/xx-ifm:interfaces/xx-ifm:interface/xx-ifm:name"ofvalue"eth0"points to anon-existing leaf.”。
[0211]
那么,为了避免该配置所引发的后续报错,该服务器不对该配置验证通过。
[0212]
验证方式2、该逻辑关系包括该第一数据节点引用第二数据节点。
[0213]
在一种可能的实现方式中,当该第一数据节点的配置包括建立该第一数据节点时,后续若服务器运行该第一数据节点的配置,则服务器会建立该第一数据节点。若此时第二数据节点还未建立,后续一旦运行该第一数据节点的配置,将会导致已经建立的第一数据节点缺少引用的第二数据节点,从而使得第一数据节点不满足该逻辑关系。因此,当该第一数据节点的配置包括建立该第一数据节点时,若该第二数据节点还未建立,则服务器确定该第一数据节点的配置未通过验证。
[0214]
验证方式3、该逻辑关系包括该第一数据节点与该第二数据节点同时存在。
[0215]
在一种可能的实现方式,当该第一数据节点的配置包括建立该第一数据节点时,后续一旦服务器运行该配置操作,则服务器将会建立该第一数据节点。若此时该第二数据节点还未建立,后续一旦运行该第一数据节点的配置,将导致该第二数据节点和该第一数据节点并未同时存在,也即是该第一数据节点不满足该逻辑关系。因此,当该第一数据节点的配置包括建立该第一数据节点时,若该第二数据节点还未建立,则服务器确定该第一数据节点的配未通过验证。
[0216]
在一种可能的实现方式中,该第二数据节点为该第一数据节点的子节点。可选地,采用mandatory函数来修饰一个数据节点的子节点,以限定当该数据节点实例存在时,该子节点必须也存在,可以理解为限定该数据节点与该数据节点的子节点同时存在。当该逻辑关系中该第一数据节点中的第二数据节点被mandatory函数修饰时,也即是要求该第一数据节点与该第二数据节点同时存在,一旦没有同时存在,则说明不满足该逻辑关系。
[0217]
以下述伪代码6所指示的逻辑关系为例,对验证方式3进行如下说明:
[0218]
伪代码6:
[0219][0220]
从伪代码6中可知,数据节点group内的数据节点type被mandatory函数所修饰,也即是要求数据节点type与数据节点group同时存在,此时,第一数据节点为数据节点group,第二数据节点为数据节点type,若该第一数据节点的配置包括建立该数据节点group,例如该配置由下述配置命令表示:
[0221]
ouch/xx-acl:acl/groups/group[identity='12'],以指示将该数据节点group中的数据节点identity的参数值配置为12。
[0222]
若此时运行数据集为空,一旦对该配置验证通过,则该配置后续会被提交至运行数据集。当该配置被运行时,则服务器将会在数据节点group中将数据节点identity的参数值配置为12。由于数据节点group中的数据节点type被mandatory函数所修饰,因此,若此时数据节点type并未建立,后续一旦运行该配置,将导致数据节点group与数据节点type不同时存在。如果数据节点group与数据节点type不同时存在,后续会引发服务器能向cli发送用于报错的报错报文,以指示数据节点group中缺失数据节点type。当cli接收到该错误报
文,显示该错误报文所指示的错误信息,以指示数据节点group中丢失数据节点type,例如错误消息表示为:missing required element"type"in"group"。那么,为了避免该配置所引发的后续报错,该服务器不对该配置验证通过。
[0223]
验证方式4、该逻辑关系包括在该第一数据节点的参数值满足第二预设条件时,该第二数据节点有效。
[0224]
可选地,该第二预设条件包括该第一数据节点的参数值为第二配置参数值,也即是,该逻辑关系包括在该第一数据节点的参数值为第二配置参数值时,该第二数据节点有效。
[0225]
在一种可能的实现方式中,当该第一数据节点的配置包括将该第一数据节点的参数值配置为第一配置参数值时,后续若该服务器运行该第一数据节点的配置,则服务器会将该第一数据节点的参数值配置为第一配置参数值。若该第一配置参数值不满足该第二预设条件(即第一配置参数值与该第二配置参数值不相同),后续一旦运行该第一数据节点的配置,将导致第一数据节点的参数值不满足第二预设条件,间接引起第二数据节点无效。因此,当该逻辑关系包括该在该第一数据节点的参数值满足第二预设条件时,该第二数据节点有效时,若该第一配置参数值不满足该第二预设条件,则服务器确定该第一数据节点的配置未通过验证。
[0226]
在一种可能的实现方式中,在该逻辑关系中,采用when函数来限定该第二预设条件,一旦运行该第一数据节点配置,若第一数据节点的参数值不满足when函数限定的第二预设条件,则第二数据节点无效,因此,该第一数据节点不满足该逻辑关系。
[0227]
结合下述伪代码7和8,对验证方式4进行如下说明:
[0228]
伪代码7:
[0229]
[0230][0231]
伪代码8:
[0232][0233]
其中,伪代码7包括该逻辑关系,伪代码8为当前的运行数据集。从伪代码7所示的逻辑关系中可知,when函数限定在数据节点no-response-policy的参数值为offline时,数据节点no-response-times有效。此时第一数据节点为数据节点no-response-policy,第二预设条件包括数据节点no-response-policy的参数值为offline,第二数据节点为数据节点no-response-times为例,若该第一数据节点的配置包括将数据节点no-response-times的参数值配置为12,例如该配置可由下述配置命令来表示:
[0234]
touch/aaa/authorization-schemes/authorization-scheme[author-scheme-name="12"]/no-respons e-times 1。
[0235]
由于此时运行数据集中的数据节点no-response-times的参数值为offline,一旦服务器对该配置验证通过,则该配置后续会被提交至运行数据集。当该配置被运行时,服务器会将数据节点no-response-times的参数值配置为12。由于伪代码7所示的逻辑关系限定了在数据节点no-response-policy配置为offline时,数据节点no-response-times有效,因此,后续一旦运行该配置作,将会导致数据节点no-response-policy的参数值为12并不为offline,也就导致数据节点offline无效,后续引发服务器向cli发送用于报错的错误报文。当cli接收到该错误报文,显示该错误报文所指示的错误信息,以指示数据节点no-response-policy的参数值不满足第二预设条件,例如错误消息表示为:when condition"../no-response-policy='offline'"not satisfied。那么,为了避免该配置所引发的后续报错,该服务器不对该配置验证通过。
[0236]
验证方式5、该逻辑关系包括在该数据结构包括的多个数据节点中至少一个数据节点的参数值满足第三预设条件时,该第二数据节点有效。
[0237]
其中,该多个数据节点包括该第一数据节点。该多个数据节点为该数据结构中的部分数据节点。该第三预设条件包括该多个数据节点的参数值。
[0238]
在一种可能的实现方式中,当该第一数据节点的配置为包括将该第一数据节点的参数值为第一配置参数值时,后续一旦运行该第一数据节点的配置,则服务器会将该第一数据节点的参数值配置为第一配置参数值。那么,当该多个数据节点中不存在满足第三预
设条件的数据节点时,若该第一配置参数值不满足该第三预设条件,后续一旦运行该第一数据节点的配置,该多个数据节点中也不会不存在满足第三预设条件的数据节点,则会导致第二数据节点无效。因此,当该多个数据节点中不存在满足该第三预设条件的数据节点时,若该第一配置参数值不满足该第三预设条件,则服务器确定该第一数据节点的配置未通过验证。
[0239]
需要说明的是,当对该第一数据节点的配置进行验证时,若该备选数据集中存储有该多个数据节点中除该第一数据节点以外的任一数据节点的配置,且该任一数据节点的配置中该任一数据节点的参数值满足该第三预设条件,说明后续若运行该任一数据节点的配置,则第三预设条件也能够满足,则服务器对该第一数据节点的配置验证通过。
[0240]
在一种可能的实现方式中,在该逻辑关系中,采用must函数来限定该第三预设条件,若运行该第一数据节点的配置,将会导致该多个数据节点中不存在满足第三预设条件的数据节点,则该第一数据节点不满足该逻辑关系。
[0241]
结合下述伪代码9和10,对验证方式5进行如下说明:
[0242]
伪代码9:
[0243]
[0244][0245]
伪代码10:
[0246][0247]
其中,伪代码9包括该逻辑关系,从伪代码9所示的逻辑关系中可知,must函数限定了在数据节点write、数据节点execute以及数据节点debug中至少一个数据节点的参数值不均为disable时,数据节点read有效。伪代码10为当前的运行数据集,从伪代码10可知,在当前的运行数据集中数据节点read以及数据节点write的参数值均为enable。若该第一数
据节点的配置包括将数据节点read和数据节点write的参数值均配置为disable,例如该配置由下述配置命令表示:
[0248]
touch/xx-aaa:aaa/task-group-task-maps/task-group-task-map[task-group-name="1"][task-name="2"]/write disable
[0249]
touch/xx-aaa:aaa/task-group-task-maps/task-group-task-map[task-group-name="1"][task-name="2"]/read disable。
[0250]
此时数据节点write为第一数据节点,由于在运行数据集中数据节点read以及数据节点write的参数值均为enable,一旦服务器对该配置命令所对应的配置验证通过,则该配置后续会被提交至运行数据集。当该配置被运行时,服务器会将数据节点write的参数值配置为disable。由于该逻辑关系中限定了当数据节点write、数据节点execute以及数据节点debug中至少一个数据节点的参数值不均为disable时,数据节点read有效,而一旦运行了该配置将导致数据节点write的参数值为disable,且此时运行数据集中数据节点execute以及数据节点debug均未建立,则将最终导致数据节点write、数据节点execute以及数据节点debug中至少一个数据节点的参数值为disable,引发数据节点read无效,并引发服务器向cli发送用于报错的错误消息。当cli接收到该错误报文,显示该错误报文所指示的错误信息,以指示该多个数据节点中至少一个数据节点的参数值不满足第三预设条件,例如错误消息表示为:
[0251]
must condition"not(../write='disable'and../execute='disable'and../debug='disable')or(../write='disable'and../execute='disable'and../debug='disable'and../read!=../write)"not satisfied。
[0252]
那么,为了避免该配置所引发的后续报错问题,该服务器不对该配置验证通过。
[0253]
需要说明的是,上述在对验证方式4和5进行介绍时,是以当第一数据节点的配置包括将第一数据节点的参数值配置为第一配置参数值时,服务器对该第一数据节点的配置不通过验证所进行的举例。在另一种可能的实现方式,当该第一数据节点的配置包括删除该第一数据节点时,可能也会导致第一数据节点不满足该第二预设条件,多个第二数据节点中至少一个数据节点不满足第三预设条件,从而使得该服务器对该第一数据节点的配置不通过验证。以上述的伪代码7和8为基础,该逻辑关系包括在数据节点no-response-policy的参数值为offline时,数据节点no-response-times有效为例,若该第一数据节点的配置包括删除数据节点no-response-policy,一旦后续服务器因运行该配置而删除该数据节点no-response-policy,也将会导致第一数据节点的参数值不为offline,从而致使数据节点no-response-times无效,使得该服务器后续向cli报错,为了避免后续报错,该服务器对该第一数据节点的配置不通过验证。以上述的伪代码9和10为基础,该逻辑关系包括在数据节点write、数据节点execute以及数据节点debug中至少一个数据节点的参数值不均为disable时,数据节点read有效为例,若该第一数据节点的配置包括删除数据节点write,一旦后续服务器因运行该配置而删除该数据节点write,也将导致运行数据集中不存在该数据节点write。由于数据节点execute以及数据节点debug均还未建立,那么数据节点write、数据节点execute以及数据节点debug的参数值也均不满足第三预设条件,引发数据节点read无效以及后续的报错,为了避免后续报错,该服务器对该配置不通过验证。
[0254]
验证方式6、该逻辑关系包括该第二数据节点的参数值具有特有属性。
[0255]
此时,该第二数据节点为预定义的该数据结构中具有特有(unique)属性的任一数据节点。具有特有属性的任一数据节点的参数值应全局唯一。
[0256]
当该第一数据节点的配置包括将该第一数据节点的参数值配置为第一配置参数值时,后续若该服务器运行该第一数据节点的配置,则服务器会将该第一数据节点的参数值配置为第一配置参数值。此时若该第二数据节点的参数值为该第一配置参数值,若运行完该第一数据节点的配置后,该第二数据节点以及该第一数据节点的参数值均为第一配置参数值,则第二数据节点的参数值将不具有特有属性,则该逻辑关系不能得到满足。因此,当该第二数据节点的参数值为第一配置参数值时,若该第一数据节点的配置包括将该第一数据节点的参数值配置为第一配置参数值,则服务器确定该第一数据节点的配置未通过验证。
[0257]
在一种可能的实现方式中,在该逻辑关系中,采用unique函数来修饰第二数据节点,以标识第二数据节点的参数值具有特有属性,若运行该第一数据节点的配置将会导致第一数据节点与第二数据节点参数值相同,则第二数据节点不满足该逻辑关系。
[0258]
结合下述伪代码11和12,对验证方式6进行如下说明:
[0259]
伪代码11:
[0260][0261][0262]
伪代码12:
[0263][0264]
其中,伪代码11包括该逻辑关系,从伪代码11所示的逻辑关系中可知,数据节点id的参数值具有特有属性。伪代码12为当前的运行数据集,从伪代码12可知,在当前的运行数据集中数据节点id的参数值为0。若该第一数据节点的配置包括将数据节点rule-interface中的子节点name的参数值配置为数据节点id的参数值0,例如配置由下述配置命令表示:
[0265]
touch/acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth1']/id 0。
[0266]
此时子节点name为第一数据节点,数据节点id为第二数据节点。由于此时运行数据集中数据节点id的参数值为0,一旦服务器对该配置验证通过,则该配置后续会被提交至运行数据集。当该配置被运行时,服务器会将子节点name的参数值配置为0。由于该逻辑关系中限定了数据节点id具有特有属性,而一旦运行了该配置,将导致数据节点id和子节点name的参数值相同,从而使得数据节点id不具有特有属性,也即是数据节点id不满足该逻辑关系。后续会引发服务器向cli发送用于报错的错误报文,当cli接收到该错误报文,显示该错误报文所指示的错误信息,以指示数据节点id不具有特有属性,且和子节点name的参数值出现冲突。例如错误消息表示为:unique data leaf(s)"id"not satisfied in
[0267]
"/xx-acl:acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth0']"
[0268]
and"/xx-acl:acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth1']"。
[0269]
那么,为了避免该配置所引发的后续报错,该服务器不对该配置验证通过。
[0270]
验证方式7、该逻辑关系包括第二数据节点中该第一数据节点的个数属于目标范围。
[0271]
此时该第一数据节点为leaflist和list类型的数据节点,第一数据节点为第二数据节点的子节点,或者也可以理解为第一数据节点为第二数据节点的元素(element)。该目标范围包括小于或等于第一目标个数(也即是第一数据节点的最大个数),和/或,该目标范
围包括大于或等于第二目标个数(也即是第一数据节点的最小个数),该第一目标个数和第二目标个数均为大于等于1的整数。
[0272]
在一种可能的实现方式中,当该第一数据节点的配置包括在该第二数据节点中建立第一个数的第一数据节点时,后续若该服务器运行该第一数据节点的配置,则服务器会在该第二数据节点建立第一个数的第一数据节点。此时若第一个数不属于该目标范围,若运行完该第一数据节点的配置后,第二数据节点中第一数据节点的个数将不属于目标范围,则第一数据节点不满足该逻辑关系。因此,当该第一数据节点的配置包括在该第二数据节点中建立第一个数的第一数据节点时,若该第一个数不属于该目标范围,则服务器确定该第一数据节点的配置未通过验证。
[0273]
在一种可能的实现方式中,在该逻辑关系中,采用min-elements函数和/或max-elements函数来限定第一数据节点的个数,以标识目标范围。其中,min-elements函数用于限定第一数据节点的最小个数,max-elements函数用于限定第一数据节点最大个数。若运行该第一数据节点的配置将会导致第二数据节点中第一数据节点的个数不属于目标范围,则第一数据节点不满足该逻辑关系。
[0274]
结合下述伪代码13,对验证方式7进行如下说明:
[0275]
伪代码13:
[0276][0277]
其中,伪代码13包括该逻辑关系,从伪代码13所示的逻辑关系中可知,数据节点tariff-level的最大个数和最小个数均为8。若该第一数据节点的配置包括在容器tariff-queue-mapping中建立1个数据节点tariff-level。例如该配置由下述配置命令表示:
[0278]
touch/bras-vas/tariff-queue-mapping/tariff-level be。
[0279]
此时该数据节点tariff-level为第一数据节点,容器tariff-queue-mapping为第二数据节点。若运行数据集为空,一旦服务器对该数据节点tariff-level的配置验证通过,则该配置后续会被提交至运行数据集。当该配置被运行时,则最终容器tariff-queue-mapping中有1个数据节点tariff-level,容器tariff-queue-mapping中数据节点tariff-level的个数不足8个,则该数据节点tariff-level不满足该逻辑关系。后续会引发服务器向cli发送用于报错的错误报文,当cli接收到该错误报文,显示该错误报文所指示的错误信息,以指示数据节点tariff-level的个数不属于目标范围。例如错误消息表示为:too few"tariff-level"elements,以指示数据节点tariff-level个数的太少。那么,为了避免
该配置所引发的后续报错,该服务器不对该配置验证通过。
[0280]
在一种可能的实现方式中,本步骤405所示的过程由服务器中的校验模块来执行,当该校验模块确定出该第一数据节点的配置未通过验证时,则说明该第一数据节点的配置满足第一预设条件。若该第一报文包括第一参数,则说明要在满足第一预设条件时开启输出配置信息的模式,则校验模块将该第一数据节点的配置发送给服务器中的建议模块,由建议模块通过执行下述步骤406向cli返回建议的配置信息,以解决该第一数据节点的配置未通过验证的问题。
[0281]
406、基于第一报文中的第一参数,在验证结果满足该第一预设条件时,则服务器向cli输出配置信息。
[0282]
其中,该配置信息用于解决该第一数据节点的配置所引发的问题,该配置信息包括该服务器所建议的配置,以解决该第一数据节点的配置所引发的问题。或者也可以理解为,该配置信息用于解决该第一数据节点未通过验证的问题,该配置信息包括针对该第一数据节点的配置未通过验证,该服务器向cli建议的配置,以使得该第一数据节点的配置能够通过验证。
[0283]
在一种可能的实现方式中,配置信息包括的配置可能引发新的问题,因此,该第一数据节点的配置所引发的问题包括直接问题和间接问题。其中,该直接问题是该第一数据节点的配置直接引发的问题,该间接问题是该配置信息中的配置所引发的问题。
[0284]
可选地,该配置信息包括该配置链中的第一个配置或该配置链。该配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置,该配置链用于解决该配置所引发的直接问题和间接问题。其中,该配置链中的第一个配置用于解决该第一数据节点的配置所引发的直接问题。对于该配置链中除该第一个配置以外的任一配置,该任一配置用于解决该配置链中该任一配置的上一个配置所引发的直接问题。
[0285]
在一种可能实现方式中,本步骤406所示的过程由下述步骤4061-4062所示的过程来实现。
[0286]
步骤4061、该服务器基于该第一数据节点与该第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果,该第一结果包括该第一数据节点的配置未通过验证的原因。
[0287]
当该逻辑关系不同时,服务器基于不同的逻辑关系,所获取的第一结果有所不同,请参见下述获取过程1-7。
[0288]
获取过程1、该逻辑关系包括该数据树中的第二数据节点引用该第一数据节点。
[0289]
当该第二数据节点已经建立且该第一数据节点的配置包括删除该第一数据节点时,后续若运行该配置,该第二数据节点将会缺少引用的第一数据节点,则该逻辑关系不能得到满足。因此,若该第二数据节点已经建立,该服务器基于该逻辑关系获取该原因,其中,该原因包括该第二数据节点缺少引用的该第一数据节点。
[0290]
以该逻辑关系包括上述验证方式1中的伪代码5为例,若第一数据节点的配置包括删除ifm模型中的数据节点name,则该服务器基于伪代码5所示的逻辑关系,获取到的原因包括acl模型中数据节点if-name缺乏引用的数据节点name。
[0291]
获取过程2、该逻辑关系包括该第一数据节点引用该第二数据节点。
[0292]
当该第二数据节点还未建立且该第一数据节点的配置包括建立该第一数据节点
时,若后续运行该第一数据节点的配置,则后续建立的第一数据节点将缺少引用的该第二数据节点,则该逻辑关系不能得到满足。因此,若该第二数据节点还未建立,服务器基于该逻辑关系获取该原因,其中,该原因包括该第一数据节点缺少引用的该第二数据节点。
[0293]
获取过程3、该逻辑关系包括该第一数据节点与该第二数据节点同时存在。
[0294]
当该第二数据节点还未建立且该第一数据节点的配置包括建立该第一数据节点时,若后续运行该第一数据节点的配置,则该第二数据节点和该第一数据节点无法同时存在,则该逻辑关系不能得到满足。因此,若该第二数据节点还未建立,该服务器基于该逻辑关系获取该原因,其中,该原因包括该第二数据节点缺失。
[0295]
以该逻辑关系包括上述验证方式3中的伪代码6为例,若该第一数据节点的配置包括建立该数据节点group,则该服务器基于伪代码6所示的逻辑关系,获取到的原因包括数据节点group中缺失数据节点type。
[0296]
获取过程4、该逻辑关系包括在该第一数据节点的参数值满足第二预设条件时,该第二数据节点有效。
[0297]
当该第一数据节点的配置包括将该第一数据节点的参数值配置为第一配置参数值时,若第一配置参数值不满足该第二预设条件,即使后续若运行该第一数据节点的配置,该第一数据节点的参数值仍不满足该第二预设条件,会引发第二数据节点无效,则该逻辑关系不能得到满足。因此,当该逻辑关系包括在该第一数据节点的参数值满足第二预设条件时,该第二数据节点有效时,若该第一配置参数值不满足该第二预设条件,该服务器基于该逻辑关系获取该原因,其中,该原因包括该第一数据节点的参数值不满足该第二预设条件。
[0298]
以该逻辑关系包括上述验证方式4中的伪代码7为例,若该第一数据节点的配置包括将数据节点no-response-times的参数值配置为12,则该服务器基于伪代码7所示的逻辑关系,获取到的原因包括数据节点no-response-policy的参数值不满足该第二预设条件(即参数值不为offline)。
[0299]
需要说明的是,当该第一数据节点的配置包括删除该第一数据节点时,后续若运行该第一数据节点的配置,导致第一数据节点删除,则引发第二数据节点无效,因此,后续若运行该第一数据节点的配置,该服务器基于该逻辑关系获取该原因,其中,该原因包括该第一数据节点的参数值不满足该第二预设条件。
[0300]
获取过程5、该逻辑关系包括在该数据结构包括的多个数据节点中至少一个数据节点的参数值满足第三预设条件时,该第二数据节点有效,其中,该多个数据节点包括该第一数据节点。
[0301]
当该第一数据节点的配置包括将该第一数据节点的参数值配置为第一配置参数值时,若此时该多个数据节点中不存在满足第三预设条件的数据节点,即使后续运行了该第一数据节点的配置,若该第一配置参数值不满足该第三预设条件,则该多个数据节点中仍不存在满足该第三预设条件的数据节点,引发第二数据节点无效,则该逻辑关系不能得到满足。因此,当该多个数据节点中不存在满足该第三预设条件的数据节点时,若该第一配置参数值不满足该第三预设条件,服务器基于该逻辑关系获取该第一数据节点的配置未通过验证的原因,其中,该第一数据节点的配置未通过验证的原因包括该多个数据节点中至少一个数据节点的参数值不满足第三预设条件。
[0302]
以该逻辑关系包括上述验证方式5中的伪代码9为例,若该第一数据节点的配置包括将数据节点read和数据节点write的参数值均配置为disable,则该服务器基于伪代码9所示的逻辑关系,获取到的原因包括数据节点write、数据节点execute以及数据节点debug中至少一个数据节点的参数值不满足该第三预设条件。
[0303]
需要说明的是,当该第一数据节点的配置包括删除该第一数据节点时,若该多个数据节点中只有第一数据节点为已经建立的数据节点,一但该第一数据节点的配置被运行,则导致该第一数据节被删除,进而该多个数据节点中将不存在满足第三数据预设条件的数据节点,因此,当该第一数据节点的配置包括删除该第一数据节点时,若多个数据节点中只有第一数据节点为已经建立的数据节点,则服务器基于该逻辑关系获取该第一数据节点的配置未通过验证的原因,其中,该第一数据节点的配置未通过验证的原因包括该多个数据节点中至少一个数据节点的参数值不满足第三预设条件。
[0304]
获取过程6、该逻辑关系还包括该第二数据节点的参数值具有特有属性。
[0305]
当该第二数据节点的参数值为第一配置参数值,且该第一数据节点的配置包括将该第一数据节点的参数值配置为第一配置参数值时,后续若运行该第一数据节点的配置后,将导致该第一数据节点和该第二数据节点的参数值出现冲突。因此,若该第二数据节点的参数值为该第一配置参数值,该服务器基于该逻辑关系获取该原因,其中,该原因为该第二数据节点与该第二数据节点的参数值出现冲突。
[0306]
以该逻辑关系包括上述验证方式6中的伪代码11为例,若该第一数据节点的配置包括将数据节点rule-interface中的子节点name的参数值配置为数据节点id的参数值0,则该服务器基于伪代码11所示的逻辑关系,获取到的原因包括数据节点id和子节点name的参数值出现冲突。
[0307]
获取过程7、该逻辑关系包括第二数据节点中该第一数据节点的个数属于目标范围。
[0308]
当该第一数据节点的配置包括在该第二数据节点中建立第一个数的第一数据节点时,后续若运行该第一数据节点的配置,服务器将会在第二数据节点中建立第一个数的第一数据节点,若第一个数不属于该目标范围,服务器基于该第一数据节点的逻辑关系获取该原因,其中,该原因包括该第一数据节点的个数不属于该目标范围。
[0309]
在一种可能的实现方式中,若该目标范围包括小于或等于第一目标个数,且该第一个数大于该第一目标个数,则该原因包括第一数据节点的个数大于第一目标个数。
[0310]
在另一种可能的实现方式中,若该目标范围包括大于或等于第二目标个数,且该第一个数小于该第二目标个数,则该原因包括第一数据节点的个数小于第二目标个数。
[0311]
以该逻辑关系包括上述验证方式7中的伪代码13为例,若该第一数据节点的配置包括在容器tariff-queue-mapping中建立1个数据节点tariff-leve,则该服务器基于伪代码13所示的逻辑关系,获取到的原因包括数据节点tariff-level的个数小于8。
[0312]
步骤4062、该服务器基于该第一结果,输出该配置信息。
[0313]
在一种可能的实现方式中,该服务器基于该第一结果,确定该配置信息,基于该配置信息生成建议报文,并向cli输出该建议报文。其中,该建议报文包括该配置信息,可选地,该建议报文为任一类型的报文,在此,本技术实施例对该建议报文的报文类型不做限定。
[0314]
若该第一报文中的第一参数包括第一子参数,且第一子参数用于标识在满足第一预设条件时开启输出配置信息的第一模式,也即是输出建议的配置链中的第一个配置,则该配置信息为该第一个配置。
[0315]
当该配置信息为该第一个配置时,服务器器基于不同的第一结果所包括的原因输出的配置信息不同,通过下述第1种配置信息至第7种配置信息,对服务器基于不同的原因所输出的不同的配置信息进行如下描述:
[0316]
第1种配置信息、若该第一数据节点的配置未通过验证的原因包括该第二数据节点缺少引用的该第一数据节点,则该配置信息包括删除该第二数据节点。
[0317]
由于该逻辑关系包括第二数据节点引用第一数据节点,且该第一数据节点的配置包括删除第一数据节点,为了避免第一数据节点被删除后,第二数据节点缺少引用的第一数据节点,则该服务器基于该原因确定该配置信息包括建立该第二数据节点,并基于该配置信息生成建议报文,发送给cli。
[0318]
以获取过程1中的示例为基础,若该原因包括acl模型中数据节点if-name缺乏引用的数据节点name,由于此时第二数据节点为第一数据节点的子节点,为了避免数据节点if-name缺乏引用,则服务器确定该配置信息包括删除数据节点if-name,并基于该配置信息生成下述伪代码14所示的建议报文。
[0319]
伪代码14:
[0320][0321]
第2种配置信息、若该第一数据节点的配置未通过验证的原因包括该第一数据节点缺少引用的该第二数据节点,则该配置信息包括建立该第二数据节点。
[0322]
由于该逻辑关系包括第一数据节点引用第二数据节点,此时第二数据节点还未建成,为了避免第一数据节点建立完成后,缺少引用的第二数据节点,则该服务器基于该原因确定该配置信息包括建立该第二数据节点,并基于该配置信息生成建议报文,发送给cli。
[0323]
需要说明的是,第1种配置信息和第2种配置信息均是用于解决引用关系出错的配置,在一种可能的实现方式中,对于引用关系出错的错误类型,服务器通过一个并行的处理
流程来确定配置信息。
[0324]
例如图5所示的本技术实施例提供的一种基于引用关系出错确定配置信息的过程,服务器基于该逻辑关系,确定该第一数据节点的配置的错误类型为引用关系出错,例如leafref类型的错误和instance-identifier类型的错误。之后,服务器确定是由删除或新增第一数据节点所导致的错误。若是由删除第一数据节点所导致的子节点缺少引用,则服务器查询运行数据集中被删除的第一数据节点的子节点,并构造新的配置来删除第一数据节点的子节点(新的配置也是配置信息);若是由新增第一数据节点所导致的第一数据节点缺乏引用,则服务器构造新的配置,以建立该第一数据节点的父节点。
[0325]
第3种配置信息、若该第一数据节点的配置未通过验证的原因包括该第一数据节点缺少该第二数据节点,则该配置信息包括建立该第二数据节点。
[0326]
由于该逻辑关系包括第一数据节点与第二数据节点同时存在,此时第二数据节点还未建成,为了避免第一数据节点建立完成后,不能与第二数据节点同时存在,则该服务器基于该原因确定该配置信息包括建立该第二数据节点,并基于该配置信息生成建议报文,发送给cli。
[0327]
以获取过程3中的示例为基础,若该原因包括数据节点group中缺失数据节点type,该服务器基于该原因,确定配置信息包括建立数据节点type,并基于该配置信息生成下述伪代码15所示的建议报文。
[0328]
伪代码15:
[0329][0330]
第4种配置信息、若该第一数据节点的配置未通过验证的原因包括第一数据节点的参数值不满足第二预设条件,则该配置信息包括将该第一数据节点的参数值配置为满足该第二预设条件。
[0331]
由于该逻辑关系包括第一数据节点的参数值不满足第二预设条件,为了避免第一数据节点参数值不满足该第二预设条件,则该服务器基于该原因确定该配置信息包括将该第一数据节点的参数值配置为满足该第二预设条件,并基于该配置信息生成建议报文,发送给cli。例如,若该第二预设条件包括第一数据节点的参数值为第二配置参数值,则该配置信息包括将该第一数据节点的参数值配置为该第二配置参数值。
[0332]
以获取过程4中的示例为基础,若该原因包括数据节点no-response-policy的参数值不满足第二预设条件(参数值不为offline),该服务器基于该原因,确定该配置信息包括将数据节点no-response-policy的参数值配置为offline,并基于该配置信息生成如下
述伪代码16所示的建议报文。
[0333]
伪代码16:
[0334][0335]
需要说明的是,若该第二预设条件不是第一数据节点必须要满足的条件,则说明第一数据节点并不是必须存在的,则该配置信息包括删除该第一数据节点。例如伪代码7中的数据节点no-response-policy由when函数修饰,则说明数据节点no-response-policy并不是必须存在的,则该配置信息包括删除数据节点no-response-policy。
[0336]
第5种配置信息、若该第一数据节点的配置未通过验证的原因包括该多个数据节点中至少一个数据节点的参数值不满足第三预设条件,则配置信息包括建立该多个数据节点中还未建立的第三数据节点,且将该第三数据节点的参数值配置为满足该第三预设条件。
[0337]
为了避免出现在多个数据节点中至少一个数据节点的参数值不满足第三预设条件时,引发的第二数据节点无效,则该服务器基于该原因确定该配置信息包括建立该多个数据节点中还未建立的第三数据节点,且将该第三数据节点的参数值配置为满足该第三预设条件,并基于该配置信息生成建议报文,发送给cli。
[0338]
在一种可能的实现方式中,该服务器根据该多个数据节点在该第三预设条件中的排序,依次分别对多个数据节点中除该第一数据节点以外的各个数据节点进行如下判断,以确定出该第三数据节点。
[0339]
对于该多个数据节点中除该第一数据节点以外的任一数据节点,该服务器通过查询运行数据集,判断该任一数据节点是否已经建立;若该任一数据节点还未建立,服务器查询备选数据集,若该备选数据集中也不存在该任一数据节点的配置,则该服务器将该任一数据节点确定为该第三数据节点,本次判断结束;若该备选数据集中存在该任一数据节点的配置,则该服务器对该多个数据节点中该任一数据节点的下一个数据节点进行判断,以此类推。
[0340]
需要说明的是,若服务器对多个数据节点中除该第一数据节点以外的各个数据节点均判断完成,发现多个数据节点中除了该第一数据节点以外的各个数据节点均已经建立完成,为了避免修改已经建立的数据节点,则该服务器基于该原因,确定该配置信息包括将该第一数据节点的参数值配置为满足该第三预设条件。例如,在该第三预设条件中包括的该第一数据节点的参数值为第三配置参数值,则该配置信息包括将该第一数据节点的参数值配置为该第三配置参数值。其中,一个数据节点已经建立完成是指该数据节点的配置存
储在运行数据集。
[0341]
以上述获取方式5中的示例为基础,若该原因包括数据节点write、数据节点execute以及数据节点debug中至少一个数据节点的参数值不满足第三预设条件,当前的运行数据集中存在数据节点write的配置,则说明数据节点write为多个数据节点中已经建立的数据节点,则服务器查询运行数据集和备选数据集中是否存在数据节点execute的配置,此时运行数据集和备选数据集中均不存在数据节点execute的配置,则说明数据节点execute为多个数据节点中未建立的数据节点,为了使得第三预设条件得到满足,服务器将数据节点execute的参数值配置为除disable以外的任一数据(例如enable),则服务器确定该配置信息包括建立数据节点execute,且将数据节点execute的参数值至配置enable,以使数据节点execute满足第三预设条件,从而服务器基于该配置信息生成下述伪代码17所示的建议报文。
[0342]
伪代码17:
[0343][0344]
需要说明的是,第4种目标操作和第5种配置信息均是用于解决不满足条件关系的配置,在一种可能的实现方式中,对于不满足条件关系的错误类型(例如when类型的错误和must类型的错误),服务器通过一个并行的处理流程来确定配置信息。
[0345]
例如图6所示的本技术实施例提供的一种基于不满足条件关系确定配置信息的过程,服务器基于逻辑关系,确定该第一数据节点的配置的错误类型为不满足条件关系,例如逻辑关系中when函数或者must函数中限定的预设条件不能得到满足,或者说该条件关系包括第二预设条件或第三预设条件。之后,服务器通过查询运行数据集和备选数据集,确定当前不能使该条件关系得到的满足的至少一个数据节点,该服务器依次获取对该至少一个数据节点的建议配置,并将第一个获取到的且能够满足该条件关系的一个数据节点的配置,作为该服务器针对不满足该条件关系的错误所建议的配置,其中,一个数据节点的配置包括将该数据节点的参数值的配置为满足该条件关系或删除该数据节点。以该数据节点为数据节点1为例,若条件关系中除该数据节点1以外的数据节点均已经建立,而该数据节点1还未建立,为了避免修改已建立的数据节点,则该数据节点1的配置包括建立满足该条件关系的该数据节点1(即将该数据节点1的参数值配置为满足该条件关系)。再例如,条件关系为数据节点1的参数值为真,且数据节点1的默认参数值为真,当将数据节点1的参数值配置为假的配置未通过验证时,为了避免出现将数据节点1的参数值配置为假所导致的错误,则服务器对该数据节点1建议的配置包括删除数据节点1,从而后续在运行将数据节点1的参数
值配置为假以及删除数据节点1这个两个配置后,数据节点1的参数值将会被删除,则服务器采用数据节点1的默认值,以使该条件关系得到满足。
[0346]
第6种配置信息、若该原因包括该第二数据节点与该第一数据节点的参数值出现冲突,则该配置信息包括将该第一数据节点的参数值配置为除该第一配置参数值以外的任一参数值。
[0347]
由于此时第二数据节点的参数值为第一配置参数值,且该第二数据节点的参数值具有特有属性,为了避免该第二数据节点与该第一数据节点的参数值出现冲突,则服务器基于该原因,确定该配置信息包括将该第一数据节点的参数值配置为除该第一配置参数值以外的任一参数值,并将该配置信息转换为建议报文,发送给cli。
[0348]
在一种可能的实现方式中,该服务器基于预设的选取规则,确定除该第一配置参数值以外的任一参数值,基于选取到任一参数值生成该配置信息。例如若该第一数据节点的参数值的数据类型为数值类型或者枚举类型,该服务器获取按照从小到大的排列的数值类型或者枚举类型的多个数据,且该多个数据不包括该第一配置信息;该服务器将该多个数据中的任一个数据、最小的数据或者最大的数据确定为该第一数据节点的参数值。若该第一数据节点的参数值的数据类型为字符串类型,则该服务器将字节序中的任一字符串确定该第一数据节点的参数值,其中,该字节序均包括该第一配置参数值。
[0349]
以获取过程6中的示例为基础,若该原因包括数据节点id和子节点name的参数值出现冲突,且数据节点id的参数值具有特有属性,为了避免后续出现数据节点id和子节点name的参数值出现冲突的错误,服务器基于该原因,确定该配置信息包括将子节点name的参数值配置为1,以便和数据节点id的参数值0区分开来。服务器并基于该配置信息生成下述伪代码18所示的建议报文。
[0350]
伪代码18:
[0351][0352]
第7种配置信息、若该第一数据节点未通过验证的原因包括该第一数据节点的个数不属于该目标范围,则该配置信息包括删除第二个数的该第一数据节点,或,在该第二数
据节点中建立第三个数的该第一数据节点。
[0353]
由于逻辑关系包括该第二数据节点中第一数据的个数属于目标范围,为了避免该第一数据节点的个数不属于该目标范围,则服务器基于该原因,确定该配置信息包括删除第二个数的该第一数据节点,或,在该第二数据节点中建立第三个数的该第一数据节点。
[0354]
可选地,若该原因包括第一数据节点的个数大于第一目标个数,则该配置信息包括删除第二个数的该第一数据节点,以便运行完该第一数据节点的配置以及该配置信息包括的配置后,该第一数据节点的个数小于或第一目标个数。
[0355]
可选地,若该原因包括第一数据节点的个数小于第二目标个数,则该配置信息包括在该第二数据节点中建立第三个数的该第一数据节点,以便运行完该第一数据节点的配置以及该配置信息包括的配置后,该第一数据节点的个数大于或等于第二目标个数。
[0356]
以获取过程7中的示例为基础,若该原因包括数据节点tariff-level的个数小于8,为了避免后续出现数据节点tariff-level的个数小于8的错误,若该第一数据节点的配置包括在在容器tariff-queue-mapping中建立1个数据节点tariff-level,且此时运行数据集中第二数据节点内还存在第一数据节点,则服务器基于该原因,确定该配置信息包括在容器tariff-queue-mapping中建立7个数据节点tariff-level,且7个数据节点tariff-level的参数值分别为af1-af4、ef、cs6以及cs7。该服务器基于该配置信息,生成下述伪代码19所示的建议报文。
[0357]
伪代码19:
[0358][0359]
在一种可能的实现方式中,若该第一报文中的第一参数包括第一子参数,且第一子参数用于标识在满足第一预设条件时开启输出配置信息的第一模式,也即是服务器输出建议的配置链,以解决由该第一数据节点的配置所引发的直接问题和间接问题,此时该配置信息包括该配置链。
[0360]
在一种可能的实现方式中,服务器在将该配置链发送给cli之前,该服务器先确定该配置链。可选地,服务器确定该配置链的过程包括下述步骤a-b。
[0361]
步骤a、当该第一子参数用于指示标识在满足所述第一预设条件时,开启输出配置信息的第二模式,若当前该配置链中有i个配置,该服务器对该第一数据节点的配置以及该
配置链中i个配置进行验证,其中,i为大于等于1的整数。
[0362]
若i等于1,则此时配置链中的配置也即是该配置链中的第一个配置,其中,配置链中第一个配置的获取过程请参见上述对7种配置信息的描述,在此本技术实施例对该配置链中的第一个配置获取过程不做赘述。
[0363]
例如,若i等于1,则服务器对该第一数据节点的配置以及该配置链中的第一个配置进行验证,若i等于2,则服务器对该第一数据节点的配置、该配置链中的第一个配置和第二个配置进行验证。
[0364]
在一种可能的实现方式中,对于该i个配置中第j个配置,当j=1时,该第j个配置用于解决该第一数据节点的配置所引发的直接问题,因此,该服务器在对该第一数据节点的配置进行验证过程中,由于该第j个配置的存在,该服务器对该第一个数据节点的配置通过验证。当j大于1或小于等于i时,该第j个配置用于解决该配置链中第j-1个配置所引发的直接问题,因此,该服务器在对该第j-1个配置进行验证过程中,由于该第j个配置的存在,该服务器对第j-1个配置通过验证。但是由于此时配置链中没有针对第i个配置的建议,因此,该服务器在对第i个配置进行验证时,第i个配置可能会引发新的问题,该第i个配置可能未通过验证。
[0365]
需要说明的是,该服务器对该第j个配置进行验证的过程与服务器对该第一数据节点的配置进行验证的过程同理,在此,本技术实施例对该服务器对该第j个配置进行验证的过程不做赘述。
[0366]
步骤b、若该第i个配置未通过验证,该服务器基于该第i个配置所涉及的第四数据节点以及该数据结构中第二数据节点之间的逻辑关系,确定该配置链中的第i 1个配置。
[0367]
其中,该第四数据节点为该第i个配置的配置对象,例如该第i个配置包括建立一个数据节点,则这个数据节点也即是第四数据节点。该第i 1个配置用于解决该第i个配置所引发的直接问题,也即是针对该第i 1个配置未通过验证所建议的配置。
[0368]
其中,该本步骤b所示的过程与该服务器基于该第一数据节点与该第二数据节点之间的逻辑关系确定该配置链中的第一个配置的过程同理,在此,本技术实施例对本步骤b不做赘述。
[0369]
需要说明的是,若该第i个配置通过验证,则该配置链获取完成,若该第i个配置未通过验证,在确定出该第i 1个配置后,针对包括i 1个配置的配置链跳转执行上述步骤a,直至该第一数据节点的配置以及该配置链中的各个配置均通过验证为止。
[0370]
在一种可能的实现方式中,当该第一报文中的第一参数还包括第二子参数时,若该第二子参数用于指标识在满足该第一预设条件时,开启输出配置信息的第三模式,则该服务器将配置信息中建议的配置发送给cli。若该第二子参数用于指标识在满足该第一预设条件时,开启输出配置信息的第四模式,则该服务器将该第一数据节点的配置以及配置信息中建议的配置一起发送给cli。
[0371]
例如,当前的运行数据集为空,该第一数据节点的配置由下述配置命令来表示:
[0372]
touch/acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth0']/if-name eth0。
[0373]
该配置信息包括的配置由下述配置命令表示:
[0374]
touch/ifm/interfaces/interface[name='eth0']
[0375]
touch/acl/groups/group[identity='12']/type interface。
[0376]
若第二子参数only-supplement取值为true(即标识在满足该第一预设条件时,开启输出配置信息的第三模式),则服务器将向cli返回如下述配置命令所标识的配置:
[0377]
touch/ifm/interfaces/interface[name='eth0']
[0378]
touch/acl/groups/group[identity='12']/type interface。
[0379]
若第二子参数only-supplement取值为false(即标识在满足该第一预设条件时,开启输出配置信息的第四模式),则服务器将向cli返回如下述配置命令所标识的配置:
[0380]
touch/acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth0']/if-name eth0
[0381]
touch/ifm/interfaces/interface[name='eth0']
[0382]
touch/acl/groups/group[identity='12']/type interface。
[0383]
当该服务器确定向该cli返回的配置(如该配置信息所包括的配置,或第一数据节点的配置以及该配置信息所包括的配置)后,基于确定出的配置,生成建议报文,并向该cli发送该建议报文,其中,该建议报文包括服务器所确定出的配置。
[0384]
在一种可能的实现方式中,本步骤406所示的过程由服务器中的建议模块执行。可选地,当建议模块从该服务器中的校验模块获取待第一数据节点的配置后,建议模块执行本步骤406。可选地,该校验模块不将该第一数据节点的配置发送给建议模块,而是将第一结果发送给建议模块;由该建议模块基于该第一结果确定该配置链中的第一个配置;若该第一子参数用于标识开启第一模式时,建议模块向cli输出建议的配置链中的第一个配置;若该第一子参数用于标识开启第二模式时,则该建议模块将第一个配置返回至该第一信息所指示的存储位置,由该校验模块对第一数据节点的配置以及该第一个配置重新进行验证。若第一数据节点的配置以及该第一个配置均验证通过后,建议模块确定该第一个配置为配置链,若该第一个配置未验证通过,则校验模块将第一个配置未通过验证的原因返回给建议模块;之后,由建议模块基于第一个配置未通过验证的原因,向该存储位置返回该配置链上的第二个配置,依次类推,直至校验模块对配置链上各个配置均验证通过后,该校验模块将该配置链作为配置信息发送给cli。
[0385]
407、该cli获取该配置信息,并显示该配置信息。
[0386]
该cli从该服务器接收建议报文,cli基于预设的配置命令格式,将该建议报文中配置信息所包括的配置转换成配置命令,并显示转换后的配置命令。对于该配置信息中所包括的任一配置,以md-cli为例,预设的配置命令的编辑格式包括若该配置是建立(create)和合并(merge)操作,不需要增加额外关键字,cli采用容器名 空格 叶子 空格 值的配置命令格式,cli基于该任一配置,生成对应的配置命令,或者采用touch 空格 path 空格 值的配置命令格式,cli基于该任一配置,生成对应的配置命令。
[0387]
例如,若服务器接收到的建议报文如伪代码14所示,则cli将该伪代码14所指示的配置信息,转换为如下配置命令:
[0388]
remove/acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth0']/if-name。
[0389]
若服务器接收到的建议报文如伪代码15所示,则cli将该伪代码15所指示的配置信息,转换为如下配置命令:
[0390]
touch/acl/groups/group[identity='12']/type interface。
[0391]
若服务器接收到的建议报文如伪代码16所示,则cli将该伪代码16所指示的配置信息,转换为如下配置命令:
[0392]
touch/aaa/authorization-schemes/authorization-scheme[author-scheme-name="12"]/no-respons e-policy offline。
[0393]
若服务器接收到的建议报文如伪代码17所示,则cli将该伪代码17所指示的配置信息,转换为如下配置命令:
[0394]
touch/xx-aaa:aaa/task-group-task-maps/task-group-task-map[task-group-name="1"][task-name="2"]/execute enable。
[0395]
若服务器接收到的建议报文如伪代码18所示,则cli将该伪代码18所指示的配置信息,转换为如下配置命令:
[0396]
touch/acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth1']/id 1。
[0397]
若服务器接收到的建议报文如伪代码19所示,则cli将该伪代码19所指示的配置信息,转换为如下配置命令:
[0398]
touch/bras-vas/tariff-queue-mapping af1
[0399]
touch/bras-vas/tariff-queue-mapping af2
[0400]
touch/bras-vas/tariff-queue-mapping af3
[0401]
touch/bras-vas/tariff-queue-mapping af4
[0402]
touch/bras-vas/tariff-queue-mapping ef
[0403]
touch/bras-vas/tariff-queue-mapping cs6
[0404]
touch/bras-vas/tariff-queue-mapping cs7。
[0405]
408、cli将该配置信息包括的配置发送给服务器。
[0406]
在一种可能的实现方式中,用户检查cli所显示的配置命令,并根据人工经验修改显示的配置命令,当cli检测到用户对修改后的配置命令进行了的确认操作后,将修改后的配置命令转化为编辑报文发送给服务器。当然,若用户通过检查发现显示的配置命令没有问题,也即是显示的配置命令没有需要修改的地方,则用户也可以不对显示的配置命令进行修改。
[0407]
当服务器接收到该编辑报文后,将该编辑报文所包括的配置存储在备选数据集,并向cli返回编辑成功的响应,当cli接收到该编辑成功的响应后,显示编辑成功的消息。编辑成功后,用户触发cli向服务器发送提交报文,当服务器接收到该提交报文后,对备选数据集中的各个配置进行验证,此时备选数据集中包括第一数据节点的配置以及服务器针对该第一数据节点的配置未通过验证所建议的配置,由于服务器所建议的配置能够解决该第一数据节点的配置未通过验证的问题,因此服务器对该第一数据节点的配置通过验证,若服务器所建议的配置未通过验证,则服务器针对未通过验证的配置跳转执行步骤406,以便服务器继续向cli发送建议的配置;若服务器所建议的配置通过验证,服务器将备选数据集中的各个配置转移至运行数据集;当转移完成后,服务器向cli发送提交完成响应,当cli接收到该提交完成响应后,显示提交完成的消息,以通知用户提交完成。
[0408]
需要说明的是,第一报文中第一子参数的不同取值,可能导致cli与服务器之间的
交互次数不同。若第一子参数用于标识开启第一模式,服务器向cli建议的配置为配置链中的第一个配置,当服务器将配置链中的第一个配置发送给cli后,服务器在对该第一个配置进行验证时,可能验证不通过,那么后续服务器会继续向cli返回配置链中的第二个配置,直至服务器对cli提交的所有配置都验证通过为止。对于这种情况,cli与服务器每次传输的数据量比较少,减少了cli与服务器之间的网络负担。若第一子参数用于标识开启第二模式,当cli将服务器建议的配置链发送给服务器后,由于服务器在向cli发送该配置链之前,已经对该配置链验证通过,即使服务器在对配置链进行验证时,服务器也会对该配置链验证通过。对于这种情况,cli与服务器之间的交互次数较少,无须用户多次参与。
[0409]
例如,当前运行数据集为空,用户在cli的显示界面进行如下编辑后,将下述配置命令发送服务器。
[0410]
touch/acl/groups/group[identity='12']/rule-interfaces/rule-interface[name='eth0']/if-name eth0。
[0411]
当服务器将该配置命令对应的配置存储在备选数据集后,若后续用户向cll下达提交命令,cli向服务器发送提交报文;当服务器接收到提交报文后,服务器对备选数据集中配置命令对应的配置进行验证;若验证不通过且提交报文中的第一子参数need-recursion取值为false,该服务器基于第一子参数need-recursion的标识开启第一模式,向cli返回建议的第一个配置,该第一个配置如下述配置命令来表示:
[0412]
touch/ifm/interfaces/interface[name='eth0']。
[0413]
后续cli将该第一个配置存储给服务器中的备选数据集后,若cli再次向服务器发送该提交报文,在提交的过程中,该第一个配置未验证通过,则服务器继续向cli返回建议的第二个配置,该第二个配置如下述配置命令来表示:
[0414]
touch/acl/groups/group[identity='12']/type interface。
[0415]
后续cli将该第二个配置存储给服务器中的备选数据集后,若cli再次向服务器发送该提交报文,在提交的过程中,若第二个配置通过验证,则服务器直接将备选数据集中该配置命令对应的配置、该第一个配置以及该第二个配置均转移至运行数据集。
[0416]
而若need-recursion取值为true,当该配置命令对应的配置验证不通过时,服务器将该第一个配置以及该第二个操作组成一个下述的配置链,返回给cli,从而避免cli向服务器多次提交配置。
[0417]
配置链:
[0418]
touch/ifm/interfaces/interface[name='eth0']
[0419]
touch/acl/groups/group[identity='12']/type interface。
[0420]
需要说明的是,若第一报文为验证报文,cli将建议的配置返回服务器后,若服务器对第一数据节点的配置以及建议的配置均验证通过后,则服务器向cli返回验证成功响应,当该cli接收到该验证成功响应后,显示验证成功的消息,而无需将该第一数据节点的配置以及建议的配置提交至运行数据集。
[0421]
在本技术实施例提供的方法中,当接收到包括第一信息的报文,服务器对该第一信息所标识的存储位置内数据节点的配置进行验证,在该数据节点的配置未通过验证时,若该报文包括第一参数,则服务器基于该第一参数开启输出配置信息的模式,并输出建议的配置信息,无须用户自己构建新的配置命令,来解决该数据节点的配置未通过验证的问
题,从而降低了节点配置的时长,提高了节点配置的效率。
[0422]
对于图4所示的实施例,若第一报文中不包括第一参数,当该第一数据节点的配置未通过验证时,服务器向cli报错,例如服务器将第一结果发送给cli,由cli显示该第一结果,以指示该第一数据节点的配置未通过验证,以便用户根据该第一结果,重新在cli编辑新的配置命令,并由cli将新的配置命令发送给服务器,以克服第一数据节点的配置未通过验证的问题。若第一报文中包括第一参数,当该第一数据节点的配置未通过验证时,服务器根据第一参数所包括的子参数的取值,开启输出配置信息的不同模式,向cli返回建议的配置,为了进一步说明该过程,请参见图7所示的本技术实施例提供的一种用于配置节点的方法流程图。
[0423]
图7所示的过程以第一报文为提交报文为例,服务器接收到提交报文后,对于备选数据集中的任一配置,服务器对该任一配置进行验证,若验证通过,则服务器判断对于该任一配置是否存在建议的配置,如果不存在,则服务器将该任一配置并入运行数据集,并向cli返回提交成功响应。若该任一配置未通过验证,则服务器解析该任一配置未通过验证的原因,并判断是否需要返回建议的配置(如若第一报文包括第一参数,则需要,否则不需要)。若不需要返回建议的配置,则服务器构建错误报文,并返回给cli。若需要返回建议的配置,则服务器基于该原因所指示的错误类型(如“when”和“must”类型的条件关系错误、“leafref”和“instance-identifier”类型的引用错误、“mandatory”类型的错误、“unique”类型的冲突错误、“max-elements”和“min-elements”类型的错误),构建新的配置(即建议的配置);之后,服务器判断是否需要递归推荐(若第一子参数用于标识开启第一模式,则不需要递归推荐,若第一子参数用于标识开启第二模式,则需要递归推荐)。若不需要递归推荐,则服务器继续判断是显示建议的配置或显示建议的配置以及该任一配置(若第二子参数用于标识开启第三模式,则显示建议的配置,若第二子参数用于标识开启第四模式,则显示建议的配置以及该任一配置);若显示建议的配置,则服务器构建包括该新的配置的建议报文,并发送给cli;若显示建议的配置以及该任一配置,则服务器构建包括该任一配置以及新的配置的建议报文,并发送给cli;若需要递归推荐,则服务器对新的配置进行验证,若新的配置验证不通过,服务器针对该新的配置,执行该任一配置未通过验证时所执行的过程;若新的配置验证通过,则服务器判断对于该任一配置是否存在建议的配置,此时明显是存在过的,则服务器在进行关于显示的判断。
[0424]
图8是本技术实施例提供的一种用于配置节点的装置的结构示意图,装置800包括:
[0425]
获取单元801,用于获取第一报文,所述第一报文包括第一信息以及第一参数,所述第一信息用于标识对第一数据节点的配置的存储位置,所述第一参数用于标识在满足第一预设条件时开启输出配置信息的模式;
[0426]
验证单元802,用于基于所述第一信息对所述第一数据节点的所述配置进行验证;
[0427]
输出单元803,用于基于所述第一参数,在验证结果满足所述第一预设条件时,输出所述配置信息。
[0428]
在一种可能的实现方式中,所述输出单元803包括:
[0429]
获取子单元,用于基于所述第一数据节点与所述第一数据节点所属数据结构包括的第二数据节点之间的逻辑关系,获取第一结果,所述第一结果包括所述配置未通过验证
的原因;
[0430]
输出子单元,用于基于所述第一结果,输出所述配置信息。
[0431]
在一种可能的实现方式中,所述第一数据节点的所述配置包括删除所述第一数据节点,所述逻辑关系包括所述第二数据节点引用所述第一数据节点;
[0432]
所述获取子单元,用于若所述第二数据节点已经建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第二数据节点缺少引用的所述第一数据节点。
[0433]
在一种可能的实现方式中,所述配置信息包括删除所述第二数据节点。
[0434]
在一种可能的实现方式中,所述第一数据节点的所述配置包括建立所述第一数据节点,所述逻辑关系包括所述第一数据节点引用所述第二数据节点;
[0435]
所述获取子单元,用于若所述第二数据节点还未建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点缺少引用的所述第二数据节点。
[0436]
在一种可能的实现方式中,所述配置信息包括建立所述第二数据节点。
[0437]
在一种可能的实现方式中,所述第一数据节点的所述配置包括建立所述第一数据节点,所述逻辑关系包括所述第一数据节点与所述第二数据节点同时存在;
[0438]
所述获取子单元,用于若所述第二数据还未建立,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第二数据节点缺失。
[0439]
在一种可能的实现方式中,所述配置信息包括建立所述第二数据节点。
[0440]
在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括在所述第一数据节点的参数值满足第二预设条件时,所述第二数据节有效;
[0441]
所述获取子单元,用于若所述第一配置参数值不满足所述第二预设条件,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点的参数值不满足所述第二预设条件。
[0442]
在一种可能的实现方式中,所述配置信息包括:将所述第一数据节点的参数值配置为满足所述第二预设条件。
[0443]
在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括在所述数据结构包括的多个数据节点中至少一个数据节点的参数值满足第三预设条件时,所述第二数据节点有效,其中,所述多个数据节点包括所述第一数据节点;
[0444]
所述获取子单元,用于当所述多个数据节点中不存在满足所述第三预设条件的数据节点时,若所述第一配置参数值不满足所述第三预设条件,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述多个数据节点中至少一个数据节点的参数值不满足第三预设条件。
[0445]
在一种可能的实现方式中,所述配置信息包括:
[0446]
建立所述多个数据节点中还未建立的第三数据节点,且将所述第三数据节点的参数值配置为满足所述第三预设条件;
[0447]
或,将所述第一数据节点的参数值配置为满足所述第三预设条件。
[0448]
在一种可能的实现方式中,所述第一数据节点的所述配置包括将所述第一数据节点的参数值配置为第一配置参数值,所述逻辑关系包括所述第二数据节点的参数值具有特有属性;
[0449]
所述获取子单元,用于若所述第二数据节点的参数值为所述第一配置参数值,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因为所述第二数据节点与所述第一数据节点的参数值出现冲突。
[0450]
在一种可能的实现方式中,所述配置信息包括将所述第一数据节点的参数值配置为除所述第一配置参数值以外的任一参数值。
[0451]
在一种可能的实现方式中,所述第一数据节点的所述配置包括在所述第二数据节点中建立第一个数的所述第一数据节点,所述逻辑关系包括所述第二数据节点中所述第一数据节点的个数属于目标范围;
[0452]
所述获取子单元,用于若所述第一个数不属于所述目标范围,基于所述逻辑关系获取所述配置未通过验证的原因,所述配置未通过验证的原因包括所述第一数据节点的个数不属于所述目标范围。
[0453]
在一种可能的实现方式中,所述配置信息包括:
[0454]
删除第二个数的所述第一数据节点;
[0455]
或,在所述第二数据节点中建立第三个数的所述第一数据节点。
[0456]
在一种可能的实现方式中,所述第一参数包括第一子参数,所述第一子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第一模式或者第二模式,其中,所述第一模式为输出的配置信息包括配置链中的第一个配置,所述第二模式为输出的配置信息包括所述配置链,所述配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置。
[0457]
在一种可能的实现方式中,所述第一参数包括第二子参数,所述第二子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第三模式或者第四模式,其中,所述第三模式为输出所述配置信息,所述第四模式为输出所述配置信息以及所述第一数据节点的所述配置。
[0458]
在一种可能的实现方式中,所述第一报文为提交报文或验证报文。
[0459]
图9是本技术实施例提供的一种用于配置节点的装置的结构示意图,该装置900包括:
[0460]
生成单元901,用于生成第一报文,所述第一报文包括第一信息以及第一参数,所述第一信息用于标识对第一数据节点的配置的存储位置,所述第一参数用于标识在满足第一预设条件时开启输出配置信息的模式;
[0461]
输出单元902,用于向服务器输出所述第一报文。
[0462]
在一种可能实现方式中,所述第一参数包括第一子参数,所述第一子参数用于标识在满足所述第一预设条件时,开启输出配置信息的第一模式或者第二模式,其中,所述第一模式为输出的配置信息包括配置链中的第一个配置,所述第二模式为输出的配置信息包括所述配置链,所述配置链包括对至少一个数据节点的配置,一个数据节点对应至少一个配置。
[0463]
在一种可能实现方式中,所述第一参数包括第二子参数,所述第二子参数用于标
识在满足所述第一预设条件时,开启输出配置信息的第三模式或者第四模式,其中,所述第三模式为输出所述配置信息,所述第四模式为输出所述配置信息以及所述第一数据节点的所述配置。
[0464]
在一种可能实现方式中,所述第一报文为提交报文或验证报文。
[0465]
在一种可能实现方式中,所述装置900还包括:
[0466]
接收单元,用于接收所述配置信息;
[0467]
显示单元,用于显示所述配置信息所包括的配置。
[0468]
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
[0469]
需要说明的是:上述实施例提供的用于配置节点的装置在处理节点的配置时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的用于配置节点的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0470]
本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述用于配置节点的方法。
[0471]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0472]
以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献