diff --git a/src/main/java/net/floodlightcontroller/core/web/RoleResource.java b/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java similarity index 72% rename from src/main/java/net/floodlightcontroller/core/web/RoleResource.java rename to src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java index d0bf2f837e62be1d4b915a1f23b60eb36e66d92d..2a1520577c0ebbb581f57b8989e71539acccbaa0 100644 --- a/src/main/java/net/floodlightcontroller/core/web/RoleResource.java +++ b/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java @@ -11,33 +11,10 @@ import org.restlet.resource.Post; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RoleResource extends ServerResource { +public class ControllerRoleResource extends ServerResource { - protected static Logger log = LoggerFactory.getLogger(RoleResource.class); + protected static Logger log = LoggerFactory.getLogger(ControllerRoleResource.class); - public static class RoleInfo { - protected String role; - - public RoleInfo() { - } - - public RoleInfo(String role) { - setRole(role); - } - - public RoleInfo(Role role) { - this.role = (role != null) ? role.name() : "DISABLED"; - } - - public String getRole() { - return role; - } - - public void setRole(String role) { - this.role = role; - } - } - @Get("json") public RoleInfo getRole() { IFloodlightProviderService floodlightProvider = diff --git a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java index 66c462618ab10097892e680a8838d61a287bcde5..009681fb4693fcb83a3292d1babe319058cb3778 100644 --- a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java +++ b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java @@ -39,6 +39,7 @@ public class CoreWebRoutable implements RestletRoutable { Router router = new Router(context); router.attach("/module/all/json", ModuleLoaderResource.class); router.attach("/module/loaded/json", LoadedModuleLoaderResource.class); + router.attach("/switch/{switchId}/role/json", SwitchRoleResource.class); router.attach("/switch/all/{statType}/json", AllSwitchStatisticsResource.class); router.attach("/switch/{switchId}/{statType}/json", SwitchStatisticsResource.class); router.attach("/controller/switches/json", ControllerSwitchesResource.class); @@ -56,7 +57,7 @@ public class CoreWebRoutable implements RestletRoutable { EventHistoryTopologyClusterResource.class); router.attach("/storage/tables/json", StorageSourceTablesResource.class); router.attach("/controller/summary/json", ControllerSummaryResource.class); - router.attach("/role/json", RoleResource.class); + router.attach("/role/json", ControllerRoleResource.class); router.attach("/health/json", HealthCheckResource.class); return router; } diff --git a/src/main/java/net/floodlightcontroller/core/web/RoleInfo.java b/src/main/java/net/floodlightcontroller/core/web/RoleInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..e600ea0eb02ada3d8003fb4c4e75b3e8b57f7b16 --- /dev/null +++ b/src/main/java/net/floodlightcontroller/core/web/RoleInfo.java @@ -0,0 +1,26 @@ +package net.floodlightcontroller.core.web; + +import net.floodlightcontroller.core.IFloodlightProviderService.Role; + +public class RoleInfo { + protected String role; + + public RoleInfo() { + } + + public RoleInfo(String role) { + setRole(role); + } + + public RoleInfo(Role role) { + this.role = (role != null) ? role.name() : "DISABLED"; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } +} \ No newline at end of file diff --git a/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java new file mode 100644 index 0000000000000000000000000000000000000000..0d73f93f12130c1df48fc995b1ccd50ad53ef82e --- /dev/null +++ b/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java @@ -0,0 +1,46 @@ +package net.floodlightcontroller.core.web; + +import java.util.HashMap; + +import org.openflow.util.HexString; +import org.restlet.resource.ServerResource; + +import net.floodlightcontroller.core.IFloodlightProviderService; +import net.floodlightcontroller.core.IOFSwitch; + +import org.restlet.resource.Get; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SwitchRoleResource extends ServerResource { + + protected static Logger log = LoggerFactory.getLogger(SwitchRoleResource.class); + + @Get("json") + public Object getRole() { + IFloodlightProviderService floodlightProvider = + (IFloodlightProviderService)getContext().getAttributes(). + get(IFloodlightProviderService.class.getCanonicalName()); + + String switchId = (String) getRequestAttributes().get("switchId"); + + RoleInfo roleInfo; + + if (switchId.equalsIgnoreCase("all")) { + HashMap<String,RoleInfo> model = new HashMap<String,RoleInfo>(); + for (IOFSwitch sw: floodlightProvider.getSwitches().values()) { + switchId = sw.getStringId(); + roleInfo = new RoleInfo(sw.getRole()); + model.put(switchId, roleInfo); + } + return model; + } + + Long dpid = HexString.toLong(switchId); + IOFSwitch sw = floodlightProvider.getSwitches().get(dpid); + if (sw == null) + return null; + roleInfo = new RoleInfo(sw.getRole()); + return roleInfo; + } +}