~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v5.0:

* New features

    - A new concept of "on-demand" ticket tags has been introduced. These
      on-demand tags, when assigned to tickets, trigger an "on-demand"
      resource allocation in the corresponding pools, rather than
      pre-allocating them in advance.

    - The README file has been significantly rewritten by Jakub Kadlčík in
      markdown format.

    - The number of "livecheck" attempts before a resource is deleted is
      now configurable through the "livecheck_attempts" option.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.9:

* New features

    - Resources that fail the livecheck are terminated, even though they
      have some ticket assigned.  Such a ticket goes to FAILED state.

    - We use the SPDX-formatted license.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.8:

* New features:

  - Eetter logging support: Exceptions are logged to 'main.log', the
    default log_level=info is made useful, more readable messages, log
    entries contain PID, TID and thread name.

  - Stopped using 'sqlalchemy.pool.NullPool' for connecting to database,
    and use the default.  That is NullPool anyway for SQLite backend, and
    QueuePool(pool_size=5) for the PostgreSQL backend:
    https://docs.sqlalchemy.org/en/14/core/pooling.html#sqlalchemy.pool.NullPool

  - A new PostgreSQL index to speedup `resalloc-maint ticket-list` command.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.7:

* Bugfixes:

  - the new mechanism for cleaning orphaned resources was cleaning also
    resources in STARTING/DELETING/RELEASING states.

  - fix traceback in `$ resalloc-maint resource-info` for a non-existing
    resource

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.6:

* New features:

  - A new resalloc-selinux subpackage, currently adjusting only SELinux context
    for the CGI script used by WebUI
  - Adding a simple homepage for the WebUI


* Bugfixes:

  - The CGI script for WebUI is now compatible with both Apache and Lighttpd

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.5:

* Bugfixes:

  - added a forgotten CGI script for the web UI subpackage

  - now we are running the "orphaned resources" cleaner in background, this
    blocked the manager logic before

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.4:

* New features:

  - Server now periodically checks for unknown or forgotten resources. This is
    useful when your termination scripts are not reliable, and report successful
    termination even if the resource somehow survives. Enable this feature by
    configuring 'cmd_list' option for the respective pools.

  - Major performance and other improvements to the web-ui pools page

  - New web-ui page providing basic information about resources


* Bugfixes:

  - Connection to resalloc occasionally ended up with uncaught xmlrpc exception

  - Fixed race-condition causing infinitely RELEASING resource

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.3:

* New features:

  - new Flask-based Python "overview" web-ui page added, providing basic
    info about used Pools

  - Fixed up 'resource-info' command for "STARTING" resources

  - More verbose RELEASING logging output to simplify debugging when needed

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.2:

* New features:

  - New 'resalloc-maint resource-logs' command printing out logs for
    queried resources.  Accepts both resource ID and resource name.

  - New 'resalloc-maint resource-info' command, priting out basic metadata
    about the selected resource.

  - Added new arguments '--all' and '--unused' for the 'resalloc-maint
    resource-delete' command.


* Bugfixes:

  - RESALLOC_RESOURCE_DATA env var is given also to the 'cmd_delete' processes.

  - Dump (debug) log entry giving user the with reason why concrete ticket
    can not be resolved.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4.1:

* Bugfixes:

  - Released resources were de-prioritized by the tag-priority feature
    introduced in v4.  This was fixed, and released resources have again
    higher priority over the non-released resources (with additional
    score 500).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in v4:

* New features:

 - The resource (pool) tags can be specified with an integer priority value, and
   resalloc then assigns the preallocated resources to tickets respecting the
   priority (the resources with higher priority are assigned first).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.7:

* Bugfixes:

  - Added new helper script 'resalloc-check-vm-ip', that is often useful
    inside `cmd_livecheck` command.

  - Re-taken (released) resources are not causing additional allocation
    of resources over the max_prealloc quota.

  - The `resalloc-maint foreach-resource` command doesn't traceback on
    starting resources that don't have any data stored, yet.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.6:

* Bugfixes:

  - A build failure fix for v3.5 on RHEL 7.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.5:

* New features:

  - Many new DB indexes were installed to perform fluently on very
    large ticket/resource sets.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.4:

* New features:

  - The 'resalloc-maint' command got a new sub-command 'foreach-resource'
    that can be used for programatic way of executing commands for each
    running resource.

* Bugfixes:

  - We fixed a bug in calculation of "preallocated" resources; previously
    released resources were counted as free-to-use by anyone - thus also
    pre-allocated.  But these are not useable by anyone, and shouldn't be
    taken as preallocated.

  - We re-added the "host" config option, which is just for backward
    compatibility.  Users still should use 'hostname' preferably.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.3:

* Bugfixes:

  - Large stdout output from `cmd_new` command is properly trimmed, without
    traceback and leftover always-STARTING instance.

  - Better (fixed) logging from AllocWorker.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.2:

* Enhancements:

  - Configurable command `cmd_release` to be run before we mark the
    resource as reusable again.

  - After server restart, schedule all inconsistent resources to be
    terminated.  (mitigates issue#41)

  - Systemd serrver service is restarted upon failure (just in case).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.1:

* Enhancements:

  - Resource Watcher thread doesn't directly terminate resources, but only
    checks periodically for liveness.  The termination task is given to
    Manager thread to avoid races.

  - The Watcher thread has a new environment variable
    RESALLOC_RESOURCE_DATA with base64 encoded output from 'cmd_new'.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New in 3.0:

* New features:

  - Resource "re-using" mechanism was added.  Resources are newly put to
    sandboxes (per ticket sandbox flag), and when the resource is released
    from ticket the resource can be assigned to other (subsequent) ticket
    with the same sandbox flag.

  - Python API; The resalloc.client.Connection constructor now accepts
    'request_survives_server_restart'.  When set to True (default False),
    each XML request network failure is ignored and the request is retried
    till it succeeds.  This allows administrator to do resalloc server
    maintenance, restart it and clients survive without noticing.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
