import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentMap;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.codehaus.jackson.map.ObjectMapper;
import org.opendaylight.controller.usermanager.IUserManager;
-import org.opendaylight.controller.web.IOneWeb;
-import org.springframework.security.core.context.SecurityContextHolder;
+import org.opendaylight.controller.web.DaylightWebUtil;
+import org.opendaylight.controller.web.IDaylightWeb;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.opendaylight.controller.forwarding.staticrouting.IForwardingStaticRouting;
import org.opendaylight.controller.forwarding.staticrouting.StaticRouteConfig;
import org.opendaylight.controller.sal.authorization.UserLevel;
+import org.opendaylight.controller.sal.core.Config;
import org.opendaylight.controller.sal.core.Name;
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.core.NodeConnector;
@Controller
@RequestMapping("/")
-public class Devices implements IOneWeb {
+public class Devices implements IDaylightWeb {
private static final UserLevel AUTH_LEVEL = UserLevel.CONTAINERUSER;
private final String WEB_NAME = "Devices";
private final String WEB_ID = "devices";
private final short WEB_ORDER = 1;
- private final String containerName = GlobalConstants.DEFAULT.toString();
public Devices() {
- ServiceHelper.registerGlobalService(IOneWeb.class, this, null);
+ ServiceHelper.registerGlobalService(IDaylightWeb.class, this, null);
}
@Override
@RequestMapping(value = "/nodesLearnt", method = RequestMethod.GET)
@ResponseBody
- public DevicesJsonBean getNodesLearnt() {
+ public DevicesJsonBean getNodesLearnt(HttpServletRequest request, @RequestParam(required = false) String container) {
Gson gson = new Gson();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
List<Map<String, String>> nodeData = new ArrayList<Map<String, String>>();
nodeDatum.put("containerName", containerName);
nodeDatum.put("nodeName", switchManager.getNodeDescription(node));
- nodeDatum.put("nodeId", node.getNodeIDString());
+ nodeDatum.put("nodeId", node.toString());
int tierNumber = (tier == null) ? TierHelper.unknownTierNumber
: tier.getValue();
nodeDatum.put("tierName", TierHelper.getTierName(tierNumber)
+ " (Tier-" + tierNumber + ")");
nodeDatum.put("tier", tierNumber + "");
SwitchConfig sc = switchManager.getSwitchConfig(device.getNode()
- .getNodeIDString());
+ .toString());
String modeStr = (sc != null) ? sc.getMode() : "0";
nodeDatum.put("mode", modeStr);
HexEncode.bytesToHexString(device.getDataLayerAddress()));
StringBuffer sb1 = new StringBuffer();
Set<NodeConnector> nodeConnectorSet = device.getNodeConnectors();
- String nodeConnectorName;
- String nodeConnectorNumberToStr;
if (nodeConnectorSet != null && nodeConnectorSet.size() > 0) {
Map<Short, String> portList = new HashMap<Short, String>();
for (NodeConnector nodeConnector : nodeConnectorSet) {
- nodeConnectorNumberToStr = nodeConnector.getID().toString();
- Name ncName = ((Name) switchManager
+ String nodeConnectorNumberToStr = nodeConnector.getID().toString();
+ Name ncName = ((Name) switchManager.getNodeConnectorProp(
+ nodeConnector, Name.NamePropName));
+ Config portStatus = ((Config) switchManager
.getNodeConnectorProp(nodeConnector,
- Name.NamePropName));
- nodeConnectorName = (ncName != null) ? ncName.getValue() : "";
+ Config.ConfigPropName));
+
+ String nodeConnectorName = (ncName != null) ? ncName.getValue()
+ : "";
+ nodeConnectorName += " ("+nodeConnector.getID()+")";
+
+ if (portStatus != null) {
+ if (portStatus.getValue() == Config.ADMIN_UP) {
+ nodeConnectorName = "<span style='color:green;'>"+nodeConnectorName+"</span>";
+ } else if (portStatus.getValue() == Config.ADMIN_DOWN) {
+ nodeConnectorName = "<span style='color:red;'>"+nodeConnectorName+"</span>";
+ }
+ }
+
portList.put(Short.parseShort(nodeConnectorNumberToStr),
nodeConnectorName);
}
- Map<Short, String> sortedPortList = new TreeMap<Short, String>(
- portList);
+
+ Map<Short, String> sortedPortList = new TreeMap<Short, String>(portList);
+
for (Entry<Short, String> e : sortedPortList.entrySet()) {
- sb1.append(e.getValue() + "(" + e.getKey() + ")");
+ sb1.append(e.getValue());
sb1.append("<br>");
}
}
columnNames.add("Tier");
columnNames.add("Mac Address");
columnNames.add("Ports");
-
+ columnNames.add("Port Status");
+
result.setColumnNames(columnNames);
return result;
}
public List<String> getTiers() {
return TierHelper.getTiers();
}
-
+
@RequestMapping(value = "/nodesLearnt/update", method = RequestMethod.GET)
@ResponseBody
public StatusJsonBean updateLearntNode(
@RequestParam("nodeName") String nodeName,
@RequestParam("nodeId") String nodeId,
@RequestParam("tier") String tier,
- @RequestParam("operationMode") String operationMode) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
- StatusJsonBean resultBean = new StatusJsonBean();
+ @RequestParam("operationMode") String operationMode,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
+ StatusJsonBean resultBean = new StatusJsonBean();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
try {
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
@RequestMapping(value = "/staticRoutes", method = RequestMethod.GET)
@ResponseBody
- public DevicesJsonBean getStaticRoutes() {
+ public DevicesJsonBean getStaticRoutes(HttpServletRequest request, @RequestParam(required = false) String container) {
Gson gson = new Gson();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper
- .getInstance(IForwardingStaticRouting.class, containerName, this);
+ .getInstance(IForwardingStaticRouting.class, containerName,
+ this);
+ if (staticRouting == null) {
+ return null;
+ }
List<Map<String, String>> staticRoutes = new ArrayList<Map<String, String>>();
ConcurrentMap<String, StaticRouteConfig> routeConfigs = staticRouting
.getStaticRouteConfigs();
public StatusJsonBean addStaticRoute(
@RequestParam("routeName") String routeName,
@RequestParam("staticRoute") String staticRoute,
- @RequestParam("nextHop") String nextHop) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
+ @RequestParam("nextHop") String nextHop,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
StatusJsonBean result = new StatusJsonBean();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
try {
IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper
.getInstance(IForwardingStaticRouting.class, containerName,
@RequestMapping(value = "/staticRoute/delete", method = RequestMethod.GET)
@ResponseBody
public StatusJsonBean deleteStaticRoute(
- @RequestParam("routesToDelete") String routesToDelete) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
+ @RequestParam("routesToDelete") String routesToDelete,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
StatusJsonBean resultBean = new StatusJsonBean();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
try {
IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper
.getInstance(IForwardingStaticRouting.class, containerName,
@RequestMapping(value = "/subnets", method = RequestMethod.GET)
@ResponseBody
- public DevicesJsonBean getSubnetGateways() {
+ public DevicesJsonBean getSubnetGateways(HttpServletRequest request, @RequestParam(required = false) String container) {
Gson gson = new Gson();
List<Map<String, String>> subnets = new ArrayList<Map<String, String>>();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
for (SubnetConfig conf : switchManager.getSubnetsConfigList()) {
result.setNodeData(subnets);
return result;
}
-
+
@RequestMapping(value = "/subnetGateway/add", method = RequestMethod.GET)
@ResponseBody
public StatusJsonBean addSubnetGateways(
@RequestParam("gatewayName") String gatewayName,
- @RequestParam("gatewayIPAddress") String gatewayIPAddress) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
+ @RequestParam("gatewayIPAddress") String gatewayIPAddress,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
StatusJsonBean resultBean = new StatusJsonBean();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
try {
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
@RequestMapping(value = "/subnetGateway/delete", method = RequestMethod.GET)
@ResponseBody
public StatusJsonBean deleteSubnetGateways(
- @RequestParam("gatewaysToDelete") String gatewaysToDelete) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
+ @RequestParam("gatewaysToDelete") String gatewaysToDelete,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
StatusJsonBean resultBean = new StatusJsonBean();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
try {
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
public StatusJsonBean addSubnetGatewayPort(
@RequestParam("portsName") String portsName,
@RequestParam("ports") String ports,
- @RequestParam("nodeId") String nodeId) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
+ @RequestParam("nodeId") String nodeId,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
StatusJsonBean resultBean = new StatusJsonBean();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
try {
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
@ResponseBody
public StatusJsonBean deleteSubnetGatewayPort(
@RequestParam("gatewayName") String gatewayName,
- @RequestParam("nodePort") String nodePort) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
+ @RequestParam("nodePort") String nodePort,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
StatusJsonBean resultBean = new StatusJsonBean();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
try {
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
@RequestMapping(value = "/spanPorts", method = RequestMethod.GET)
@ResponseBody
- public DevicesJsonBean getSpanPorts() {
+ public DevicesJsonBean getSpanPorts(HttpServletRequest request, @RequestParam(required = false) String container) {
Gson gson = new Gson();
List<String> spanConfigs_json = new ArrayList<String>();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
for (SpanConfig conf : switchManager.getSpanConfigList()) {
config.put(name, config_data.get(name));
// Add switch name value (non-configuration field)
config.put("nodeName",
- getNodeDesc(config_data.get("nodeId")));
+ getNodeDesc(config_data.get("nodeId"), containerName));
}
config.put("json", config_json);
spanConfigs.add(config);
@RequestMapping(value = "/nodeports")
@ResponseBody
- public Map<String, Object> getNodePorts() {
+ public Map<String, Object> getNodePorts(HttpServletRequest request, @RequestParam(required = false) String container) {
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
if (switchManager == null)
@RequestMapping(value = "/spanPorts/add", method = RequestMethod.GET)
@ResponseBody
- public StatusJsonBean addSpanPort(@RequestParam("jsonData") String jsonData) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
+ public StatusJsonBean addSpanPort(
+ @RequestParam("jsonData") String jsonData,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
StatusJsonBean resultBean = new StatusJsonBean();
try {
Gson gson = new Gson();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
SpanConfig cfgObject = gson.fromJson(jsonData, SpanConfig.class);
@RequestMapping(value = "/spanPorts/delete", method = RequestMethod.GET)
@ResponseBody
public StatusJsonBean deleteSpanPorts(
- @RequestParam("spanPortsToDelete") String spanPortsToDelete) {
- if (!authorize(UserLevel.NETWORKADMIN)) {
- return unauthorizedMessage();
- }
-
+ @RequestParam("spanPortsToDelete") String spanPortsToDelete,
+ HttpServletRequest request, @RequestParam(required = false) String container) {
+ if (!authorize(UserLevel.NETWORKADMIN, request)) {
+ return unauthorizedMessage();
+ }
+
StatusJsonBean resultBean = new StatusJsonBean();
try {
Gson gson = new Gson();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
String[] spans = spanPortsToDelete.split("###");
return resultBean;
}
- private String getNodeDesc(String nodeId) {
+ private String getNodeDesc(String nodeId, String containerName) {
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
.getInstance(ISwitchManager.class, containerName, this);
String description = "";
if (switchManager != null) {
- description = switchManager
- .getNodeDescription(Node.fromString(nodeId));
+ description = switchManager.getNodeDescription(Node
+ .fromString(nodeId));
}
- return (description.isEmpty() || description.equalsIgnoreCase("none"))?
- nodeId : description;
+ return (description.isEmpty() || description.equalsIgnoreCase("none")) ? nodeId
+ : description;
}
-
/**
* Is the operation permitted for the given level
*
* @param level
*/
- private boolean authorize(UserLevel level) {
- IUserManager userManager = (IUserManager) ServiceHelper
+ private boolean authorize(UserLevel level, HttpServletRequest request) {
+ IUserManager userManager = (IUserManager) ServiceHelper
.getGlobalInstance(IUserManager.class, this);
if (userManager == null) {
- return false;
+ return false;
}
-
- String username = SecurityContextHolder.getContext().getAuthentication().getName();
+
+ String username = request.getUserPrincipal().getName();
UserLevel userLevel = userManager.getUserLevel(username);
if (userLevel.toNumber() <= level.toNumber()) {
- return true;
+ return true;
}
return false;
}
-
+
private StatusJsonBean unauthorizedMessage() {
- StatusJsonBean message = new StatusJsonBean();
- message.setStatus(false);
- message.setMessage("Operation not authorized");
- return message;
+ StatusJsonBean message = new StatusJsonBean();
+ message.setStatus(false);
+ message.setMessage("Operation not authorized");
+ return message;
+ }
+
+ @RequestMapping(value = "login")
+ public String login(final HttpServletRequest request,
+ final HttpServletResponse response) {
+ // response.setHeader("X-Page-Location", "/login");
+ /*
+ * IUserManager userManager = (IUserManager) ServiceHelper
+ * .getGlobalInstance(IUserManager.class, this); if (userManager ==
+ * null) { return "User Manager is not available"; }
+ *
+ * String username = request.getUserPrincipal().getName();
+ *
+ *
+ * model.addAttribute("username", username); model.addAttribute("role",
+ * userManager.getUserLevel(username).toNumber());
+ */
+ return "forward:" + "/";
}
}