CHANGES
=======

* Add timeout for ssh negotiation on keyscan
* Harden exception handling around instance deletes
* Improve exception handling around lost requests
* Do not satisfy min-ready requests if at capacity
* Bring back per label groups in Openstack
* Set log after we have launcher\_id
* Add launcher ID to log messages
* Add debug line for deleting unlocked nodes
* Fix node request assignment order
* Fix node delete command
* Fix typo in variable name
* Fix node list output
* Add node.allocated\_to to node detail output
* Fix nodepool's docs about config-drive
* Set base environment as python3
* Revert "Allow launcher to stop quicker when asked"
* Add node.cloud to zookeeper
* Allow launcher to stop quicker when asked
* Fix detail headers order for nodepool list
* Add hold job to nodepool list output
* Add --detail option to nodepool list command
* Move the fakeprovider module to the fake driver
* Add zuulv3 jobs for nodepool
* Remove FakeProvider getClient monkey-patch
* Extend Nodepool configuration syntax to support multiple drivers
* Collect request handling implementation in an OpenStack driver
* Abstract Nodepool provider management code
* Abstract Nodepool request handling code
* Support UUID as builder identifier
* Simplify \_deleteLocalBuild parameters
* Add support to test fedora-26
* EOL ubuntu-precise for dsvm job
* Add support for custom ssh port
* Fix dict key copy operation
* Don't join image upload workers on stop()
* Use private attribute lookup interanlly in builder.py
* Add image-id and image-name options to cloud-images
* Create group for label type
* Add region to zookeeper
* Support booting cloud-images by name or id
* Add webapp port and listen\_address configuration
* Allow loading logging config from yaml
* Add boot-from-volume support for nodes
* Add console-log to config-validate
* Remove unnecessary list()
* Fix base64 encoding of server key
* Do not request nodes for which we have no images
* Fix removeCompletedRequests for dict iteration
* Update keyscan for python3 compat
* Drop -e for pip install for devstack plugin.sh
* Fix socket.error exception usage
* Revert "Use devstack's zookeeper support"
* Cleanup failed upload records
* Support both python2 and python3 virtualenv
* Wrap map() in list() for python3
* Python3: encode / decode data as utf8
* Fetch server console log if ssh connection fails
* Bump diskimage-builder dependency to 2.0.0
* Python3: RuntimeError: dictionary changed size during iteration
* Fix typos in \_\_eq\_\_ functions
* Use six.reraise for python3
* Switch to next(generator) for python3
* Fix test\_node\_vhd\_and\_qcow2 to validate uploads
* Set socket timeout for SSH keyscan
* Add test config with min-ready of 0
* Add missing cleanup to statsd fixture
* Support externally managed images
* Add max-ready-age to label config
* Update exception message handling for python3
* Replace dict.iteritems() with dict.items() for python3
* Sort flavors with operator.itemgetter('ram')
* Ensure zookeeper\_servers is a list
* Fix imports for python3
* Rename nodepool.py to launcher.py
* Use six.moves.urllib for python3 compat
* Block sphinx 1.6
* Add check for ZK node empty data
* Update devstack plugin for security groups
* Remove FakeFile from fakeprovider.py
* Python 3.x incompatible use of print operator
* Add waitForImage to test\_lost\_request
* Use full path to socat in devstack plugin
* Fix CleanupWorker exception messages
* Add support for specifying key-name per label
* Validate flavor specification in config
* Cleanup from config syntax change
* Add ability to select flavor by name or id
* Protect against no matches for an upload
* Fix zuul-nodepool integration test
* Enforce cloud as a required config value
* Whitelist pydevd debug threads
* Wait for lock when performing manual hold
* Show message if node hold not found
* Start adding operational docs to zuulv3
* Fix internal doc refs to renamed section
* Fix debian-jessie settings for devstack
* Remove support for nodepool\_id
* Fetch list of AZs from nova if it's not configured
* Rename nodepoold to nodepool-launcher
* Force os-client-config to use ipv4
* Add waitForNodes() for test\_node\_assignment
* Log return code on failed dib build
* Remove unused timing constants
* Docs: Remove refs to removed nodepool commands
* Docs: Correct availability-zones documentation
* Docs: Remove cron references
* Remove mention of non-clouds.yaml from docs
* Remove ipv6-preferred and rely on interface\_ip
* Exercise statsd in tests and fix
* Remove deprecated networks syntax
* Remove api-timeout and provider.image-type
* Update docs for configuration syntax change
* Add a test for multiple provider pools
* Update nodepool config syntax
* Remove keypair from provider section
* Remove legacy openstack settings from nodepool.yaml
* Add debian-jessie DIB for dsvm testing
* Remove SSH support from nodepool
* Add novaclient and keystoneauth debug logging
* Docs: Clarify secure file usage
* Docs: Remove "jenkins" reference
* Do not require secure file for nodepoold
* Add check for valid zk attribute before disconnect
* Refactor nodepool apps into base app
* Fix test\_node\_assignment\_at\_quota
* Add libffi development headers to bindep
* Revert "Refactor nodepool apps into base app"
* Unlock request if it disappears
* Split DeleteNodeWorker into two threads
* Create BaseCleanupWorker class
* Rename NodeCleanupWorker to DeletedNodeWorker
* Refactor nodepool apps into base app
* Set node AZ after we're done waiting for it
* Unpause when we grab a pre-ready node
* Deallocate ready nodes with no requests
* Reset lost requests
* Update wait\_for\_threads
* Populate requestor for min-ready requests
* Remove noisy log line
* Remove remaining apscheduler variables
* Fix for unpaused request handlers
* Stop writing nodepool bash variable on nodes
* Remove ready-script support
* Remove AllocatorTestCase and RoundRobinTestCase
* Add request-list nodepool command
* Fix min-ready/max-servers in test configs
* Fix race on node state check in node cleanup
* Don't try and delete nodes with no external\_id
* Remove the --no-delete option from nodepool
* Record SSH public keys for new nodes in ZK
* Remove MySQL
* Re-enable test\_node\_delete\_failure
* Remove test\_\*\_cleanup\_on\_start tests
* Remove Jenkins
* Remove test\_nodepool.test\_job\_\* tests
* Re-enable test\_node\_ipv6
* Fix provider-label association
* Re-enable test\_node\_az
* Re-enable test\_disabled\_label
* Store a pointer to the paused node request handler
* Fix failure of node assignment at quota
* Use node ID for instance leak detection
* Stop json-encoding the nodepool metadata
* Handle exception edge cases in node launching
* Add destructor to SSHClient
* Remove jenkins\_manager
* Remove allocator
* Fix fedora 25 pause bug with devstack
* Rename osc to occ in tests
* Re-enable TestWebApp tests
* Re-enable test\_nodepool\_osc\_config\_reload
* Re-enable test\_image\_upload\_fail
* Remove job\_list, job\_create, job\_delete cmds/tests
* Re-enable test\_alien\_list\_fail and alien\_list cmd
* Add leaked instance cleanup
* Remove old/dead classes
* Add back statsd reporting
* Check if /etc/apt/apt.conf.d first exists
* Remove ubuntu-precise from AFS mirror list
* Add 'requestor' to NodeRequest model
* Suspend NodeCleanupWorker on ZK suspension
* Fix comment about AZ selection
* Group nodes by availability zone
* Only use ready nodes from the same provider
* Correct the quota/availability algorithm
* Use devstack's zookeeper support
* Add destructor to SSHClient
* Fix logic error with nodepool-id
* Add nodepool-id to provider section
* Delete node request locks after a delay
* Cleanup node request locks
* Add reasons to decline log entries
* Fix fulfilled log line
* Add some lock debug lines and an exception handler
* Clarification about the rate parameter
* Support launch failures in FakeProviderManager
* Allow configuring nodepool launch retries
* Node requests should be ephemeral
* Remove verbose logging related to config loading
* Check for not found node in 'delete' command
* Send min-ready requests only when images are ready
* Bug fix: Delete instance during launch retries
* Bug Fix: Call \_runReadyScript correctly
* Bug fix: Delete FAILED nodes
* Bug fix: Failed nodes were not getting unlocked
* Disable CleanupWorker thread for test\_image\_upload\_fail
* Fix possible race with node request handling
* Disable test\_image\_upload\_fail
* Use thread name in launcher ID
* Partial dead code deletion
* Wait for server deletion before deleting ZK node
* Fix potential race in image upload cleanup
* Add lock state to node listing
* Re-enable devstack test job
* Implement node cleanup
* Move ProviderManagers into main NodePool thread
* Re-enable test\_image\_upload\_fail test
* Re-enable test\_diskimage\_build\_only test
* Re-enable working test\_builder.py tests
* Re-enable test\_dib\_upload\_fail test
* Disconnect from ZooKeeper at shutdown
* Add generator API method for node iteration
* Set Node image\_id and launcher attributes
* Re-enable test\_node\_vhd\_image test
* Re-enable test\_node\_net\_name test
* Wait for main loop when stopping
* Use helper function to instantiate ProviderManager
* Split up min-ready requests to 1 node per request
* Re-enable test\_node test
* Re-enable test\_dib\_image\_delete test
* Re-enable test\_dib\_image\_pause / test\_dib\_image\_upload\_pause
* Update nodepool hold to use zookeeper
* Update nodepool 'list' command
* Implement node launching
* Remove subnodes from nodepool
* Remove 'template-' from image name format
* Add new Node ZK model attributes
* Unallocate new nodes if request is pulled
* Add 'hostname-format' to provider config section
* Assign node set to node requests
* Update Node and NodeRequest models
* Fix race in node request state changes
* Make web status text/plain
* Fix storeNode() for updates
* Fix documentation nits from earlier reviews
* Add comment explaining test-not-create behavior
* Revert "Create mandatory /etc/nodepool for later use"
* Replace NodeRequestWorker with NodeRequestHandler
* Start nodepool in the test-config phase
* Add storeNode ZK API method
* Fix fedora 25 pause bug with devstack
* Manage providers in ProviderWorker threads
* Add files for zuul-nodepool integration test
* Add nodepoold test for request decline and fail
* Create mandatory /etc/nodepool for later use
* Add API methods for locking/unlocking Nodes
* Add a serialize() method to ZK model definitions
* Query ZooKeeper to determine image availability
* Fix for launched node counting
* Fixed typo in info msg
* Add --fake command line option to builder
* Begin implementing node request handling
* Removed redundant 'the'
* Move to fedora-25 for devstack testing
* Add support for max\_concurrency for providers
* Add framework for handling node requests
* Handle provider removal from config
* Remove --no-builder nodepoold option
* Remove --no-launches nodepoold option
* Create per-provider ZK work threads
* Set valid states per data model class
* Minor code cleanup
* Remove Gearman and ZMQ
* Disable tests for nodepoold changes
* Add ZK API methods for node requests

0.4.0
-----

* Support AFS mirrors for nodepool diskimages
* Allow nodepool-builder to only build diskimages
* Remove the ability for nodepoold to launch a builder
* Source glean installs in simple-init
* Update configuration docs for network and pool settings
* Update README to mention bindep
* Ensure env-vars are strings in config validate
* Register launcher name with ZooKeeper
* Reduce min-ram for ubuntu images for devstack
* Revert "Reduce min-ram for ubuntu images for devstack"
* Reduce min-ram for ubuntu images for devstack
* Add dib-image-list.json webapp target
* Add glean libs-from-git install
* Mitigate config disagreement issues
* Fix some doc typos
* Expose the ability to build all infra diskimages
* Change nodepoold ZK config change logic
* Set diskimage formats for building state
* Update operation docs
* Docs: add Zookeeper installation section
* Remove script-dir
* Update documentation on diskimages/images
* Fix image delete exception logging
* Rename ubuntu-dib to ubuntu-trusty
* Fix image delete exception logging
* Accept user-home in config validator
* Use provider images from yaml for alien\_image\_list
* Share single ZooKeeper object among workers
* Validate configs when used by tests
* Add missing pause fields to config-validate
* Validate configs when used by tests
* Add missing pause fields to config-validate
* Remove ZK lock variables
* Properly cleanup failed diskimage builds
* Make diskimage-builder command configurable for testing
* Re-use build data when we set for DELETING
* Check for in progress build/upload in CLI
* Add \_\_repr\_\_ to ConfigValue objects
* Use diskimage.name for \_checkForScheduledImageUpdates exception
* Update waitForBuildDeletion() to protect against delete race
* Don't use taskmanagers in builder
* Delete builds when diskimage removed from config
* Clean up exception message to use image / provider name
* Add --checksum support to disk-image-create
* Pluralize zk nodes with children
* Fix zookeeper config in test fixture
* Fix image-delete command
* Include timestamps in test logs
* Add pause option for image uploads
* Do not truncate state\_time precision
* Fix race in test\_image\_rotation
* Fix race condition in test\_image\_rotation\_invalid\_external\_name
* Sort images and providers in zookeeper
* Delete hard upload failures from current builds
* Make sure we clean up diskimages with invalid external\_name
* Add stack dump handler to builder

0.3.1
-----

* Use diskimage-builder checksum files
* Add image\_name to UploadWorker INFO message
* Activate virtualenv before running dib
* Fail on bad options to fake-image-create
* Make build/upload worker sleep time configurable
* Re-enable alien-image-list command and tests
* Stop running DIB usage report
* Fix test\_image\_delete
* Add znode stat structure to build/upload objects
* Fix nits in test\_image\_upload\_fail
* Re-enable test: test\_image\_upload\_fail
* Re-enable test: test\_list\_nodes
* Test rotation of builds in nodepool-builder
* Remove unused function make\_image\_dict
* Use database for non-zookeeper commands
* Add pause support for diskimages
* Remove references to node-devstack in tests
* Initial support for bindep
* Re-enable test\_hold test
* Add test to validate when a node build is disabled
* Remove waitForBuiltImages() / JobTracker() from nodepool.py
* Re-enable TestWebApp tests
* Enable test\_delete / test\_delete\_now tests
* Add tools/test-setup.sh
* Add tools/test-setup.sh
* Re-enable test: test\_alien\_list\_fail
* Remove image-upload command and tests
* Remove image-update based tests
* Add test\_image\_delete test
* Re-enable test: test\_image\_delete\_invalid
* Fix upload recency table bug
* Sort existing builds properly in cleanup thread
* Add test to validate rebuilds are scheduled
* Print all fields of ZK objects
* Also use a lockfile when creating the schema
* Add secondary upload check
* Log each worker thread separately
* Better protect for race condition in waitForBuildDeletion()
* Use an external lockfile when dropping the test database
* Use image name in ImageUpload equality
* Use constants for zk states
* Remove builds that are no longer in use
* Add image addition test to builder
* Remove image delete tests from test\_nodepool
* Update test\_dib\_image\_delete to validate delete happened
* Add check for uploads to deleteBuild()
* Add test\_provider\_addition to builder
* Remove obsolete uploaded images
* Add printZKTree debug method for tests
* Add provider\_name to ImageUpload
* Remove test: test\_snapshot\_image\_update
* Re-enable tests: test\_job\_create, test\_job\_delete
* Re-enable test: test\_image\_build
* Fix getMostRecentImageUpload return docstring
* Re-enable test: test\_config\_validate
* Delete test\_handle\_dib\_build\_gear\_disconnect test
* Replace snap\_image with cloud\_image
* Remove SnapshotImage from the database
* Remove DibImage from the database
* Log image delete exception as exception
* Sync devstack plugin from master
* Install get-pip.py from local cached location
* Remove stray print statement
* Enabled zookeeper for devstack jobs
* Re-enable test: test\_dib\_image\_delete
* Add build\_id attribute to ImageUpload object
* Rename zookeeper\_client to zk for nodepool.py
* Add test for getMostRecentImageUpload
* Make image building separable
* Make image cleanup separable
* Add a fallback exception handler for BuildWorker
* Add a fallback exception handler for UploadWorker
* Add a fallback exception handler for CleanupWorker
* Make image uploads separable
* Re-enable test\_job\_auto\_hold\_\* tests
* Re-enable test\_job\_end\_event test
* Re-enable test\_job\_start\_event test
* Re-enable test\_leaked\_node test
* Re-enable test\_db test
* Re-enable test\_node\_delete\_failure test
* Re-enable test\_node\_delete\_success test
* Re-enable test\_node\_ipv6 test
* Enable test\_node\_az test
* Re-enable test\_subnodes test
* Re-enable test\_dib\_upload\_fail test
* Re-enable test\_node\_vhd\_and\_qcow2 test
* Enable test\_node\_vhd\_image test
* Re-enable test\_node\_net\_name test
* Replace node\_dib.yaml with node.yaml for tests
* Re-enable TestNodepool.test\_node
* Catch all upload exceptions
* Remove image building responsibility from nodepool.py
* Reduce kazoo logging in tests
* Remove Zookeeper per-test fixture
* Fix race condition in build cleanup
* Remove diskimage parameter from config
* Remove snapshot support
* Use image name in DIB image IDs
* Do not delete DIB images that are building
* Fix subnode deletion
* Re-enable test\_image\_list\_empty
* Add option to force image delete
* Re-enable test\_dib\_image\_list
* Add \_\_repr\_\_ methods to ZK objects
* Override the cleanup interval in builder fixture
* Use diskimage name when looking up image on disk
* Update waitForImage test method for ZK
* Assume diskimage and image names are the same
* Add getMostRecentBuildImageUpload method to zk
* Supply ZK connection information to test configs
* Combine ZKTestCase with DBTestCase
* Transition ZK API from dict to object model
* Separate image upload logs into separate logger
* Remove OldNodePoolBuilder class
* Use six.iteritems() for py3
* Add janitor thread
* Move kazooclient in to a fixture
* Return empty dict from getBuilds/getUploads
* Use image name in local DIB image name
* Correct builder exception message
* Bring getMostRecent\* API calls into alignment
* Add new build number lock context manager
* Change getMostRecentBuild to get multiple builds
* Add getBuildsWithStates ZK API method
* Update 'image-list' cli to ZK
* Update 'nodepool dib-image-list' command to ZK
* Have an ending line-feed on the generated id\_rsa.pub file
* Add a DIB configuration to fake.yaml
* Reduce image locking during build checks
* Rebuild DIB on missing image format
* Add code to do the DIB build
* Retry SSHExceptions in nodepool
* Add provider upload framework
* Pull get-pip.py from jenkins cache
* Add imageUploadLock() API
* Return build or upload number with recent data
* No need to make sure ZK lock path exists
* Add --no-webapp option
* Add image id to DIB image upload name params
* Add options to skip deleting or launching nodes
* Add UploadWorker skeleton to the builder
* Handle config reload race
* Handle ZooKeeper lost connections
* Short-circuit builder processing on shutdown
* Client change to support ZK image build requests
* Use sequence znodes for image upload numbers
* Use sequence znodes for image build numbers
* Allow deleting non-existing build requests
* Stop using custom ZK heartbeat
* Record DIB images in "building" state
* Remove duplicate check for manual build request
* Make builder recognize scheduled builds
* Change ZK API to not auto-create build on lock
* Disable connecting to the SSH agent for ssh\_connect
* Disable searching for discoverable private keys
* Make builder recognize manual build requests
* Don't delete images in a building state
* Update shade depend to 1.12.0
* Use time.sleep() when waiting for workers to run
* Add ZooKeeper connection to the BuildWorkers
* Make builder workers proper threads
* Replace watch thread with periodic worker threads
* Unsubvert image and flavor caching
* Add missing month argument
* Remove image-update cron
* Also use the virtualenv for checking
* Rename BuilderScheduler to NodePoolBuilder
* Simplify builder start/stop methods
* Remove 'running' as a public method from builder
* Remove unecessecary builder scheduler thread
* Stop using NodePoolBuilder class
* Add new ZK method for sending cluster heartbeat
* Add new ZK method for registering a watch
* Install nodepool and shade into a virtualenv
* Include ip address for ssh\_connect exception
* Add floating-ip batching settings to clouds.yaml
* Remove unnecessary NodePoolBuilder thread
* Don't delete building DIB images
* Add a script to print the ZK tree
* Have buildZooKeeperHosts accept a config object
* Stop running DIB usage report
* Add scheduling thread to nodepool builder
* Add zookeeper-servers to fake config
* Set default branch to feature/zuulv3
* Add a fake-secure.conf
* Add an example logging.conf for development
* Add a fake-secure.conf
* Add an example logging.conf for development
* Clarify code in nodepool/cmd/builder.py
* Remove testresources
* Shut down gearman client in tests
* Make ZK fixture more robust
* Add ZooKeeper connection listener
* Add config support for ZooKeeper servers
* Allow extra time for initial ZooKeeper connection
* Include subnodes in updateStats function v2
* Revert "Include subnodes in updateStats function"
* Include subnodes in updateStats function
* Default config-drive to true
* Add diskimage-builder from git to dsvm job
* Remove discover from test-requirements
* Add initial ZooKeeper API
* Revert "Infer node demand from workers listing"
* Revert "Cache function worker map"
* Change the webapp default port
* Cache function worker map
* Remove dead code from nodepoolcmd
* Add a simple status webapp
* Use random strings for ZK test paths
* Make ZK cleanup more resilient
* Fix zk startup detection
* Infer node demand from workers listing
* Handle NO\_AUTO\_CREATE\_USER default mode

0.3.0
-----

* Allow testing with external zookeeper
* Fix race condition in disconnect test
* Add auto-hold feature
* Test ZMQ event handler
* Add comment field to node and reason to hold
* Revoke nodes via gearman on deletion
* Set nodepool.manager.MANAGER.nodes.STATE to zero
* Use underscore for node\_assign job
* Add nodepool.manager.MANAGER.nodes.STATE also
* Add nodepool.launch.manager.\* for nodes assigned via Gearman
* Add log config option to nodepool cmd
* Add assign-via-gearman to config validator
* Add some tracking for image sizes
* Add clean-floating-ips validation test
* Use clean-floating-ips for yaml setting
* Make sure worker arguments are integers
* Cap paramiko<2.0.0
* Cleanup leaked floating ips periodically
* Add option to assign nodes via Gearman
* Make stopping more reliable
* Restore ability to run nodepoold with fakes
* Write public IP into private when there's no private
* Don't get extra flavor specs
* Partially Revert "Pass extended network information in to occ/shade"
* Pass extended network information in to occ/shade
* Expose nodepool-builder workers settings
* Synchronize image delete with handle completion
* Cleanup building dib images on startup
* Only delete keypairs if needed
* Start using dogpile caching in devstack tests
* Set cache parameters like we do in production
* Remove unused functions
* Use shade for all OpenStack interactions
* Log shade inner exceptions
* Add zookeeper test infrastructure
* Be more specific in logging timeout exceptions
* Add an error log with the server fault message
* Enhance message for image ssh auth
* Handle dib image deletion during periodic cleanup
* Only try to delete floating ip if the server has it
* Delete building images on startup
* Enable a fake statsd server for devstack testing
* Dont connect to gearman in cmd unless needed
* Document clouds.yaml as the preferred configuration
* Handle image upload job failures
* Remove unecessary session.commit()
* Cleanup bulder jobs and add disconnect support
* Increase gearman timeouts
* Add ipv6-preferred into config-validation
* Remove unused \_stop\_running variable
* Builder: Also unregister image-delete
* Make builder multi-threaded
* Don't mistake manifest dir's for images
* Add more debug logging to image upload
* Clarify debug statements in image-upload
* Fix typo in debug log
* Protect deleteNode from missing images
* Use different pidfile for builder daemon
* Bump APScheduler to >=3.0
* Raise SQLAlchemy upper cap to match global requirements
* Normalize some log lines in builder
* Log task name more succinctly
* Remove workaround for early paramiko import
* Revert "Import nodepool.builder late for statsd"
* Also handle work exceptions in builders
* Handle dib build failures
* Use common logging for nodepool applications
* Don't use global statsd
* Import nodepool.builder late for statsd
* Builders can be run on their own
* Decouple builders from nodepool instance
* Builders distinguish between failure and exception
* Decouple nodepool db and config from builders
* Make secure.conf optional
* Move nodepool config loading into module
* Trigger image delete using gearman
* Add dib deletion test
* Trigger image uploads using gearman
* Trigger image builds using gearman
* Add 'public' attribute to 'networks' entry
* Uncap pyzmq requirements
* Deprecated tox -downloadcache option removed
* Drop glanceclient and keystoneclient requirements

0.2.0
-----

* Add LICENSE file
* Write the cloud name into the provider info
* Pin python-daemon to <2.1.0
* Revert "Get public IPs from supplied networks"
* Optimize "open" method with context manager
* Suppress NoValidConnectionsError from paramiko
* Revert "Allow to delete nodes with missing target or provider"
* Get public IPs from supplied networks
* Add provider node stats
* Add documentation on removing a provider
* Send fewer statsd guages
* Revert "Remove duplicate python-jenkins code."
* Remove wait\_for\_threads in test\_commands
* Explicitly block in nodepool upload commands
* Consume clouds.yaml from /etc/openstack
* Nodepool Install failure
* Update tox.ini to current standards
* Don't double-log in nodepool/dsvm log output
* Add node command tests
* Add dib image command tests
* Fix image-upload command image name mapping
* Simplify command test asserts
* Fix provider manager reloading without jenkins
* Allow to delete nodes with missing target or provider
* Remove the unused 'reset' setting from the doc
* Add launch-timeout validator into config-validation
* Use OCC cloud specifier in devstack plugin
* Permit obsolete jenkins/mysql options in config
* Stop nodepool once in tests
* Handle OVH network configuration
* Update nodepool to use secure.conf file
* Move image location out of config location
* Bump shade requirement to >=0.12.0
* Check pyflakes rules
* Remove unused dib\_image\_built
* Install shade from source if instructed to
* Test config-validate command
* Add a test for the list command
* Bust cache in leaked node test
* Add more logging to tests and fakes
* devstack: supply a logging config file
* Wait for resources in devstack-plugin check
* image.name fix for image-update command
* Correct exception when waiting for image build
* Correct missing DIB image detection
* Bump pbr requirements to >=1.3
* Continue image refresh if /etc/nodepool exists
* Add 'debian' user in bootstrapServer()
* Use the devstack version of nodepool.yaml
* doc: FLUSH PRIVILEGES; is unneeded
* Move nodepool test checks into nodepool
* Test dib image builds with devstack too
* Add support for project-name parameter
* Run geard for nodepool tests
* Fix exception formatter in instance delete
* Fix potential race in tests
* Fix schema validator to allow specifying a gearman port
* Stop passing cloud config name to shade
* Set gearman client\_id for nodepool client
* Run gearman server for devstack plugin
* Remove terminated image/instance delete threads
* Fix erroneously deleting non-leaked instances
* Shorten template hostname
* Expand documentation on timeouts
* nodepool devstack plugin
* Document SIGINT / SIGUSR2
* Support SIGINT to gracefully stop nodepoold
* Add prerequisites for nodepool on RHEL7
* Add MySQL DB creation example
* Clarify meaning of Jenkins master configuration settings in target
* Debug IP finding failures
* Remove duplicate python-jenkins code
* Remove slave.openstack.org from default hostname values
* Fix untemplated images\_dir in config fixtures
* Fixed crash in exception handler
* Be more careful when config options are not set
* Flush file system buffers before snapshots
* Start passing cloud\_config object to shade
* add option to use ipv6 for image update and node launching
* Delete leaked instances
* Isolate and persist fake client state
* Enhance logging around image building
* Adjust recorded nova metadata
* Add hostname templates to config validator
* Make diskimage example config work
* Record interesting info into nova metadata
* Simplify oscc argument conversion
* Update Copyright year
* Convert timing metrics to milliseconds
* Fix racey clouds.yaml test
* Test that we are setting region-name properly
* Check proper providers keys when reading config
* Add test for osc config refresh
* Consume os-client-config directly
* Debug dying task managers
* Convert to use latest statsd version
* Pretty Age in nodepool cli image/node lists
* Replace ci.o.o links with docs.o.o/infra
* Use shade for image uploads
* Use shade to get the client objects
* Remove the need for zmq in proper demand calcs

0.1.1
-----

* Clarify project-id meaning for Rackspace deployment

0.1.0
-----

* Change references from v1\_1 to v2
* Allow for Jenkinsless targets
* Allow for no ZMQ publishers
* Improve configuration documentation
* Add tox 'docs' env to build Sphinx documentation
* Support spaces in Gearman functions names
* Use correct diskimage when building diskimages
* Just set qcow2 version
* Support per provider image build settings
* Do not set up managers on CLI delete
* Don't try to delete nonexistent jenkins nodes
* Reset the client object after proxy timeouts
* Switch from MySQL-python to PyMySQL
* Protect when statsd is not enabled
* Add statsd counters to the TaskManager
* Add node deletion tests
* Correct diskimage-builder name usage
* Monkeypatch Fake Clients for tests
* Add support for requsting that config drive be used
* Dont die on alien-image-list failure
* Don't die while doing alien list
* Ignore stderr for documentation program output
* Move nodepool creation in tests to common method
* Test snapshot image deletion command
* Indicate error when deleting an invalid snapshot
* Check image-list output in cmd tests
* Fix Nodepool DIB Uploads to Glance w/o region\_name
* Remove unused 'reset' setting from images
* Add nodepool command tests
* Gracefully handle upload failures
* Test that dib failures don't stop node builds
* Don't allocate nodes to providers without images
* Accomodate ready nodes in min-ready checks
* Remove duplicate code
* Use local allocation history in scheduler
* Add logging Popen to tests
* Add config validation option
* Do not try to upload building disk images
* Fix exception in dib image cleanup
* Write the node UUID to /etc/nodepool/uuid
* Append file type to filename on image upload
* Remove unnecessary path joining for dib filenames
* Log ipv6 addresses for nodes
* Move image uploads out of ProviderManager
* Remove unneeded Label.\*\_providers
* Better image checking in update\_image command
* Fail gracefully if disk-image-create is missing
* Remove lockfile from requirements
* Conditionally check for targets in reconfigureManagers
* Fix nodepool --version
* Handle numeric "release"
* Check env-vars is a dictionary
* Iterate over images, not labels, when updating
* Add more verbose image building debug logs
* Revert "Pin python-daemon to <2.0"
* Add doc for 'pool' parameter for nodepool provider config
* Make update image understand both types of images
* Add support for an API timeout to nodepool
* Pin python-daemon to <2.0
* Make DIB exceptions more robust
* Cleanup DIB images in DB if they fail to build
* Raise a more descriptive KeyError for debugging
* Allow labels to have snapshot and dib images
* Update Readme config -> system-config repo
* Fix error handling when dib image builds fail
* Update snapshots prior to dib image builts
* Reconnect to gearman on error
* libffi-dev/libssl-dev/qemu-utils are required
* Fix test discovery by new testtools
* Match novaclients transitive six dep
* Set useful PATH before starting scripts
* Caching floating ips as server list is done
* Handle missing private IPs for now
* Add private ip to /etc/nodepool
* Add current node IP to /etc/nodepool

0.0.1
-----

* Add centos to list of alternative users for login
* Change sequence on actions in updateConfig
* Make the external links actual hyperlinks
* Clean up 'images' documentation
* Remove docutils pin
* Send environment vars to diskimage-builder per image
* Remove hardcoded root path of a jenkins node
* Add meta option for passing meta-data
* Properly reference nodepool config in image update
* Capture provider name in status logging
* Line-by-line dib logs
* Move the ImageUpdater base class for clarity
* Handle config updates in dib builder thread
* hostname & subnode-hostname is taken from targets instead of labels
* Fix attribute error state if node not found
* Delete correct item in image delete command
* Pass the nodepool scriptdir to disk-image-create
* Export image name and filename to DIB
* Be more atomic when counting nodes
* Paralellize image deletes
* Record provider/region/az in /etc/nodepool
* Ignore min-ready when at capacity
* Don't retry forever when a provider is stopped
* Some extra safety around negative numbers
* Change history allocation from list to dict
* Revert "Revert "Track last allocations to ensure forward-progress""
* Avoid passing negative available count to allocator
* Update documentation for using diskimage-builder
* Correct ssh key instructions in README
* Actually correct use of label.providers dict
* Correct use of label.providers dict
* Correct errant uses of label.image.is\_diskimage
* Remove setUp() call from setup\_config
* Move pool.stop into addCleanup
* Logging format for FakeLogger
* Fix "nodepool image-update provider label" cmd
* Refactor nodepool to configure glance only when uploading imaes
* Build images using diskimage-builder
* Add timestamps to nodepool logging
* Fix potential floating ip leakage issue
* Add stdout and stderr to exception when ready script fails
* Record provider AZ info in graphite
* Use correct provider in test-case
* Revert "Track last allocations to ensure forward-progress"
* Cleaning up index.rst file
* Drop voluptuous from requirements
* Enable debugging output
* Add support for network labels
* Track last allocations to ensure forward-progress
* Fix Configuration link in docs
* Make template and node hostnames configurable
* Update pbr version
* Show expected output in test-case error
* Add @localhost to openstack\_citest user example
* Handle task manager shutdown more correctly
* Use import from six.moves to import the queue module
* Pass in hostname as a script parameter
* Check for stale PID lock when starting
* Remove libzmq-dev from dependency list
* Increase watermark sleep in tests for reliability
* Add warnings about the installation of libzmq1
* Log task durations
* Log task manager queue length
* Prevent listserver tasks from piling up
* Check the returned image status
* Display node AZ in \`nodepool list\` output
* Support provider AZ lists
* Use except x as y instead of except x, y
* Don't accept tasks for stopped managers
* Create new provider managers on image data changes
* Add cloud-user to non-root user list
* Fix typo in launch stats
* Improve logging/stats around launch errors
* Fix race in tests
* Correct update-image to image-update in samples
* Create launch-timeout setting for providers
* Fix neutron configuration error
* Immediately delete a floating IP if doesn't attach
* Protect against /etc/nodepool not existing
* Fix tox's insane pip install command
* Detect neutron net-changes on reconfigure
* Create snapshots when min-ready is >= 0
* Fix update-image command
* Fix missing attribute error in subnodes
* Add a test for subnodes
* Add a very basic functional test
* Add per-test database fixture
* Finish initial docs
* Add tests for the allocator
* Add ready-script and multi-node support
* Fix the allocation distribution
* Fix image/label name typo in stats
* Add 'labels' as a configuration primitive
* Stop waiting for resources in ERROR state
* Add the ability to create subnodes
* Add SubNodes and the ability to delete them
* Depend on hacking for its dependencies
* Include provider names in timeout messages
* Set paramiko version > 1.9.0
* Delete created keypairs if nova boot fails
* Raise min\_demand due to slow node boot times
* Keep py3.X compatibility for urllib/urllib2
* Roll up node stats
* Keep current and previous snapshot images
* Preserve HOLD state when job starts
* Fix more str!=int bugs
* Remove unhelpful log message
* Coerce all ids from novaclient to str
* Node deletion related fixes
* Use the task manager to get extensions and flavors
* Delete all building nodes on daemon start
* Perform all deletes in threads
* Check server status in batch
* Add fedora support
* Make nodepool more robust to offline clouds
* Retry ssh connections on auth failure
* Fix typo in allocation
* Make jenkins get info task synchronous
* Allow useage of server IDs as well as names
* Revert delete-rework branch
* Log state names not numbers
* Also log provider name when debugging deletes
* Include check in fake.yaml
* Run per-provider cleanup threads
* Decouple cron names from config file names
* Move cron definition out of the inner loop
* Move cron loading below provider loading
* Teach periodicCleanup how to do one provider
* Use the nonblocking cleanupServer
* Split out the logic for deleting a nodedb node
* Make cleanupServer optionally nonblocking
* Consolidate duplicate logging messages
* Log how long nodes have been in DELETE state
* Cleanup nodes in state DELETE immediately
* Expose paramiko's get\_pty parameter
* Switch node id and ip in debug output
* Revert "Provide diagnostics when task rate limiting."
* Revert "Default to a ratelimit of 2/second for API calls"
* Log the time a node has been in state DELETE
* Avoid redundant updates of node.state=DELETE
* Fix early-exit in cleanupOneNode
* Default to a ratelimit of 2/second for API calls
* Provide diagnostics when task rate limiting
* Ignore vim editor backup and swap files
* Don't load system host keys
* Document that fake.yaml isn't usable
* Only attempt to copy files when bootstrapping
* Add some debugging around image checking
* Permit using a known keypair when bootstrapping
* Permit specifying instance networks to use
* Catch exceptions from nova flavor-list calls
* Add docs
* Readme enhancements
* Pin Sphinx to <1.2
* Improve README.rst formatting
* Fix README file
* Restructure periodic cleanup
* Add job runtime stats
* Fix the issue which raise FloatingIpPoolNotFound
* Improve image logging
* Fix old pre-nodepoold reference in README
* Add ability to filter on flavor name
* Fix the logprint in task\_manager.py
* Skip periodic cleanup if the node is not stale
* Add more details to developer setup in README
* add introduction for README document
* Consider existing nodes when allocating to a target
* Make ip\_id arg match calling and consuming
* Add gear to requirements
* Change image debug interpolation order
* Add the ability to pass pool for AddPublicIP
* Don't use max\_overflow with sqlite
* Fix another wrong use of server\_id
* Rename ASRT -> AGT
* Add a thread dump signal handler
* Pass correct server\_id when adding public IP
* Make image updates independent
* Add the ability to ignore offline targets
* Fix stats after min\_ready change
* Fix parsing gearman status
* Inspect the Gearman queue for immediate demand
* Make node SSH timeout configurable
* Ignore hacking warnings
* Add default location for config file
* Fix fake provider
* Fix HOLD state
* Add image-delete command
* Add a delete command
* Add a hold command
* Add alien-image-list command
* Add alien-list command
* Add image-update command
* Add a nodepool command
* Add image logging
* Change use of error numbers to errno
* Fix image delete logic
* Fix typo in node check method
* Fix typo in deleteImage
* Add option to test jenkins node before use
* Make jenkins username and private key path configurable
* Fix error with stats for de-configured resources
* Move setup scripts destination
* Reduce timeout when waiting for server deletion
* Change credentials-id parameter in config file
* Add an ssh check periodic task
* Add JenkinsManager
* Add ProviderManager
* Delay 1 min before deleting node
* Cache novaclient objects
* Tune SQLAlchemy pool parameters
* Use a sensible SQLAlchemy session model
* Make the target name required in the schema
* Require a target name when instantiating a node
* Use MySQL
* Make the local script directory configurable
* Handle paramiko and daemonization
* Initial commit
* Added .gitreview
