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第三方库


热门话题
java JList侦听器找不到符号   多点触摸跨平台java应用程序(Windows、Mac和Linux(Ubuntu)(可能是Android))   在UnitTest中找不到java类加载器资源   java当我尝试在Eclipse中运行我的minecraft mod时,我总是遇到这个错误,这是什么意思?   内部有一个同步块的静态方法,在java中阻止整个类?   不支持java操作:具有BillableStatus的费用在采购中应具有AccountBasedExpenseLineDetail行的CustomerRef   java运行时常量池GC集合   java无法解析配置“:app:\u debugApk”的所有依赖项。找不到名为“default”的配置   在GCP计算引擎中托管Neo4j的java   java如何从BroadcastReceiver更新片段选项卡?   线程“main”组织中的java异常。冬眠注释异常:@org。冬眠注释。表引用未知表:ProductForPractice   在Java/Groovy中嵌入处理   java Android REST教程/示例项目   java我可以在同一测试中在一个模拟器上启动应用程序,在另一个模拟器上启动移动浏览器吗?   java如何更改通知横幅的方向?   安卓 Java帮助实现Firebase授权   if else之后的rs.next()中出现java错误?