This patch begins work on an 'IPManager' class that further decouples
IP/CIDR manipulation from the openstack-ansible configuration handling
logic.
With this patchset, a new implementation is provided and tested in
isolation, with integration into and replacement of existing code set
for follow up patchsets.
The aim is also to provide a working implementation based on a proposed
IP management API for use with plugins. The proposed API is provided as
the IPBasePlugin class, and generic expectations of the API are
documented there.
A few notable changes exist in the new IPManager class versus the
existing codebase:
- The Queue.Queue class is not used, but rather a plain, randomized
list. Reviewing the existing implementation, there does not appear
to be a need to use the specialized queue class.
- USED_IPS is moved into a set associated with a given IPManager
object. The expectation is that dynamic_inventory.py will treat
IPManager as a singleton, but this implementation allows for
replacing that singleton in test cases, or using multiple instances
in some other context.
While the lib/ip.py file is not intended to be executed, the python
shebang line was provided in order to comply with our tox linting
searches.
Change-Id: I06729ac2bc1688a39255f2c8ea0d14131b5c2560