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;
+    }
+}