CHANGES
=======

* FAWS: added DB fields for SG migration tool
* Fix with statement deprecation warnings
* Add constraints file to fix cryptography version
* Fix deprecation warnings with  _ in _i18n
* enable_dhcp should be explicitly set to False in create_subnet
* load_admin_roles is not a valid argument
* Work on making worker plugins
* Add ability for admins to reserve ip addresses
* Add ability to enable/disable drivers by region
* Throw meaningful exception bad network config
* Enable DeprecationWarning in test environments
* Accept new column name for tenant_id
* Move Neutron Install Req to Test-Req
* Fixes for quark UT warnings
* Cleanup README.rst
* Finalize Docker Images
* Stop db migration warning

1.0.0
-----

* Fixes to ip billing after integration testing
* Remove Quark.Wiki Submodule
* Update Docker Images
* segment_id resource did not have allow_put defined
* Docker Update
* Add better exception handling in extensions
* Raise GatewayConflict as BadRequest
* Remove ip_block create/delete notifications
* Fix 500 on missing "cidr" key from POST to subnets
* Updated docker neutron.conf to have subnets
* Explicitly define allow_put in neutron extensions
* Add "address" back in ip_addresses response body
* Added IP_BILLING to environment capabilities
* Error 409 instead of 403 when deleting a provider network
* Docker Development
* Block flip update if fixed ip conflicts with gw
* QuarkIPAMLog test may fail due to timing
* More data validation on keys
* Made imports consistent in billing code
* Changes to billing code
* Updating quark metadata for pypi
* Contributing Guide

0.1.0
-----

* Made shared_ip quota tenant based
* Updating ip_address plugin_view with correct keys
* Initial work on async worker for quark
* Passing Tests
* Fixed all the copyright headers to use Rackspace
* Adding IPAddressInUse exception back in (#561)
* Ip notifications (#558)
* Moving test_ports to proper directory
* Removed deallocated_at from the macs index
* Added .noseids to the gitignore for great justice
* Optimized reallocation for BOTH strategy
* Fix bug with list of scaling IPs
* Added qualified exception to ipam, expand log info
* WIP: Making IPPolicy.get_ip_policy_cidrs an inst method
* Fixed IPAddressInUse on allocating deallocated ip
* undefered pools during subnet select
* Fix the new network_segments FK travis bork
* Fixing the travis tests by keeping the facade
* remove use_master args as the redis client now handles this. JIRA:NCP-1916
* Fixed the HEAD for the port indexes
* Added new port indexes
* Fix disassociating ports from SCIPs on port delete
* Allowing subnet allocation pool shrinking
* Just skips subnets that are None during ipam
* Adding the device id to port delete logging
* Adjusting Quark to NOOP on isonet vifs in FLIP enabled environments
* Add Scaling IP API extension
* updated TwiceRedis instantiation for v2.0.0
* Changed the ips/id/ports key for new client bug
* pegged TwiceRedis version to 1.0.7
* Update and clean up exceptions
* Add request timeouts for the calls to the unicorn API
* Fixed issue where the floating ip does not get cleaned up when there is an error from the unicorn api
* Removed redundant call to deallocate the floating IP address
* Fixed floating ip quota issue
* Added exception handlers and rollbacks to fix any resource lock contension due to failures when calling the Unicorn (Floating IP) API
* Advancd services can create ports on any network
* Add error checking for NVP port missing edgecase
* Revert "Redirect warnings"
* Updating quark DB models to import qos
* Deferred allocation pool cache
* Configurable log warnings
* Redirect tox warnings
* Fixed null value for port_id on floatingip update
* Fixed null value for the floating ip status
* Removed new index and reordered mac index
* Fix errors when throwing floating ip exceptions. Add check if port already has flip on update
* Added indexes and reverted lockmode
* Removing aiclib pin from #408
* Pass context.roles to the IronicDriver backend
* Fix SegmentAllocationRange queries for non-elevated context
* bump aiclib version
* Crash on first boot
* Updated sqlalchemy version pin
* small fixups
* Add framework for managing segment id pools
* Fail mysql functional tests quickly
* Initial stab at OnMetal backend driver
* More API Extension Updates
* Update API Extension to use
* Updated logging level to accurately reflect errors
* Add Floating IP API Extension
* Remove unneeded documentation
* Made insert_provider_subnets idempotent
* Fix test error related to upstream database change
* Fix missing mac range exception
* Create empty neutron.conf file for unit tests
* NCP-1768 moved insert_provider_subnets to tools
* Modifies responses to return provider subnet IDs
* Reload network strategy configuration explicitly
* Exclude provider subnets from query
* Exclude provider subnets from overlapping CIDR validation
* Fixed typo
* Added bridge to backend port filter list
* Fixed http status code when floating ip id is invalid
* Sort dictionary keys
* filter backend_port response objects before updating db port args
* Updated git ignore to include .eggs/
* Implements provider subnets
* add generic tag registry for tagged models
* Fix subnet_update_set_alloc_pool_cache for concurrent requests
* add port-level network_plugin
* Tenant network sg toggle
* Fixed issue where floating ips were not cleaned up correctly on port delete
* Fixed ipv6 not generating during shared_ips
* Prevents PUT on ip_addresses with empty port list
* Added check for tenant_id
* Add migration for port_vlan_id
* Added very basic validation to ip_addresses
* Validate ip_address input on update_port and get_ports
* Fixed /ip_address/{ipAddressId}/ports query for service filter
* Fix security groups egress toggle
* Remove unused network_strategy code
* Creamy German Style
* Fix mac_addres typo
* Raise different errors if it's a provider network
* More kwarg handling
* Isolated security groups with conf toggle
* Updated the floating ip POST/PUT unicorn request to adhere to the new structure
* Check if session in transaction before closing
* Fix typo
* Allow address filter to be string or integer on ip_address_find
* Added a note about performance to VLAN ID retrieval
* Tool to manage locks on null-routed addresses
* Updated ip_availability to account for locks
* IPAM: do not reallocate locked IPs
* Added db-level api methods to create, delete locks/lock-holders
* Updated ip_availability to account for locks
* IPAM: do not reallocate locked IPs
* Added db-level api methods to create, delete locks/lock-holders
* IPAM: do not reallocate locked IPs
* Added db-level api methods to create, delete locks/lock-holders
* Added db-level api methods to create, delete locks/lock-holders
* Removing pins from versions for 354 deploy
* Adds policy enforcement as API extensions
* Updates alembic to 0.8.2 to match neutron
* twiceredis optimization
* Adds a migration for new upstream quota models
* Move to SQLAlchemy 1.0.8 and drop our hack
* Database models and migrations for resource locks
* Fix quark-db-manage from upstream change
* WIP: Adding VLAN ID to Port objects via Tags
* Prevent delete fixed_ips & remove tenant checks
* Exception messages now passed through
* Re-adds quark_ip_addresses optimization index
* Fixes for provider net subnet show and IP version
* Fix floatingip response to include tenant ID
* Allow overriding the strategy for FloatingIPs
* Decouple SG from unmanaged driver
* Use single quotes
* Actually including the migrations
* Changed the association setup for ip/port
* Handle missing kwargs
* Fix IPs landing in wrong subnet with shared IP
* Fixes upstream changes breaking tox
* Makes gunicorns worker_connections configurable
* Pins package versions and fixes unit tests
* Allow None to be passed in as a filter-value
* Fixed quark-db-manage
* Three upstream issues fixed
* Fix for upstream change
* Revert "Synchronize changes with perf testing"
* Delay aiclib package updates
* Fixes for shared ips
* Fix oslo imports
* Synchronize changes with perf testing
* Renamed oslo.db imports to oslo_db
* Bug fixes for shared IPs
* Implemented the floating ip update API method
* Stop trying to reallocate v6 addresses
* Delete v6 addresses instead of deallocating
* Adds support for a new sub resources:
* Clean up indexes
* Neutron Shared IPs API doc updates
* Implemented the floating ip create api method
* Updated uuidutils imports to oslo_utils.uuidutils
* Changed 'if session' to 'if session is not None'
* Fixes API design bug
* Fix logout method invocation
* Subnet selection refactoring
* Implemeted the remove floating IP method
* Test setup.cfg change for upstream change
* Update shared_ips.raml
* Update shared_ips.raml
* Used admin context for mac_dealloc
* Implemented get and get all methods for floating IPs
* Allow egress security groups
* Shared IPs API RAML specs
* Update README to use Quark in devstack
* Shuffle list of sentinels to distribute connection load
* Use slaves on IP Availability queries
* Compare-and-swap: MAC address reallocations
* Don't lock when selecting v6 subnets
* Security Group Rule Create HTTP 500 response
* RM12111 Made jarvis run tests like tox
* RM12111
* Partial revert of #368
* CAS IPs
* Removing POST /ports update
* Initial work on adding easier to parse logs
* Adds validation around port create with fixed ips
* Fixup for SG names being too long exceptions
* Cache allocation pools
* Removing XML serialization code
* Cleaning up _model_query and adding SG attribs
* Added mysql-based functional tests
* Enable container-based travis-ci builds
* Fixed problems from oslo_log upgrade
* Wraps delete_vif in exception handling
* Adds quotas for fixed IPs on ports
* Adds exception handling to Agent XAPI client
* Fixed gunicorn run script
* Validates security group name and description
* MAC Range TOCTOU fix
* TOCTOU 2 part 2 the deuce
* Add oslo.concurrency to requirements for lockutils
* Added environment capabilities and enforcement
* Adds support for ICMPv6
* Mac from do_not_use range based on arg
* Remove deallocated filter when given specific IP
* Refactors RM11449
* Remove extra line
* Added GET /ip_availabilities API
* Replaces agent JSON control with Redis control
* Added parameterized filtering on ip_availability
* Minor pep8 fixes
* Replace tenant_id with segment_id
* Added logging to ip_availability
* Added functional tests for ip_availability
* GET /security-groups now responds with rules
* Adds a test suite for redis_sg_tool
* Fixes building the tox venv after upstream change
* _unset now catches Xen failures and continues
* Fixes call for redis_sg_tool.purge_orphans
* Re-points the entrypoint for redis_sg_tool
* Cleans up redis when a port is deleted
* Fixes a bug when passing /0 networks to OVS
* Changes use of messaging to oslo_messaging
* Fixes multiple Exception signatures
* Revert "Tell MySQL to ignore address index on reallocation"
* Reverts RM10879
* Revert "eager-loading of associations relationship on IPAddress model"
* Makes the agent apply flows to the correct VIF
* Refactoring Redis ClientBase out of security groups
* Traceback + refactoring
* Changed datetime sqlalchemy.func to python natives
* Update security groups redis client to use security groups specific hash for device-id.MAC key
* Adds support for ICMP types and codes
* Fix oslo namespace changes
* Latest SG schema changes
* Make redis_client init less confusing
* Implement do_not_use and Delete MACs if do_not_use
* Updates for security groups Redis schema
* Pagination
* Tell MySQL to ignore address index on reallocation
* redis_sg_tool now installs + fixes
* Set ip_addreses extension to use QuarkIpamANY
* Replace use of post_live_migrate with a new plugin
* Adjust to upstream change
* Replaced use of xenstore_data with other_config
* "failmode" -> "security groups"
* For IPAM, order subnets by ip_version primarily
* Fix KeyError when VM removed
* Delete security groups from Redis
* Remove distribute from test-requirements.txt
* Fix update_port for port = {"port": {"security_groups": []}}
* Atomically update next_auto_assign_ip
* Updated fixes for redis SG client
* Bug fixes for Security Groups
* Typo: quark_agent -> quark-agent
* Replace usage of gettextutils with oslo.i8ln
* Removes unused repoze package
* Allows quark to use more than one NVP controller
* Adds connection switching to the Nvp driver
* Bug fix for --config-file in redis_sg_tool
* Iteration of security groups quark agent code
* Add ability to see ip_policy_id on subnet response
* Moved ip_availability into the package
* Added quark_agent as script
* Removes a portion of the tenant_id filter clause
* Anil Kumar
* Fix order by statement
* Fix UT
* Adds configurable semaphore synchronization
* Removes superfluous pessimistic connection code
* Changes subnet selection to reduce deadlocks
* Limit nvp name to 40 chars
* Fix test_subnets_get_marked_as_full_retroactively
* Fix security groups invocation to detect presence
* Add .testr.conf file for run_tests.sh to work
* Use non-specific way to detect shared networks
* Fix RM9305
* Fixes update_port to handle empty security_groups
* Restores the old signature for select_subnets
* Adds a run_tests.sh for alternate repo testing
* eager-loading of associations relationship on IPAddress model
* moved address type constants to ip_types file
* Adding tox path to test_base
* Port update now correctly allocates multiple IPs
* remove self.maxDiff from tests
* removed '_IP' from constant names
* added test_get_ip_addresses_multiple
* removed accidental log import from tests
* removing in_both for update_port_associations_for_ip
* Shared IP API
* Adds a lot more logging to quark ipam
* Re-allow enable_dhcp & ip_policy_id on subnet POST
* Makes agent quark share common redis code
* Add address_type column to quark_ip_addresses
* Consensus added to driver parameters
* Redis pre-seed tool
* Adding unit tests for multiple fixed ips
* RM100020
* Limit allocation_pools per subnet
* Functional test for ipv6 subnet can handle multiple allocation pools
* RM9944
* Quota fixes for plugin_modules/subnets.py
* Ensure code will mark currently fully allocated subnets as full
* add composite primary key to quark_port_ip_address_associations
* remove test_models_sync migration test
* RM9898
* Create port with fixed_ips with ip_address optional
* RM9837
* RM9725 update
* Fixed create_port with fixed_ips for public network
* RM9725
* Revert network/port authz changes
* Fix owner() policy check for networks
* Prevent allocation_pool updates
* Use non-specific way to detect shared networks
* Added config to show ipam_strategy
* Fix bug introduced by #236
* Fix subnet quota checks
* Fixing IPv6 allocation with explicit IP
* Fixed auth on read, update, delete on networks
* Fix RM9305
* Enforce subnets per ip version per network quota
* Revert "RM9305"
* Revert "RM9305"
* RM7212: Fix allocation_pool construction
* Added quark networking agent
* Remove agent submodule
* Added oslo.middleware to requirements
* RM9138
* RM9305
* RM9305
* RM8615
* Limiting validate_gateway_excluded to gateway_ip only
* RM8894
* Removed ip_policy_id from subnet view
* Removing all references to validate_gateway_excluded
* Fix PUT to port with fixed ips
* RM9285: Fix for upstream db change & py26 issue
* RM8880
* Allowing PUT that grows allocation_pools
* RM9078
* Quieter unit tests
* RM8816
* RM8802
* RM8741
* Added agent submodule
* Fixes #198
* Fix IP Policy creation
* RM981
* Removing the subnets from shared networks
* RM8499 added ip_policy_id to subnet response
* RM7213 Added IPPolicyCIDR.{first_ip, last_ip}
* Fixed bool bug and add comments to clarify
* Fix UT based on upstream change
* Adding route/subnet quota with default of 3
* Made it so shared=false works properly in noauth
* Fixes #186
* RM5458
*  Ensure IPPolicy response object exlucde key has string cidr as value
* Fixes #183
* Added size column to IPPolicy
* Prevent multiple device connections
* Ensure default IP policy on subnets
* Quote tenant_id parameters to be strings
* Ensure exception arguments are handled if they exist
* Fixes RM8003
* Truncate IPPolicyCIDR's outside of Subnet._cidr
* Fixes RM7946
* RM7980
* Catch duplicate exception on subnet_id, address
* RM7831 addendum
* RM7831
* Update README.rst files with links and migration information
* Updated README
* Handle exceptions when deleting networks and ports with NVP
* Removed the port/ip extension
* Added support to filter IPs by tenant_id
* Shared ip and first gen mac address range columns
* Implements PUT on subnet.allocation_pools
* RM6713 Exclude deallocated IPs that don't conform to IP policy
* Fix for upstream change c0db9c23e307a000af5e8fed6960ccd55c0e3a38
* Fixes #154: adds missing tables to initial alembic revision version
* Fix for neutron change deb27d9c24d3745ff062bc437081bd67cf10059f
* Fixes #151
* Adding temporary # noqa to assertRaises
* Last few flake8 changes, only H202s remain
* And yet moar flake8 fixes
* Adding back # noqa to quota_driver import
* And yet more flake8 fixes
* Many additional flake8 syntax fixes
* MANY flake8 error fixes, all cosmetic
* Removing pep8/flake reqs in test-reqs
* Fixes alembic migrations for RM6804
* Added alembic revisions for missing indices, unique constraints
* Removing magic numbers for explicit IPs
* Fixes #75
* Fixes #137
* Removing accidental extra line on EOF
* Removed the remaining string formating
* Allows manual reset of deallocate_at for admins
* Flake8 fixes and removing list param default
* Addresses #75
* Removing unnecessary Mock.mock()
* RM6442
* Removing unnecessary __new__ method and super() logic
* Fixes RM6714: move IPAddress filter to ON clause of JOIN (used IPs)
* Fix related to 5702b7, db_api related tests
* The all_subnets field
* Removing string formating for better clarity
* Using kw params as Python intended
* Magic numbers removed
* RM6541: ip_availabilty script: fixes _cidr filter
* RM6541 ip_availability script: fix unused count
* Fixes RM6279
* Fix Gunicorn server config
* .gitignore cleanup for PBR
* Fixes non-deterministic UT failure around next_auto_assign_ip
* RM6180
* Fix tests related to upstream changes
* Change pymysql requirement to <0.6.2 so that we can use it with Python 2.6
* Add high performance gunicorn based wsgi wrapper
* Fixes #118 again
* Fixes #118
* Implements #109
* Delete IPs that are in policies
* Fixes RM6036: move IPAddress filter to ON clause of JOIN
* Updated oslo.config requirements
* Fixes #112
* Enforce policies during allocation
* Fixes bug in allocation pools
* Fixes #105
* Fixes RM5888: adds vm_id NSX tag for create_port device_id
* update travis CI build link in readme
* interns (sigh)
* Fixes #95
* Addresses adding fixed ips by way of Nova
* Fixes #92
* RM5849: Fix for upstream c736569c737e96a69b75a6bc8e43ca9d5db5b2a3
* Fixes RM5834: Remove allowed_pairs
* Fixes #90
* Fixes #84
* added pyflakes to test-requirements after travis ci borked
* Fix adding adding CIDRs to IPSet
* Fix RM5546: controller_connection configuration type: ListOpt
* Fix RM5321: add cli quark-db-manage
* Added inital migration
* Moved alembic and alembic.ini to migrations directory
* Implemented ip_availability script
* More optimizations for #75
* More optimizations and indexes for #75
* Added indices for ports.name and tenant_id
* Nova too greedy on port call
* Add `aiclib` connection paramaters
* Default CIDRs in IPPolicy related to Allocation Pools
* Fixes #70
* ipv6 formatted no longer has all the leading zeros
* formatted ip returns ipv6 as verbose
* Moves ipam deallocs out of the parent transaction
* Refactors port_create to break a deadlock case
* Fix non-deterministic error in unit test
* Fixes #57: Use CHAR(39) instead of LargeBinary for IPAddress
* Add indexes to optimized_nvp_driver
* Add index on quark_mac_addresses.deallocated_at
* Use InnoDB for all tables
* Fixes #53
* Adding import for quotas again
* Removed d2to1 for some good raisin
* Attempt to make README more relevant
* Added checking for TypeError on str resp
* Include all submodules in sdist
* One more type conversion for netaddr.IPAddress
* Give full IPAM control to update_port
* Fixes some type semantics garbage
* RM3889
* Fixes tenant_id
* Increases quota_ports_per_network to 250
* Fixes #41
* Fixes #34
* Fixes #36
* Enable filtering on segment id
* Fixes #29 and #31
* Fixes #27
* Fixes #25
* Fixes #23
* Fixes #21
* Fixes #19
* Fixes RM2442 VIF ordering
* Implements #3669
* RM3279 Remove quark_ip_addresses.tenant_id
* RM3473 added max_allocation column
* Prevents deletion of last switch on network
* Allows network plugin to be include on net create
* Added optimized NVP driver to registry
* Updated models for melange migration
* Fixes #8
* Fixes #6
* Fixes RM3256
* Fixes #3
* Fixes #1
* Updated README
* Fixes #169
* BOTH strategy reallocating correctly
* Fixes #177
* IP addresses ordered by allocated_at
* Fixes #174
* Allows easier configuration of default networks
* Adds Network extensions resource
* Quark ipam strategies implemented
* Default net assignment
* Fixed tenant_id and device_id filtering
* First cut of modular network plugins
* Updates Mac Address port return format
* setup Travis CI to run test coverage
* Ensure we're always trying to iterate over a list
* Use name instead of string of module path for logging module name
* Fix pep8 violation, unused variable
* Changed unit test mock of db_api to pull back correct information
* Added tests for models.IPPolicy.get_ip_policy_rule_set
* Fixes #158
* Default json policy and test
* Set the default JSONIPPolicy exclude range if config values not found - default exclude is range -1, 3 (IPs .0, .1, .255)
* Implemented quark notifications (w/ unit tests)
* Fix arbitrary max length of CIDR of mac range validation
* Re-implemented IP policies with offset and length
* Diagnostics Extensions
* Adds almost all coverage to the optimized driver
* Adds coverage over drivers and db custom types
* Adds coverage for net strategies
* Just force the network backref always
* Adds more coverage to quark plugin modules
* Fakes out net and port status fixes quoting
* Update checks against default group
* Moves quota config back to plugin
* Moves networks into a submodule
* Moves subnets into a submodule
* Pulls routes out into a submodule
* Moves ports into a submodule
* Moves IP Address into their own module
* Moves IP Policies into their own plugin module
* Refactors Security Groups into their own module
* Fixes #130
* Pulls Mac Address Range plugin support out
* Clean up around some of the new code plus tests
* Adds a proper path for fetching TM2
* TCP/UDP port range checks
* Quotas API
* Driver limits are more explicit
* Implemented subnet.allocation_pools + unit tests
* Fixes #110: subnet.allocated_ips corrected
* Implemented IP Policies
* Openstack Quantum renamed to Neutron
* Moar tests
* Unecessary default quota config override
* Updated compares in plugin_views
* Fixed some netaddr compare boogs
* Fixed default route constant
* Register models in plugin correctly
* Fix for upstream quantum db changes, edited requirements.txt for oslo.config
* Tests and fixes
* Fix PEP8 violations
* - split nvp_driver and optimize_nvp_driver classes
* Security groups/rules implemented
* DRYs up some code
* Deallocated IP after disassociation left no ports
* Moves the view code into a new module
* Changes allow_overlapping_ips behavior
* Optimized switch cloning
* added wiki submodule
* Adds unoptimized providernets support
* UUID fields are size 36 instead of 255
* Test if specified address already exists upon create_ip_address
* Implemented DELETE and GET /mac_address_ranges/<uuid>
* Fixed IP address response
* Bugfix: deallocate_ip_address in-loop deletion
* Implemented DRY for update_subnet, updated tests
* DRYs up subnets code
* Bugfix for subnet deletion
* network, subnet cleanup
* Security groups work. Sans tests. DB changes!!!!
* More updates
* Fixing basic quark sec-group bugs
* Finished up the security groups model
* Initial work
* Added shared attribute to IP address
* Added port key to POST /ports (update) response
* Deallocate IP on update_ip_address if no ports
* Bugfix for update_port: dealloc port.ip_addresses
* Add port_ids, device_ids to IP address uniformally
* Added non-implementation of abstract update_security_group
* Added device_ids to ip_address response
* Allows allocation_pools in subnet create
* Add tenant_id to ip_address response
* Bugfix for first IP address allocation
* Added subnet cidr validation from quantum
* Fixes port_create and ip policy bugs
* Fixed regression in port name, added test
* Implements a hacky IP policy
* Implements a first cut of network strategies
* Implemented plugin.create_port: fixed_ip and mac_address
* Changed the way tag lookup worked in nvp driver
* Added qos tables
* Implemented plugin.update_port (DB schema changes!)
* Added coverage for api_extensions_path configuration
* Moved implementation of PUT /ports to POST /ports
* Implemented additional subnet attributes
* Fixes the mac address assignment problem
* Don't double register options, is no bueno
* Centralize context creation
* remove wget in travis
* try another fix
* Get the policy.json prior to running tests
* Fixes issue #46: use int explicitly
* Fix for circular reference error
* Fixes a bug in route creation
* Implemented GET /ip_addresses<.format>?device_id=<device_id>
* Fixed integration bugs on update_port
* Added exception for empty body argument to update_port
* Implemented Subnet.next_auto_assign_ip for IP address allocation
* Set deallocated to false upon update_port
* Implemented unit tests for Plugin.update_port
* Implemented update_port
* Wrote test plan in comments for plugin.update_port
* Implemented disassociate_port in quark plugin
* Implemented ports_quark controller
* Fix for port_find invocation with filters
* Implemented GET on /ports with ip_address_id filter
* Remove extraneous code
* add repose.tm2 dep
* Use MultiStrOpt
* Adds IP Address tests
* added HasId to quark db models
* MAC Range and Route Tests + cleanup
* Connect with like passwords and stuff
* Subnet and Network plugin tests
* Fixed flake8
* Added network delete in optimized driver test
* Added optimized port delete tests
* Added optimized driver tests
* Continues updating tests with new db_api calls
* fix double import
* Remove using configparser
* Use PBR for setup/packaging
* added aiclib to pip-requires, removing from test-requires
* Fixed config conflicts
* Completed first-draft nvp_driver tests
* Updated create_port tests
* Starting NVP driver tests
* Network name filtering works again
* Stop patching the wrong db api
* Added HTTP exception handling for create_ip_address
* Only run cover on quark
* Pulls db access out for better testing
* flake8 already in test-requires
* Bring tox.ini inline with what travis-ci runs
* added mysql-python to pip-requires
* Use latest upstream pep8 for flake8 compat
* Optimize pip installs for travis
* Ensure model instance have an id
* No need to use twophase in sqlalchemy since we only talk to one db
* relax sqlalchemy requirement to allow 0.7.10
* Use quantum trunk
* Update requirements
* Pep8 and pyflakes cleanup
* Set _ as a builtin for flake8
* Update README.rst
* Add travis-ci.org config
* Fixed some conflicts
* Removed all session calls, redundant due to zope
* Maybe implemented the zope transactions
* Added quark session maker
* pep8 fixes
* Initial optimization of NVP Driver
* Maybe implemented the zope transactions
* Added quark session maker
* Removed subtransactions
* pep8 fixes
* Initial optimization of NVP Driver
* Initial controller plumbing for create/update_ip_address
* Added TODO
* Added ip_address parameter to ipam allocate_ip_address
* Added context.session.add at end of create_ip_address
* Updated tests to use correct API response format
* Added IP version filter to ipam
* Re-arranged arguments to _choose_available_subnet
* Fixed INET custom type to work for IPv6; updated tests accordingly
* Refactored update_ip_address; also, added tests surrounding no and empty port_ids
* Updated update_ip_address to (dis)associate appropriate ports
* Updated update_ip_address to look-up ip by id
* Fixed typos in test
* Updated create_ip_address to allocate ip from port, _make_ip_dict to include port_ids, and fixed typos in test cases
* Raise the exception not the type
* Added tenant_id filter for Port query in create_ip_address
* Added create_ip_address impl for port query, updated test expected exception to more appropriate PortNotFound
* pep8
* Added note about broken IPv6 custom_type
* Update test to conform to many-to-many port to ip address association
* Added test for update_ip_address to associate ip_address(id) with specific port_ids
* Added test for update_ip_address when specific port_id in port_ids doesn't exist
* Added test for update_ip_address when specific ip_address doesn't exist
* Updated TODO
* pep8 cleanup
* Added test for create_ip_address with specific ip_address when ip_address does exist already
* Added test for create_ip_address with specific ip_address when ip_address doesn't exist
* Added failure test for create_ip_address with version 10 specified
* Added test for create_ip_address with version 6 specified
* Added test for create_ip_address with version 4 specified
* Added test for create_ip_address without network_id and with device_id; also, docstring cleanup
* Added test for create_ip_address with network_id without device_id
* Added test for create_ip_address with none of network_id, device_id, nor port_id
* Fixed typo in test method names
* Added test for creating ip address with invalid port_id
* Added test for creating ip address with port_id; also, some test cleanup
* Added missing import
* Added failure test for creating ip address with invalid network_id and device_id
* Updated stub ip_address methods to be compatible with rest of API
* Refactored create method invocations into base class methods
* Added test case for successful ip creation with network_id and device_id, reformatted comments for pep8
* Wrote out test plan for ip addresses
* Removed subtransactions
* pep8 fixes
* Initial optimization of NVP Driver
* Added skeleton for tests on IpAddress and methods on QuarkPlugin
* Refactored test into base class
* Renamed test_db_models.py to test_quark_plugin.py
* Refactored test with _create_and_insert_ip
* Refactored test with _create_and_insert_port
* Refactored test with _create_and_insert_subnet
* Refactored test with _create_and_insert_net
* Added test for net_id filter on deallocated ip address allocation; fixed bug in previous test
* Added test for net_id filter on new ip address allocation
* Added test for subnet selection on ip allocation
* Removed redundant code
* Added tenant_id as argument to allocate_ip_address
* pep8 cleanup
* Added test for failure to allocate ip on fully allocated subnet
* Added test for allocating ip address from previously deallocated address, failing reuse_after param
* Added test for allocating ip address from previously deallocated address, succesfully
* Added test to allocate_ip_address twice on one port
* Added consistency for booleans
* Added test for deallocating ip addr. w/ two associated ports
* Added test for deallocating ip addr. on one port
* Added tested for deallocate of ip failure
* add TODO
* Added test for successful ip address allocation
* Moar Pep8
* Pep8 and License headers
* Tested allocate_ip_address with no subnets
* Pep8 da models
* Added skeleton for testing de/allocate ips
* Rearranged test
* Adds __init___ to the tests submodule so we can correctly run individual test suites
* Remove some sqlalchemy from the tests
* Update get_port for new port<->ip_addresses model
* Update IPAM to work with new ports<->ip_addresses
* pep8 cleanup
* Patched tests dealing with timeutils.utcnow()
* Added tests for deallocate_mac_address
* Refactored common code in test to create and insert m.a.r
* pep8 cleanup
* Tested allocate_mac_address for multiple m.a.r.'s
* Tested exception when m.a.r. is fully allocated
* Tested allocating second mac on same m.a.r
* Tested for failing to allocate mac on deallocated
* Added test for deallocated mac
* Creating LSwitch table for Opt.Nvp.Driver
* Moved db load for future use
* Move ports check into deallocated prop
* many to many join is functional
* Change to oslo.config
* Initial unit test of ipam
* Whatever
* First cut of the association table
* Tests pass again, and we're properly cleaning up after ourselves
* Rename file so github dersplays it
* Markdown format for the DESIGN doc so we can more easily expand and export
* Added our basic design doc from this morning
* Readding my port associations
* remove explicit distribute system
* Fix license headers
* Updated unittest to use api appropriately and to tearDown database
* Revert "Added in the new port ip address association table but didn't remove the port_id association yet from the IP address. Deallocation needs to be reworked"
* pep8 cleanup and added E711 to tox.ini pep8 exceptions
* Added tox
* Creating LSwitch table for Opt.Nvp.Driver
* Moved db load for future use
* Creating LSwitch table for Opt.Nvp.Driver
* Moved db load for future use
* Added in the new port ip address association table but didn't remove the port_id association yet from the IP address. Deallocation needs to be reworked
* Converted to InnoDB and reworked port create to mostly honor the foreign key constraints, even though we may be removing them shortly
* Fixed typo
* Updated Subnet.allocated_ips to include only IPAddress with _deallocated != 1
* Network list is showing the name now
* Quark subnets all return in one db hit like ports now
* Big pep8 cleanup
* Added custom types: INET and MACAddress
* Make the ports queries all happen in a single DB hit and unwind everything as best as we can
* Didn't mean outerjoin, and fixed the ip address response
* Started associating tags with things, some logging cleanup, and added some relationships between the models
* Brought in the tag and associations from Newtonian. Figure them out later ;-)
* Logging fixes, other cleanup, and a simple BaseDriver that can be used without NVP
* Removing the word NVP For the most part from the actual code
* The nvp driver is now a class. We will subclass it shortly with our implementation specific DB lookups
* Refactoring to start the optimization efforts
* Quick fix with subnet ip_version and alloc
* Fixed inconsistancies between POST and GET
* Beginning of the IP allocations controller
* A bit more cleanup, and the routes controller
* Adds the Mac Address Ranges extension, though no client extension yet. Also doesn't vet that ranges don't overlap
* MAC deallocation, and aging for both IPs and MACs
* Stab number 2 at a mac address range plugin function
* Added ip on port GET
* Fixed quantum client list bug
* First attempt at a way to generate mac address ranges based on a CIDR
* Basic MAC Address allocation
* Fixed quantum client list bug
* Fixed allocation to not use freed ports
* Fixed ipv6 bugs in ipam, changed subnet
* Fixed ipv6 bugs in ipam, changed subnet
* basic ip deallocation and port nvp uuid snafu
* Uncommented some stuff
* Basic IPAM is working
* Uncommented the subnet dict routine
* Now quantumclient compatible
* Fixes network delete and stubs out a subnet selection process
* Set up IP counts
* We now create new lswitches on port create if the existing ones are full
* Port delete working correctly
* Swapped out AICQ for a lightweight client wrapped around aiclib
* Creating the network using a quantum specified UUID now, and tagging the lswitch with it instead
* Forgot my NoAuth middleware hack and the generic TODO I've been keeping
* Network delete and subnet delete are now functional
* Creation of networks with embedded subnets now functional, though a bit hacky
* All of the plugin getters implemented
* Playing around with aicq and whatnot a little
* Removed metadata sharing in favor of explicit table naming, since that's all it was buying us anyway
* Now sharing the metadata from quantum correctly, and a little cleanup elsewhere
* Fixed addresse typo
* whatever CLEAN HISTORY LOLOLOLOLOLOLOLOL
* Initial Alembic installation
* Talking to the database, sqlalchemy is loading the model, obviously table doesn't exist yet
* Putting the deallocated field in after discussion this morning
* Yoink
* Fixed UUID gen bug
* Fixed some pep8 errors
* Forgot Mac Addresses
* Some notes in the file so we have something to reference, a bit of tweaking
* A few more whacks at modeling
* Added a couple prototype models, didn't get as far as I'd like
* Stupid cleanup for no reason
* A little bit of code cleanup, adding a generic logging wrapper for all methods in the plugin for now
* fixed silly conflict
* Fixed some bugs and finished the rest
* Fixed update_network bug
* Fixed typo
* finished the rest of the network crap
* Fixed some none iterations
* Fixed make dict bug
* Fixed uuid bug
* added uuid gen
* Changed plugin name
* Initial commit for plugin
* Initial commit
