Client for interacting with Infoblox NIOS over WAPI
Project description
Client for interacting with Infoblox NIOS over WAPI.
Free software: Apache license
Documentation: https://infoblox-client.readthedocs.org.
Installation
Install infoblox-client using pip:
pip install infoblox-client
Usage
Configure logger prior to loading infoblox_client to get all debug messages in console:
import logging logging.basicConfig(level=logging.DEBUG)
Low level API, using connector module.
Retrieve list of network views from NIOS:
from infoblox_client import connector opts = {'host': '192.168.1.10', 'username': 'admin', 'password': 'admin'} conn = connector.Connector(opts) # get all network_views network_views = conn.get_object('networkview')
For this request data is returned as list of dicts:
[{u'_ref': u'networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true', u'is_default': True, u'name': u'default'}]
High level API, using objects.
Example of creating Network View, Network, DNS View, DNSZone and HostRecord using NIOS objects:
from infoblox_client import connector from infoblox_client import objects opts = {'host': '192.168.1.10', 'username': 'admin', 'password': 'admin'} conn = connector.Connector(opts) nview = objects.NetworkView.create(conn, name='my_view') network = objects.Network.create(conn, network_view='my_view', cidr='192.168.1.0/24') view = objects.DNSView.create(conn, network_view='my_view', name='my_dns_view') zone = objects.DNSZone.create(conn, view='my_dns_view', fqdn='my_zone.com') my_ip = objects.IP.create(ip='192.168.1.25', mac='aa:bb:cc:11:22:33') hr = objects.HostRecord.create(conn, view='my_dns_view', name='my_host_record.my_zone.com', ip=my_ip)
Reply from NIOS is parsed back into objects and contains next data:
In [22]: hr Out[22]: HostRecordV4: _ref=record:host/ZG5zLmhvc3QkLjQuY29tLm15X3pvbmUubXlfaG9zdF9yZWNvcmQ:my_host_record.my_zone.com/my_dns_view, name=my_host_record.my_zone.com, ipv4addrs=[<infoblox_client.objects.IPv4 object at 0x7f7d6b0fe9d0>], view=my_dns_view
Objects Interface
All top level objects support interface for CRUD operations. List of supported objects is defined in next section.
- create(cls, connector, check_if_exists=True, update_if_exists=False, **kwargs)
Creates object on NIOS side. Requires connector passed as the first argument, check_if_exists and update_if_exists are optional. Object related fields are passed in as kwargs: field=value, field2=value2.
- search(cls, connector, return_fields=None, search_extattrs=None, force_proxy=False, **kwargs)
Search single object on NIOS side, returns first object that match search criteria. Requires connector passed as the first argument. ‘return_fields’ can be set to retrieve particular fields from NIOS, for example return_fields=[‘view’, ‘name’]. If ‘return_fields’ is ‘[]’ default return_fields are returned by NIOS side for current wapi_version. ‘search_extattrs’ used to filter out results by extensible attributes. ‘force_proxy’ forces search request to be processed on Grid Master (applies only in cloud environment)
- search_all(cls, connector, return_fields=None, search_extattrs=None, force_proxy=False, **kwargs)
Search all objects on NIOS side that match search cryteria. Returns list of objects. All other options are equal to search().
- update(self)
Update object on NIOS side by pushing changes done in local object.
- delete(self)
Deletes object from NIOS side.
Supported NIOS objects
NetworkView for ‘networkview’
DNSView for ‘view’
DNSZone for ‘zone_auth’
Member for ‘member’
Network (V4 and V6)
NetworkV4 for ‘network’
NetworkV6 for ‘ipv6network’
IPRange (V4 and V6)
IPRangeV4 for ‘range’
IPRangeV6 for ‘ipv6range’
HostRecord (V4 and V6)
HostRecordV4 for ‘record:host’
HostRecordV6 for ‘record:host’
FixedAddress (V4 and V6)
FixedAddressV4 for ‘fixedaddress’
FixedAddressV6 for ‘ipv6fixedaddress’
IPAddress (V4 and V6)
IPv4Address for ‘ipv4address’
IPv6Address for ‘ipv6address’
ARecordBase
ARecord for ‘record:a’
AAAARecord for ‘record:aaaa’
PtrRecord (V4 and V6)
PtrRecordV4 for ‘record:ptr’
PtrRecordV6 for ‘record:ptr’
EADefinition for ‘extensibleattributedef’
Features
TODO
History
0.3.4 (2016-01-21)
Do not override verify flag on request level
0.3.3 (2016-01-20)
create_required_ea_definitions return created list
Add ‘start_addr’, ‘end_addr’ to ip detection list
Add request type to connector logger
Flake8 fixes
0.3.2 (2016-01-19)
Convert strings into booleans for ssl_verify
Update AUTHORS.rst, add contributors
Remove unused methods from utils.py
0.3.1 (2016-01-14)
Add ‘zone’ to search fields of Host Record
0.3.0 (2016-01-14)
Update development status from Pre-Alpha to Alpha
Feature/tox testing (huge changes in testing env)
Add ‘network’ to search fields of FixedAddress
Allow domain-name-servers for ipv6
Update existent EA for network instead of replace
0.2.3 (2016-01-06)
Return None if search failed instead of exception
Add ip_version as a public property for objects
0.2.2 (2015-12-23)
Fix updating object from create method
Rework delete_all_associated_objects logic
Fix error handling in create_object
Do not catch exception on create_dns_zone level
Update feature version for member_ipv6_setting
0.2.1 (2015-12-18)
Add InfobloxMemberAlreadyAssigned exception
Update dns record if already exists
Add ‘log_api_calls_as_info’ option for connector
Check for empty values in EA
0.2.0 (2015-12-17)
Deprecate network_exists method in object_manager
Add _global_field_processing for objects
Add parsing ‘extattrs’ into EA objects for all InfobloxObject childs
Add docs badge to README.rst
Reworked get_network in object_manager
Move _eq_ to BaseObject
Check if fixed address is found before delete
0.1.4 (2015-12-08)
Field updates for Member object
Log all api calls in connector on debug level
0.1.3 (2015-12-04)
Add ‘network’ field to ip versioned fields
Skip adding DHCP options for IPv6 network
Do not search IPRange before creating
0.1.2 (2015-12-02)
Do not fail if object is not found on delete
Raise exception with details if reply is not json
Add ‘silent_ssl_warnings’ option to connector
0.1.1 (2015-12-01)
Fix unbind_name_from_record_a
0.1.0 (2015-12-01)
Add new field type ‘_updateable_search_field’ to objects and fix HostRecord search
Fix ‘make docs’
Update README.rst (fixed formatting)
0.0.11 (2015-11-25)
Fix adding second ip to HostRecord
Fix failing in pdb
Convert EA values into boolean if possible
Added ‘ips’ allias for ip field in HostRecord
0.0.10 (2015-11-19)
Add utility to determine supported feature
Update README.rst with objects interface
0.0.9 (2015-11-13)
Add allowed_object_types field for EA Definition
Allow to return default fields for object
Update README.rst with list of supported objects
0.0.8 (2015-11-12)
Add Extensible Attributes Definition support
Fixed options processing for create_network in object_manager
Fixed missed DNSZone object in create_dns_zone
0.0.7 (2015-10-27)
Added ‘network’ to IPRange search fields
Modified get method of the EA class to allow return default values
0.0.6 (2015-10-26)
Added initial support of Extensible Attributes as sub objects
Added search by Extensible Attributes
Improved validation in connector
Added delete_object_by_ref to object manager
0.0.5 (2015-10-12)
Fixed issues in working with objects
Added missed _get_object_type_from_ref
Added code coverage
Updated links to point to infobloxopen repository
0.0.4 (2015-09-23)
Added object abstraction for interacting with NIOS objects
Added object_manager to simplify some operations on objects
0.0.3 (2015-09-15)
Added dependencies to package.
0.0.2 (2015-09-11)
Fixed using dashes in package directory names that prevented package import after install.
0.0.1 (2015-09-11)
Added connector to send wapi requests to NIOS, does not includes NIOS object model at this point.
First release on PyPI.