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如何使用“Wed,01 Jul 2015 17:32:41 EDT”解析字符串   java Storm apache升级(1.0.0到2.0.0)   java类驻留在不同的目录中,而不是包指定的目录。为什么?   将Java中的图像缩放到非常小的维度   java如何通过子文档从自定义方面访问ElasticSearch parentdoc字段   java如何在RationalSoftwareArchitect中使用findbugs?   Java中的事件提升处理   java值被添加到arrayList的所有索引中,而不是在“”时添加到最后一个索引中。正在使用arraylist的add()方法   JFrame中的java JPanel派生类   java如何用循环和异步方法模拟类   java Android阻止可绘制背景超出视图范围   为客户排序Java阵列   java Apache poi如何将工作表设置为枚举位置值属性?   java Rhino在使用自定义类参数调用javascript函数时出错   java格式化日期从年月日到年月日   spring如何修复java。lang.illegalargumentexception在此特定场景中是否尝试创建具有null实体的合并事件?   java如何创建更好的对象