Here is the install components (default set only) class hierarchy:
From this example the root classes job are:
For a install class the following functions are activated (in the following order by devstack/progs/actions.py):
download()
Performs the main git download (or other download type) to the
application target directory.
configure()
Configures the components files (symlinks, configuration and logging
files…)
pre_install()
Child class specific function that can be used to do anything before
an install (ie set a ubuntu mysql pre-install root password)
install()
Installs distribution packages, python packages (*pip*), sets up
python directories (ie *python setup.py develop*) and any other
child class specific actions.
post_install()
Child class specific function that can be used to do anything after
an install (ie run *nova-manage db sync*)
For those of you that are brave enough to change stack here are some starting points.
Check out conf/stack.ini for various configuration settings applied (branches, git repositories…). Check out the header of that file for how the customized configuration values are parsed and what they may result in.
Check out conf/distros for the YAML files that describe pkgs/cmds/pips for various distributions which are required by the different OpenStack components to run correctly. The versions and pip names listed for each distribution should be the correct version that is known to work with a given OpenStack release.
Check out conf/templates/ for various component specific settings and files. All of these files are templates with sections or text that needs to be filled in by the stack script to become a complete file.
These files may have strings of the format %NAME% where NAME will most often be adjusted to a real value by the stack script.
An example where this is useful is say for the following line:
admin_token = %SERVICE_TOKEN%
Since the script will either prompt for this value (or generate it for you) we can not have this statically set in a configuration file.