blob: 0ac83210e210dcef99fe59f106370d19d741bd75 [file] [log] [blame]
Jonathan Hart472062d2014-04-03 10:56:48 -07001package net.onrc.onos.core.topology.web;
Jonathan Hart891d0502014-02-10 10:04:08 -08002
3import java.io.IOException;
4
Jonathan Harte37e4e22014-05-13 19:12:02 -07005import net.onrc.onos.core.topology.ITopologyService;
6import net.onrc.onos.core.topology.Topology;
Jonathan Hart472062d2014-04-03 10:56:48 -07007import net.onrc.onos.core.topology.serializers.PortSerializer;
8import net.onrc.onos.core.topology.serializers.SwitchSerializer;
Jonathan Hart891d0502014-02-10 10:04:08 -08009
10import org.codehaus.jackson.Version;
11import org.codehaus.jackson.map.ObjectMapper;
12import org.codehaus.jackson.map.module.SimpleModule;
13import org.restlet.resource.Get;
14import org.restlet.resource.ServerResource;
15import org.slf4j.Logger;
16import org.slf4j.LoggerFactory;
17
Jonathan Harte37e4e22014-05-13 19:12:02 -070018public class TopologySwitchesResource extends ServerResource {
Jonathan Hart891d0502014-02-10 10:04:08 -080019
Jonathan Harte37e4e22014-05-13 19:12:02 -070020 private static final Logger log = LoggerFactory.getLogger(TopologySwitchesResource.class);
Ray Milkey269ffb92014-04-03 14:43:30 -070021
22 @Get("json")
23 public String retrieve() {
Jonathan Harte37e4e22014-05-13 19:12:02 -070024 ITopologyService topologyService = (ITopologyService) getContext().getAttributes().
25 get(ITopologyService.class.getCanonicalName());
Ray Milkey269ffb92014-04-03 14:43:30 -070026
Jonathan Harte37e4e22014-05-13 19:12:02 -070027 Topology topology = topologyService.getTopology();
Ray Milkey269ffb92014-04-03 14:43:30 -070028
29 ObjectMapper mapper = new ObjectMapper();
30 SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
31 module.addSerializer(new SwitchSerializer());
32 module.addSerializer(new PortSerializer());
33 mapper.registerModule(module);
34
35 try {
Jonathan Harte37e4e22014-05-13 19:12:02 -070036 topology.acquireReadLock();
37 return mapper.writeValueAsString(topology.getSwitches());
Ray Milkey269ffb92014-04-03 14:43:30 -070038 } catch (IOException e) {
39 log.error("Error writing switch list to JSON", e);
40 return "";
41 } finally {
Jonathan Harte37e4e22014-05-13 19:12:02 -070042 topology.releaseReadLock();
Ray Milkey269ffb92014-04-03 14:43:30 -070043 }
44 }
Jonathan Hart891d0502014-02-10 10:04:08 -080045}