netbox api的python客户端

netboxapi-client的Python项目详细描述


这是netbox(https://github.com/digitalocean/netbox)api的python客户端。它可以用作python模块/库,也可以直接从命令行使用。 这个项目的目标是提供一种简单的方法,根据netbox这个伟大项目中的rest api自动化基础设施文档。

状态

正在开发中。

当前的开发在netbox v2.2.2及更高版本上进行了测试。

安装

您可以克隆该repo并使用以下命令在本地安装:

python setup.py build && pip install -e .

正确的pypi包就在路上。

用法

从cli,使用配置文件:

netboxapi.json.example文件复制到netboxapi.json并编辑该文件以匹配您的netbox实例url和令牌。

python netboxapi_client.py-h将为您提供可操作模型的概述。-h在cli的每个深度级别都可用。

下面是一些示例:

netboxapi_client -h
netboxapi_client dcim -h category
netboxapi_client dcim devices -h
netboxapi_client dcim devices list
netboxapi_client dcim devices create -d '$(cat mydevice.json)'
netboxapi_client dcim devices create \
        -d '{ "name": "sw-02-par-eq2", \
              "slug": "sw-02-par-eq2", \
              "device_role": "1", \
              "device_type": "8", \
              "site": "184" }'
netboxapi_client dcim devices show -n sw-02-par-eq2
netboxapi_client dcim devices show -i 10
netboxapi_client dcim devices delete -n sw-02-par-eq2

源代码:

这是一个非常基本的示例:

frompprintimportpprintfromnetboxapi_clientimportApi,getTOKEN="thetokenyoucangetfromnetboxwebuionauserprofilepage"URL="https://netbox.example.org"api=Api(url=URL,token=TOKEN)res=get(api,model="dcim",obj="devices",name="sw-02-par-eq2")pprint(res)

现在,您必须导入api类和所需的函数(get、get_list、update、create、delete等等)。这将很快得到改善…

如何测试

安装docker和docker compose,然后:

sudo docker-compose run --rm netbox createsuperuser

系统将提示您输入超级用户的用户名、电子邮件和密码。

sudo docker-compose up -d

然后您必须连接到刚刚安装的netbox实例。应该可以在http://localhost:8000访问它。使用您先前选择的凭据登录。在右上角,您可以选择“用户名”>;“配置文件”。然后单击“api tokens”并创建一个,或者使用tests/basic.py中的一个writen,或者选择一个并替换此文件中的一个。(是的,令牌创建可以自动化,它将是…)

然后您可以尝试查询api,如前所述。

运行单元测试:

python tests/basic.py

待办事项

  • 如果不需要,禁止发送多个请求/发现模型
  • 更好地捕获异常,以便为用户提供更全面的输出
  • 在github上设置ci/cd管道和生成状态
  • 将docker image推送到公共repo中,并将docker-compose.yml、entrypoint.sh添加到repo中,将测试过程添加到文档中

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

推荐PyPI第三方库


热门话题
java动态地将圆添加到Arraylist   什么是好的“错误检查”模式(Java)?   java是我们可以在应用程序中使用的云服务,它需要存储最大大小为5MB的小文件   JavaGooglePhotosAPI是静态内容上传项目的永久url   java AES密钥存储   java文件正在下载,但没有任何内容   每次循环迭代和threadsleep的java日志记录都是不好的做法?   java不会切换到另一个。单击submit时使用jsp。春季mvc   java我很难从我的maclaurin系列中获得sin x的准确输出   java使用类似的<Object>?   需要java Hibernate映射吗?   java如何在https和客户端证书请求后面生成web服务代理   java如何通过注释有条件地使用自定义JsonSerializer   java如何在html页面和Restful WebResource方法之间实现JaxB?   读取文件Libgdx Android时发生java错误   java如何在处理主活动之前从另一个方法中获取值?   java在一个SQLquery中使用多个语句,还是使用批处理?