Metadata-Version: 2.0
Name: infoblox-client
Version: 0.3.1
Summary: Client for interacting with Infoblox NIOS over WAPI
Home-page: https://github.com/infobloxopen/infoblox-client
Author: Pavel Bondar
Author-email: pbondar@infoblox.com
License: Apache
Keywords: infoblox-client
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: requests (>=2.5.2)
Requires-Dist: oslo.serialization (>=1.4.0)
Requires-Dist: oslo.log (>=1.8.0)
Requires-Dist: setuptools (>=17.1)

===============================
Infoblox Client
===============================

.. image:: https://travis-ci.org/infobloxopen/infoblox-client.svg?branch=master
        :target: https://travis-ci.org/infobloxopen/infoblox-client

.. image:: https://img.shields.io/pypi/v/infoblox-client.svg
        :target: https://pypi.python.org/pypi/infoblox-client

.. image:: https://codecov.io/github/infobloxopen/infoblox-client/coverage.svg?branch=master
        :target: https://codecov.io/github/infobloxopen/infoblox-client?branch=master

.. image:: https://readthedocs.org/projects/infoblox-client/badge/?version=latest
        :target: http://infoblox-client.readthedocs.org/en/latest/?badge=latest

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)


1. 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'}]

2. 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.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.


