CHANGES
=======

* Fix a failing functional test
* Replace __builtin__ with six.moves.builtins
* Add __ne__ built-in function for astara
* Fix typos in instance_manager.py & base.py
* Using assertIsNone() instead of assertIs(None)
* Using assertIsNone() instead of assertIs(None, ..)
* Fix typo in coordination.py
* Updated from global requirements
* Always enable devstack service
* Make Astara Newton compatible
* Updated from global requirements

9.0.0.0b2
---------

* Correct reraising of exception
* Updated from global requirements
* Updated from global requirements
* Fix order of arguments in assertEqual
* Updated from global requirements
* Updated from global requirements
* Updated from global requirements

9.0.0.0b1
---------

* Updated from global requirements
* Updated from global requirements
* Use --subproject instead of deprecated --service option
* Updated from global requirements
* Cleanup multi-line disk-image-create commands
* Updated from global requirements
* vagrant: Add a Vagrant setup for Astara
* Fix messaging layer for newer oslo.messaging changes
* Updated from global requirements
* Subscribe to correct event for FIP assoc/disassoc
* Show version info for astara-dbsync
* Ensure ssh key is sanitized when read from disk
* Disable port security for mgt ports as well
* Allow specification of endpoint_type to clients
* Updated from global requirements
* Remove APIParamsCall references
* Updated from global requirements
* Add releasenotes tox target
* Cleanup loadbalancer mgt and service ports
* Skip all types of service ports when creating allocation config
* Include newly-labelled HA router interfaces in network config
* enable VPN support when neutron-vpnaas in devstack
* Updated from global requirements

8.0.0
-----

* Remove UNRELEASED tag from Mitaka release notes
* Remove UNRELEASED tag from Mitaka release notes
* Fix bugs in functional tests
* devstack: Bump alive_timeout
* Fix bugs in functional tests
* Fix typos in Astara
* open stable/mitaka
* Update .gitreview for stable/mitaka

8.0.0.0rc1
----------

* Adds HA router functional test
* Add clustering capabilities to instance manager
* Delete detached vrrp ports when a newtork is removed
* Adds ability to run appliance with user-specified drivers/images
* Add support for VPNaaS
* Use assertIsNone and assertLess
* Rename self.driver to self.resource where applicable
* Fixes broken links
* Properly limit router driver event processing
* Fix test to only inspect ports that are router interfaces
* py3: use function next() instead of next() method on iterator objects
* Set Horizon customization_module
* Documentation how to configure astara to support loadbalancers
* py3.x: Use six.text_type() instead of unicode()
* Replace python print operator with print function. 'print' function is compatible with 2.x and 3.x python versions
* Handle a race between pre-populate and hash ring bootstrapping
* devstack: Move start_astara to after start_astara_hozizon
* Remove external network hooks and auto-added resources
* Updated from global requirements

8.0.0.0b3
---------

* Updated from global requirements
* Add logstash files for log parsing
* Updated from global requirements
* Use six.moves.urllib.parse instead of urlparse module
* Fix comparasion of bytes
* Updated from global requirements
* Stop using WritableLogger() which is deprecated
* Add `exclude` and `show-source` in flake8 check
* Add /usr/local/{sbin,bin} to rootwrap exec_dirs
* Updated from global requirements
* docs: Update diagram PNGs
* Updated from global requirements
* Updated from global requirements
* do not set floating ip
* Updated from global requirements
* Revert "Temporarily set astara_boot_command in config"
* trivial: enable plugin astara instead of astara-rug
* Stop tracking test.conf.sample in git
* Remove redundant config push in CheckBoot()
* clean up Nova policy changes
* minor changes to orchestrator astara file
* Make test suite backward compat with identity v2
* Add variable MTU support to the orchestrator
* Update test suite for keystone V3
* Updated from global requirements

8.0.0.0b2
---------

* Cleanup SM management during rebalance events
* Move ./docs to ./doc
* Push orchestrator config into the appliance
* make the enabled_drivers configurable in devstack
* Move settings from plugin.sh to the settings file
* Fix 'astara-ctl browse' can't rebuild router
* Switch instance provider init log to debug
* Cleanup deleted resource from the tenant resource cache
* Updated from global requirements
* Updated from global requirements
* Install documentation
* Enrich functional test suite
* Handle exception when worker unlocks already unlocked resource
* Updated from global requirements
* Correct state transition from stop when instance is gone
* Stop repeatedly logging boot time
* Remove E123 ignore for pep8 check
* Fix pep8 errors in source code
* Fix removal functions in oslo_utils for astara
* Add an option to get max sleep time from the config file
* Drop orchestrator.ini.sample from git
* Filter the 'leader' member from cluster membership list
* Updated from global requirements
* Replace range() to six.moves.range() for both python2 and python3
* Remove unused logging import
* Fix a bug for default provider and add an unittest
* Drop astara.openstack and astara.service
* Corrects doc to build appliance using jessie release
* Automatically generate etc/orchestrator.ini file
* Py3: use dict.items() instead of dict.iteritems()
* Remove unused class method
* trival: remove redundant code
* Allow API listening address to be specified in config
* Modify xrange() to six.moves.range() for both python2 and python3
* Remove unused openstack common conf
* Remove unnecessary nosetest param
* Refactor ensure_cache for instance manager
* Fix loadbalancer typo in unittest
* Enable pez unit tests
* gate fixer: Fix devstack auth issue and new PEP8 violation
* Drop unused call to non-existent function
* Astara oslo.rootwrap
* Use assertEqual instead of assertEquals
* Remove 'FIXME' if it's already be done
* Allow running individual test using tox
* Python3: replace dumps with dump_as_bytes
* Modify 'router' to 'loadbalancer' for loadbalancer driver
* Use the router driver to remove the vrrp ports
* devstack: Use trueorfalse function
* Remove response body from cli output
* Fix source file comment typo
* Make some codes shorter
* Ignore AttributeError for instance provider
* devstack doesn't check ASTARA_APPLIANCE_SSH_PUBLIC_KEY existence
* Updated from global requirements
* Fix devstack hardcode location of astara appliance public key
* Log rendered cloud-init to debug log
* Fixed astara-ctl ssh command
* Remove version from setup.py
* astara-ctl return error help info
* Fix log message translator issues
* Updated from global requirements
* Fix a small issue for log
* Fix more hard coding issue
* Avoid hard coding for driver state
* Add loadbalancer example parameters in ini file
* Fixed astara-ctl browse command
* devstack: Set correct nova metadata proxy flag
* Fixes logging in astara-debug-router
* devstack: Unpin DIB
* Stop using versioned novaclient in func tests
* Updated from global requirements
* Updated from global requirements
* Enable and fix pez unit tests
* Deprecate usage of amqp_url in favor of oslo.messaging backend config
* Dynamically allocate service port addresses
* Adds reno for release notes management
* fix ASTARA_MANAGEMENT_PREFIX and make subnet create dynamic
* Updated from global requirements
* Updated from global requirements
* Fix router debug command
* Doc updates: akanda->astara
* Updated from global requirements

8.0.0.0b1
---------

* Change boot command to Astara
* Temporarily set astara_boot_command in config
* Update sample config rug.ini->orchestrator.ini
* Convert instance_flavor configs from IntOpt to StrOpt
* Remove python 2.6 classifier since py26 is not supported
* Updated from global requirements
* remove MANIFEST.in since it is not needed
* devstack: Update published qcow2 URL akanda->astara
* Step 3 of module rename
* Fix CLI neutron client to use keystone session
* Step 2 of renaming the code
* step 1 of the astara package transtion
* Updated from global requirements
* devstack: Fix dib image location
* remove duplicate six requirement from requirements files
* devstack: Build image using new element name
* Fix broken link to astara-horizon in the README
* remove code to locate the default config file
* Missing default config files is not a failure mode
* Use KSC auth's register_conf_options instead of oslo.cfg import
* Updates with name changes to the developer quickstart documentation
* Delete ports when nova fails to boot VM
* Changed what_is_akanda to what_is_astara
* Updated readme file with modified copy from openstack-attic/akanda
* Change devstack git clone to use https
* Copying in docs folder from the openstack-attic/akanda repo
* moving specs directory from openstack-attic/akanda
* Update devstack plugin + .gitreview for project rename
* Update .gitreview for project rename
* Extract loadbalancer_id from listener create events
* open mitaka development

7.0.0
-----

* begin process to update to astara
* Update sample config for liberty, update devstack for router config
* Introduces the Pez instance provider
* devstack: Update repos stackforge->openstack
* Update .gitreview for new namespace

7.0.0.0rc1
----------

* Convert to using Keystone sessions for Keystone V3 support
* devstack: move neutron restart earlier, bump functional test appliance active timeout
* More formal PEP-0257 Compliance
* Flag initial cluster rebalances as bootstrap events
* Fixes POLL notification processing
* Fix ensure_cache to always refresh cache
* Track last_boot from nova server not instance_info creation
* Fix bad string replacement
* Adds missing resource CLI file
* Add support for hash-based RUG scale out
* Properly detect backing instance is gone
* Delete VRRP and MGT ports on router delete
* By default, add a secgroup rule to permit all private network traffic
* disable port_security for VRRP ports
* Adds an LBAAS driver
* Add driver framework
* Small docstring addition
* Docstrings for MetadataProxy and MetadataProxyHandler
* Fix the plugin source in README.md file
* Fix the sphinx build path in setup.cfg
* Use a standard hostname to prevent setting invalid hostnames
* devstack: Update URL for appliance image to tarballs.o.o
* Update from global requirements
* devstack: Update for keystone v3 auth
* devstack: resolve image name via image-list, not image-show
* Move caching of resolved router_ids from state machine to worker
* Add translation markers for exceptions and logging
* follow semver release versioning servers change

7.0.0b2
-------

* Adds a DB layer, use it for debug modes
* Avoid blocking on subprocess during rug shutdown
* Remove deprecated LOG.warn calls
* Adds docstring for akanda.rug.daemon.ignore_signals()
* Adds docstring for akanda.rug.main.main()
* Properly transition from CheckBoot -> ReplugVM
* Bump version in setup.cfg to 2015.2
* Fix debug and browse config issues
* Fix ability to recover from an existing appliance VM
* Remove 0755 permissions from files
* devstack: set use_ipv6=True in nova.conf
* Move AKANDA_RUG_DIR from settings to plugin.sh, allow overrides

2015.2.0b1
----------

* Remove tight loop from notifications process
* Remove remaining references to oslo.cfg namespace
* Fix broken tests caused by new mock release(1.1.0)
* added pip install blessed to plugin.sh
* Cleanup requirements
* naming convention change vm to instance
* Migrate to oslo.i18n
* Migrate to oslo.log and oslo.messaging
* Detangle config option registration
* Drop use of 'oslo' namespace package
* Expose RUG API port as a config option
* Capture and gracefully handle failed interface attach/detach API calls
* Update the docs directory
* Build appliance with DIB elements from akanda-appliance
* Wait for a configured test router to become active
* devstack: Create a custom nova flavor for the appliance
* Make router_instance_flavor a StrOpt
* Build jessie ramdisk
* Silence exception when provider rules not found
* devstack: Stop hacking blessed into global-requirements
* Migrate to oslo.utils
* Default to empty provider rules config if json not found
* Various devstack cleanups
* Make blessed an optional dependency
* Migrate to oslo.serialization
* Fix get_instance_by_id, catch NotFound appopriately
* Remove appliance's hard-coded password in favor of ssh pub key
* devstack: Update horizon paths
* Fix trivial typo in akanda-horizon repo URL
* Deploy akanda-horizon as part of devstack setup
* Migrate to oslo.context
* Fix typo in functional.base
* Seed a functional test suite with a basic health check
* Add tools/run_functional.sh
* Remove duplicate requirements from test-requirements.txt
* set the correct interface driver for linuxbridge agent

2015.1.0rc1
-----------

* getting ready for release
* Point DIB builds at the devstack checkout of akanda-appliance
* Add support for building the appliance image during devstack deploy
* fix akanda-neutron to point to proper master branch
* separate management port and used cloud init
* Drop tox from test-requirements.txt
* Add .gitreview, rename test_requirements -> test-requirements.txt
* Add a basic HTTP API for rug-ctl commands
* Fix a missed quantum -> neutron rename
* Add a `pep8` tox environment for OpenStack CI
* convert/merge akanda-devstack into devstack plugin
* Rename Quantum to Neutron
* Set dhcp to false for ipv6 subnets if slaac is enabled
* Make the config push timeout configurable
* Detect boot failures and re-attempt up to `reboot_error_threshold` times
* Silence urllib3 logging messages running the rug-ctl browse command
* Revert "Fetch a new token before router boots (to avoid token expiration issues)."
* Fetch a new token before router boots (to avoid token expiration issues)
* Fix a broken test in akanda.rug.populate
* Perform the populate router fetch via the API rather than RPC
* Add a `rug ssh` convenience command for router address lookup
* Workaround to pick IP on slaac subnet
* Remove all the code related to the akanda extensions for neutron
* Pep8 cleanup
* Fix TestIpNetnsCommand.test_execute
* Fix issue with port creation on the mgt and public nets
* Fix a race condition that affects router VM boots
* Make flake8 ignore E731 error
* Make flake8 ignore E731 error
* Refactor local port creation to avoid duplication
* Update the topic for the agent side of the Neutron l3 agent RPC API
* Fix test_execute_env_var_prepend
* Rename notification_topic option
* Add NoopPublisher
* Revert "Add option to enable ceilometer notifications"
* Add option to enable ceilometer notifications
* Fix flake8 errors
* Return value if synchronizing port on delete
* Add rabbit configuration group
* Properly clean up router VMs when they're removed from Neutron
* Fix a race condition in `rug-ctl browse`
* Handle KeyboardInterrupt along with SystemExit
* Fix incorrect names and style issues
* Add robust handling of RabbitMQ connections
* flake8 whitespace fix
* add debugging output to is_alive check
* Fix wildcard router operations
* Call neutronclient.Client with the proper kwargs
* remove the "temporary" overriding of our netaddr requirement
* Allow is_alive timeout to be configured
* Only clear device_id on reboot if one is already set
* Always attempt to clean port device_id's on reboot
* Fix another bug related to misplugged external ports
* Remove unnecessary subprocess cleanup
* Improve `rug-ctl browse` for large-scale deployments with 500+ routers
* When replugging, first ensure that a management and external port exist
* Fix a pep8 failure
* Add a new 'BOOT' state to `rug-ctl browse` to show routers in Nova BOOTING
* Resolve a doc typo
* Add debug output for network unplugging
* Resolve PEP8 failures
* Add tests and documentation for state machine changes
* Implement network hot plugging
* hostname related tests
* Include router name as hostname in config object
* flake8 fixes
* more format fixes
* code cleanups
* Add new config options to rug.ini
* Support for local external port configuration
* Read firewalls rules instead of labels for the health check
* Correct a changed parameter to neutronclient
* Correcting typo in default ignored_router_directory
* Check for missing VM's in `update_state` to catch failures in the config loop
* Add an assertion to ensure that router rebuilds set the proper tenant_id
* fix call to list_routers()
* Fix pep8 failures
* Retrieve custom image data from Glance to avoid bad image UUIDs
* Add tests for custom image rebuilds
* Add an optional parameter to `rug-ctl rebuild` for a custom image UUID
* Always pass the router image UUID to Nova boot functions
* make request logging quieter
* Always send a tenant id when sending a router command
* Only send status updates to neutron if the status has changed
* Print the router VM boot time in `rug-ctl browse`
* Handle glance API failures more gracefully
* Add additional logging for exceptions in the AMQP read loop
* Add support for printing `rug-ctl browse` to stdout via `--dump`
* Fix another bug related to paged routers
* Fix a text display bug which messes up paging
* Don't access oslo.cfg.CONF before the application is configured
* Avoid duplicated work in threads; queue `nova show` instead of randomly picking
* Update Nova VM metadata via background threads
* Add multiprocessing to API calls to improve `rug-ctl browse` performance
* use a tuple instead of set
* Don't allow wildcards for debug commands
* Define WILDCARDS constant for special routing directives
* Dispatch commands to routers in ERROR state
* give workers a little longer to stop before bailing on them
* Log more detail about nova API operations
* Lazily load akanda VM instance info; doing so every few seconds is too slow
* Improved formatting
* Fix an incorect indentation
* Provide immediate UI feedback for rebuilt routers
* Send the correct AMQP message, and register a `rug-ctl` command. (cherry picked from commit e3831286d69fe97d71c9ad2aba086c0484a850f8)
* Fix broken tests. (cherry picked from commit 78bd3d5258a2db5a1fe69eca8a5824ad506dda39)
* Add an interactive CLI for browsing and rebuilding appliance VMs (cherry picked from commit 7d8e569999907209e114a10064f97ad528c0b668)
* Fix a variety of bugs caused by forced reboots
* Check Nova for the status of the appliance VM in the boot loop
* Change router commands to take router id
* State machine refactoring
* Fix a broken test
* Fix flake8 failures
* Limit `error_cooldown` to when the router is actually in ERROR state
* Add a configurable `error_cooldown` for routers that enter ERROR state
* Remove filtering of events for the neutron user
* Use the proper keystone client for user data fetching
* add test for CalcAction/ClearError interaction
* add tests for ignoring notifications
* respond to comments
* fix existing tests
* Ignore notifications caused by RUG actions
* Ignore POLL requests when in an error state
* Fix state of router when we notice it is missing
* Stop asynchronously checking for boot if the router goes into ERROR state
* If a VM goes to `DOWN` state during CheckBoot, restart the VM
* When configuration consistently fails on boot, set the router status to DOWN
* Remove fixme comment
* Only check the boot timeout if the appliance is *not* configured
* Check the boot timeout after every initial config push
* Make ClearError bypass second CalcAction
* remove local download cache setting
* update debug test
* Fix boot duration timing calculation
* Fix Automaton setup in debug command
* update tests from previous commit
* Add a ClearError state
* Have PushUpdate return the action
* Ignore router status update notifications
* remove redundant router id from log message
* fix flake8 issues
* Do not reset error state unless VM is responsive
* Log which attempt this is to boot the vm
* Allow explicit rebuild of routers in error state
* Allow callers to clear errors on VmManager
* Rename success method of BootAttemptCounter
* Detect reboot loops
* Add VmManager.set_error()
* Refactor parameters to State
* Count boot attempts
* Pass reboot error threshold down to automaton
* More router ERROR status polling cleanup
* Cleanup an unnecessary test class
* Handle poll filtering at the `state.Automaton` level
* Only log router boot timings if the rug itself booted the router
* Ignore POLL events for routers in ERROR status
* fix flake8 issues
* Log router boot durations
* Don't assume incoming action is valid
* Protect ourselves from missing gateways on subnets
* Ensure router is unlocked when resuming management
* Ignore errors updating the router status
* remove obsolete code
* Look at subnets, not interfaces, for gateway
* Log but otherwise ignore errors in main loop
* protect against None in target
* Harden UUID parsing
* ACK notifications, even if we don't use them
* Change the JSON key in the API call
* Synchronize the neutron router status via an akanda-quantum API extension
* fix pep8 issues
* one more test case for ipv4 gateway
* Add tests for get_default_v4_gateway
* make it clear the new behavior is only for v4
* Send the router its default gateway IP
* More cleanup for flake8
* Fixing setup.cfg for README file
* Cleanup
* Clarification
* Adding LICENSE and copyright info, and updating the README slightly
* Include the process ID in the log format
* Log event dispatching results
* Write tests for `debug_one_router`
* Fix the debug script
* Add rug-ctl router rebuild command
* Log a warning for a router that is badly backed up
* Don't silence config-at-boot failures
* move logic for building MissingIPAllocation msg to class
* Properly handle `router.interface.create|delete` messages
* Make sure external ports have all needed addresses
* Return True when the instance is in `BUILD` status
* Truncate deque debug printing to the last 60 (~ hour of polls) messages
* fix comment syntax
* Clean up state machine diagram
* Test for mac addresses more robustly
* Handle ports without a mac address (like when the gateway is cleared)
* always set deleted flag in delete callback
* fix pep8 violation in oslo code
* Update state diagram
* Let the VmManager deal with deleted routers
* Set the router-id for delete events
* quiet neutron client logging
* Logging improvements
* Log less verbosely from amqp modules
* add "poll" command to rug-ctl
* A few minor changes based on feedback
* Manage the deletion wait with a boolean return value, not an exception
* On router reboot, wait for the previous router to be deleted
* Actually test the return value of the nova boot call
* Fix `akanda-debug-router`
* If the router doesn't exist in neutron, dispose of the state machine
* More state machine changes
* Update the state machine docs to reflect async boot (and other changes)
* pep8 fixes for 1.5.0
* Improve shutdown behavior
* Fix a few broken tests
* Perform an initial config PUT on boot to test "aliveness" of the router
* Use shorter names for main proc. and thread
* Improve signal handling
* Delete a bunch of dead code
* Revert "Delete a bunch of dead code."
* Delete a bunch of dead code
* Clarify some verbiage
* Fix a few issues
* Boot routers asynchronously
* Add rug-ctl command to reload config
* Add state machine diagram to docs
* add Sphinx build skeleton
* Set sane defaults for router HTTP request timeouts
* Add more detail to thread debug messages
* pep8 fixes
* fix flake8 issue
* add force update command to rug-ctl
* force rug config file setting in cli
* Fix the logic for coalescing the event queue
* log queue size when message is received
* Add more verbose debug output for the CalcAction state
* tighten up log line format
* Remove an unnecessary import
* Remove the Wait state, which currently does nothing
* log debug command output at info level
* improve logging detail on router update failure
* Fix log message argument
* Prevent multiple workers from picking up a router
* Be less clever about avoiding work
* Log the config details before sending them to the router
* update requirements to latest stable/havana
* convert packaging to pbr
* Unpin version of iso8601 package
* Move ports property definition to the right class
* Refactor by adding a `ports` property to the Router
* Change akanda devstack configuration file directory
* Pre-emptively clean up router ports before rebooting
* Update the debug CLI to properly use the new WorkerContext
* Reduce the number of REST clients in use
* Close a hole in debug mode
* Restore the "ignore directory" feature
* Add comments about commands
* fix option registration in debugger
* add tenant debug/manage commands
* implement router debug/manage commands
* Convert the existing debug handler to messages
* Stub in the command line app
* Refactor notification publishing
* remove unused argument from register_and_load_opts
* fix default log format
* Fix a failing test
* Raise boot_timeout from 4 minutes to 10 minutes
* Pass the tenant ID through to the Nova metadata proxy
* Make the metadata service port configurable
* Add travis-ci config file
* add Apache 2 license file
* Add new debug CLI
* Add missing dependencies
* Parse CLI options after registering them
* Make router config retry smarter
* Quiet logging on configuration failure
* add fixme notes from review session
* remove old manager.py file
* Add option for ignoring some routers by id
* RUG should wait the retry_delay time checking if a router is alive
* Fix failing tests
* add link to state diagram
* If router update fails, sleep the configurable retry_delay
* Make MAX_RETRIES/RETRY_DELAY settings configurable
* Switch to openstack common logging
* Update timeutils from oslo
* reformat oslo sync config file
* Change booting/destroying/config updated, logs to info
* adjust logging verbosity
* make the logging configurable
* support Havana key that is prefixed with _
* Fixing neutron typo in _sign_instance_id
* Ignore proxy settings because the rug is adjacent
* spawn proper worker for metadata proxy
* Extract tenant_id from ports and subnets too
* add configurable (re)boot timeout
* Pep8 cleanup
* Remove useless log call
* Look for the tenent_id in the router dict as first
* Add the RouterContainer class
* Add timestamps to logs
* remove references to quantumclient in populate
* several fixes for nova and neutron api stabliity
* Update to NeutronClient
* Update state machine delete handling
* add coverage report to test output
* Fix the updating loops
* remove unused import
* Add more logging to state machine
* set state to down if no mgt port
* pep8 and other style cleanups
* include tests and clean var references
* fix test to ensure wait is entered only on config
* separate config opts and refrain from purging
* fix stop command to wait until vm is destroyed
* handle lookup failure for tenants w/o routers
* only go into wait if vm is configured
* Fix issues reported by flake8 in vm_manager
* Fix reference to exception class in tests
* Update the startup command to use the new version of the rug
* Add unit test for the mgt tap interface
* Bring the mgt tap interface up at startup
* Add unit test for the purge_management_interface method
* Purge the mgt tap interface on startup and shutdown
* Add the ability to purge the mgt interface port from OVS
* Add state machine that uses seperate vm mgr
* Add test for the USR1 signal handler
* First commit to make the rug log info about the workers status
* Fix use of wrong attribute in the pre-populate-workers call
* Pre-populate workers with existing router on startup
* Change TRM/Publisher relationship
* Clean up notifier handling in worker
* Use unit test cleanup instead of tearDown
* Make the exchange names configurable
* fix flake8 errors
* Add bandwidth callback to Automaton
* Build notification message format properly
* fix Worker arg name in main
* Add notification publishing code
* Trigger health checks
* Add missing docstrings
* Make the Automaton create his own queue
* Fix a Mock library misleading behaviour in a test
* Remove any external reference to the Automaton's queue attribute
* Hide queue details for Automaton class
* Add tests for worker and tenant modules
* Look up default router for tenant
* Start thread pool management in worker processes
* Add TenantRouterManager
* update assert method
* remove duplicate line
* Start standardizing the internal event format
* Dispatch on tenant id and listen for RPC
* Use kombu to listen to notifications
* Move notification handling into a process
* Update the worker to manage router automata
* Add dispatching based on router UUID
* Add tests for main and scheduler
* Move test package under the main source tree
* Start rebuilding rug main program
* Add comment to the PortAlreadyInUse fix
* Log the number of tasks waiting to be executed
* pep8 fix
* Creating an akanda instance Nova try to use ports that have not been cleaned up yet from quantum causing the novaclient to return a 500 to the rug
* The rug fail to create the router object the first time it try to spin up a router vm
* Add more logging to the rug
* add support for configurable ASNs in the rug
* Replacing private method use in create notification listener
* Add kombu dependency
* Add test for the default_notification_handler key error
* Fix typo
* Log event notifications ignored by the default_notification_handler
* Fix key error in the default_notification_handler method
* Work-around for flaky github download URL
* Fix test that was failing due to changes in the logging message format
* Fix typos
* Make the AkandaL3Manager methods add a reason message to the task objects they put in the queue to make it clearer in the logs why those task are running
* Add reason message to the task object
* Fix a typo that was preventing the notification default handler to be called
* Abort a task that is trying to update a router that is no longer available
* Add logic to make a task fail without enqueue it anymore
* exit the retry loop when the method completes
* Retry starting the metadata service
* Switch to flake8 for style checks and make fixes
* Apply some magic retry looping
* Log details in verify_router_interfaces
* Log more detail when tasks fail
* Add logging for ensure_local_service_port
* Improve logging
* Compute the management IP one time in update
* Bring the tests for the interface module and the modules it depends on
* Only wait for quantum errors
* Pep8 cleanup
* Fix the unit/common/test_task_runner test
* Only ignore some exceptions in wait_for_callable
* Exclude test folder from package
* Make the rug keep trying if quantum does not respond
* Fix the error the rug gets calling the router_deleted method
* More debugging changes
* Protect get_router_for_tenant call
* update sample rug.ini file
* Drop the Quantum dependency by copying files in
* update to oslo.cfg and utilize oslo.config
* Improve error message for failed bandwidth update
* Fix delete callback to function correctly
* add direction to redirect rule
* use correct router_update call
* fix callbacks
* fixed bad keyword passed to RPC call
* fixed wrong reference
* pep8 fixes
* add support for Quantum L3 Agent RPC calls
* merge missing floating IP support
* drop python 2.6 support
* make test not a package in the first place
* fix package name and description
* ignore test package when installing
* add missing dependencies for tests
* pep8 fixups
* update to use Quantum rpc sync state
* update Oslo files
* fix key error in serialization
* add metadata proxy support to the RUG service
* create a method to generate the local rug IP addr
* Add warning for tasks that will be requeued
* update configuration serializer for IP allocs
* Change from requests to httplib2
* move link local address generation into the RUG
* lowering minimum package versions
* recovering bug fixes that were lost during a merge
* fixed wrong script entry point
* update per review feedback
* comment out print
* merge tests and WIP branches
* merge function units into rug
* pep8 fixes
* add notification detection support
* updating os-common
* adding instance management support
* adding base openstack common modules
* setup basic repository structure
* Initial commit
