Launch Instance Redesign

Registered by Travis Tripp on 2014-11-25

Summary
=======
This is a redesign of the launch instance form which will incorporate the UX collaboration done in the community before during and after the Kilo design summit. It will be based on angular and will incorporate many aspects of the development previously done by Maxime Vidori and will be jointly developed by HP, eNovance, and Intel. It will also track the ongoing angular discussions and changes happening in Horizon.

Motivation
========
Launching an instance is often one of the first touch points that new users have with OpenStack. The current launch instance form has been received poorly by new users and causes OpenStack to be unapproachable. We want to enable a more modern UI that is also more end-consumer friendly.

Description
=========
The launch instance workflow will include a modern layout, access to enhanced descriptions, and an improved help system.

We will break it out into multiple pieces and patches, starting with a reusable angular based wizard. Additional potential breakouts will be a new reusable table format design. Each step may be broken into separate patches as well. We'll do our best to create easy to review code, which may mean multiple dependent patches.

The initial revision will only add a few incremental features over current functionality:
 * Add a network from within the launch wizard
 * Provide easy access to additional descriptive information about flavors, images, and volumes. In Juno, a metadata catalog was added to Glance which provides the ability for rich information to be looked up about the properties on things like flavors, images, and volumes. For example, a flavor may have specific information about the virtual cpu topology it exposes or an image may set specific shutdown behavior. This information, along with a description of it will be available to users by leveraging this catalog.

This was discussed in numerous sessions at the Kilo summit:

Links to discussions at summit:
UX discussion: https://etherpad.openstack.org/p/kilo-horizon-ux
Contributors meetup: https://etherpad.openstack.org/p/kilo-horizon-contributors-meetup

UX
===

The design has been done with the community and will be continued to be iterated on as necessary.

Wireframes, Mocks, Videos and UI Markup
---------------------------------------------------------
The user experience has been mocked up through many rounds of iteration with the community as well as multiple formal usability studies:

http://invis.io/SG1YAG2WC

The iteration in the community has led to the following concepts being incorporated:

 * Be approachable to new users with information and help readily available
 * Ease of navigation between sections of information
 ** Support a layout that will allow deployers to add / remove steps in the future
 * Allow immediate launch as soon as the minimal possible information is set
 * Provide quick access to advanced settings for advanced users
 * Support adding networks as part of launch

Testing
======
Reviewers will be able to pull the patch from Gerritt. Initially, we may provide a private URL for them to access as it is developed. Eventually, the current Launch Instance button will be wired to launch the new workflow.

Outside Dependencies
==================
Is this functionality already supported in other services? Yes. If landed in Kilo, the wizard may be updated to also take advantage of the Glance elasticsearch capability being developed.

List the appropriate API calls and if they are extensions or base API functionality. The below are all the existing APIs that are base functionality which will be used.

api.glance.image_list_detailed
api.glance.metadefs_namespace_get
api.glance.metadefs_namespace_list
api.cinder.volume_list
api.cinder.volume_snapshot_list
quotas.tenant_quota_usages
api.nova.availability_zone_list
api.nova.tenant_absolute_limits
api.nova.keypair_list
api.nova.keypair_create
api.network.security_group_list
api.neutron.network_list_for_tenant
api.neutron.network_create
api.neutron.subnet_create
api.neutron.subnet_list
api.neutron.port_list
api.nova.server_create

Requirements Update Required
========================
Angular 1.3.7
Jasmine 2.x
Angular-Bootstrap added
Others as determined by angular discussions happening in the community.

Doc Impact
=========
This should describe any changes to Horizon documentation that will be required. This could include:
  * settings file changes that will be required
  * changes to default behaviors
  * any deprecation or obsolescence notices

Only docs that have screenshots or discussion of the current workflow should be affected.

TO ENABLE IN KILO:

# Toggle LAUNCH_INSTANCE_LEGACY_ENABLED and LAUNCH_INSTANCE_NG_ENABLED to
# determine the experience to enable. Set them both to true to enable
# both.

LAUNCH_INSTANCE_LEGACY_ENABLED = True
LAUNCH_INSTANCE_NG_ENABLED = True

Blueprint information

Status:
Complete
Approver:
David Lyle
Priority:
High
Drafter:
Travis Tripp
Direction:
Approved
Assignee:
Travis Tripp
Definition:
Approved
Series goal:
Accepted for kilo
Implementation:
Implemented
Milestone target:
milestone icon 2015.1.0
Started by
Travis Tripp on 2014-11-25
Completed by
David Lyle on 2015-03-19

Related branches

Sprints

Whiteboard

Note: Some design and collaboration across companies is being tracked here: See here: https://etherpad.openstack.org/p/launch-instance-workpad

Gerrit topic: https://review.openstack.org/#q,topic:bp/launch-instance-redesign,n,z

Addressed by: https://review.openstack.org/141273 -- merged
    WIP REST API for create instance angular front end

Addressed by: https://review.openstack.org/142269 -- abandoned
    Setup launch instance wizard framework

Addressed by: https://review.openstack.org/142526 -- merged
    Update angular to 1.3.7

Addressed by: https://review.openstack.org/146934 -- merged
    WIP Donut chart directive

Addressed by: https://review.openstack.org/147393 -- merged
    WIP Re-designed and Angularized tables

Addressed by: https://review.openstack.org/151313 -- abandoned
    WIP REST API to support create instance angular (Neutron)

Addressed by: https://review.openstack.org/151468 -- merged
    Glance Rest API for Angular Front End

Addressed by: https://review.openstack.org/151716 -- merged
    WIP Cinder REST API for angular front end

Addressed by: https://review.openstack.org/151745
    Metadata display widget

Addressed by: https://review.openstack.org/136437 -- merged
    Refactor, customization and fixes of Metadata Widget

Addressed by: https://review.openstack.org/143444 -- merged
    Metadata widget support for default values

Gerrit topic: https://review.openstack.org/#q,topic:angularServiceNeutron,n,z

Addressed by: https://review.openstack.org/152822 -- abandoned
    basic angular-based launch instance wizard

Addressed by: https://review.openstack.org/134250
    WIP Angular alert/messaging service

Addressed by: https://review.openstack.org/155371 -- merged
    WIP Transfer tables

Addressed by: https://review.openstack.org/156359 -- merged
    Base launch instance wizard

Addressed by: https://review.openstack.org/156785
    Enabling auto-focus on first form element

Addressed by: https://review.openstack.org/157128 -- merged
    Base dashboard Jasmine framework

Addressed by: https://review.openstack.org/157258 -- merged
    Network Rest API for Angular Front End

Addressed by: https://review.openstack.org/157656
    Trapping focus

Gerrit topic: https://review.openstack.org/#q,topic:bp/instance-details-redesign,n,z

Addressed by: https://review.openstack.org/157848 -- merged
    Angular Filter files

Gerrit topic: https://review.openstack.org/#q,topic:service_catalog_rest,n,z

Addressed by: https://review.openstack.org/157675 -- merged
    Add service catalog get for keystone REST API

Addressed by: https://review.openstack.org/158004
    WIP Directive to allow editing of table values

Addressed by: https://review.openstack.org/158072 -- merged
    Nova Flavor Server Extensions Rest APIs - Angular

Addressed by: https://review.openstack.org/158093 -- abandoned
    Adding Advanced step to base launch instance wizard

Gerrit topic: https://review.openstack.org/#q,topic:demo/focus-trap,n,z

Addressed by: https://review.openstack.org/158819 -- merged
    Angular-based Modal Wait Spinner Widget

Addressed by: https://review.openstack.org/158867 -- merged
    REST API to support create instance angular (Neutron).

Addressed by: https://review.openstack.org/158929 -- merged
    Launch Instance Model

Addressed by: https://review.openstack.org/158934 -- merged
    Launch Instance Step - Select Source

Addressed by: https://review.openstack.org/158945 -- merged
    Launch Instance Step - Select Flavor

Addressed by: https://review.openstack.org/158949 -- merged
    Launch Instance Step - Access and Security

Addressed by: https://review.openstack.org/158950 -- merged
    Launch Instance Step - Network

Addressed by: https://review.openstack.org/158953 -- merged
    Launch Instance Step - Select Source

Addressed by: https://review.openstack.org/157466 -- merged
    Refactor of Metadata Widget

Gerrit topic: https://review.openstack.org/#q,topic:158936,n,z

Addressed by: https://review.openstack.org/159541 -- merged
    Warning popover in transfer tables

Addressed by: https://review.openstack.org/160093 -- merged
    REST Angular for Cinder Fix

Addressed by: https://review.openstack.org/160221 -- merged
    WIP - Launch instance - common style

Addressed by: https://review.openstack.org/160555 -- merged
    Updated Wizard Help Panel Design

Gerrit topic: https://review.openstack.org/#q,topic:modal_wait_spinner_demo,n,z

Addressed by: https://review.openstack.org/162009 -- abandoned
    Add callback to allow controller notification of allocation change

Addressed by: https://review.openstack.org/155420 -- DO NOT MERGE (DEMO)
    Demo for transfer tables and basic table

Addressed by: https://review.openstack.org/163879 -- abandoned
    Add 'decode' Angular filter

Addressed by: https://review.openstack.org/164287
    upstream deltas needed for neutron api

Addressed by: https://review.openstack.org/164303
    Launch Instance Step - Key Pair Import

Addressed by: https://review.openstack.org/164359
    Launch Instance - Optional Network Enabled

Gerrit topic: https://review.openstack.org/#q,topic:bug/1432769,n,z

Gerrit topic: https://review.openstack.org/#q,topic:bug/1432810,n,z

Gerrit topic: https://review.openstack.org/#q,topic:bug/1432401,n,z

Addressed by: https://review.openstack.org/172602
    WIP Angular alert service - add auto dismiss

Addressed by: https://review.openstack.org/173562
    Angular alert service - refactor use

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.