Richard Jones is our PTL (Project Team Lead) for the Ocata Cycle. Congrats! He wrote up a great summary in the Mailing List.

It was great to catch up with everyone in Barcelona! We had core contributors from 8 companies in attendance and a handful of contributors to discuss and prioritize tasks for this cycle.

This post will summarize what was discussed at each of the working sessions.

Session 1: Keystone Cross-Project
Remove token revocation upon logout and project switch because it caused issues where the user starts a long running task, logs out, and then the token fails authentication. This patch by Eric has landed! There are also long standing issues around K2K support, federated identity, policy issues, and v3 role issues that were discussed.

Session 2: Operator/ Plugin Feedback
Not many operators showed up for this early morning session, but we did get some useful feedback. Companies have a very steep learning curve for writing customization modules for their deployment, especially since Horizon is in a state of flux.

One issue is that they spend a lot of time hacking up an override for something, only to have the process change in the next cycle.

Another issue is that often times their version is several releases behind, and documentation no longer covers the exact steps needed to make a specific change. We don’t have a good solution for how to handle this, because every deployment is different. We can only provide general documentation. It is unfortunate that developers need to do a lot of trial and error with the code. I think if we were able to speak with a lot of deployers, we would be able to come up with some best practices and things to watch out for.

For older versions of Horizon, it was very difficult to customize granular things. Something like adding a new form field to a modal involved a lot of hacking. Examples given to us by an operator was adding a Fixed IP field to the Create Instance workflow or wanting to including custom content in a table cell. Thankfully, Angular addresses those issues. However, we still have improvements to make (e.g. not having to make changes to model files and having a stable enough Angular Launch Instance so we can remove the old workflow code).

Operator would like to pre-populate image panel with their images.

Pagination and filtering still doesn’t work well, which is especially needed for a UI. This is not a problem of Horizon but of the underlying API services which do not all support pagination. It is not a solvable issue at this time, but we can bridge the gap with the OpenStack Searchlight project which has made a lot of headway in this space.

Session 3: Planning

  • Formalize the responsibilities of core members, bug triaging, managing blueprints, team meeting participation, active reviews
  • Write a review checklist of things to look for when reviewing code. Patches should include a reno (release note) to notify operators and deployers of large patch sets that could potentially break their environment, attaching a link to a bug report or blueprint for each patch.
  • Restructure the documentation.
  • Add missing content for how testing setup and enabled files for plugins.
  • Still not generating Javascript docs.
  • Write up more documentation around the Angular work
  • Remove JQuery UI library, only using it for datepicker
  • Add utility library like Underscore or Lodash
  • Reevaluate because the list continues to grow
  • Reevaluate integration testing framework, perhaps have something more lightweight
  • Need to cleanup test suite and make sure we are covering all areas
  • Remove Selenium gate tests

Microversions is a large problem for Horizon to tackle. We started a discussion on this. Microversions are small changes to the API between full releases while maintaining backward compatibility. The plan is to determine the maximum version of the service. Then we can use a local mapping of feature availability to call appropriate API endpoint and switch features on/ off using something similar to requirements.txt (e.g. “> 2.1, != 2.5, < 2.9”).

Session 4: Cross Project Topics
Quotas has always been messy topic. With the Angular redesign, we will readdress this issue and keep in mind to make it easy to plug-in and add/ remove quotas per deployment. We upgraded to Glance v2 at the end of Newton (thanks for the hard work and perseverance, Brad!) but still have some bugs to fix (filtering issue for Admins). We also need to have full Keystone v3 support at some point. The issue of error messaging (another frequently brought up issue) is still up in the air, as it’s more an a service API issue than a Horizon issue. We cannot just spit out whatever the API returns, because it could have sensitive data and is untranslated.

Session 5: AngularJS Topics
Angular Launch Instance wizard is on by default. However, you may still use the old Launch Instance. Set it in LAUNCH_INSTANCE_LEGACY_ENABLED = True and LAUNCH_INSTANCE_NG_ENABLED = False in Old source code will not be removed for several releases (at least until Pike) because it needs to be more stable. It is missing some functionality that the original had and is not extensible in some areas.

We are removing the Django Swift UI. Yay! We are also adding ui-router in Ocata-1 to support nested routing in Angular Swift UI. There are many Angular panels in the pipeline, but not gaining much traction because of lack of reviews. Review please!

Session 6: Priorities


  • Remove Django Swift UI code
  • Include ui-router
  • Fix bug for Glance v2
  • Migration to tox instead of
  • Remove initScope() from actions directive
  • Fix OpenStack logo (went from 3D to 2D)
  • Include profiler dashboard


  • Finish off Angular Identity Panels
  • Finish off Angular Swift Panel
  • Finish off Angular Flavors Panel
  • Document Microversion Plan
  • Extract Javascript Docs
  • Generate boilerplate code for Angular dashboards (like Django’s start dash command) Thanks Shu!!
  • Document horizon framework (registry) and show customization examples

Long term

  • Write up more documentation for the Javascript work
  • Handle quotas in Angular in an extendable way
  • Handle microversions
  • Continue to update any xstatic packages

Session 7: Meetup
We cleaned up the out-of-date blueprints, cutting it down by 50%, we have less than 80 blueprints in Launchpad now. We will follow what other projects do and assign a core member to shepherd the patch and make sure it is on track.

Detailed notes from the Etherpad here.

PSA: Horizon is in desperate need of reviewers! Part of open source development is to not only contribute source code upstream, but also to review the work of others.

If you have any questions or concerns, please feel free to ping me (clu_) on #openstack-horizon. Also, a reminder that Ocata Release Cycle is short (

Til next time,

Join The Discussion

Your email address will not be published. Required fields are marked *