=======================
Horizon 8.0.0 "Liberty"
=======================

.. Note::

  OpenStack moved to semver during this release cycle. The previous release
  was 2015.1 "Kilo".


Key New Features
================

* A new network topology - The network topology diagram has been replaced with
  an interactive graph containing collapsible networks, and scales far better
  in large deployments
  (https://blueprints.launchpad.net/horizon/+spec/curvature-network-topology).

* Plugin improvements - Horizon auto discovers JavaScript files for inclusion,
  and now has mechanisms for pluggable SCSS and Django template overrides.

* Compute (Nova)

  - Support for shelving and unshelving of instances
    (https://blueprints.launchpad.net/horizon/+spec/horizon-shelving-command).
  - Support for v2 block device mapping, falling back to v1 when unavailable
    (https://blueprints.launchpad.net/horizon/+spec/horizon-block-device-mapping-v2).

* Networking (Neutron)

  - Added support for subnet allocation via subnet pools
    (https://blueprints.launchpad.net/horizon/+spec/neutron-subnet-allocation).
  - Added actions to easily associate LBaaS VIP with a floating IP
    (https://blueprints.launchpad.net/horizon/+spec/lbaas-vip-fip-associate).

* Images (Glance)

  - The metadata editor has been updated with AngularJS
    (https://blueprints.launchpad.net/horizon/+spec/angularize-metadata-update-modals).
  - Compute images metadata can now be edited from the Project dashboard, using
    the new metadata editor
    (https://blueprints.launchpad.net/horizon/+spec/project-images-metadata).

* Block Storage (Cinder)

  - Enabled support for migrating volumes
    (https://blueprints.launchpad.net/horizon/+spec/volume-migration).
  - Volume types can be now edited, and include description fields
    (https://blueprints.launchpad.net/horizon/+spec/volume-type-description).

* Orchestration (Heat)

  - Improvements to the heat topology, making more resources identifiable
    where previously they had no icons and were displayed as unknown resources
    (https://blueprints.launchpad.net/horizon/+spec/heat-topology-display-improvement).

* Data Processing (Sahara)

  - Unified job interface map. This is a human readable method for passing in
    configuration data that a job may require or accept
    (https://blueprints.launchpad.net/horizon/+spec/unified-job-interface-map-ui).
  - Added editing capabilities for job binaries
    (https://blueprints.launchpad.net/horizon/+spec/allow-editing-of-job-binaries).
  - Added editing capabilities for data sources
    (https://blueprints.launchpad.net/horizon/+spec/allow-editing-of-data-sources).
  - Added editing capabilities for job templates
    (https://blueprints.launchpad.net/horizon/+spec/data-processing-edit-templates).
  - Exposed event log for clusters
    (https://blueprints.launchpad.net/horizon/+spec/sahara-event-log).
  - Added support for shell job types
    (https://blueprints.launchpad.net/horizon/+spec/sahara-shell-action-form).

* Databases (Trove)

  - Added initial support for database cluster creation and management.
    Vertica and MongoDB are currently supported
    (https://blueprints.launchpad.net/horizon/+spec/database-clustering-support).

* Identity (Keystone)

  - Added mapping for Identity Provider and Protocol specific WebSSO
    (https://github.com/openstack/horizon/commit/3b4021c0ad0e8d7b10aa8c2dcd8c13a5717c450c).
  - Configurable token hashing
    (https://github.com/openstack/django_openstack_auth/commit/ece924a79d27ede1a8475d7f98e6d66bc3cffd6c
    and
    https://github.com/openstack/horizon/commit/48e651d05cbe9366884868c5331d49a501945adc).

* Horizon (internal improvements)

  - Full support for translation in AngularJS, along with simpler tooling
    (https://blueprints.launchpad.net/horizon/+spec/angular-translate-makemessages).
  - Added Karma for JavaScript testing
    (https://blueprints.launchpad.net/horizon/+spec/karma).
  - Added ESLint for JavaScript linting, using the eslint-config-openstack
    rules
    (https://blueprints.launchpad.net/horizon/+spec/jscs-cleanup).
  - Horizon now supports overriding of existing Django templates
    (https://blueprints.launchpad.net/horizon/+spec/horizon-theme-templates).
  - JavaScript files are now automatically included
    (https://blueprints.launchpad.net/horizon/+spec/auto-js-file-finding).


Upgrade Notes
=============

* Django 1.8 is now supported, and Django 1.7 is our minimum supported version
  (https://blueprints.launchpad.net/horizon/+spec/drop-django14-support).

* Database-backed sessions will likely not persist across upgrades due to a
  change in their structure
  (https://github.com/openstack/django_openstack_auth/commit/8c64de92f4148d85704b10ea1f7bc441db2ddfee
  and
  https://github.com/openstack/horizon/commit/ee2771ab1a855342089abe5206fc6a5071a6d99e).

* Horizon no longer uses QUnit in testing, and it has been removed from our
  requirements
  (https://blueprints.launchpad.net/horizon/+spec/replace-qunit-tests-with-jasmine).

* Horizon now has multiple configuration options for the default web URL
  (``WEBROOT``), static file location (``STATIC_ROOT``) and static file URL
  (``STATIC_URL``) in its settings files.

* Themes have moved location from ``openstack_dashboard/static/themes``, to
  ``openstack_dashboard/themes``. Paths may need to be updated accordingly.
  Furthermore, Horizon is aligning closer with Bootstrap markup, and themes
  should be built around this ideology; see the top bar and side navigation for
  details.

* The deprecated ``OPENSTACK_QUANTUM_NETWORK`` configuration option has been
  removed. If you still use it, you need to replace it with
  ``OPENSTACK_NEUTRON_NETWORK``.

* There is now an ``OPENSTACK_NOVA_EXTENSIONS_BLACKLIST`` option in the
  settings, to disable selected extensions for performance reasons
  (https://github.com/openstack/horizon/commit/18f4b752b8653c9389f8b0471eccaa0659707ebe).

* Trove and Sahara panels now reside in ``openstack_dashboard/contrib``. This
  is to provide separation for reviews provided mostly by the service teams. In
  the future, these panels may become plugins rather than being kept in Horizon
  (https://blueprints.launchpad.net/horizon/+spec/plugin-sanity).

* Horizon requires both a ``volume`` and ``volumev2`` endpoint for Cinder, even
  if only using v2.

* Many JavaScript files and most notably the base page template
  (``horizon/templates/base.html``) have moved from the framework portion of
  the repo (``horizon``) to the application side (``openstack_dashboard``) to
  better separate the framework from the application.
