Renamed the Mastership API to use Registry terminology
diff --git a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
index e84e0f6..3a1eb55 100644
--- a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
+++ b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
@@ -11,11 +11,11 @@
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.counter.ICounterStoreService;
-import net.floodlightcontroller.mastership.IMastershipService;
 import net.floodlightcontroller.perfmon.IPktInProcessingTimeService;
 import net.floodlightcontroller.restserver.IRestApiService;
 import net.floodlightcontroller.storage.IStorageSourceService;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 public class FloodlightProvider implements IFloodlightModule {
     Controller controller;
@@ -50,7 +50,7 @@
         dependencies.add(IRestApiService.class);
         dependencies.add(ICounterStoreService.class);
         dependencies.add(IThreadPoolService.class);
-        dependencies.add(IMastershipService.class);
+        dependencies.add(IControllerRegistryService.class);
         return dependencies;
     }
 
@@ -66,7 +66,7 @@
            context.getServiceImpl(IRestApiService.class));
        controller.setThreadPoolService(
            context.getServiceImpl(IThreadPoolService.class));
-       controller.setMastershipService(context.getServiceImpl(IMastershipService.class));
+       controller.setMastershipService(context.getServiceImpl(IControllerRegistryService.class));
        controller.init(context.getConfigParams(this));
     }
 
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index d9cc5e1..0df0e19 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -65,7 +65,6 @@
 import net.floodlightcontroller.core.util.ListenerDispatcher;
 import net.floodlightcontroller.core.web.CoreWebRoutable;
 import net.floodlightcontroller.counter.ICounterStoreService;
-import net.floodlightcontroller.mastership.IMastershipService;
 import net.floodlightcontroller.packet.Ethernet;
 import net.floodlightcontroller.perfmon.IPktInProcessingTimeService;
 import net.floodlightcontroller.restserver.IRestApiService;
@@ -75,6 +74,7 @@
 import net.floodlightcontroller.storage.OperatorPredicate;
 import net.floodlightcontroller.storage.StorageException;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 import org.jboss.netty.bootstrap.ServerBootstrap;
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -189,7 +189,7 @@
     protected IStorageSourceService storageSource;
     protected IPktInProcessingTimeService pktinProcTime;
     protected IThreadPoolService threadPool;
-    protected IMastershipService masterHelper;
+    protected IControllerRegistryService masterHelper;
     
     // Configuration options
     protected int openFlowPort = 6633;
@@ -392,7 +392,7 @@
         this.threadPool = tp;
     }
 
-	public void setMastershipService(IMastershipService serviceImpl) {
+	public void setMastershipService(IControllerRegistryService serviceImpl) {
 		this.masterHelper = serviceImpl;		
 	}
 	
diff --git a/src/main/java/net/floodlightcontroller/mastership/IMastershipService.java b/src/main/java/net/onrc/onos/registry/controller/IControllerRegistryService.java
similarity index 64%
rename from src/main/java/net/floodlightcontroller/mastership/IMastershipService.java
rename to src/main/java/net/onrc/onos/registry/controller/IControllerRegistryService.java
index bfb2e9a..f2794cc 100644
--- a/src/main/java/net/floodlightcontroller/mastership/IMastershipService.java
+++ b/src/main/java/net/onrc/onos/registry/controller/IControllerRegistryService.java
@@ -1,26 +1,26 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 import java.util.Collection;
+import java.util.Map;
 
 import net.floodlightcontroller.core.module.IFloodlightService;
 
-//Will change to something like IRegistryService
-public interface IMastershipService extends IFloodlightService {
+public interface IControllerRegistryService extends IFloodlightService {
 	
 	// Callback for all mastership changes. 
 	// Change callback is called when mastership is acquired or released
-	public interface MastershipCallback {
-		public void changeCallback(long dpid, boolean isMaster);
+	public interface ControlChangeCallback {
+		public void controlChanged(long dpid, boolean hasControl);
 	}
 	
 	// Acquire mastership for a switch. 
-	public void acquireMastership(long dpid, MastershipCallback cb) throws Exception;
+	public void requestControl(long dpid, ControlChangeCallback cb) throws Exception;
 	
 	// Release mastership for a switch
-	public void releaseMastership(long dpid);
+	public void releaseControl(long dpid);
 	
 	// Check if I am the master of a switch. This is a nonblocking call that checks if the caller is a 
-	public boolean amMaster(long dpid);
+	public boolean hasControl(long dpid);
 	
 	// Set/Get mastership identifier.
 	// This is typically a unique identifier of the controller that does not change across restarts
@@ -29,8 +29,7 @@
 	
 	/**
 	 * Register a controller to the ONOS cluster
-	 * @param controller A string identifying the controller and (possibly) how to talk to it.
-	 * (We will have to develop a convention for this - most likely hostname:port)
+	 * @param controller A string identifying the controller
 	 */
 	public void registerController(String controllerId) throws RegistryException;
 	
@@ -43,5 +42,7 @@
 	
 	public String getControllerForSwitch(long dpid) throws RegistryException;
 	
+	public Collection<Map<String, String>> getAllSwitches();
+	
 	public Collection<Long> getSwitchesControlledByController(String controllerId);
 }
diff --git a/src/main/java/net/floodlightcontroller/mastership/IMastershipHelper.java b/src/main/java/net/onrc/onos/registry/controller/IMastershipHelper.java
similarity index 96%
rename from src/main/java/net/floodlightcontroller/mastership/IMastershipHelper.java
rename to src/main/java/net/onrc/onos/registry/controller/IMastershipHelper.java
index b4becfa..9e07d46 100644
--- a/src/main/java/net/floodlightcontroller/mastership/IMastershipHelper.java
+++ b/src/main/java/net/onrc/onos/registry/controller/IMastershipHelper.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 public interface IMastershipHelper {
 	
diff --git a/src/main/java/net/floodlightcontroller/mastership/MastershipHelper.java b/src/main/java/net/onrc/onos/registry/controller/MastershipHelper.java
similarity index 92%
rename from src/main/java/net/floodlightcontroller/mastership/MastershipHelper.java
rename to src/main/java/net/onrc/onos/registry/controller/MastershipHelper.java
index fdac8ca..2fcd002 100644
--- a/src/main/java/net/floodlightcontroller/mastership/MastershipHelper.java
+++ b/src/main/java/net/onrc/onos/registry/controller/MastershipHelper.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 public class MastershipHelper implements IMastershipHelper {
 
diff --git a/src/main/java/net/floodlightcontroller/mastership/RegistryException.java b/src/main/java/net/onrc/onos/registry/controller/RegistryException.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/mastership/RegistryException.java
rename to src/main/java/net/onrc/onos/registry/controller/RegistryException.java
index fcc14a6..3b237c2 100644
--- a/src/main/java/net/floodlightcontroller/mastership/RegistryException.java
+++ b/src/main/java/net/onrc/onos/registry/controller/RegistryException.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 public class RegistryException extends Exception {
 
diff --git a/src/main/java/net/floodlightcontroller/mastership/MastershipManager.java b/src/main/java/net/onrc/onos/registry/controller/RegistryManager.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/mastership/MastershipManager.java
rename to src/main/java/net/onrc/onos/registry/controller/RegistryManager.java
index 2e50670..84f17c3 100644
--- a/src/main/java/net/floodlightcontroller/mastership/MastershipManager.java
+++ b/src/main/java/net/onrc/onos/registry/controller/RegistryManager.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -25,7 +25,6 @@
 import com.netflix.curator.framework.CuratorFramework;
 import com.netflix.curator.framework.CuratorFrameworkFactory;
 import com.netflix.curator.framework.api.CuratorWatcher;
-import com.netflix.curator.framework.imps.CuratorFrameworkState;
 import com.netflix.curator.framework.recipes.cache.ChildData;
 import com.netflix.curator.framework.recipes.cache.PathChildrenCache;
 import com.netflix.curator.framework.recipes.cache.PathChildrenCache.StartMode;
@@ -33,9 +32,9 @@
 import com.netflix.curator.framework.recipes.leader.Participant;
 import com.netflix.curator.retry.RetryOneTime;
 
-public class MastershipManager implements IFloodlightModule, IMastershipService {
+public class RegistryManager implements IFloodlightModule, IControllerRegistryService {
 
-	protected static Logger log = LoggerFactory.getLogger(MastershipManager.class);
+	protected static Logger log = LoggerFactory.getLogger(RegistryManager.class);
 	protected String mastershipId = null;
 	
 	//TODO read this from configuration
@@ -49,7 +48,7 @@
 	protected PathChildrenCache controllerCache;
 
 	protected Map<String, LeaderLatch> switchLatches;
-	protected Map<String, MastershipCallback> switchCallbacks;
+	protected Map<String, ControlChangeCallback> switchCallbacks;
 	
 	protected boolean moduleEnabled = false;
 	
@@ -74,7 +73,7 @@
 					log.debug("Disconnected while leader - lost leadership for {}", dpid);
 					
 					isLeader = false;
-					switchCallbacks.get(dpid).changeCallback(HexString.toLong(dpid), false);
+					switchCallbacks.get(dpid).controlChanged(HexString.toLong(dpid), false);
 				}
 				return;
 			}
@@ -87,13 +86,13 @@
 					log.debug("Became leader for {}", dpid);
 					
 					isLeader = true;
-					switchCallbacks.get(dpid).changeCallback(HexString.toLong(dpid), true);
+					switchCallbacks.get(dpid).controlChanged(HexString.toLong(dpid), true);
 				}
 				else if (!leader.getId().equals(mastershipId) && isLeader){
 					log.debug("Lost leadership for {}", dpid);
 					
 					isLeader = false;
-					switchCallbacks.get(dpid).changeCallback(HexString.toLong(dpid), false);
+					switchCallbacks.get(dpid).controlChanged(HexString.toLong(dpid), false);
 				}
 			} catch (Exception e){
 				if (isLeader){
@@ -101,7 +100,7 @@
 							dpid);
 					
 					isLeader = false;
-					switchCallbacks.get(dpid).changeCallback(HexString.toLong(dpid), false);
+					switchCallbacks.get(dpid).controlChanged(HexString.toLong(dpid), false);
 				}
 			}
 			
@@ -112,7 +111,7 @@
 
 	
 	@Override
-	public void acquireMastership(long dpid, MastershipCallback cb) throws Exception {
+	public void requestControl(long dpid, ControlChangeCallback cb) throws Exception {
 		
 		if (!moduleEnabled) return;
 		
@@ -146,7 +145,7 @@
 	}
 
 	@Override
-	public void releaseMastership(long dpid) {
+	public void releaseControl(long dpid) {
 		if (!moduleEnabled) return;
 		
 		String dpidStr = HexString.toHexString(dpid);
@@ -169,7 +168,7 @@
 	}
 
 	@Override
-	public boolean amMaster(long dpid) {
+	public boolean hasControl(long dpid) {
 		if (!moduleEnabled) return false;
 		
 		LeaderLatch latch = switchLatches.get(HexString.toHexString(dpid));
@@ -274,6 +273,13 @@
 		return null;
 	}
 	
+
+	@Override
+	public Collection<Map<String, String>> getAllSwitches() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
 	/*
 	 * IFloodlightModule
 	 */
@@ -282,7 +288,7 @@
 	public Collection<Class<? extends IFloodlightService>> getModuleServices() {
 		Collection<Class<? extends IFloodlightService>> l = 
 				new ArrayList<Class<? extends IFloodlightService>>();
-		l.add(IMastershipService.class);
+		l.add(IControllerRegistryService.class);
 		return l;
 	}
 	
@@ -290,7 +296,7 @@
 	public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
 		Map<Class<? extends IFloodlightService>, IFloodlightService> m = 
 				new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
-		m.put(IMastershipService.class,  this);
+		m.put(IControllerRegistryService.class,  this);
 		return m;
 	}
 	
@@ -325,7 +331,7 @@
 		}
 
 		switchLatches = new HashMap<String, LeaderLatch>();
-		switchCallbacks = new HashMap<String, MastershipCallback>();
+		switchCallbacks = new HashMap<String, ControlChangeCallback>();
 		
 		//RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
 		RetryPolicy retryPolicy = new RetryOneTime(0);
@@ -349,4 +355,5 @@
 	public void startUp (FloodlightModuleContext context) {
 		// Nothing to be done on startup
 	}
+
 }
diff --git a/src/main/java/net/floodlightcontroller/mastership/MastershipRouteResource.java b/src/main/java/net/onrc/onos/registry/controller/RegistryRouteResource.java
similarity index 68%
rename from src/main/java/net/floodlightcontroller/mastership/MastershipRouteResource.java
rename to src/main/java/net/onrc/onos/registry/controller/RegistryRouteResource.java
index f75c518..5dadafa 100644
--- a/src/main/java/net/floodlightcontroller/mastership/MastershipRouteResource.java
+++ b/src/main/java/net/onrc/onos/registry/controller/RegistryRouteResource.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 import org.restlet.resource.ServerResource;
 import org.restlet.resource.Get;
@@ -8,9 +8,9 @@
 import org.slf4j.LoggerFactory;
 import org.slf4j.Logger;
 
-public class MastershipRouteResource extends ServerResource {
+public class RegistryRouteResource extends ServerResource {
 
-	protected static Logger log = LoggerFactory.getLogger(MastershipRouteResource.class);
+	protected static Logger log = LoggerFactory.getLogger(RegistryRouteResource.class);
 
 	@Get
 	public String get(String fmJson) {
diff --git a/src/main/java/net/floodlightcontroller/mastership/MastershipRunner.java b/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java
similarity index 65%
rename from src/main/java/net/floodlightcontroller/mastership/MastershipRunner.java
rename to src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java
index a28a9c5..8522893 100644
--- a/src/main/java/net/floodlightcontroller/mastership/MastershipRunner.java
+++ b/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java
@@ -1,8 +1,8 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.floodlightcontroller.mastership.IMastershipService.MastershipCallback;
+import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
 
 import org.openflow.util.HexString;
 import org.slf4j.Logger;
@@ -14,12 +14,14 @@
  * @author jono
  *
  */
-public class MastershipRunner {
-	protected static Logger log = LoggerFactory.getLogger(MastershipRunner.class);
+public class RegistryRunner {
+	protected static Logger log = LoggerFactory.getLogger(RegistryRunner.class);
 
 	public static void main(String args[]){
 		FloodlightModuleContext fmc = new FloodlightModuleContext();
-		MastershipManager mm = new MastershipManager();
+		RegistryManager rm = new RegistryManager();
+		
+		fmc.addConfigParam(rm, "enableZookeeper", "true");
 		
 		String id = null;
 		if (args.length > 0){
@@ -28,17 +30,17 @@
 		}
 		
 		try {
-			mm.init(fmc);
-			mm.startUp(fmc);
+			rm.init(fmc);
+			rm.startUp(fmc);
 			
 			if (id != null){
-				mm.setMastershipId(id);
+				rm.setMastershipId(id);
 			}
 				
-			mm.acquireMastership(1L, 
-				new MastershipCallback(){
+			rm.requestControl(1L, 
+				new ControlChangeCallback(){
 					@Override
-					public void changeCallback(long dpid, boolean isMaster) {
+					public void controlChanged(long dpid, boolean isMaster) {
 						if (isMaster){
 							log.debug("Callback for becoming master for {}", HexString.toHexString(dpid));
 						}
@@ -48,7 +50,7 @@
 					}
 				});
 			
-			mm.registerController(id);
+			rm.registerController(id);
 			
 			Thread.sleep(5000);
 			
@@ -65,6 +67,6 @@
 			e.printStackTrace();
 		}
 		
-		log.debug("is master: {}", mm.amMaster(1L));
+		log.debug("is master: {}", rm.hasControl(1L));
 	}
 }
diff --git a/src/main/java/net/floodlightcontroller/mastership/MastershipWebRoutable.java b/src/main/java/net/onrc/onos/registry/controller/RegistryWebRoutable.java
similarity index 61%
rename from src/main/java/net/floodlightcontroller/mastership/MastershipWebRoutable.java
rename to src/main/java/net/onrc/onos/registry/controller/RegistryWebRoutable.java
index 56d5d66..8b5123b 100644
--- a/src/main/java/net/floodlightcontroller/mastership/MastershipWebRoutable.java
+++ b/src/main/java/net/onrc/onos/registry/controller/RegistryWebRoutable.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.mastership;
+package net.onrc.onos.registry.controller;
 
 import org.restlet.Context;
 import org.restlet.Restlet;
@@ -6,18 +6,18 @@
 
 import net.floodlightcontroller.restserver.RestletRoutable;
 
-public class MastershipWebRoutable implements RestletRoutable {
+public class RegistryWebRoutable implements RestletRoutable {
 
 	@Override
 	public Restlet getRestlet(Context context) {
 		Router router = new Router(context);
-		router.attach("/json", MastershipRouteResource.class);
+		router.attach("/json", RegistryRouteResource.class);
 		return router;
 	}
 
 	@Override
 	public String basePath() {
-		return "/wm/mastership";
+		return "/wm/registry";
 	}
 
 }