Newton Series Release Notes


Bug Fixes

  • [bug 1618235] User can now delete all characters typed in input search without causing the selected facet to disappear when the last character is deleted.

  • [bug 1635505] Horizon now properly allows to use arrow keys inside of the input search, without triggering a new text search that refreshes the content of the table below.

Other Notes

  • Menu follows the search input position as the user adds more facets


Upgrade Notes

  • The developer enabled files have been moved from openstack_dashboard/enabled to openstack_dashboard/contrib/developer/enabled. To enable them, copy into openstack_dashboard/local/enabled and set DEBUG = True.

Bug Fixes

  • There will no longer be any WARNING messages regarding the developer panels in logs.



Angular actions now should return a promise that resolves with an object structured in a way to indicate what the action did (or didn’t do).

JavaScript can now access the Keystone Token.

Many of Horizons XStatic packages were updated during this cycle.

A Details page for a resource type (e.g. Images) may now use the Angular application-level registry to register views so developers may easily create or extend details views. In this implementation these views are presented as tabs within the Details page.

In an effort to standarize our HTML class naming conventions, we will be updating various class names to use dashes, instead of underscore or camelcasing, to match with Bootstrap’s convention.

Horizon no longer requires Nova (or Glance) to function; it will run as long as keystone is present (for instance, swift-only deployments).

The Images panel now may be configured to use either the legacy or Angular code.

To aid in continued maintenance of Horizon as a themable and customizable framework, the highly customized ‘default’ styles are being dropped in favor of standard Bootstrap styles. The ‘default’ theme will only house scss variable changes going forward.

Angular components now exist to provide simple-to- configure panels and tables, based off of registry information about resources (e.g. Instances).

Modal sizes now inherit from Bootstrap’s theme variables.

We now automatically determine the static folder location for xstatic packages being used by Horizon.

New Features

  • An action-result service provides convenience methods for construction of the result, and for parsing of a resolved object

  • [blueprint admin-neutron-l3-agent] Add support for managing neutron L3 agent hosts. The admin screen for system information now provides links / views to see what routers reside on what hosts. In addition, the admin view of routers now also provides a list of where the router is hosted and the link to see what other routers are sharing the same host.

  • Horizon and Horizon Plugins can access the Keystone Token from JavaScript so that they can make CORS calls directly to other OpenStack Services. This can enable much more responsive UI.

  • Added a new ANGULAR FEATURES dictionary to the settings. This allows simple toggling of new AngularJS features.

  • Added the Scheduler Hints tab to the new Launch Instance workflow to allow adding scheduler hints to an instance at launch. In addition to adding custom key-value pairs, the user can also choose from properties in the glance metadata definitions catalog that have the OS::Nova::Server resource type and scheduler_hints properties target.

  • Added settings support to the angular workflow service so each step in a workflow can specify a boolean setting that must pass in order for the step to be displayed.

  • [blueprint admin-views-filter-first] This blueprint provides a configurable setting to allow operators require admin users to provide a search criteria first before loading data into admin views.

  • [blueprint angular-table-directive] This blueprint provides a way for developers to programatically declare an Angular table vs writing HTML markup. It reduces the boilerplate HTML code. For a basic table, you need to pass in the data and the column configuration into the hz-dynamic-table directive.

  • [blueprint angular-template-overrides] This blueprint provides a way for deployers to use a theme to override HTML fragments used by Angular code in Horizon. For example, to override the launch instance help panel when the ‘material’ theme is used, create openstack_dashboard/themes/material/static/templates/framework /widgets/help-panel/help-panel.html. All of the client side templates are now compiled into a single JavaScript file that is minified and is given as an additional file in the manifest.json file.

  • [blueprint cinder-consistency-groups] This feature adds 2 new tabs to the Project Volumes panel. The first tab will display Consistency Groups, and the second tab will display Consistency Group Snapshots. Consistency Groups (CG) contain existing volumes, and allow the user to perform actions on the volumes in one step. Actions include: create/update/delete CGs, snapshot all volumes in a CG, clone all volumes in a CG, and create a new CG and volumes from a CG snapshot. Policies associated with Consistency Groups exist in the Cinder policy file, and by default, all actions are disabled.

  • [blueprint configurable-boot-sources] Allows administrators to restrict which sources are available to boot from in the Launch Instance modal by adding 4 new settings to LAUNCH_INSTANCE_DEFAULTS (disable_image, disable_instance_snapshot, disable_volume, disable_volume_snapshot).

  • Create from a local file feature is added to both Angular and Django Create Image workflows. It works either in a ‘legacy’ mode which proxies an image upload through Django, or in a new ‘direct’ mode, which in turn implements [blueprint horizon-glance-large-image-upload]. To use the direct mode HORIZON_IMAGES_UPLOAD_MODE setting should be changed to ‘direct’ value along with changing glance-api.conf cors.allowed_origin parameter to the URL from which Horizon is served.

  • Added ability to render angular row actions with additional details that explain the purpose of the action. These are rendered as tiles and are meant to depict the next steps a user might want to take for a given resource.

  • The port-details page has a new tab for managing Allowed Address Pairs. This tab and its features will only be available when this extension is active in Neutron. The Allowed Address Pairs tab will enable creating, deleting, and listing address pairs for the current port.

  • Support a parameter to specify subnet or fixed IP address when creating port.

  • A directive (hz-details) provides the ability to intelligently display a set of views (typically for a Details context).

  • A generic Details display parses the location to determine the resource type, and displays relevant details views for that type.

  • A Descriptor concept allows convenient passing of information that can globally identify an object, for use in generic views and actions.

  • Horizon now has a (non-navigational) route in Django so generic details pages are deep-linked.

  • A shared Django template is now available for use by any Angular page.

  • Adds complete support for Glance v2 so that Horizon no longer depends on having a Glance v1 endpoint in the Keystone catalog. Also provides code compatibility between Glance v1 and v2.

  • Adds a new config value called IMAGES_ALLOW_LOCATION, which allows users to set locations when creating or updating images. Depending on the Glance version, the ability to set locations is controlled by policies and/or configuration values.

  • Nova and Glance are no longer required in order to run Horizon. As long as keystone is present, Horizon will run correctly.

  • the ANGULAR_FEATURES setting now allows for a key images_panel. If set to True, then the Angular Images panel will be used, while the Python version will be used if set to False.

  • Integration tests for Image features may also be toggled in openstack_dashboard/test/integration_tests/horizon.conf using the ‘panel_type’ feature, either set to ‘legacy’ or ‘angular’ to match the enabled panel type.

  • Horizon support for network IP availability feature. Enable Horizon admin network dashboard to be able to display IP availability. Enables 2 columns in the admin network subnets table to display the allocated IPs in a given subnet and unallocated free IPs for each subnet in the network.

  • Neutron network type for Geneve tunneling protocol is now supported.

  • Neutron provider network types for Midonet are now supported. To enable them, specify these network types in supported_provider_types in the configuration file.

  • Neutron provider network configuration now becomes more flexible so that operators can configure various provider network parameters including new network type, segmenatiton ID ranges and so on based on neutron network back-ends they use.

  • Added new setting INTEGRATION_TESTS_SUPPORT, default value is False. This value is used when running compress command, so by default all static assets and html classes used by integration tests are removed from Horizon production build. Integration tests gate job sets this variable to True and recompresses static assets.

  • The hz-resource-table directive takes in a Heat resource name (e.g. ‘OS::Nova::Server’) and uses the Angular registry to provide actions, columns, and summary views.

  • The hz-resource-panel directive takes in a Heat resource name (e.g. ‘OS::Nova::Server’) and displays an appropriate header and allows content to be transcluded to build the panel page.

  • Add a new setting OVERVIEW_DAYS_RANGE. It defines the default date range in the Overview panel meters - either today minus N days (if the value is integer N), or from the beginning of the current month until today (if set to None). This setting is be used to limit the amount of data fetched by default when rendering the Overview panel. The default value is 1, which differs from the past behaviour, since it caused serious lags on large deployments.

  • Modal sizes now inherit their value from theme variables. Two additional sizes are available now for use in Horizon, extra to the standard 3 sizes of Bootstrap Modals, modal-xs and modal-xl.

  • Added the TOKEN_DELETE_DISABLED setting, so that deployers can customise the revocation of a users token on log out.

Known Issues

  • If you set ‘images_panel’ to False for the ANGULAR_FEATURES option (which is not the default) and configure Horizon to use Glance v2, Ramdisk ID and Kernel ID don’t show properly on the “Edit Image” screen.

Upgrade Notes

  • Although it’s not required, it’s best to make your actions return promises with the expected structure.

  • The TEMPLATE_* settings have been replaced with a TEMPLATE dict. This will likely cause issues when porting settings to this version of Horizon. The TEMPLATE_DEBUG setting has been removed and is tied to the DEBUG setting now. A detailed explanation of this dict can be found at

  • The is_authenticated() and is_anonymous() functions in Django OpenStack Auth’s User class are properties when running under Django 1.10, and no longer take a margin parameter.

  • Horizon currently supports both Angular 1.3.x and Angular 1.4.x, but will remove 1.3 support in the future. See Migrating from 1.3 to 1.4

  • The breadcrumb navigation inside the details pages now applies across Horizon. A small change in the logic means that custom_breadcrumb items in the context no longer need to specify the panel name and link. See [blueprint navigation-improvements]

  • The final django TEMPLATE_LOADERS configuration will now be generated from TEMPLATE_LOADERS, CACHED_TEMPLATE_LOADERS and ADD_TEMPLATE_LOADERS settings. See the settings documentation for more information.

  • It is no longer necessary to include the version suffix into OPENSTACK_KEYSTONE_URL setting. Thanks to a recent update of django-openstack-auth library as of 2.3.0 release, Horizon will append the proper version suffix to the URL based on the value stored inside OPENSTACK_API_VERSIONS[‘identity’] setting.

  • (optional) Use the common Angular template as the basis of any Angular pages to minimize boilerplate code and to ensure that we use similar features/framing.

  • The OPENSTACK_IMAGE_FORMATS variable must be added to the REST_API_REQUIRED_SETTINGS setting in

  • If the ‘default’ theme is still required for legacy overrides to function, simply copy the styles in the ‘default’ theme into a pre-existing theme or create a new custom theme.

  • The status_unknown table row class has been replaced with the default bootstrap warning class.

  • Many Javascript files have moved to new locations in the horizon/lib static folder. Previously the locations of some files were hard-coded but now the locations are determined automatically based on the xstatic package name.

Deprecation Notes

  • HORIZON_IMAGES_ALLOW_UPLOAD setting is deprecated and should be gradually replaced with HORIZON_IMAGES_UPLOAD_MODE setting.

  • Router rules is a horizon extension provided by Big Switch Networks. As part of the horizon-vendor-split work, we drop the extension from upstream horizon. It is now available as a separate plugin at

  • LBaaS v1 dashboard is now deprecated and will be removed in Ocata release. LBaaS v1 feature was removed from neutron-lbaas in Ocata and this functionality in Horizon is only for backward compatibility so that operators can upgrade Horizon first. Note that the Dashboard support for LBaaS v2 is provided as a Horizon plugin via neutron-lbaas-dashboard project.

  • All instances of HTML class ‘d3_pie_chart_usage’ to ‘pie-chart-usage’ All instances of HTML class ‘d3_pie_chart_distribution’ to ‘pie-chart-distribution’

  • The ‘default_ipv4_subnet_pool_label’ and ‘default_ipv6_subnet_pool_label’ options were deprecated in the Mitaka release and are no longer valid in the Newton release. Starting with Mitaka you can create one default subnet pool per address family through the Neutron API. These subnet pools will automatically show up in the subnet pool list using the name of the pool as label.

  • Inline Edit functionality for Horizon tables is now deprecated and will be removed in Horizon P (12.0) The functionality was removed from the following tables. Admin Volume Types table, Admin Metadata Definitions table, Identity Projects table and Identity Users table

  • Fullscreen Modals have been deprecated in favor of modal-xl. Currently, it is set to 95% of the viewable screen width.

Security Issues

  • Making Keystone Tokens available to JavaScript slightly increases the risk of a Token being captured. If you don’t need this functionality, it can be disabled by setting the following option in your local_settings: ENABLE_CLIENT_TOKEN = False

Bug Fixes

  • Hardcoded admin role is replaced with RBAC policy check in panels. Now users access to the panels is defined by policies and not user roles. The change affected the Admin dashboard and its panels (Overview, Hypervisors, Instances and Metadata Definitions).

  • LP-1585682 is fixed which grants Horizon the ability to properly version Keystone webpath endpoints (URLs like http://<hostip>/identity instead of http://<hostip>:5000).

Other Notes

  • XStatic-Angular updated from to

  • XStatic-Angular-FileUpload updated from to

  • XStatic-Bootstrap-SCSS updated from to

  • XStatic-Bootswatch updated from to

  • XStatic-Font-Awesome updated from to

  • XStatic-Jasmine updated from to

  • XStatic-MDI updated from to

  • XStatic-Rickshaw updated from to

  • XStatic-Smart-Table updated from to

  • Glance v2 doesn’t support the copy-from feature, so this feature is disabled in Horizon when using Glance v2.