### Cluster-wide settings ###
# List of host names/addresses constitute ONOS cluster
# NOTE: Order of names affects ZooKeeper myid
cluster.hosts.names = onosdev1, onosdev2, onosdev3, onosdev4

# Back-end module to store topology/flows
cluster.hosts.backend = hazelcast
#cluster.hosts.backend = ramcloud

# Protocol used by RAMCloud cluster (fast+udp by default)
#cluster.hosts.ramcloud.protocol = fast+udp

# Communication method used for Hazelcast communication
#cluster.hosts.hazelcast.network = multicast
cluster.hosts.hazelcast.network = tcp-ip

# Multicast address used by Hazelcast datagrid (224.2.2.3 by default)
# Valid only if cluster.hosts.hazelcast.network is set to "multicast"
#cluster.hosts.hazelcast.multicast.address = 224.2.2.3

# Multicast port used by Hazelcast datagrid (54327 by default)
# Valid only if cluster.hosts.hazelcast.network is set to "multicast"
#cluster.hosts.hazelcast.multicast.port = 54327

### Host-specific settings ###
# IP address of host used for ONOS communication (resolved hostname by default)
#cluster.onosdev1.ip = 192.168.56.11

# Role of host
cluster.onosdev1.role = coord-and-server-node

# IP address or hostname of host used for ZooKeeper communication (cluster.onosdev1.ip by default)
#cluster.onosdev1.zk.host = 192.168.56.11

# IP address of host used for RAMCloud communication (cluster.onosdev1.ip by default)
#cluster.onosdev1.ramcloud.ip = 192.168.56.11

# Port number used by RAMCloud coordinator (12246 by default)
#cluster.onosdev1.ramcloud.coordinator.port = 12246

# Port number used by RAMCloud server (12242 by default)
#cluster.onosdev1.ramcloud.server.port = 12242

# IP address of host used for Hazelcast communication (cluster.onosdev1.ip by default)
# Valid only if cluster.hosts.hazelcast.network is set to "tcp-ip"
#cluster.onosdev1.hazelcast.ip = 192.168.56.11

# At least role must be specified for all hosts
cluster.onosdev2.role = server-node
cluster.onosdev3.role = server-node
cluster.onosdev4.role = server-node


### SSH settings used for delivering config files ###
# Common username used to login host (current user by default)
#remote.common.ssh.user = mininet

# Host-specific username settings
#remote.onosdev1.ssh.user = mininet
#remote.onosdev2.ssh.user = mininet
