New Developer Docs
These were derived from the etherpad we worked on during the PTG. I reworked the info and added some things. Please review and add things if you want. Change-Id: Icb4ddbb6524ed793ad63c22e0dfd8fcc0dccbbf1
This commit is contained in:
@@ -5,5 +5,6 @@ TripleO Contributor Guide
|
||||
:maxdepth: 2
|
||||
:includehidden:
|
||||
|
||||
new_developers
|
||||
contributions
|
||||
check_gates
|
||||
|
||||
138
doc/source/contributor/new_developers.rst
Normal file
138
doc/source/contributor/new_developers.rst
Normal file
@@ -0,0 +1,138 @@
|
||||
Information for New Developers
|
||||
==============================
|
||||
|
||||
The intention of this document is to give new developers some information
|
||||
regarding how to get started with TripleO as well as some best practices that
|
||||
the TripleO community has settled on.
|
||||
|
||||
In general TripleO is a very complex chunk of software. It uses numerous
|
||||
technologies to implement an OpenStack installer. The premise of TripleO was
|
||||
to use the OpenStack platform itself as the installer and API for user
|
||||
interfaces. As such the first step to installing TripleO is to create what is
|
||||
called an `undercloud`. Today this is typically done using an undercloud image
|
||||
which contains all the software necessary to stand up an all-in-one style
|
||||
OpenStack installation.
|
||||
|
||||
Once the `undercloud` is deployed, we use a combination of Mistral and a set of
|
||||
Heat templates, found in the `tripleo-heat-templates` repository, to drive the
|
||||
deployment of an overcloud. Ironic is used to provision hardware and boot an
|
||||
operating system either on baremetal (for real deployments) or on VMs (for
|
||||
development). As of the Pike release we now deploy almost all services in
|
||||
containers on the overcloud. By the end of Queens all services should be
|
||||
containerized and the overcloud image should be reduced to a basic operating
|
||||
system image.
|
||||
|
||||
We are also working on unifying the architecture of the overcloud and
|
||||
undercloud by moving to a containerized undercloud. This allows you to do
|
||||
development on the undercloud using the same Heat templates as are used to
|
||||
deploy the overcloud. This greatly accelerates development iteration cycle
|
||||
speed.
|
||||
|
||||
Repositories that are part of TripleO
|
||||
-------------------------------------
|
||||
|
||||
* tripleo-common:
|
||||
This is intended to be for TripleO libraries of common code including Mistral
|
||||
workflows and actions. Unfortunately it has become a bit overrun with
|
||||
unrelated bits. Work is ongoing to clean this up and split this into
|
||||
separate repositories.
|
||||
|
||||
* tripleo-heat-templates:
|
||||
This contains all the Heat templates necessary to deploy the overcloud (and
|
||||
hopefully soon the undercloud as well).
|
||||
|
||||
* python-tripleoclient:
|
||||
The CLI for deploying TripleO. This contains some logic but remember that we
|
||||
want to call Mistral actions from here where needed so that the logic can be
|
||||
shared with the UI.
|
||||
|
||||
* tripleo-docs:
|
||||
Where these docs are kept. :)
|
||||
|
||||
* tripleo-image-elements:
|
||||
Image elements (snippets of puppet that prepare specific parts of the
|
||||
image) for building the undercloud and overcloud disk images.
|
||||
|
||||
* tripleo-puppet-elements:
|
||||
Puppet elements used to configure and deploy the overcloud. These
|
||||
used during installation to set up the services.
|
||||
|
||||
* puppet-tripleo:
|
||||
Puppet is used to configure the services in TripleO. This repository
|
||||
contains various puppet modules for doing this.
|
||||
|
||||
* tripleo-quickstart:
|
||||
Quickstart is an Ansible driven deployment for TripleO used in CI. Most
|
||||
developers also use this to stand up instances for development as well.
|
||||
|
||||
* tripleo-quickstart-extras:
|
||||
Extended functionality for tripleo-quickstart allowing for end-to-end
|
||||
deployment and testing.
|
||||
|
||||
* tripleo-ui:
|
||||
The web based graphical user interface for deploying TripleO.
|
||||
|
||||
* paunch:
|
||||
This is a library that is used to deploy containers. It is called from the
|
||||
Heat templates during installation to deploy our containerized services.
|
||||
|
||||
* kolla:
|
||||
We use the containers built by the Kolla project for services in TripleO.
|
||||
Any new containers or additions to existing containers should be submitted
|
||||
here.
|
||||
|
||||
* disk-imagebuilder:
|
||||
Disk image builder is used to build our base images for the TripleO
|
||||
deployment.
|
||||
|
||||
Definition of Done
|
||||
------------------
|
||||
|
||||
This is basically a check list of things that you want to think about when
|
||||
implementing a new feature. Especially important is considering how the user
|
||||
interface functions along side the command line interface.
|
||||
|
||||
- Ensure that any new feature is provided through Rest API in form of Mistral
|
||||
actions, workflow or by directly accessing an OpenStack service API.
|
||||
- Ensure that GUI and CLI can both operate this feature through this API
|
||||
- Start your feature work by creating Mistral action or Mistral workflow -
|
||||
defining inputs and outputs. This is necessary so that the CI and UI have
|
||||
feature parity and both use the same API calls to implement a given feature.
|
||||
- Ensure that the continuous integration (CI) is in place and passing, adding
|
||||
coverage to tests if required. See
|
||||
http://specs.openstack.org/openstack/tripleo-specs/specs/policy/adding-ci-jobs.html
|
||||
for more information.
|
||||
- Ensure there are unit tests where possible.
|
||||
- Maintain backwards compatibility with our existing template interfaces from
|
||||
tripleo-heat-templates
|
||||
- New features should be reviewed by cores who have knowledge in that area of
|
||||
the codebase.
|
||||
- One should consider logging and support implications. If you have new logs,
|
||||
would they be available via sosreport.
|
||||
- Error messages are easy to understand and work their way back to the user
|
||||
(stack traces are not sufficient).
|
||||
- Documentation should be updated if necessary. New features need a
|
||||
tripleo-docs patch.
|
||||
- If any new dependencies are used for your feature, be sure they are properly
|
||||
packaged and available in RDO. You can ask on #rdo for help with this.
|
||||
- If a Mistral workflow changes between releases, make version notes so that
|
||||
users know how they might have to update their workflow call. Make sure it's
|
||||
backwards-compatible, or have at least one cycle deprecation period before
|
||||
removing the old way of doing things.
|
||||
|
||||
|
||||
Using the Containerized Undercloud for Development.
|
||||
---------------------------------------------------
|
||||
|
||||
While not yet part of the TripleO distribution, we have a functioning
|
||||
containerized undercloud that we have been using for development purposes.
|
||||
This reuses much of the existing TripleO heat templates, allowing you to do
|
||||
development using this framework instead of a complete overcloud. The
|
||||
iteration time for starting the undercloud via containers is MUCH shorter -
|
||||
typically 15 minutes or less and you could also reduce the services to make it
|
||||
even faster. This is very useful if you are developing heat templates or
|
||||
containerized services.
|
||||
|
||||
Please see the following guide on how to set up a containerized undercloud:
|
||||
https://docs.openstack.org/tripleo-docs/latest/install/containers_deployment/undercloud.html
|
||||
|
||||
Reference in New Issue
Block a user