cmdrsharp / netbox-laravel
NetBox的创建/读取客户端
1.0.2.0
2021-04-22 13:24 UTC
Requires
- php: >=7.4
- ext-json: *
- cmdrsharp/guzzle-api: >=2.2.0.2
- laravel/framework: >=7.0
Requires (Dev)
- orchestra/testbench: >=6.0
- phpunit/phpunit: >=7.0
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.
其他资源
- Laravel NetBox BGP - 包含BGP资源的扩展
开发
在创建新资源时,请确保遵循现有标准以确保其兼容性。fillable数组应理想地与NetBox API文档一一对应。在需要特殊属性管理的情况下,我们依赖用户提前知道这一点进行批量赋值,并在流式设置器中提供辅助器来处理这些场景。
目前,不应执行输入验证。这可能会改变,因为我们可能选择根据NetBox API规范验证属性。
测试
所有资源都应该由测试覆盖。测试应该扩展NetBoxTestCase类,该类定义了配置值,例如NetBox实例的URL(可以很容易地通过Docker启动)以及在NetBox实例中创建的随机API密钥。
版本控制
此包遵循显式版本控制。