fuel-docs/devdocs/develop/quick_start.rst
Alexander Adamov 4cc7d8104a Moving fuel-web docs to 'devdocs' subfolder
Change-Id: I685cee5579494921e91a1efcc264c594c5f23248
2016-02-10 13:57:03 +02:00

4.3 KiB
Raw Blame History

Fuel Development Quick-Start

If you are interested in contributing to Fuel or modifying Fuel for your own purposes, this short guide should get you pointed to all the information you need to get started.

If you are new to contributing to OpenStack, read through the “How To Contribute” page on the OpenStack wiki. See: How to contribute.

For this walk-through, lets use the example of modifying an option to the “new environment wizard” in Fuel (example here: https://review.openstack.org/#/c/90687/1). This enhancement required modification to three files in the fuel-web repository:

fuel-web/nailgun/static/translations/core.json
fuel-web/nailgun/static/js/views/dialogs.jsx
fuel-web/nailgun/static/templates/dialogs/create_cluster_wizard/storage.html

In order to add, test and commit the code necessary to implement this feature, these steps were followed:

  1. Create a Fuel development environment by following the instructions found here: Fuel Development Environment </devdocs/develop/env>.

  2. In your development environment, prepare your environment for Nailgun unit tests and Web UI tests by following the instructions found here: Nailgun Dev Environment </devdocs/develop/nailgun/development/env>. Be sure to run the tests noted in each section to ensure your environment confirms to a known good baseline.

  3. Branch your fuel-web checkout (see Gerrit Workflow for more information on the gerrit workflow):

    cd fuel-web
    git fetch --all;git checkout -b vcenter-wizard-fix origin/master
  4. Modify the necessary files (refer to Fuel Architecture </devdocs/develop/architecture> to understand how the components of Fuel work together).

  5. Test your Nailgun changes:

    cd fuel-web
    ./run_tests.sh --no-webui
    ./run_tests.sh --flake8
    ./run_tests.sh --webui
  6. You should also test Nailgun in fake UI mode by following the steps found here: running-nailgun-in-fake-mode

  7. When all tests pass you should commit your code, which will subject it to further testing via Jenkins and Fuel CI. Be sure to include a good commit message, guidelines can be found here: Git Commit Messages.:

    git commit -a
    git review
  8. Frequently, the review process will suggest changes be made before your code can be merged. In that case, make your changes locally, test the changes, and then re-submit for review by following these steps:

    git commit -a --amend
    git review
  9. Now that your code has been committed, you should change your Fuel ISO makefile to point to your specific commit. As noted in the Fuel Development documentation </devdocs/develop/env>, when you build a Fuel ISO it pulls down the additional repositories rather than using your local repos. Even though you have a local clone of fuel-web holding the branch you just worked on, the build script will be pulling code from git for the sub-components (Nailgun, Astute, OSTF) based on the repository and commit specified in environment variables when calling “make iso”, or as found in config.mk. You will need to know the gerrit commit ID and patch number. For this example we are looking at https://review.openstack.org/#/c/90687/1 with the gerrit ID 90687, patch 1. In this instance, you would build the ISO with:

    cd fuel-main
    NAILGUN_GERRIT_COMMIT=refs/changes/32/90687/1 make iso
  10. Once your ISO build is complete, you can test it. If you have access to hardware that can run the KVM hypervisor, you can follow the instructions found in the Devops Guide </devdocs/devops> to create a robust testing environment. Otherwise you can test the ISO with Virtualbox (the download link can be found at https://software.mirantis.com/)

  11. Once your code has been merged, you can return your local repo to the master branch so you can start fresh on your next commit by following these steps:

    cd fuel-web
    git remote update
    git checkout master
    git pull