2021-03-10 17:40:13 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace wickedsoft\NetBox;
|
|
|
|
|
|
|
|
|
|
use wickedsoft\NetBox\HttpClient\HttpClient;
|
|
|
|
|
|
|
|
|
|
class Client
|
|
|
|
|
{
|
|
|
|
|
/** @var array */
|
|
|
|
|
protected $classes = [
|
2021-03-12 17:20:32 -04:00
|
|
|
//circuits
|
2021-03-10 18:20:45 -04:00
|
|
|
'circuits' => 'Circuits',
|
2021-03-12 17:20:32 -04:00
|
|
|
'circuitTypes' => 'CircuitTypes',
|
|
|
|
|
'circuitTerminations' => 'CircuitTerminations',
|
|
|
|
|
'providers' => 'CircuitProviders',
|
|
|
|
|
'providers' => 'Providers',
|
|
|
|
|
//dcim
|
|
|
|
|
'cables' => 'Cables',
|
2021-03-12 17:26:25 -04:00
|
|
|
'connectedDevices' => 'ConnectedDevices',
|
2021-03-12 17:20:32 -04:00
|
|
|
'consoleConnections' => 'ConsoleConnections',
|
|
|
|
|
'consolePortTemplates' => 'ConsolePortTemplates',
|
|
|
|
|
'consolePorts' => 'ConsolePorts',
|
|
|
|
|
'consoleServerPortTemplates' => 'ConsoleServerPortTemplates',
|
|
|
|
|
'consoleServerPorts' => 'ConsoleServerPorts',
|
|
|
|
|
'deviceBayTemplates' => 'DeviceBayTemplates',
|
|
|
|
|
'deviceBays' => 'DeviceBays',
|
|
|
|
|
'deviceRoles' => 'DeviceRoles',
|
|
|
|
|
'deviceTypes' => 'DeviceTypes',
|
|
|
|
|
'devices' => 'Devices',
|
|
|
|
|
'frontPortTemplates' => 'FrontPortTemplates',
|
|
|
|
|
'frontPorts' => 'FrontPorts',
|
|
|
|
|
'interfaceConnections' => 'InterfaceConnections',
|
|
|
|
|
'interfaceTemplates' => 'InterfaceTemplates',
|
|
|
|
|
'interfaces' => 'Interfaces',
|
|
|
|
|
'inventoryItems' => 'InventoryItems',
|
|
|
|
|
'manufacturers' => 'Manufacturers',
|
|
|
|
|
'platforms' => 'Platforms',
|
|
|
|
|
'powerFeeds' => 'PowerFeeds',
|
|
|
|
|
'powerOutlets' => 'PowerOutlets',
|
|
|
|
|
'powerOutletTemplates' => 'PowerOutletTemplates',
|
|
|
|
|
'powerPanels' => 'PowerPanels',
|
|
|
|
|
'powerPorts' => 'PowerPorts',
|
|
|
|
|
'powerPortTemplates' => 'PowerPortTemplates',
|
|
|
|
|
'rackGroups' => 'RackGroups',
|
|
|
|
|
'rackReservations' => 'RackReservations',
|
|
|
|
|
'rackRoles' => 'RackRoles',
|
|
|
|
|
'racks' => 'Racks',
|
|
|
|
|
'rearPortTemplates' => 'RearPortTemplates',
|
|
|
|
|
'rearPorts' => 'RearPorts',
|
|
|
|
|
'regions' => 'Regions',
|
2021-03-10 18:20:45 -04:00
|
|
|
'sites' => 'Sites',
|
2021-03-12 17:20:32 -04:00
|
|
|
'virtualChassis' => 'VirtualChassis',
|
|
|
|
|
//ipam
|
|
|
|
|
'ip' => 'Ip',
|
|
|
|
|
/*'sites' => 'Sites',
|
2021-03-10 18:20:45 -04:00
|
|
|
'racks' => 'Racks',
|
|
|
|
|
'devices' => 'Devices',
|
|
|
|
|
'prefixes' => 'Prefixes',
|
2021-03-12 17:20:32 -04:00
|
|
|
|
2021-03-10 18:20:45 -04:00
|
|
|
'interfaces' => 'Interfaces',
|
|
|
|
|
'rirs' => 'Rirs',
|
|
|
|
|
'vlans' => 'Vlans',
|
|
|
|
|
'vrfs' => 'Vrfs',
|
|
|
|
|
'secrets' => 'Secrets',
|
|
|
|
|
'tenants' => 'Tenants',
|
|
|
|
|
'users' => 'Users',
|
2021-03-11 21:18:06 -04:00
|
|
|
'clusters' => 'Clusters',*/
|
2021-03-12 17:20:32 -04:00
|
|
|
|
2021-03-10 17:40:13 -04:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
/** @var \wickedsoft\NetBox\HttpClient */
|
|
|
|
|
protected $httpClient;
|
|
|
|
|
|
|
|
|
|
/** @var array */
|
|
|
|
|
protected $options = [];
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param $method
|
|
|
|
|
* @param $args
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
|
|
|
|
public function __call($method, $args)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
return $this->api($method);
|
|
|
|
|
} catch (InvalidArgumentException $e) {
|
|
|
|
|
throw new \BadMethodCallException(sprintf('Undefined method called:"%s"', $method));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param $name
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
|
|
|
|
public function api($name)
|
|
|
|
|
{
|
|
|
|
|
if (!isset($this->classes[$name])) {
|
|
|
|
|
throw new \InvalidArgumentException(sprintf('Undefined method called:"%s"', $name));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$class = '\\wickedsoft\\NetBox\\Api\\' . $this->classes[$name];
|
|
|
|
|
|
|
|
|
|
return new $class($this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return HttpClient
|
|
|
|
|
*/
|
|
|
|
|
public function getHttpClient()
|
|
|
|
|
{
|
|
|
|
|
if (!isset($this->httpClient)) {
|
|
|
|
|
$this->httpClient = new HttpClient();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->httpClient->setOptions($this->getOptions());
|
|
|
|
|
|
|
|
|
|
return $this->httpClient;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function getOptions()
|
|
|
|
|
{
|
|
|
|
|
return $this->options;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param $options
|
|
|
|
|
*/
|
|
|
|
|
public function setOptions($options)
|
|
|
|
|
{
|
|
|
|
|
$this->options = $options;
|
|
|
|
|
}
|
|
|
|
|
}
|