ONOS cluster management tools
=============================

This directory contains tools related to configuration and management of
ONOS cluster. This file explains role of each script and composition of
configuration files.


Cluster management overview
===========================

ONOS cluster needs lots of configuration files and that makes it hard to keep
consistency of configuration among ONOS nodes. Also, starting up and shutting
down ONOS nodes needs CLI execution on each nodes. Cluster management tools
are designed to kill those painful steps by centralizing interface into one
host.

Cluster management tools can create configuration files for each node and
apply them. Cluster management tools can also start up and shut down all ONOS
nodes simultaneously. If you want to see status of ONOS cluster, those tools
can show status of all nodes at once.

Cluster management tools also contain Mininet deployment tool. This tool can
create Mininet network with arbitrary topology and with arbitrary controller
assignment. If you want to run ONOS on virtual network, this tool can help.


Composition of files
====================

Cluster management tools consist of some script files and configuration files.

Description of files
--------------------
- onos-cluster.sh
    Main script to manage ONOS cluster. This script can create and deploy
    configuration files for each hosts, and can start/stop ONOS cluster.
    This script can also show status of ONOS cluster nodes.
    Try "onos-cluster.sh" to see detailed usage.
    
- conf/onos-cluster.conf
    Configuration file of ONOS cluster. This is the only file you need to
    modify. See into the file for parameter detail.

- conf/generated/*
    Configuration files generated by onos-cluster.sh. 

- conf/logs
    Console logs of each nodes generated during deployment of configuration.

- conf/template/*
    Templates of configuration files referred during generation of file.
    DO NOT change or delete these files.

- mininet/start_topo.py
    Script to start Mininet. This script read topology file and create
    topology as described. This script also connect virtual switches to ONOS
    cluster nodes according to topology file.
    
- mininet/topo.py
    Topology file used by start_topo.py.
