--- /dev/null
+/*
+ * Copyright IBM Corporation, 2013. 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.samples.loadbalancer;
+
+import java.util.Set;
+
+import org.opendaylight.controller.samples.loadbalancer.entities.Pool;
+import org.opendaylight.controller.samples.loadbalancer.entities.PoolMember;
+import org.opendaylight.controller.samples.loadbalancer.entities.VIP;
+
+/**
+ * Interface implemented by the configuration manager.
+ *
+ */
+public interface IConfigManager {
+
+ /**
+ * Return all existing VIPs
+ * @return Set of VIP's
+ * if there is no VIP, it will return empty set.
+ */
+ public Set<VIP> getAllVIPs();
+
+ /**
+ * Check if VIP with the 'name' exists
+ * @param name Name of the VIP
+ * @return true if exists
+ * false else
+ */
+ public boolean vipExists(String name);
+
+ /**
+ * Check if VIP exists with the details 'VIP'
+ * @param vip Search for this VIP
+ * @return true if exists
+ * false else
+ */
+ public boolean vipExists(VIP vip);
+
+ /**
+ * Check if VIP with the provided details exists
+ * @param name Name of the VIP
+ * @param ip IP of the VIP
+ * @param protocol IP Protocol of the VIP (TCP/UDP)
+ * @param protocolPort Transport port of the VIP (e.g 5550)
+ * @param poolName Name of the pool attached with the VIP
+ * @return true if exists
+ * false else
+ */
+ public boolean vipExists(String name,String ip,String protocol,short protocolPort,String poolName);
+
+ /**
+ * Add VIP to the configuration
+ * @param name Name of the VIP
+ * @param ip IP of the VIP
+ * @param protocol IP Protocol of the VIP (TCP/UDP)
+ * @param protocolPort Transport port of the VIP
+ * @param poolName Name of the pool that VIP will use for load balancing its traffic
+ * @return Newly created VIP
+ */
+ public VIP createVIP(String name,String ip,String protocol,short protocolPort,String poolName);
+
+ /**
+ * Return pool attached to VIP
+ * @param name Name of the VIP
+ * @return Name of the pool attached to VIP
+ * else null
+ */
+ public String getVIPAttachedPool(String name);
+ /**
+ * Update pool name of the VIP.
+ * @param name Name of the VIP
+ * @param poolName Attach this pool to VIP
+ * @return Updated VIP If successful
+ * null If this VIP is already attached to any existing pool.
+ */
+ public VIP updateVIP(String name, String poolName);
+
+ /**
+ * Delete the VIP
+ * @param name Delete VIP with this name
+ * @return Details of the deleted VIP
+ */
+ public VIP deleteVIP(String name);
+
+ /**
+ * Check if pool member with the 'name' present in the pool with name 'poolName'
+ * @param name Name of the pool member
+ * @param poolName Name of the pool, you want to search for pool member
+ * @return true If exist
+ * false else
+ */
+ public boolean memberExists(String name, String poolName);
+
+ /**
+ * Check if pool member with name 'name' and IP 'memberIP' exist in the pool 'poolName'
+ * @param name Name of the pool member
+ * @param memberIP IP of the pool member
+ * @param poolName Name of the pool member you want to search
+ * @return true If Exist
+ * false else
+ */
+ public boolean memberExists(String name, String memberIP,String poolName);
+
+ /**
+ * Return all pool members of the pool 'poolName'
+ * @param poolName Name of the pool
+ * @return Set of all the pool members if pool with the name present in the configuration
+ * null else
+ *
+ */
+ public Set<PoolMember> getAllPoolMembers(String poolName);
+
+ /**
+ * Add new pool member to the configuration
+ * @param name Name of the pool
+ * @param memberIP IP of the pool
+ * @param poolName Attach pool member to this pool
+ * @return Newly created pool member
+ */
+ public PoolMember addPoolMember(String name, String memberIP, String poolName);
+
+ /**
+ * Remove pool member from the pool
+ * @param name Name of the pool member
+ * @param poolName Name of the pool
+ * @return Details of the removed pool member
+ */
+ public PoolMember removePoolMember(String name, String poolName);
+
+ /**
+ * Return all the existing pools
+ * @return Set of Pools
+ */
+ public Set<Pool> getAllPools();
+
+ /**
+ * Return pool with input name
+ * @param poolName Name of the pool
+ * @return Details of the pool if pool exist
+ * null else
+ */
+ public Pool getPool(String poolName);
+
+ /**
+ * Check if pool exists with the input name
+ * @param name Name of the pool
+ * @return true If exists
+ * false else
+ */
+ public boolean poolExists(String name);
+
+ /**
+ * Check if pool exists with the input name and loadbalancing method.
+ * @param name Name of the pool
+ * @param lbMethod Load balancing method name
+ * @return true If exists
+ * false else
+ */
+ public boolean poolExists(String name, String lbMethod);
+
+ /**
+ * Create new pool with the provided details
+ * @param name Name of the pool
+ * @param lbMethod Load balancing method this pool will use
+ * @return Details of the newly created pool
+ */
+ public Pool createPool(String name, String lbMethod);
+
+ /**
+ * Delete pool with the provided name
+ * @param poolName Name of the pool
+ * @return Details of the deleted pool
+ */
+ public Pool deletePool(String poolName);
+
+}
\ No newline at end of file