cmdrsharp/netbox-laravel

NetBox的创建/读取客户端

1.0.2.0 2021-04-22 13:24 UTC

This package is auto-updated.

Last update: 2024-09-19 02:38:58 UTC


README

该仓库包含用于与NetBox API交互的客户端 - 更具体地说,使其更像资源(类似于Laravel模型)。

每种资源类型都定义了一个fillable属性,允许批量赋值。每个属性都与NetBox API文档一一对应。资源还包含辅助方法,以便轻松查找。

当前要求

  • PHP 7.4或更高版本
  • Laravel 7.0或更高版本
  • NetBox(已测试2.10版本)

安装

通过composer安装

$ composer require cmdrsharp/netbox-laravel

安装后,发布配置文件。

php artisan vendor:publish --provider="CmdrSharp\NetBox\NetBoxServiceProvider"

这将创建一个位于您的Laravel配置目录中的netbox.php文件,其中包含NetBox URL和API令牌的密钥。建议您在.env文件中直接定义这些值。配置文件将自动读取这些值。

NETBOX_URL=
NETBOX_API_TOKEN=5672

如果您出于某种原因希望禁用对NetBox API的SSL验证,您可以在.env文件中覆盖验证。

NETBOX_VERIFY_SSL=false

使用方法

要创建新资源,请实例化正确的模型并调用其create方法。

use CmdrSharp\NetBox\Ipam\Prefix;

$prefix = new Prefix([
    'prefix' => '172.16.0.0/24', // Prefixes are specified according to the NetBox API Docs
    'role' => 1, // This is an ID referring to the resource in NetBox
    'site' => 1, // This is an ID referring to the resource in NetBox
    'tenant' => 1, // This is an ID referring to the resource in NetBox
    'vlan' => 1, // This is an ID referring to the resource in NetBox
    'is_pool' => false,
    'description' => 'Cool Network',
    'vrf' => 1, // This is an ID referring to the resource in NetBox
    'status' => 'active'
]);

$prefix->create();
// Returns a Guzzle ResponseInterface with getBody and getStatusCode methods.

为了方便起见,每个资源还包含命名set方法,涵盖了所有fillable属性。

use CmdrSharp\NetBox\Ipam\Prefix;

$prefix = new Prefix();
$prefix->setPrefix('172.16.0.0/24')
        ->setRole(1)
        ->setSite(1)
        ->setTenant(1)
        ->setVlan(1)
        ->setPool(false)
        ->setDescription('Cool Network')
        ->setVrf(1)
        ->setStatus('active')
        ->create();

示例:从NetBox API获取前缀

use CmdrSharp\NetBox\Ipam\Prefix;

Prefix::wherePrefix('172.16.0.0/24');
// Returns a Guzzle ResponseInterface with getBody and getStatusCode methods.

其他资源

开发

在创建新资源时,请确保遵循现有标准以确保其兼容性。fillable数组应理想地与NetBox API文档一一对应。在需要特殊属性管理的情况下,我们依赖用户提前知道这一点进行批量赋值,并在流式设置器中提供辅助器来处理这些场景。

目前,不应执行输入验证。这可能会改变,因为我们可能选择根据NetBox API规范验证属性。

测试

所有资源都应该由测试覆盖。测试应该扩展NetBoxTestCase类,该类定义了配置值,例如NetBox实例的URL(可以很容易地通过Docker启动)以及在NetBox实例中创建的随机API密钥。

版本控制

此包遵循显式版本控制