Sysrepo CFFI绑定

sysrepo的Python项目详细描述


Python CFFI绑定到sysrepo。在

pypi-projectpython-versionsbuild-statuslicensecode-style

安装

pip install sysrepo

这假设系统上安装了libsysrepo.so,并且 sysrepo.h在系统include dirs中可用。在

由于sysrepo依赖于{a8},后者需要安装在 系统也是。在

您需要安装以下系统依赖项:

  • Python开发头文件
  • 合同通用条款
  • Python CFFI模块

在Debian/Ubuntu系统上:

^{pr2}$

编译标志

如果sysrepo头和库安装在非标准位置,则 无法导出SYSREPO_HEADERSSYSREPO_LIBRARIES变量。 此外,为了更好地控制,您可以使用SYSREPO_EXTRA_CFLAGSSYSREPO_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_*

贡献

这是一个开源项目,欢迎所有贡献。在

有关详细信息,请参阅CONTRIBUTING.rst文件。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript节点js require()和Rhino Shell load()之间的区别是什么?   While循环中的java If语句   java GXT如何在XTemplate中显示treeobject?   如何将黑白图像加载到二进制文件中?   java ORMLite不知道如何存储班级航班。扫描仪。modelFX。机场航空公司的AirlineFx。使用另一个类或自定义持久器   java组织。阿帕奇。德比。客户是SqlException JSP和JSTL查询   spring如何将clob数据分配给java变量   java从上的表获取数据(Spring)   javaphp使用Exec执行带有用户定义参数的Jar文件   java jsonschema2pojo:引用相同类型的对象   使用原语从Scala调用Java vararg方法   java ClassNotFoundException:ClientBuilder Jersey 2.25.1 Tomcat 9.0   Android(Java)cr_BindingManager:无法调用determinedVisibility()从未看到pid的连接:   Java使用LocalTime类比较没有日期的时间   Java如何初始化对象的参数?