Merge "Update contributing documentation"

This commit is contained in:
Jenkins 2017-08-31 17:15:57 +00:00 committed by Gerrit Code Review
commit 7650f7efbd
4 changed files with 52 additions and 189 deletions

View File

@ -1,218 +1,79 @@
============
Contributing
============
++++++++++++
.. include:: ../../CONTRIBUTING.rst
Technical Overview
==================
An overview of a typical deployment using bareon is given below:
.. image:: diagrams/technical_overview.svg
#. Initiate boot via nova or heat, passing in a reference to the
``deploy_config`` and any ``driver_actions`` which should be performed
#. Request IP from neutron
#. Call ironic to begin deployment
#. Configure TFTP server
#. Cache images (deploy kernel & ramdisk, filesystem,
cloud_default_deploy_config, deploy_config and
driver_actions) and write provision script for bareon
#. Update MAC and PXE config
#. Set boot device to PXE
#. Reboot target node
#. Target node gets IP
#. PXE boot image containing bareon
#. Bareon calls back to tell Ironic that it is ready
#. Ironic SFTPs across the provision script and forwards the rsync server
port by SSH (in secure mode)
#. Provisioning is triggered by SSH, eg:
``provision --data_driver ironic --deploy_driver rsync``
#. Partition and clean local storage, mount partitions, rsync filesystem
across, write fstab, configure bootloader and unmount partitions
#. Run driver actions over SSH, eg update BIOS, SFTP file across from Swift
#. Set boot device to local disk
#. Reboot the node
------------------
Functional testing
------------------
==================
Overview
--------
Bareon Agent functional testing performed against a kernel/ramdisk
built on CentOS minimal. By default the image is built as part of tox command,
using DIB. Option to use pre-built images available.
Tests are written using unittest2 and Functional Test Framework
(ramdisk-func-test). The framework itself uses libvirt (python bindings) to
configure network, spawn a slave VM running ramdisk. In future we may add
support for baremetal slaves. Framework resides in a standalone repo.
Functional tests, as well as commonly changed parts of test data (node
templates, etc) are located in bareon tree, so that each
pull request introducing the new functionality to bareon can also carry
corresponding functional tests update.
(ramdisk-func-test). The framework uses libvirt (python bindings) to
configure a network, spawn a slave VM and run test commands.
The framework resides in a standalone repo, however the functional tests,
as well as commonly changed parts of test data (node templates, etc) are located
in the bareon repo, so that these are updated when new functionality is added.
How to run tests (Devstack / CentOS 7.1 environment)
----------------------------------------------------
- Build the devstack environment
- Install additional dependencies:
Follow the instructions on Running Bareon on Devstack upto and including
"Install Bareon and build images".
.. code-block:: console
$ sudo yum install yum-utils.noarch
cd ~/bareon
sudo yum install -y ansible
ansible-playbook bareon/tests_functional/ansible/bootstrap_func_tests.yaml
sudo NO_DIB=1 tox -e func
- Disable GPG check at the epel repo:
::
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
- Install ramdisk-func-test from source:
.. code-block:: console
$ cd /opt/stack/
$ git clone git@github.com:openstack/ramdisk-func-test.git
$ cd ramdisk-func-test
$ sudo python setup.py develop
- Configure ramdisk-func-test framework
.. code-block:: console
# Create config
$ sudo mkdir /etc/ramdisk-func-test
$ sudo chown $USER:$USER /etc/ramdisk-func-test
$ touch /etc/ramdisk-func-test/ramdisk-func-test.conf
# Open port for the Ironic API stub
$ sudo iptables -I INPUT -p tcp --dport 8011 -j ACCEPT
# Configure rsync daemon
$ python ramdisk-func-test/tools/setup_rsync.py
- Get bareon source:
.. code-block:: console
$ cd /opt/stack/
$ git clone git@github.com:openstack/bareon.git
- Run tests
.. code-block:: console
$ cd /opt/stack/bareon
# Build image & run all tests
$ tox
# Build image & run only functional tests
$ tox -efunc
# Run only functional tests without image rebuild (assuming you already
# have images at /tmp/rft_image_build)
$ NO_DIB=1 tox -efunc
# Run only functional tests without syncing golden images with server
$ NO_SYNC=1 tox -efunc
# Run a single functional test:
$ tox -efunc bareon/tests_functional/test_data_retention.py::DataRetentionTestCase::test_clean_policy
How to run tests (Clean CentOS environment, e.g. CI slave)
----------------------------------------------------------
- Provision CI slave
- Install tox, and other dependencies:
.. code-block:: console
$ sudo pip install tox
$ sudo yum install yum-utils.noarch
$ sudo yum install dib-utils # Use newt-provided noarch rpm
- If local KVM is going to be used to run slaves (nested virtualization)
.. note:: Currently this is a required step (no support for remote qemu)
.. code-block:: console
$ sudo yum install libvirt
$ sudo yum install libvirt-python
$ echo 'auth_unix_ro = "none"' | sudo tee -a /etc/libvirt/libvirtd.conf
$ echo 'auth_unix_rw = "none"' | sudo tee -a /etc/libvirt/libvirtd.conf
$ /bin/systemctl start libvirtd.service
- Install ramdisk-func-test from source:
.. code-block:: console
$ cd /opt/stack/
$ git clone git@github.com:openstack/ramdisk-func-test.git
$ cd ramdisk-func-test
# If this job is triggered by pull request to ramdisk-func-test, checkout
# PR source branch git checkout <A branch passed by trigger>
# Otherwise use master
$ sudo python setup.py develop
- Configure ramdisk-func-test framework
.. code-block:: console
# Create config
$ sudo mkdir /etc/ramdisk-func-test
$ sudo chown $USER:$USER /etc/ramdisk-func-test
$ cp ~/ramdisk-func-test/etc/ramdisk-func-test/ramdisk-func-test.conf.sample \
/etc/ramdisk-func-test/ramdisk-func-test.conf
# Open port for the Ironic API stub
$ sudo iptables -I INPUT -p tcp --dport 8011 -j ACCEPT
# Configure rsync daemon
$ cd ramdisk-func-test && sudo python tools/setup_rsync.py
- Get bareon source:
.. code-block:: console
$ cd /opt/stack/
$ git clone git@github.com:openstack/bareon.git
# If this job is triggered by pull request to bareon, checkout PR source branch
$ git checkout <A branch passed by trigger>
# Otherwise use master
$ git checkout newt/kilo
- Configure image build environment If needed (example below). Otherwise default is used.
- Run all tests
.. code-block:: console
$ cd ~/bareon
$ tox
.. note::
By default each time the tests are ran, the bareon images are built and the golden images
fetched (providing they do not currently exist). To suppress this behaviour set environment
variables ``NO_DIB`` for the bareon images and ``NO_SYNC`` for the golden images.
Customizing image build environment
-----------------------------------
A default environment file could be found at
bareon/tests_functional/image_build/centos_minimal_env.sh
You can override these with your own environment. To run tests using a custom
You can override these with your own environment. To run the tests using a custom
environment:
.. code-block:: console
$ export BUILD_ENV=/path/to/my_bareon_env.sh
Using pre-built images
----------------------
- Make sure images are at /tmp/rft_image_build and named initramfs and vmlinuz
- Make sure the fuel_key is at /tmp/rft_image_build
- Use the following command to run tests:
.. code-block:: console
$ cd ~/bareon
$ NO_DIB=1 tox
Updating golden images
----------------------
According to the https://bugs.launchpad.net/fuel/+bug/1549368 golden images
are hosted at http://images.fuel-infra.org/rft_golden_images/
To update existing golden images you need to put them on two hosts. Make sure
you have the key and proper ssh config.
.. code-block:: console
$ cat ~/.ssh/config
Host fuel-infra-images
HostName seed-*.fuel-infra.org
User images
identityfile ~/.ssh/golden_images_key_rsa
$ cd /tmp/rft_golden_images
$ rsync -av --progress . images@seed-cz1.fuel-infra.org:/var/www/images/rft_golden_images/ &
$ rsync -av --progress . images@seed-us1.fuel-infra.org:/var/www/images/rft_golden_images/ &

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 126 KiB