### 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

# Number of RAMCloud replicas (0 by default)
# On N node cluster, maximum value will be N-1 replicas
#cluster.hosts.ramcloud.server.replicas = 0

# 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 = onos

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