This class provides a XML-RPC API for HaCi.
Basic usage:
my $api = new Frontier::Client(url => "http://$server/RPC2");
my $session = $api->call('login', [$user, $pass]);
die 'Login failed!' unless $session;
print Dumper($api->call($method, $session, @args));
$api->call('logout', $session);
exit 0;
login()Login and return your session
Params
Returns
- session [string] session token you can use for authentication
logout()Logout
Params
Returns
search()Search networks
Params
- search [string] string to search for
- state [string] filter the result by that network state (ALLOCATED PA, ASSIGNED, ...)
- exact [string] don't do a substring search
- template name [string] filter the result by that template name
- template query [hash] filter the result by defining special values for template entries (i.e.: {name => 'POOL1'})
- root name [string] limit the search in that root
- nrOfFreeSubs [boolean] compute the number of free subnets in each found network
- withDetails [boolean] show details for found networks
- tags [string] return only networks with this tags, seperate with spaces (i.e.: 'OR foo bar', 'AND foo bar')
Returns
- networks [array] array of found network blocks (hash)
- netID
- network
- rootName
- description
- state
- nrOfFreeSubs
Example
my $networks = search('Test', 'ASSIGNED', 0, 'DSL-POOL', {name => 'Pool1'}, 'DSL-Test-Pool-Root', 0);
getFreeSubnets()Find free subnets in a specified root and supernet and return the wanted amount of subnets
Params
- root name [string] search free subnets in that root
- supernet [network] search free subnets in that supernet (e.g. 192.168.0.0/24, 2001::/120)
- cidr [integer] specify the target cidr of your subnets (e.g. 30)
- amount [integer] how many subnets you want to get
Returns
- networks [array] array of free subnets found (hash)
- network
Example
my $freeSubnets = getFreeSubnets('Test root', '10.184.120.0/23', 32, 1);
getFreeSubnetsFromSearch()Search networks and return free subnets from them
Params
- search [string] string to search for
- state [string] filter the result by that network state (ALLOCATED PA, ASSIGNED, ...)
- exact [string] don't do a substring search
- template name [string] filter the result by that template name
- template query [hash] filter the result by defining special values for template entries (i.e.: {name => 'POOL1'})
- root name [string] limit the search in that root
- cidr [integer] specify the target cidr of your subnets (e.g. 30)
- amount [integer] how many subnets you want to get
Returns
- networks [array] array of free subnets found (hash)
- network
- root name
Example
my $freeSubnets = getFreeSubnetsFromSearch('search me', '', 1, '', {}, 'Test-Root', 29, 3);
listRoots()Add a root to HaCi
Params
Returns
- roots [array] array of found roots (hash)
- ID
- name
- ipv6 (boolean)
addRoot()Add a root to HaCi
Params
- root name [string] add a root with this name
- description [string] description of the root
- ipv6 [boolean] this root contains IPv6 networks
Returns
- success [string] 0 on success, error-String at error
editRoot()Edit an existing root
Params
- root name [string] edit this root
- new root name [string] change root name
- description [string] new description of the root
Returns
- success [string] 0 on success, error-String at error
delRoot()Delete a root from HaCi
Params
- root name [string] remove the root
Returns
- success [string] 0 on success, error-String at error
addNet()Add a network to HaCi
Params
- root name [string] add the network to this root
- network [network] add this network (e.g. 192.168.0.1/32, 2001::dead:beef:0/125)
- description [string] description of the network
- state [string] state of the network (e.g. ALLOCATED PA, ASSIGNED, ...)
- def subnet Size [integer] define a default subnet cidr size (e.g. 30)
- template name [string] assign a template to the network
- template values [hash] pass template values (e.g. {hostname => 'abc.de', os => 'redhat'})
- tags [string] add tags (seperate by comma)
Returns
- success [string] 0 on success, error-String at error
editNet()Edit an existing network
Params
- root name [string] edit the network in this root
- network [network] edit this network (e.g. 192.168.0.1/32, 2001::dead:beef:0/125)
- changes [hash] changes (valid attributes are: network description state rootName defSubnetSize tmplName tmplValues)
e.g.:
{description => 'test_8'}
{network => '192.168.0.8/29', defSubnetSize=>30, state=>'FREE', rootName=>'larsux.de'}
Returns
- success [string] 0 on success, error-String at error
delNet()Delete a network from HaCi
Params
- root name [string] remove the netork from this root
- network [network] remove this network (e.g. 192.168.0.1/32, 2001::dead:beef:0/125)
- network lock [integer] lock network for X seconds
- withSubnets [boolean] also remve subnets
Returns
- success [string] 0 on success, error-String at error
assignFreeSubnet()Find the next free subnet and assign it in one step
Params
- root name [string] search free subnets in that root
- supernet [network] search free subnets in that supernet (e.g. 192.168.0.0/24, 2001::/120)
- cidr [integer] specify the target cidr of your subnets (e.g. 30)
- description [string] description of the network
- state [string] state of the network (e.g. ALLOCATED PA, ASSIGNED, ...)
- def subnet Size [integer] define a default subnet cidr size (e.g. 30)
- template name [string] assign a template to the network
- template values [hash] pass template values (e.g. {hostname => 'abc.de', os => 'redhat'})
Returns
- network details [hash] new network assigned:
- netID
- network
- modify date
- ipv6 (boolean)
- description
- state
- create from
- create date
- default subnet cidr size
- template name
- modify from
getNetworkDetails()Get details from a network in HaCi
Params
- root name [string] get details of a network in this root
- network [network] get details of this network (e.g. 192.168.0.1/32, 2001::dead:beef:0/125)
Returns
- network [hash] network details:
- netID
- network
- modify date
- ipv6 (boolean)
- description
- state
- create from
- create date
- default subnet cidr size
- template name
- modify from
getSubnets()Get subnets from a root and optional from a supernet
Params
- root name [string] get subnets from this root
- supernet [network] get subnets from this network (e.g. 192.168.0.1/32, 2001::dead:beef:0/125)
Returns
- networks [array] array of found networks (hash)
- netID
- network
- modify date
- ipv6 (boolean)
- description
- state
- create from
- create date
- default subnet cidr size
- template name
- modify from
Example
my $subnets = getSubnets('Test');
my $subnets = getSubnets('Test', '192.168.0.0/24');