.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. (c) OPNFV, Dell EMC and others.

===========================
StorPerf Installation Guide
===========================

OpenStack Prerequisites
===========================
If you do not have an Ubuntu 16.04 image in Glance, you will need to add one.
There are scripts in storperf/ci directory to assist, or you can use the follow
code snippets:

.. code-block:: bash

    # Put an Ubuntu Image in glance
    wget -q https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img
    openstack image create "Ubuntu 16.04 x86_64" --disk-format qcow2 --public \
        --container-format bare --file ubuntu-16.04-server-cloudimg-amd64-disk1.img

    # Create StorPerf flavor
    openstack flavor create storperf \
        --id auto \
        --ram 8192 \
        --disk 4 \
        --vcpus 2


Planning
===========================

StorPerf is delivered as a `Docker container
<https://hub.docker.com/r/opnfv/storperf/tags/>`__.  There are two possible
methods for installation in your environment:
   1. Run container on Jump Host
   2. Run container in a VM


Running StorPerf on Jump Host
=============================

Requirements:

    * Docker must be installed
    * Jump Host must have access to the OpenStack Controller API
    * Jump Host must have internet connectivity for downloading docker image
    * Enough floating IPs must be available to match your agent count

Running StorPerf in a VM
========================

Requirements:

    * VM has docker installed
    * VM has OpenStack Controller credentials and can communicate with the Controller API
    * VM has internet connectivity for downloading the docker image
    * Enough floating IPs must be available to match your agent count

VM Creation
~~~~~~~~~~~

The following procedure will create the VM in your environment

.. code-block:: console

    # Create the StorPerf VM itself.  Here we use the network ID generated by OPNFV FUEL.
    ADMIN_NET_ID=`neutron net-list | grep 'admin_internal_net ' | awk '{print $2}'`

    nova boot --nic net-id=$ADMIN_NET_ID --flavor m1.small --key-name=StorPerf --image 'Ubuntu 14.04' 'StorPerf Master'

At this point, you may associate a floating IP with the StorPerf master VM.

VM Docker Installation
~~~~~~~~~~~~~~~~~~~~~~

The following procedure will install Docker on Ubuntu 14.04.

.. code-block:: console

    sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    cat << EOF | sudo tee /etc/apt/sources.list.d/docker.list
    deb https://apt.dockerproject.org/repo ubuntu-trusty main
    EOF

    sudo apt-get update
    sudo apt-get install -y docker-engine
    sudo usermod -aG docker ubuntu

Pulling StorPerf Container
==========================

Danube
~~~~~~

The tag for the latest stable Danube will be:

.. code-block:: bash

   docker pull opnfv/storperf:danube.1.0

Colorado
~~~~~~~~

The tag for the latest stable Colorado release is:

.. code-block:: bash

   docker pull opnfv/storperf:colorado.0.1

Brahmaputra
~~~~~~~~~~~

The tag for the latest stable Brahmaputra release is:

.. code-block:: bash

   docker pull opnfv/storperf:brahmaputra.1.2

Development
~~~~~~~~~~~

The tag for the latest development version is:

.. code-block:: bash

   docker pull opnfv/storperf:master