blob: cb4e6ef84c7c3d55caba2f9f5619f440e0965ee4 [file] [log] [blame]
Pavlin Radoslavov5ab68512013-02-18 09:59:33 -08001package net.floodlightcontroller.flowcache.web;
2
3import net.floodlightcontroller.flowcache.IFlowService;
Pavlin Radoslavova10a9a82013-02-22 11:47:54 -08004import net.floodlightcontroller.util.CallerId;
5import net.floodlightcontroller.util.DataPathEndpoints;
6import net.floodlightcontroller.util.Dpid;
Pavlin Radoslavov5ab68512013-02-18 09:59:33 -08007import net.floodlightcontroller.util.FlowPath;
Pavlin Radoslavova10a9a82013-02-22 11:47:54 -08008import net.floodlightcontroller.util.Port;
9import net.floodlightcontroller.util.SwitchPort;
Pavlin Radoslavov5ab68512013-02-18 09:59:33 -080010
11import org.restlet.resource.Get;
12import org.restlet.resource.ServerResource;
13import org.slf4j.Logger;
14import org.slf4j.LoggerFactory;
15
16public class GetFlowByInstallerIdResource extends ServerResource {
17 protected static Logger log = LoggerFactory.getLogger(GetFlowByInstallerIdResource.class);
18
19 @Get("json")
20 public FlowPath retrieve() {
21 FlowPath result = null;
22
23 IFlowService flowService =
24 (IFlowService)getContext().getAttributes().
25 get(IFlowService.class.getCanonicalName());
26
27 if (flowService == null) {
28 log.debug("ONOS Flow Service not found");
29 return result;
30 }
31
32 // Extract the arguments
Pavlin Radoslavova10a9a82013-02-22 11:47:54 -080033 String installerIdStr = (String) getRequestAttributes().get("installer-id");
34 String srcDpidStr = (String) getRequestAttributes().get("src-dpid");
35 String srcPortStr = (String) getRequestAttributes().get("src-port");
36 String dstDpidStr = (String) getRequestAttributes().get("dst-dpid");
37 String dstPortStr = (String) getRequestAttributes().get("dst-port");
Pavlin Radoslavov5ab68512013-02-18 09:59:33 -080038
Pavlin Radoslavova10a9a82013-02-22 11:47:54 -080039 log.debug("Get Flow By Installer: " + installerIdStr + " Endpoints: " +
40 srcDpidStr + "--" + srcPortStr + "--" +
41 dstDpidStr + "--" + dstPortStr);
42
43 CallerId installerId = new CallerId(installerIdStr);
Pavlin Radoslavov2013cbb2013-02-26 10:15:18 -080044 Dpid srcDpid = new Dpid(srcDpidStr);
Pavlin Radoslavova10a9a82013-02-22 11:47:54 -080045 Port srcPort = new Port(Short.parseShort(srcPortStr));
Pavlin Radoslavov2013cbb2013-02-26 10:15:18 -080046 Dpid dstDpid = new Dpid(dstDpidStr);
Pavlin Radoslavova10a9a82013-02-22 11:47:54 -080047 Port dstPort = new Port(Short.parseShort(dstPortStr));
48 SwitchPort srcSwitchPort = new SwitchPort(srcDpid, srcPort);
49 SwitchPort dstSwitchPort = new SwitchPort(dstDpid, dstPort);
50 DataPathEndpoints dataPathEndpoints =
51 new DataPathEndpoints(srcSwitchPort, dstSwitchPort);
52
53 flowService.getFlow(installerId, dataPathEndpoints, result);
Pavlin Radoslavov5ab68512013-02-18 09:59:33 -080054
55 return result;
56 }
57}