--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.connectionmanager;
+
+/**
+ * Enumeration that represents the Connectivity Scheme / Algorithm for South-Bound nodes
+ * towards an Active-Active Clustered Controllers.
+ */
+public enum ConnectionMgmtScheme {
+ /**
+ * All the nodes are connected with a Single Controller.
+ * The SingleControllerScheme algorithm will determine that one controller to which all
+ * the nodes are connected with.
+ * This is like Active-Standby model from a South-Bound perspective.
+ */
+ SINGLE_CONTROLLER("All nodes connected with a Single Controller"),
+
+ /**
+ * Any node can be connected with any controller. But with just 1 master controller.
+ */
+ ANY_CONTROLLER_ONE_MASTER("Nodes can to connect with any controller in the cluster"),
+
+ /**
+ * Simple Round Robin Scheme that will let the nodes connect with each controller in
+ * Active-Active cluster in a round robin fashion.
+ */
+ ROUND_ROBIN("Each node is connected with individual Controller in Round-Robin fashion"),
+
+ /**
+ * Complex Load Balancing scheme that will let the nodes connect with controller based
+ * on the resource usage in each of the controllers in a cluster.
+ */
+ LOAD_BALANCED("Connect nodes to controllers based on the Controller Load"),
+
+ /**
+ * Container based scheme will let the nodes connect with controller based
+ * on the container configuration.
+ */
+ CONTAINER_BASED("Connect nodes to controllers based on Container they belong to");
+
+ private ConnectionMgmtScheme(String name) {
+ this.name = name;
+ }
+
+ private String name;
+
+ public String toString() {
+ return name;
+ }
+
+ public static ConnectionMgmtScheme fromString(String pName) {
+ for(ConnectionMgmtScheme p:ConnectionMgmtScheme.values()) {
+ if (p.toString().equals(pName)) {
+ return p;
+ }
+ }
+ return null;
+ }
+}