blob: 659609d1a869c0f6fd604b17d0eefe3c70b5abc6 [file] [log] [blame]
HIGUCHI Yutaf0499b02013-06-14 15:01:10 -07001package net.onrc.onos.ofcontroller.topology.web;
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08002
HIGUCHI Yuta20514902013-06-12 11:24:16 -07003import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
Pavlin Radoslavovddd01ba2013-07-03 15:40:44 -07004import net.onrc.onos.ofcontroller.routing.TopoRouteService;
HIGUCHI Yuta356086e2013-06-12 15:21:19 -07005import net.onrc.onos.ofcontroller.util.DataPath;
6import net.onrc.onos.ofcontroller.util.Dpid;
7import net.onrc.onos.ofcontroller.util.Port;
8import net.onrc.onos.ofcontroller.util.SwitchPort;
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08009
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080010import org.restlet.resource.Get;
11import org.restlet.resource.ServerResource;
12import org.slf4j.Logger;
13import org.slf4j.LoggerFactory;
14
15public class RouteResource extends ServerResource {
16
17 protected static Logger log = LoggerFactory.getLogger(RouteResource.class);
18
19 @Get("json")
Pavlin Radoslavovf83aa442013-02-26 14:09:01 -080020 public DataPath retrieve() {
Pavlin Radoslavovddd01ba2013-07-03 15:40:44 -070021 ITopoRouteService topoRouteService = new TopoRouteService("");
Pavlin Radoslavovd7d8b792013-02-22 10:24:38 -080022 if (topoRouteService == null) {
23 log.debug("Topology Route Service not found");
Pavlin Radoslavov382b22a2013-01-28 09:24:04 -080024 return null;
25 }
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080026
Pavlin Radoslavovf83aa442013-02-26 14:09:01 -080027 String srcDpidStr = (String) getRequestAttributes().get("src-dpid");
28 String srcPortStr = (String) getRequestAttributes().get("src-port");
29 String dstDpidStr = (String) getRequestAttributes().get("dst-dpid");
30 String dstPortStr = (String) getRequestAttributes().get("dst-port");
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080031
Pavlin Radoslavovf83aa442013-02-26 14:09:01 -080032 log.debug( srcDpidStr + "--" + srcPortStr + "--" + dstDpidStr + "--" + dstPortStr);
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080033
Pavlin Radoslavovf83aa442013-02-26 14:09:01 -080034 Dpid srcDpid = new Dpid(srcDpidStr);
35 Port srcPort = new Port(Short.parseShort(srcPortStr));
36 Dpid dstDpid = new Dpid(dstDpidStr);
37 Port dstPort = new Port(Short.parseShort(dstPortStr));
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080038
Pavlin Radoslavovf83aa442013-02-26 14:09:01 -080039 DataPath result =
40 topoRouteService.getShortestPath(new SwitchPort(srcDpid, srcPort),
41 new SwitchPort(dstDpid, dstPort));
42 if (result != null) {
Pavlin Radoslavov382b22a2013-01-28 09:24:04 -080043 return result;
44 } else {
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080045 log.debug("ERROR! no route found");
46 return null;
47 }
48 }
49}