# Docker needs to be installed if you would like to build the Docker image.
# https://docs.docker.com/engine/installation/
# The Docker image has to be built for the Cloud Controller.
# The bundle for the Docker image is within the disco Git repository.
# As the currently published image on Docker Hub (amnion/haas) is accepting all the system specific settings as attributes, this step might not be necessary.
# But for completeness' sake: The Dockerfile file for the instructions lies within the bundle directory. After configuring the bundle/wsgi/so.py file as well as the needed files within the bundle/data subdirectory (especially the service_manifest.json), the Docker image can be built and pushed to the Docker Hub.
# In the /bundle/data/service_manifest.json file, the optional attributes to the service orchestrator have to be declared. All the other files are specific to the individual service orchestrator's operation; in this case, those are Heat Orchestration Template (HOT) templates, bash scripts for setting up the cluster and the Hadoop configuration files.
# The service manager has to be configured as well, though this is only one config file. In this case, this file is located at etc/sm.cfg. The main entries that have to be changed are the following: in the section [service_manager], the entry manifest has to point to the service_manifest.json file of the service orchestrator. bundle_location is this case (OpenShift v3) the path to the Docker image on the Docker Hub. design_uri is the keystone endpoint where the HOT should be deployed.
# If the service shouldn't be registered in keystone, the entry register_service in subsection [service_manager_admin] can be set to False and the further settings are not important.
# Under the section [cloud_controller], the access configuration to the cloud controller API has to be set. Currently, this has to be an OpenShift installation; in this case, it's an OpenShift v3 instance.
# create virtual environment if you want to have a contained environment
virtualenv /tmp/mcn
source /tmp/mcn/bin/activate
# maybe some dependencies won't be met - I had to install python-monascaclient with pip for instance
cd mcn_cc_sdk && python setup.py install && cd ..
cd hurtle_sm && python setup.py install && cd ..
# For starting the service manager, only the config file has to be given.
service_manager -c /path/to/disco/etc/sm.cfg
# As the SM is blocking the terminal, in a new terminal, the commands to the SM can be executed.
export URL="http://127.0.0.1:8888" # URL & port of executed SM
# create a service orchestrator instance - will return instance URL in the Location header; in this example, also the attribute icclab.haas.slave.number will be set to 2