We need a graphical user interface that will support deploying OpenStack using TripleO.
Tuskar-UI, the only currently existing GUI capable of TripleO deployments, has several significant issues.
Firstly, its back-end relies on an obsolete version of the Tuskar API, which is insufficient for complex overcloud deployments.
Secondly, it is implemented as a Horizon plugin and placed under the Horizon umbrella, which has proven to be suboptimal, for several reasons:
The placement under the Horizon program. In order to be able to develop the Tuskar-UI, one needs deep familiarity with both Horizon and TripleO projects. Furthermore, in order to be able to approve patches, one needs to be a Horizon core reviewer. This restriction reduces the number of people who can contribute drastically, as well as makes it hard for Tuskar-UI developers to actually land code.
The move to Angular JS (version 1). In an attempt to address the issues listed above, the Horizon community decided to rewrite it in Angular JS. However, instead of doing a total rewrite, they opted for a more gradual approach, resulting in even more middle layers (the original Django layer turned into an API for Angular based front end). Although the intention is to eventually get rid of the unwanted layers, the move is happening very slowly. In addition, this rewrite of Horizon is to AngularJS version 1, which may soon become obsolete, with version 2 just around the corner. This probably means another complete rewrite in not too distant future.
Packaging issues. The move to AngularJS brought along a new set of issues related to the poor state of packaging of nodejs based tooling in all major Linux distributions.
In order to address the need for a TripleO based GUI, while avoiding the issues listed above, we propose introducing a new GUI project, TripleO UI, under the TripleO program.
As it is a TripleO specific UI, TripleO GUI will be placed under the TripleO program, which will bring it to attention of TripleO reviewers and allow TripleO core reviewers to approve patches. This should facilitate the code contribution process.
TripleO UI will be a web UI designed for overcloud deployment and management. It will be a lightweight, independent client-side application, designed for flexibility, adaptability and reusability.
The development stack will consist of ReactJS and Flux. We will use ReactJS to implement the web UI components, and Flux for architecture design.
Due to the packaging problems described above, we will not provide any packages for the application for now. We will simply make the code available for use.
The alternative is to keep developing Tuskar-UI under the Horizon umbrella. In addition to all the problems outlined above, this approach would also mean a complete re-write of Tuskar-UI back-end to make it use the new tripleo-common library.
This proposal introduces a brand new application; all the standard security concerns which come with building a client-side web application apply.
Other End User Impact¶
We plan to build a standalone web UI which will be capable of deploying OpenStack with TripleO. Since as of now no such GUIs exist, this can be a huge boost for adoption of TripleO.
The proposed technology stack, ReactJS and Flux, have excellent performance characteristics. TripleO UI should be a lightweight, fast, flexible application.
Other Deployer Impact¶
Right now, development on Tuskar-UI is uncomfortable for the reasons detailed above. This proposal should result in more comfortable development as it logically places TripleO UI under the TripleO program, which brings it under the direct attention of TripleO developers and core reviewers.
<TBD person with JS & CI skills>
This is a general proposal regarding the adoption of a new graphical user interface under the TripleO program. The implementation of specific features will be covered in subsequent proposals.
We are dependent upon the creation of the TripleO REST API, which in turn depends on the tripleo-common library containing all the functionality necessary for advanced overcloud deployment.
Alternatively, using Mistral to provide a REST API, instead of building a new API, is currently being investigated as another option.
TripleO UI should be thoroughly tested, including unit tests and integration tests. Every new feature and bug fix should be accompanied by appropriate tests.
The TripleO CI should be updated to test the TripleO UI.
TripleO UI will have to be well-documented and meet OpenStack standards. We will need both developer and deployment documentation. Documentation will live in the tripleo-docs repository.
 https://github.com/openstack/ironic-webclient  https://review.openstack.org/#/c/230432  http://specs.openstack.org/openstack/tripleo-specs/specs/mitaka/tripleo-overcloud-deployment-library.html  https://facebook.github.io/react/  https://facebook.github.io/flux/