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


热门话题
IntelliJ中的java默认Maven项目结构不一致   java我希望链接(在帖子和页面上)在一些访问者加载时被自动点击   java如何使用单独的方法隐藏JButton并在新类中调用   java KStream leftJoin KStream具有相同的密钥   java图像在垂直滚动窗格视图端口中消失   java从指定的起始点开始以n的增量填充数组   java JLabel和JTextField不在swing表单中应用   java springboot mongo如果没有映像,请使用现有映像   类似C++映射的java容器   java如何在没有Valgrind错误的情况下调用JNI_CreateJavaVM?   java如何在安卓中运行后台服务   java onPostExecute不运行