blob: 6a56b2fdd01c02ce946eb53c62819f73c78f8991 [file] [log] [blame]
package net.onrc.onos.datagrid.web;
import java.util.Collection;
import net.onrc.onos.datagrid.IDatagridService;
import net.onrc.onos.ofcontroller.topology.TopologyElement;
import net.onrc.onos.ofcontroller.util.FlowEntry;
import net.onrc.onos.ofcontroller.util.FlowPath;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Datagrid REST API implementation: Get the state of a map.
*
* Valid map names:
* - "all" : Get all maps
* - "flow" : Get the Flows
* - "flow-entry" : Get the Flow Entries
* - "topology" : Get the Topology
*
* GET /wm/onos/datagrid/get/map/{map-name}/json
*/
public class GetMapResource extends ServerResource {
protected final static Logger log = LoggerFactory.getLogger(GetMapResource.class);
/**
* Implement the API.
*
* @return a string with the state of the map(s).
*/
@Get("json")
public String retrieve() {
String result = "";
IDatagridService datagridService =
(IDatagridService)getContext().getAttributes().
get(IDatagridService.class.getCanonicalName());
if (datagridService == null) {
log.debug("ONOS Datagrid Service not found");
return result;
}
// Extract the arguments
String mapNameStr = (String)getRequestAttributes().get("map-name");
log.debug("Get Datagrid Map: {}", mapNameStr);
//
// Get the Flows
//
if (mapNameStr.equals("flow") || mapNameStr.equals("all")) {
Collection<FlowPath> flowPaths = datagridService.getAllFlows();
result += "Flows:\n";
for (FlowPath flowPath : flowPaths) {
result += flowPath.toString() + "\n";
}
}
//
// Get the Flow Entries
//
if (mapNameStr.equals("flow-entry") || mapNameStr.equals("all")) {
Collection<FlowEntry> flowEntries = datagridService.getAllFlowEntries();
result += "Flow Entries:\n";
for (FlowEntry flowEntry : flowEntries) {
result += flowEntry.toString() + "\n";
}
}
if (mapNameStr.equals("topology") || mapNameStr.equals("all")) {
Collection<TopologyElement> topologyElements = datagridService.getAllTopologyElements();
result += "Topology:\n";
for (TopologyElement topologyElement : topologyElements) {
result += topologyElement.toString() + "\n";
}
}
return result;
}
}