# Setting up a Rucio demo environment

## Prerequisites

Setting up a Rucio demo environment requires to have docker and docker-compose installed. Docker is an application that makes it simple and easy to run application processes. To install Docker for your platform, please refer to the Docker installation guide. Git should be also installed.

The containers provided here can be used to easily setup a small demo instance of Rucio with some mock data to play around with some Rucio commands.

## docker-compose

A YAML file for docker-compose has been provided to allow easily setup of the containers. to have access to this docker-compose.yml file, you can either:

- clone the Rucio repository,
- or fork and clone the Rucio repository for the ones who want to contribute to Rucio,

To run the multi-container Rucio Docker applications, do:

    > $ sudo docker-compose --file etc/docker/demo/docker-compose.yml up -d

Here we assume that the command is executed at the root of the Rucio cloned repository.

The names of the two containers (rucio and mysql) should be printed in the terminal for you.

## Checking the containers

After you run the docker-compose command you can check the status of the containers:

    > $ sudo docker ps
    CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                     PORTS                  NAMES
    ad03d8dc3b4a        demo_rucio               "httpd -D FOREGROUND"    13 minutes ago      Up 13 minutes              0.0.0.0:443->443/tcp   demo_rucio_1
    8d5f8253f3d8        mysql/mysql-server:5.7   "/entrypoint.sh mysql"   13 minutes ago      Up 13 minutes (healthy)    3306/tcp, 33060/tcp    demo_mysql_1

## Initial setup of demo data

After the first start of the demo containers you will have to setup the demo account and the demo data to be able to use the Rucio commands and the WebUI. To do this you have to simply run the following command:

    $ sudo docker exec -it demo_rucio_1 /setup_demo.sh

You might see the following error message::
  … sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2003, “Can’t connect to MySQL server on ‘mysql’ (111)”) (Background on this error at: http://sqlalche.me/e/e3q8)

This only means that the MySQL container is not ready, yet, and you just have to wait a moment before you try again. If everything worked fine you should see something like this:

    INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
    INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
    INFO  [alembic.runtime.migration] Running stamp_revision  -> 2962ece31cf4
    Start Automatix
    2018-02-27 12:26:33,216 68      DEBUG   Still 1 active threads
    2018-02-27 12:26:33,718 68      INFO    Thread [1/1] : Getting data distribution
    2018-02-27 12:26:33,719 68      DEBUG   Thread [1/1] : Probabilities {u'type1': 1.0}
    2018-02-27 12:26:33,719 68      INFO    Thread [1/1] : Running on site SITE1_DISK
    2018-02-27 12:26:33,720 68      INFO    Thread [1/1] : Generating file /tmp/tmpOX4uPw/AOD.735cd55130fb4852b8b41656428820fc in dataset tests:test.1925.automatix_stream.recon.AOD.496
    2018-02-27 12:26:33,735 68      DEBUG
    2018-02-27 12:26:33,735 68      DEBUG   1+0 records in
    1+0 records out
    1000000 bytes (1.0 MB) copied, 0.00734248 s, 136 MB/s
    ...

To test that Rucio is set up correctly you can do a ping and you should get the rucio version:

    $ sudo docker exec -it demo_rucio_1 rucio ping
    1.15.0

## Using the container

When everything is ready you can log into the container and start playing around with rucio:

    $ sudo docker exec -it demo_rucio_1 /bin/bash
    [root@ad03d8dc3b4a rucio]# rucio whoami
    status     : ACTIVE
    account    : root
    account_type : SERVICE
    created_at : 2018-02-08T15:37:26
    suspended_at : None
    updated_at : 2018-02-08T15:37:26
    deleted_at : None
    email      : None
    [root@ad03d8dc3b4a rucio]# rucio list-scopes
    tests
    user.jdoe
    [root@ad03d8dc3b4a rucio]#

## Stopping the demo

To stop the demo, you can do:

    $ docker-compose --file etc/docker/demo/docker-compose.yml down

## Accessing the WebUI

In the demo container is also an instance of the Rucio WebUI started.

To be able to access it you will first have to install the demo client certificate in your browser. You can find the p12 file containing the certificate under:

    etc/docker/demo/certs/rucio_demo_cert.p12

The import password is rucio-demo.

Then you can access the WebUI using this url: ´https://<hostname>/ui/´

Normally, it’s https://localhost/ui/