Sysrepo CFFI绑定
sysrepo的Python项目详细描述
Python CFFI绑定到sysrepo。在
安装
pip install sysrepo
这假设系统上安装了libsysrepo.so,并且 sysrepo.h在系统include dirs中可用。在
由于sysrepo依赖于{a8},后者需要安装在 系统也是。在
您需要安装以下系统依赖项:
- Python开发头文件
- 合同通用条款
- Python CFFI模块
在Debian/Ubuntu系统上:
^{pr2}$编译标志
如果sysrepo头和库安装在非标准位置,则 无法导出SYSREPO_HEADERS和SYSREPO_LIBRARIES变量。 此外,为了更好地控制,您可以使用SYSREPO_EXTRA_CFLAGS和 SYSREPO_EXTRA_LDFLAGS:
SYSREPO_HEADERS=/home/build/opt/sr/include \ SYSREPO_LIBRARIES=/home/build/opt/sr/lib \ SYSREPO_EXTRA_CFLAGS="-O3"\ SYSREPO_EXTRA_LDFLAGS="-Wl,-rpath=/opt/sr/lib"\ pip install sysrepo
注意
此Python包依赖于libyangCFFI绑定(如果未安装) 然而,libyang头和库也安装在非标准中 位置,则必须导出其他变量。参见“编译标志” 此处的节:https://pypi.org/project/libyang/。在
示例
模块配置更换
withsysrepo.SysrepoConnection()asconn:withconn.start_session()assess:sess.replace_config({"system":{"hostname":"foobar"}},"my-module")
操作数据请求
withsysrepo.SysrepoConnection()asconn:withconn.start_session("operational")assess:data=sess.get_data("/my-module:status")
RPC调用
withsysrepo.SysrepoConnection()asconn:withconn.start_session()assess:out=sess.rpc_send("/my-module:my-rpc",{"input-param":42})
订阅
withsysrepo.SysrepoConnection()asconn:withconn.start_session()assess:sess.subscribe_module_change("my-module",None,module_change_cb)sess.subscribe_oper_data_request("my-module","/my-module:status",oper_data_cb)sess.subscribe_rpc_call("/my-module:my-rpc",my_rpc_cb)
有关详细信息,请参阅examples/文件夹。在
与libsysrepo.soC API的区别
这个项目是在考虑Python用户的情况下创建的。为了得到更多 pythonicapi与capi有很大的不同。在
支持的功能
- 连接处理(sr_connect(),sr_disconnect())
- YANG模块管理(sr_install_module(),sr_remove_module())
- libyang上下文检索(sr_get_context()使用libyang CFFI bindings包装)。在
- 会话管理(sr_session_start(),sr_session_stop(), sr_session_switch_ds(),sr_session_get_ds(),sr_unsubscribe())
- 模块更改订阅(sr_module_change_subscribe()也使用 async回调,sr_get_changes_iter())。在
- 操作数据订阅(sr_oper_get_items_subscribe()也与 async回调)。在
- RPC/操作调用订阅(sr_rpc_subscribe_tree()也与async一起使用) 回调)。在
- RPC/操作调用(sr_rpc_send_tree())
- 数据存储版本(sr_set_item_str(),sr_delete_item(), sr_edit_batch(),sr_validate(),sr_apply_changes(), sr_discard_changes(),sr_replace_config())
- 获取数据(sr_get_data(),sr_get_item(),sr_get_items())
尚不支持的功能
sysrepo python还不支持所有其他特性。最引人注目的 是:
- 通知支持(sr_event_notif_*)
- 模块锁定(sr_*lock*)
- 模块管理(sr_*_module_*)
- 项目
标签: