SDK for consuming from PHP-IPAM's API
To create a Client, you must first construct something that implements ConfigProvider. Two implementations are included:
If you have all your PHP IPAM configuration details local to your application you may use the Config class, passing an array of configuration details:
$conf = [
// Required Parameters
'host' => 'service host',
'username' => 'bilbo-swaggins',
'password' => 'swaggerific',
'appid' => 'whatever',
'appcode' => 'crypticwhatever',
// Optional Parameters
'https' => true, // defaults to true
'port' => 0, // recommended to set only if you don't use standard 80 / 443,
'silent' => false, // defaults to false, set to silence all logging output
];
$config = new \ENA\PHPIPAM\Config\Config($conf);
If you have a Consul setup going and have your PHPIPAM service registered with it, or use its KV store for other config items, you may use the ConsulConfig class. This config uses PHPConsulAPI for Consul interaction. It accepts all of the same parameters as the standard LocalConfig class, with the following additional Consul-specific ones:
Parameters:
$consulConf = $conf + [
'servicename' => 'phpipam', // mutually exclusive to "host" and "port", and is required if those are not set
'servicetag' => '', // defaults to nothing
'healthyonly' => true, // defaults to true
'queryoptions' => null, // optionally allows setting of a [QueryOptions](https://github.com/dcarbone/php-consul-api/blob/master/src/QueryOptions.php) object to use in requests
'usernamekey' => '', // full path to KV store key containing username, mutually exclusive with "username"
'passwordkey' => '', // full path to KV store key containing password, mutually exclusive with "password"
'appidkey' => '', // full path to KV store key containing appid, mutually exclusive with "appid"
'appcodekey' => '', // full path to KV store key containing appcode, mutually exclusive with "appcode"
];
This class accepts an optional 3rd argument of an instance of Consul. If this is not defined, a new instance will be created using default config values.
Both config classes take an optional 2nd argument of any class implementing GuzzleHttp ClientInterface. If this is not defined, a new instance of GuzzleHttp Client will be used.
This library is still under active development. Below is a table of the various Controllers and the development state:
Controller | State |
---|---|
Addresses | Partial |
Circuits | |
Devices | |
L2Domains | |
Prefix | |
Sections | |
Subnets | Partial |
Tools | |
User | Full |
Vlans | |
Vrfs |
All operations follow the same basic flow:
$client->Controller()->METHOD()->Action()->execute();
There are some Controller's whose METHOD
is also directly executable (
$client->User()->GET()->execute()
, for example)
Every step in that chain is a Part
, and only parts that implement the
ExecutablePart interface will carry the
execute
method.