编写基于OPS API接口的脚本
编写基于OPS API接口的脚本
背景信息
在OPS脚本文件中,可以定义对YANG模型节点的操作,实现通过OPS API接口对业务的管理。
OPS API是一种Restful风格的开放可编程接口,OPS支持的操作类型以及与RESTCONF、NETCONF协议的对应关系如下:
表1 OPS支持的操作类型以及与NETCONF和RESTCONF协议对应关系
OPS
OPS | RESTCONF | NETCONF |
---|---|---|
create | POST | <edit-config> (nc:operation="create") |
create | POST | rpc |
delete | DELETE | <edit-config> (nc:operation="delete") |
get | GET | <get-config>, <get> |
set | PUT | <edit-config> (nc:operation="replace") |
ZTP(Zero Touch Provisioning)可以通过调用OPS脚本来实现设备空配置启动时的业务自动部署。
当前支持的业务节点范围请参考附录:OPS API接口范围。
对于手动运行的Python脚本以及脚本维护助手ops_execute()函数中定义的脚本,都可以参考如下步骤和规范限制来编写OPS脚本。
操作步骤
(1)通过import ops语句调用OPSConnection(object)函数,建立和OPS接口的连接。
(2)编写OPS脚本内容。
import ops # 固定格式,标识OPS模块。 import string # 固定格式。 uri = "/restconf/data/huawei-aaa:aaa/domains" # 基于RESTCONF协议的报文头及业务模块的YANG模型XPath,对于create/delete/get/set操作,固定是data。 uri = "/restconf/operations/huawei-cfg:set-startup " # 基于RESTCONF协议的报文头及业务模块的YANG模型XPath,对于rpc操作,路径中是operations。 host = "localhost" # 固定格式。 req_data = None # 业务body,以XML格式填写需要添加的数据,没有写None。 opos_conn = ops.OPSConnection(host) # 触发建立OPS连接的接口函数。 ret, _, rsp_data = ops_conn.create/delete/get/set(uri, req_data) # 触发各类型操作。
操作类型 | 规则说明 | 脚本样例 |
---|---|---|
create | 创建节点,uri路径中,固定为data | import ops import string import hashlib uri = "/restconf/data/huawei-aaa:aaa/domains" host = "localhost" req_data = '''<domain> <domainName>test1</domainName> <authenSchemeName>default</authenSchemeName> <acctSchemeName>default</acctSchemeName> <authorSchemeName>default</authorSchemeName> <domainState>active</domainState> <accessLimit>283648</accessLimit> <serviceTerminal>true</serviceTerminal> <serviceTelnet>true</serviceTelnet> <serviceFtp>true</serviceFtp> <serviceSsh>true</serviceSsh> <serviceSnmp>true</serviceSnmp> <serviceDot1x>true</serviceDot1x> <serviceHttp>true</serviceHttp> </domain>''' ops_conn = ops.OPSConnection(host) ret, _, rsp_data = ops_conn.create(uri, req_data) print(('install_ops_script ret {}, rsp_data {}'.format(ret, rsp_data))) |
create | RPC操作,uri路径中,固定为operations | import ops import string import hashlib uri = "/restconf/operations/huawei-cfg:set-startup" host = "localhost" req_data = '''<input> <filename>vrpcfg1.zip</filename> </input>''' ops_conn = ops.OPSConnection(host) ret, _, rsp_data = ops_conn.create(uri, req_data) print(('install_ops_script ret {}, rsp_data {}'.format(ret, rsp_data))) |
delete | 不允许携带业务body。 | import ops import string import hashlib uri = "/restconf/data/huawei-aaa:aaa/domains/domain=test1" host = "localhost" req_data = None ops_conn = ops.OPSConnection(host) ret, _, rsp_data = ops_conn.delete(uri, req_data) print(('install_ops_script ret {}, rsp_data {}'.format(ret, rsp_data))) |
get |
| import ops import string import hashlib print("hello") print("world") uri = "/restconf/data/huawei-aaa:aaa/domains/domain=test1" host = "localhost" req_data = None ops_conn = ops.OPSConnection(host) ret, _, rsp_data = ops_conn.get(uri, req_data) print(('install_ops_script ret {}, rsp_data {}'.format(ret, rsp_data))) |
set | N/A | import ops import string import hashlib uri = "/restconf/data/huawei-aaa:aaa/domains/domain" host = "localhost" req_data = '''<domain> <domainName>test1</domainName> <authenSchemeName>default</authenSchemeName> <acctSchemeName>default</acctSchemeName> <authorSchemeName>default</authorSchemeName> <domainState>active</domainState> <accessLimit>283648</accessLimit> <serviceTerminal>true</serviceTerminal> <serviceTelnet>true</serviceTelnet> <serviceFtp>true</serviceFtp> <serviceSsh>true</serviceSsh> <serviceSnmp>true</serviceSnmp> <serviceDot1x>true</serviceDot1x> <serviceHttp>true</serviceHttp> </domain>''' ops_conn = ops.OPSConnection(host) ret, _, rsp_data = ops_conn.set(uri, req_data) print(('install_ops_script ret {}, rsp_data {}'.format(ret, rsp_data))) |
1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处: www.zh-cjh.com珠海陈坚浩博客 » 编写基于OPS API接口的脚本
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处: www.zh-cjh.com珠海陈坚浩博客 » 编写基于OPS API接口的脚本
作者: cjh
手机扫一扫,手机上查看此文章: |
一切源于价值!
其他 模板文件不存在: ./template/plugins/comment/pc/index.htm