blob: 0971f402c771f6d2308e4ec7ec4a3f8b5ef5511c [file] [log] [blame]
package net.onrc.onos.registry.controller;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import net.floodlightcontroller.core.module.IFloodlightService;
public interface IControllerRegistryService extends IFloodlightService {
// Callback for all mastership changes.
// Change callback is called when mastership is acquired or released
public interface ControlChangeCallback {
public void controlChanged(long dpid, boolean hasControl);
}
// Acquire mastership for a switch.
public void requestControl(long dpid, ControlChangeCallback cb) throws RegistryException;
// Release mastership for a switch
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 hasControl(long dpid);
// Set/Get mastership identifier.
// This is typically a unique identifier of the controller that does not change across restarts
public void setMastershipId (String id);
public String getMastershipId ();
/**
* Register a controller to the ONOS cluster.
* @param controller A string identifying the controller
* @throws errors connecting to registry service, controllerId already registered
*/
public void registerController(String controllerId) throws RegistryException;
/**
* Get all controllers in the cluster
* @return
*/
public Collection<String> getAllControllers() throws RegistryException;
public String getControllerForSwitch(long dpid) throws RegistryException;
public Map<String, List<ControllerRegistryEntry>> getAllSwitches();
public Collection<Long> getSwitchesControlledByController(String controllerId);
}