查看源代码 ct_netconfc (common_test v1.27.5)

NETCONF 客户端模块。

符合 RFC 6241(NETCONF 配置协议)和 RFC 6242(通过安全外壳 (SSH) 使用 NETCONF 配置协议)的 NETCONF 客户端模块,并支持 RFC 5277(NETCONF 事件通知)。

连接到 NETCONF 服务器

调用 connect/1,2 建立与服务器的连接,然后将返回的句柄传递给 session/1-3 以在新 SSH 通道上建立 NETCONF 会话。每次调用 session/1-3 都会在同一连接上建立新的会话,并导致向服务器发送 hello 消息。

或者,可以使用 open/1,2 在专用连接上建立单个会话。(或者,等效地,先使用 only_open/1,2,然后使用 hello/1-3。)

可以在配置文件中指定连接/会话选项,如下所示。

{server_id(), [option()]}.

然后,可以将 server_id/0 或关联的 ct:target_name/0 传递给上述函数,以使用引用的配置。

信令

NETCONF 协议中的协议操作被实现为从客户端到服务器的远程过程调用 (RPC),以及从服务器到客户端的相应回复。RPC 使用同名函数发送(例如,使用 edit_config/3-5 发送 edit-config RPC),服务器回复作为返回值。RFC 6241 中定义的每个 RPC 都有相应的函数,以及 RFC 5277 中的 create-subscription RPC,所有这些函数都是 send_rpc/2,3 的包装器,可用于发送 RFC 6241 或 RFC 5277 中未定义的任意 RPC。

所有信令函数都有一个带有 Timeout 参数的变体和一个没有的变体,后者对应于无限超时。后者在大多数情况下是不合适的,因为服务器无响应或缺少消息 ID 会导致调用无限期挂起。

日志记录

NETCONF 服务器使用 error_logger 记录 NETCONF 流量。特殊用途的错误处理程序在 ct_conn_log_h 中实现。要使用此错误处理程序,请在测试套件中添加 cth_conn_log 钩子,例如

suite() ->
    [{ct_hooks, [{cth_conn_log, [{ct:conn_log_mod(), ct:conn_log_options()}]}]}].

conn_log_mod() 是实现连接协议的 Common Test 模块的名称,例如,ct_netconfc

钩子选项 log_type 指定日志记录的类型

  • raw - 发送和接收的 NETCONF 数据以“原样”记录到单独的文本文件中,没有任何格式。指向该文件的链接将添加到测试用例 HTML 日志中。

  • pretty - 发送和接收的 NETCONF 数据以 XML 数据格式良好缩进的方式记录到单独的文本文件中。指向该文件的链接将添加到测试用例 HTML 日志中。

  • html (默认) - 发送和接收的 NETCONF 流量将直接在测试用例 HTML 日志中进行格式化打印。

  • silent - 不记录 NETCONF 流量。

默认情况下,所有 NETCONF 流量都记录在单个日志文件中。但是,不同的连接可以记录在单独的文件中。为此,请使用钩子选项 hosts 并列出套件中要使用的服务器/连接的名称。必须命名连接才能使其工作,也就是说,必须使用 open/2 打开它们。

如果 log_type 设置为 htmlsilent,则选项 hosts 无效。

钩子选项也可以在配置文件中使用配置变量 ct_conn_log 指定

{ct_conn_log,[{ct:conn_log_mod(), ct:conn_log_options()}]}.

例如

{ct_conn_log,[{ct_netconfc,[{log_type,pretty},
                            {hosts,[ct:key_or_name()]}]}]}

注意

在配置文件中指定的钩子选项会覆盖测试套件中硬编码的钩子选项。

日志记录示例 1

以下 ct_hooks 语句会导致将 NETCONF 流量格式化打印到名为 nc_server1nc_server2 的连接的单独日志中。任何其他连接都记录到默认 NETCONF 日志中。

suite() ->
   [{ct_hooks, [{cth_conn_log, [{ct_netconfc,[{log_type,pretty}},
                                              {hosts,[nc_server1,nc_server2]}]}
                               ]}]}].

必须按如下方式打开连接

open(nc_server1,[...]),
open(nc_server2,[...]).

日志记录示例 2

以下配置文件导致将所有 NETCONF 流量记录到单个文本文件中

{ct_conn_log,[{ct_netconfc,[{log_type,raw}]}]}.

ct_hooks 语句必须如下所示

suite() ->
    [{ct_hooks, [{cth_conn_log, []}]}].

如果没有配置文件,则相同的 ct_hooks 语句会导致将所有 NETCONF 连接的 HTML 日志记录到测试用例 HTML 日志中。

摘要

类型

NETCONF 会话的句柄,信令函数需要它。

与 NETCONF 服务器的连接的句柄(由 connect/1,2 返回)或会话的句柄(由 session/1-3open/1,2only_open/1,2 返回)。

作为调用 create_subscription/2,3 的结果发送的事件通知消息。

选项 hostport 指定要连接的服务器端点,并直接传递给 ssh:connect/4,任意 ssh 选项也是如此。常见的选项是 userpassworduser_dir

配置文件中连接或会话配置的标识。

XML 的表示形式,如应用程序 xmerl 中所述。

get_event_streams/1-3 返回的流信息。有关字符串值格式的详细信息,请参阅 RFC 5277 “事件通知的 XML 架构”。

RFC 5277 create-subscription 请求中 startTime/stopTime 元素的日期和时间。XML 基元类型 dateTime,其(非正式)形式为

函数

执行操作。如果返回类型为 void,则返回 ok 而不是 {ok,[simple_xml()]}

请求正常终止与客户端关联的会话。

打开与 NETCONF 服务器的 SSH 连接。

打开与命名的 NETCONF 服务器的 SSH 连接。

通过向服务器发送 RFC 5277 create-subscription RPC 来创建事件通知的订阅。调用进程接收类型为 notification/0 的消息中的事件。

关闭给定的 SSH 连接。

等效于 get/3

返回服务器在其 hello 消息中收到的功能。

发送请求以获取指定的事件流。

返回与指定客户端关联的会话 ID。

等效于 hello/3

与服务器交换 hello 消息。在收到服务器 hello 或在指定的超时后返回。

强制终止与提供的会话 ID 关联的会话。

锁定配置目标。

打开 NETCONF 会话,但不发送 hello

打开命名的 NETCONF 会话,但不发送 hello

打开 NETCONF 会话并交换 hello 消息。

打开命名的 NETCONF 会话并交换 hello 消息。

向服务器发送 XML 文档。

向服务器发送 NETCONF rpc 请求。

等效于 session/3

等效于 session/3

在给定的 SSH 连接上作为通道打开 NETCONF 会话,并与服务器交换 hello 消息。

解锁配置目标。

类型

链接到此类型

client()

查看源码 (自 OTP R15B02 起)
-type client() :: handle() | server_id() | ct:target_name().

NETCONF 会话的句柄,信令函数需要它。

链接到此类型

error_reason()

查看源码 (未导出) (自 OTP R15B02 起)
-type error_reason() :: term().
链接到此不透明对象

handle()

查看源码 (自 OTP R15B02 起)
-opaque handle()

与 NETCONF 服务器的连接的句柄(由 connect/1,2 返回)或会话的句柄(由 session/1-3open/1,2only_open/1,2 返回)。

链接到此类型

host()

查看源码 (未导出) (自 OTP R15B02 起)
-type host() :: inet:hostname() | inet:ip_address().
链接到此类型

netconf_db()

查看源码 (未导出) (自 OTP R15B02 起)
-type netconf_db() :: running | startup | candidate.
链接到此类型

notification()

查看源码 (自 OTP R15B02 起)
-type notification() :: {notification, xml_attributes(), [simple_xml()]}.

作为调用 create_subscription/2,3 的结果发送的事件通知消息。

链接到此类型

option()

查看源码 (未导出) (自 OTP R15B02 起)
-type option() ::
          {host | ssh, host()} |
          {port, inet:port_number()} |
          {timeout, timeout()} |
          {capability, string() | [string()]} |
          {receiver, term()} |
          ssh:client_option().

选项 hostport 指定要连接的服务器端点,并直接传递给 ssh:connect/4,任意 ssh 选项也是如此。常见的选项是 userpassworduser_dir

选项 timeout 指定允许建立连接的毫秒数,并且如果所讨论的函数导致发送 hello 消息,则允许接收服务器 hello 消息。超时独立应用于连接和 hello;一个超时用于连接建立,另一个用于 hello 接收。

选项 receiver 指定传入通知消息的目标;发送运算符的左操作数 (!)。如果未指定,则调用 create_subscription/2,3 的进程将成为接收器,但显式设置接收器可以接收未通过调用此函数排序的通知。可以指定多个接收器选项。

connect/1-3 忽略接收器选项。

选项 capability 指定传出 hello 消息中相应元素的内容,每个选项指定单个元素的内容。如果没有配置基本的 NETCONF 功能,则会添加 RFC 4741 1.0 功能“urn:ietf:params:netconf:base:1.0”,否则不会。特别是,必须显式配置 RFC 6241 1.1 功能。可以使用 RFC 6241 中定义的简写符号指定 NETCONF 功能,任何以冒号开头的能力字符串都将以“urn:ietf:params:netconf”或“urn:ietf:params:netconf:capability”作为前缀,视情况而定。

connect/1-3 和 only_open/1-2 忽略能力选项,它们不会导致传出 hello 消息。

链接到此类型

server_id()

查看源码 (未导出) (自 OTP R15B02 起)
-type server_id() :: atom().

配置文件中连接或会话配置的标识。

链接到此类型

session_option()

查看源码 (未导出) (自 OTP R15B02 起)
-type session_option() ::
          {timeout, timeout()} | {receiver, term()} | {capability, string() | [string()]}.
链接到此类型

simple_xml()

查看源码 (未导出) (自 OTP R15B02 起)
-type simple_xml() ::
          {xml_tag(), xml_attributes(), xml_content()} | {xml_tag(), xml_content()} | xml_tag().

XML 的表示形式,如应用程序 xmerl 中所述。

链接到此类型

stream_data()

查看源码 (未导出) (自 OTP R15B02 起)
-type stream_data() ::
          {description, string()} |
          {replaySupport, string()} |
          {replayLogCreationTime, string()} |
          {replayLogAgedTime, string()}.
链接到此类型

stream_name()

查看源码 (未导出) (自 OTP R15B02 起)
-type stream_name() :: string().
链接到此类型

streams()

查看源码 (未导出) (自 OTP R15B02 起)
-type streams() :: [{stream_name(), [stream_data()]}].

get_event_streams/1-3 返回的流信息。有关字符串值格式的详细信息,请参阅 RFC 5277 “事件通知的 XML 架构”。

链接到此类型

xml_attribute_tag()

查看源码 (未导出) (自 OTP R15B02 起)
-type xml_attribute_tag() :: atom().
链接到此类型

xml_attribute_value()

查看源码 (未导出) (自 OTP R15B02 起)
-type xml_attribute_value() :: string().
链接到此类型

xml_attributes()

查看源码 (未导出) (自 OTP R15B02 起)
-type xml_attributes() :: [{xml_attribute_tag(), xml_attribute_value()}].
链接到此类型

xml_content()

查看源码 (未导出) (自 OTP R15B02 起)
-type xml_content() :: [simple_xml() | iolist()].
链接到此类型

xml_tag()

查看源码 (未导出) (自 OTP R15B02 起)
-type xml_tag() :: atom().
链接到此类型

xpath()

查看源码 (未导出) (自 OTP R15B02 起)
-type xpath() :: {xpath, string()}.
链接到此类型

xs_datetime()

查看源码 (未导出) (自 OTP R15B02 起)
-type xs_datetime() :: string().

RFC 5277 create-subscription 请求中 startTime/stopTime 元素的日期和时间。XML 基元类型 dateTime,其(非正式)形式为

[-]YYYY-MM-DDThh:mm:ss[.s][Z|(+|-)hh:mm]

其中 TZ 是字面量,.s 是一个或多个小数秒。

函数

链接到此函数

action(Client, Action)

查看源码 (自 OTP R15B02 起)
-spec action(Client, Action) -> Result
                when
                    Client :: client(),
                    Action :: simple_xml(),
                    Result :: ok | {ok, [simple_xml()]} | {error, error_reason()}.

等效于 action/3

链接到此函数

action(Client, Action, Timeout)

查看源码 (自 OTP R15B02 起)
-spec action(Client, Action, Timeout) -> Result
                when
                    Client :: client(),
                    Action :: simple_xml(),
                    Timeout :: timeout(),
                    Result :: ok | {ok, [simple_xml()]} | {error, error_reason()}.

执行操作。如果返回类型为 void,则返回 ok 而不是 {ok,[simple_xml()]}

链接到此函数

close_session(Client)

查看源码 (自 OTP R15B02 起)
-spec close_session(Client) -> Result when Client :: client(), Result :: ok | {error, error_reason()}.

等效于 close_session/2

链接到此函数

close_session(Client, Timeout)

查看源码 (自 OTP R15B02 起)
-spec close_session(Client, Timeout) -> Result
                       when
                           Client :: client(),
                           Timeout :: timeout(),
                           Result :: ok | {error, error_reason()}.

请求正常终止与客户端关联的会话。

当 NETCONF 服务器收到 close-session 请求时,它会优雅地关闭会话。服务器释放与会话关联的任何锁和资源,并优雅地关闭任何关联的连接。在 close-session 请求之后收到的任何 NETCONF 请求都将被忽略。

链接到此函数

connect(Options)

查看源码 (自 OTP 20.0 起)
-spec connect(Options) -> Result
                 when Options :: [option()], Result :: {ok, handle()} | {error, error_reason()}.

打开与 NETCONF 服务器的 SSH 连接。

如果在配置文件中指定了服务器选项,请改用 connect/2

从该函数返回的不透明 handle/0 引用在通过此连接打开会话时需要作为连接标识符,请参阅 session/1-3

链接到此函数

connect(KeyOrName, ExtraOptions)

查看源码 (自 OTP 20.0 起)
-spec connect(KeyOrName, ExtraOptions) -> Result
                 when
                     KeyOrName :: ct:key_or_name(),
                     ExtraOptions :: [option()],
                     Result :: {ok, handle()} | {error, error_reason()}.

打开与命名的 NETCONF 服务器的 SSH 连接。

如果 KeyOrName 是配置的 server_id/0 或与此类 Id 关联的 target_name(),则从此配置文件中获取此服务器的选项。

选项列表将添加到配置文件的选项列表中。如果两个列表中都指定了某个选项,则配置文件中的选项优先。

如果未在配置文件中指定服务器,请改用 connect/1

从该函数返回的不透明 handle/0 引用在通过此连接打开会话时可以用作连接标识符,请参阅 session/1-3。但是,如果 KeyOrNametarget_name(),即,如果服务器是通过调用 ct:require/2 或测试套件中的 require 语句命名的,则可以使用此名称代替 handle/0

链接到此函数

copy_config(Client, Target, Source)

查看源码 (自 OTP R15B02 起)
-spec copy_config(Client, Target, Source) -> Result
                     when
                         Client :: client(),
                         Target :: netconf_db(),
                         Source :: netconf_db(),
                         Result :: ok | {error, error_reason()}.

等效于 copy_config/4

链接到此函数

copy_config(Client, Target, Source, Timeout)

查看源码 (自 OTP R15B02 起)
-spec copy_config(Client, Target, Source, Timeout) -> Result
                     when
                         Client :: client(),
                         Target :: netconf_db(),
                         Source :: netconf_db(),
                         Timeout :: timeout(),
                         Result :: ok | {error, error_reason()}.

复制配置数据。

可以发出的源和目标选项取决于服务器支持的功能。也就是说,需要 :candidate 和/或 :startup

链接到此函数

create_subscription/2

查看源码 (自 OTP 22.1 起)
-spec create_subscription(Client, Values) -> Result
                             when
                                 Client :: client(),
                                 Values ::
                                     #{stream => Stream,
                                       filter => Filter,
                                       start => StartTime,
                                       stop => StopTime},
                                 Stream :: stream_name(),
                                 Filter :: simple_xml() | [simple_xml()],
                                 StartTime :: xs_datetime(),
                                 StopTime :: xs_datetime(),
                                 Result :: ok | {error, error_reason()};
                         (Client, list() | timeout()) -> Result
                             when Client :: client(), Result :: ok | {error, error_reason()}.

等效于 create_subscription/3

链接到此函数

create_subscription/3

查看源码 (自 OTP 22.1 起)
-spec create_subscription(Client, Values, Timeout) -> Result
                             when
                                 Client :: client(),
                                 Values ::
                                     #{stream => Stream,
                                       filter => Filter,
                                       start => StartTime,
                                       stop => StopTime},
                                 Stream :: stream_name(),
                                 Filter :: simple_xml() | [simple_xml()],
                                 StartTime :: xs_datetime(),
                                 StopTime :: xs_datetime(),
                                 Timeout :: timeout(),
                                 Result :: ok | {error, error_reason()};
                         (Client, list(), list() | timeout()) -> Result
                             when Client :: client(), Result :: ok | {error, error_reason()}.

通过向服务器发送 RFC 5277 create-subscription RPC 来创建事件通知的订阅。调用进程接收类型为 notification/0 的消息中的事件。

来自 RFC 5722,2.1 订阅以接收事件通知

  • Stream - 指示对哪个事件流感兴趣。如果不存在,则发送默认 NETCONF 流中的事件。

  • Filter - 指示对所有可能事件的哪个子集感兴趣。参数格式与 NETCONF 协议操作中的 filter 参数相同。如果不存在,则会发送其他参数未排除的所有事件。

  • StartTime - 用于触发重播功能并指示重播从指定时间开始。如果不存在 StartTime,则这不是重播订阅。指定晚于当前时间的时间是无效的。如果指定的 StartTime 早于日志可以支持的时间,则重播将从最早的可用通知开始。此参数的类型为 dateTime 并且符合 RFC 3339。实现必须支持时区。

  • StopTime - 与可选的重放功能一起使用,以指示感兴趣的最新通知。如果未提供StopTime,则通知将持续到订阅终止。必须与StartTime一起使用,并且时间必须晚于StartTimeStopTime 的未来值是有效的。此参数的类型为 dateTime,符合 RFC 3339。实现必须支持时区。

有关更多详细信息,请参阅 RFC 5277。为了允许将无效请求发送到服务器,不强制执行 StopTime 必须仅与 StartTime 一起使用的要求。

在 OTP 22.1 之前,此函数被记录为具有 6 个元数的 15 种变体。为了向后兼容,这些变体仍然导出,但不再记录。上面记录的基于 map 的变体提供了相同的功能,但参数更简单。

注意

create-subscription 不再是唯一可以用来排序 NETCONF 通知的 RPC:RFC 8639 添加了 establish-subscription,未来的 RFC 可能会添加其他方法。在会话创建时指定一个 receiver 选项,以便为传入的通知提供目标,而无需调用 create_subscription/2,3,并使用 send_rpc/2,3 来发送 establish-subscription 和其他任意 RPC。

链接到此函数

delete_config(Client, Target)

查看源代码 (自 OTP R15B02 起)
-spec delete_config(Client, Target) -> Result
                       when
                           Client :: client(),
                           Target :: startup | candidate,
                           Result :: ok | {error, error_reason()}.

等效于 delete_config/3

链接到此函数

delete_config(Client, Target, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec delete_config(Client, Target, Timeout) -> Result
                       when
                           Client :: client(),
                           Target :: startup | candidate,
                           Timeout :: timeout(),
                           Result :: ok | {error, error_reason()}.

删除配置数据。

无法删除正在运行的配置,并且服务器必须声明 :candidate:startup

链接到此函数

disconnect(Conn)

查看源代码 (自 OTP 20.0 起)
-spec disconnect(Conn) -> ok | {error, error_reason()} when Conn :: handle().

关闭给定的 SSH 连接。

如果连接上有打开的 NETCONF 会话,这些会话将被强制中止。为了避免这种情况,请使用 close_session/1,2 关闭每个会话。

链接到此函数

edit_config(Client, Target, Config)

查看源代码 (自 OTP R15B02 起)
-spec edit_config(Client, Target, Config) -> Result
                     when
                         Client :: client(),
                         Target :: netconf_db(),
                         Config :: simple_xml() | [simple_xml()],
                         Result :: ok | {error, error_reason()}.

等效于 edit_config/5

链接到此函数

edit_config/4

查看源代码 (自 OTP R15B02 起)
-spec edit_config(Client, Target, Config, OptParams) -> Result
                     when
                         Client :: client(),
                         Target :: netconf_db(),
                         Config :: simple_xml() | [simple_xml()],
                         OptParams :: [simple_xml()],
                         Result :: ok | {error, error_reason()};
                 (Client, Target, Config, Timeout) -> Result
                     when
                         Client :: client(),
                         Target :: netconf_db(),
                         Config :: simple_xml(),
                         Timeout :: timeout(),
                         Result :: ok | {error, error_reason()}.

等效于 edit_config/5

链接到此函数

edit_config(Client, Target, Config, OptParams, Timeout)

查看源代码 (自 OTP 18.0 起)
-spec edit_config(Client, Target, Config, OptParams, Timeout) -> Result
                     when
                         Client :: client(),
                         Target :: netconf_db(),
                         Config :: simple_xml() | [simple_xml()],
                         OptParams :: [simple_xml()],
                         Timeout :: timeout(),
                         Result :: ok | {error, error_reason()}.

编辑配置数据。

默认情况下,只有正在运行的目标可用,除非服务器在其功能列表中包含 :candidate:startup

OptParams 可用于指定要添加到 edit-config 请求中的可选参数(default-operationtest-optionerror-option)。该值必须是包含有效的简单 XML 的列表,例如

[{'default-operation', ["none"]},
 {'error-option', ["rollback-on-error"]}]

如果未提供 OptParams,则使用默认值 []

链接到此函数

get(Client, Filter)

查看源代码 (自 OTP R15B02 起)
-spec get(Client, Filter) -> Result
             when
                 Client :: client(),
                 Filter :: simple_xml() | xpath(),
                 Result :: {ok, [simple_xml()]} | {error, error_reason()}.

等效于 get/3

链接到此函数

get(Client, Filter, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec get(Client, Filter, Timeout) -> Result
             when
                 Client :: client(),
                 Filter :: simple_xml() | xpath(),
                 Timeout :: timeout(),
                 Result :: {ok, [simple_xml()]} | {error, error_reason()}.

获取数据。

此操作从服务器返回配置和状态数据。

只有当服务器支持 :xpath 时,才能使用筛选器类型 xpath

链接到此函数

get_capabilities(Client)

查看源代码 (自 OTP R15B02 起)
-spec get_capabilities(Client) -> Result
                          when Client :: client(), Result :: [string()] | {error, error_reason()}.

等效于 get_capabilities/2

链接到此函数

get_capabilities(Client, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec get_capabilities(Client, Timeout) -> Result
                          when
                              Client :: client(),
                              Timeout :: timeout(),
                              Result :: [string()] | {error, error_reason()}.

返回服务器在其 hello 消息中收到的功能。

链接到此函数

get_config(Client, Source, Filter)

查看源代码 (自 OTP R15B02 起)
-spec get_config(Client, Source, Filter) -> Result
                    when
                        Client :: client(),
                        Source :: netconf_db(),
                        Filter :: simple_xml() | xpath(),
                        Result :: {ok, [simple_xml()]} | {error, error_reason()}.

等效于 get_config/4

链接到此函数

get_config(Client, Source, Filter, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec get_config(Client, Source, Filter, Timeout) -> Result
                    when
                        Client :: client(),
                        Source :: netconf_db(),
                        Filter :: simple_xml() | xpath(),
                        Timeout :: timeout(),
                        Result :: {ok, [simple_xml()]} | {error, error_reason()}.

获取配置数据。

要访问 running 之外的其他源,服务器必须声明 :candidate 和/或 :startup

只有当服务器支持 :xpath 时,才能使用筛选器类型 xpath

链接到此函数

get_event_streams(Client)

查看源代码 (自 OTP 20.0 起)
-spec get_event_streams(Client) -> Result
                           when Client :: client(), Result :: {ok, streams()} | {error, error_reason()}.

等效于 get_event_streams/3

链接到此函数

get_event_streams/2

查看源代码 (自 OTP R15B02 起)
-spec get_event_streams(Client, Timeout) -> Result
                           when
                               Client :: client(),
                               Timeout :: timeout(),
                               Result :: {ok, streams()} | {error, error_reason()};
                       (Client, Streams) -> Result
                           when
                               Client :: client(),
                               Streams :: [stream_name()],
                               Result :: {ok, streams()} | {error, error_reason()}.

等效于 get_event_streams/3

链接到此函数

get_event_streams(Client, Streams, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec get_event_streams(Client, Streams, Timeout) -> Result
                           when
                               Client :: client(),
                               Streams :: [stream_name()],
                               Timeout :: timeout(),
                               Result :: {ok, streams()} | {error, error_reason()}.

发送请求以获取指定的事件流。

Streams 是流名称的列表。以下筛选器在 get 请求中发送到 NETCONF 服务器

<netconf xmlns="urn:ietf:params:xml:ns:netmod:notification">
  <streams>
    <stream>
      <name>StreamName1</name>
    </stream>
    <stream>
      <name>StreamName2</name>
    </stream>
    ...
  </streams>
</netconf>

如果 Streams 是一个空列表,则通过发送以下筛选器请求所有

<netconf xmlns="urn:ietf:params:xml:ns:netmod:notification">
  <streams/>
</netconf>

如果需要更复杂的筛选,请使用 ct_netconfc:get/2,3,并根据 RFC 5277 中的“事件通知的 XML 架构”指定精确的筛选器。

链接到此函数

get_session_id(Client)

查看源代码 (自 OTP R15B02 起)
-spec get_session_id(Client) -> Result
                        when Client :: client(), Result :: pos_integer() | {error, error_reason()}.

等效于 get_session_id/2

链接到此函数

get_session_id(Client, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec get_session_id(Client, Timeout) -> Result
                        when
                            Client :: client(),
                            Timeout :: timeout(),
                            Result :: pos_integer() | {error, error_reason()}.

返回与指定客户端关联的会话 ID。

链接到此函数

hello(Client)

查看源代码 (自 OTP R15B02 起)
-spec hello(Client) -> Result when Client :: handle(), Result :: ok | {error, error_reason()}.

等效于 hello/3

链接到此函数

hello(Client, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec hello(Client, Timeout) -> Result
               when Client :: handle(), Timeout :: timeout(), Result :: ok | {error, error_reason()}.

等效于 hello/3

链接到此函数

hello(Client, Options, Timeout)

查看源代码 (自 OTP 17.5.3 起)
-spec hello(Client, Options, Timeout) -> Result
               when
                   Client :: handle(),
                   Options :: [{capability, [string()]}],
                   Timeout :: timeout(),
                   Result :: ok | {error, error_reason()}.

与服务器交换 hello 消息。在收到服务器 hello 或在指定的超时后返回。

请注意,可以将传出的 hello 的功能直接传递给 open/2

链接到此函数

kill_session(Client, SessionId)

查看源代码 (自 OTP R15B02 起)
-spec kill_session(Client, SessionId) -> Result
                      when
                          Client :: client(),
                          SessionId :: pos_integer(),
                          Result :: ok | {error, error_reason()}.

等效于 kill_session/3

链接到此函数

kill_session(Client, SessionId, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec kill_session(Client, SessionId, Timeout) -> Result
                      when
                          Client :: client(),
                          SessionId :: pos_integer(),
                          Timeout :: timeout(),
                          Result :: ok | {error, error_reason()}.

强制终止与提供的会话 ID 关联的会话。

服务器端必须中止任何正在进行的操作,释放与会话关联的任何锁和资源,并关闭任何关联的连接。

仅当服务器处于已确认提交阶段时,配置才会恢复到进入已确认提交阶段之前的状态。否则,不执行配置回滚。

如果指定的 SessionId 等于当前会话 ID,则返回错误。

链接到此函数

lock(Client, Target)

查看源代码 (自 OTP R15B02 起)
-spec lock(Client, Target) -> Result
              when Client :: client(), Target :: netconf_db(), Result :: ok | {error, error_reason()}.

等效于 lock/3

链接到此函数

lock(Client, Target, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec lock(Client, Target, Timeout) -> Result
              when
                  Client :: client(),
                  Target :: netconf_db(),
                  Timeout :: timeout(),
                  Result :: ok | {error, error_reason()}.

锁定配置目标。

可以使用哪些目标参数取决于服务器是否支持 :candidate 和/或 :startup。如果成功,设备的配置系统将对其他客户端(NETCONF、CORBA、SNMP 等)不可用。锁应该短暂存在。

操作 kill_session/2,3 可用于强制释放由另一个 NETCONF 会话拥有的锁。服务器端如何实现这一点是特定于实现的。

链接到此函数

only_open(Options)

查看源代码 (自 OTP R15B02 起)
-spec only_open(Options) -> Result
                   when Options :: [option()], Result :: {ok, handle()} | {error, error_reason()}.

打开 NETCONF 会话,但不发送 hello

open/1 相同,但不发送 hello 消息。

链接到此函数

only_open(KeyOrName, ExtraOptions)

查看源代码 (自 OTP R15B02 起)
-spec only_open(KeyOrName, ExtraOptions) -> Result
                   when
                       KeyOrName :: ct:key_or_name(),
                       ExtraOptions :: [option()],
                       Result :: {ok, handle()} | {error, error_reason()}.

打开命名的 NETCONF 会话,但不发送 hello

open/2 相同,但不发送 hello 消息。

链接到此函数

open(Options)

查看源代码 (自 OTP R15B02 起)
-spec open(Options) -> Result
              when Options :: [option()], Result :: {ok, handle()} | {error, error_reason()}.

打开 NETCONF 会话并交换 hello 消息。

如果在配置文件中指定服务器选项,或者如果需要一个用于记录的命名客户端(请参阅此模块中的日志记录部分),请改用 open/2

从此函数返回的不透明 handle/0 引用在调用此模块中的任何其他函数时都需要作为客户端标识符。

链接到此函数

open(KeyOrName, ExtraOption)

查看源代码 (自 OTP R15B02 起)
-spec open(KeyOrName, ExtraOption) -> Result
              when
                  KeyOrName :: ct:key_or_name(),
                  ExtraOption :: [option()],
                  Result :: {ok, handle()} | {error, error_reason()}.

打开命名的 NETCONF 会话并交换 hello 消息。

如果 KeyOrName 是配置的 server_id/0 或与此类 Id 关联的 target_name(),则从此配置文件中获取此服务器的选项。

选项列表将添加到配置文件的选项列表中。如果两个列表中都指定了某个选项,则配置文件中的选项优先。

如果未在配置文件中指定服务器,请改用 open/1

从此函数返回的不透明 handle/0 引用可以用作调用此模块中的任何其他函数时的客户端标识符。但是,如果 KeyOrNametarget_name(),即如果服务器是通过调用 ct:require/2 或测试套件中的 require 语句命名的,则可以使用此名称代替 handle/0

另请参阅 ct:require/2

链接到此函数

send(Client, SimpleXml)

查看源代码 (自 OTP R16B02 起)
-spec send(Client, SimpleXml) -> Result
              when
                  Client :: client(),
                  SimpleXml :: simple_xml(),
                  Result :: simple_xml() | {error, error_reason()}.

等效于 send/3

链接到此函数

send(Client, SimpleXml, Timeout)

查看源代码 (自 OTP R16B02 起)
-spec send(Client, SimpleXml, Timeout) -> Result
              when
                  Client :: client(),
                  SimpleXml :: simple_xml(),
                  Timeout :: timeout(),
                  Result :: simple_xml() | {error, error_reason()}.

向服务器发送 XML 文档。

指定的 XML 文档将“按原样”发送到服务器。此函数可用于发送无法通过此模块中的其他接口函数表达的 XML 文档。

链接到此函数

send_rpc(Client, SimpleXml)

查看源代码 (自 OTP R16B02 起)
-spec send_rpc(Client, SimpleXml) -> Result
                  when
                      Client :: client(),
                      SimpleXml :: simple_xml(),
                      Result :: [simple_xml()] | {error, error_reason()}.

等效于 send_rpc/3

链接到此函数

send_rpc(Client, SimpleXml, Timeout)

查看源代码 (自 OTP R16B02 起)
-spec send_rpc(Client, SimpleXml, Timeout) -> Result
                  when
                      Client :: client(),
                      SimpleXml :: simple_xml(),
                      Timeout :: timeout(),
                      Result :: [simple_xml()] | {error, error_reason()}.

向服务器发送 NETCONF rpc 请求。

指定的 XML 文档会被包装成一个有效的 NETCONF rpc 请求并发送到服务器。 message-id 和命名空间属性会被添加到 rpc 元素中。

此函数可用于发送此模块中其他接口函数无法表达的 rpc 请求。

链接到此函数

session(Conn)

查看源代码 (自 OTP 20.0 起)
-spec session(Conn) -> Result when Conn :: handle(), Result :: {ok, handle()} | {error, error_reason()}.

等效于 session/3

链接到此函数

session/2

查看源代码 (自 OTP 20.0 起)
-spec session(Conn, Options) -> Result
                 when
                     Conn :: handle(),
                     Options :: [session_option()],
                     Result :: {ok, handle()} | {error, error_reason()};
             (KeyOrName, Conn) -> Result
                 when
                     KeyOrName :: ct:key_or_name(),
                     Conn :: handle(),
                     Result :: {ok, handle()} | {error, error_reason()}.

等效于 session/3

链接到此函数

session(KeyOrName, Conn, Options)

查看源代码 (自 OTP 20.0 起)
-spec session(KeyOrName, Conn, Options) -> Result
                 when
                     Conn :: handle(),
                     Options :: [session_option()],
                     KeyOrName :: ct:key_or_name(),
                     Result :: {ok, handle()} | {error, error_reason()}.

在给定的 SSH 连接上作为通道打开 NETCONF 会话,并与服务器交换 hello 消息。

从该函数返回的不透明 handle/0 引用可以用作调用此模块中任何其他函数时的客户端标识符。 但是,如果使用 KeyOrName 并且它是一个 target_name(),也就是说,如果服务器是通过调用 ct:require/2 或测试套件中的 require 语句命名的,则可以使用此名称代替 handle/0

链接到此函数

unlock(Client, Target)

查看源代码 (自 OTP R15B02 起)
-spec unlock(Client, Target) -> Result
                when Client :: client(), Target :: netconf_db(), Result :: ok | {error, error_reason()}.

等效于 unlock/3

链接到此函数

unlock(Client, Target, Timeout)

查看源代码 (自 OTP R15B02 起)
-spec unlock(Client, Target, Timeout) -> Result
                when
                    Client :: client(),
                    Target :: netconf_db(),
                    Timeout :: timeout(),
                    Result :: ok | {error, error_reason()}.

解锁配置目标。

如果客户端之前通过 lock/2,3 获取了锁,则此操作会释放相关的锁。要访问除 running 之外的其他目标,服务器必须支持 :candidate 和/或 :startup