summaryrefslogtreecommitdiffstats
path: root/verigraph/src/main/java/it/polito/escape/verify/client/Neo4jManagerClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'verigraph/src/main/java/it/polito/escape/verify/client/Neo4jManagerClient.java')
-rw-r--r--verigraph/src/main/java/it/polito/escape/verify/client/Neo4jManagerClient.java339
1 files changed, 0 insertions, 339 deletions
diff --git a/verigraph/src/main/java/it/polito/escape/verify/client/Neo4jManagerClient.java b/verigraph/src/main/java/it/polito/escape/verify/client/Neo4jManagerClient.java
deleted file mode 100644
index 044c136..0000000
--- a/verigraph/src/main/java/it/polito/escape/verify/client/Neo4jManagerClient.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Politecnico di Torino and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Apache License, Version 2.0
- * which accompanies this distribution, and is available at
- * http://www.apache.org/licenses/LICENSE-2.0
- *******************************************************************************/
-
-package it.polito.escape.verify.client;
-
-import java.io.StringWriter;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.ProcessingException;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import it.polito.escape.verify.deserializer.PathsMessageBodyReader;
-import it.polito.escape.verify.model.Entry;
-import it.polito.nffg.neo4j.jaxb.ActionEnumType;
-import it.polito.nffg.neo4j.jaxb.ActionType;
-import it.polito.nffg.neo4j.jaxb.ActionsType;
-import it.polito.nffg.neo4j.jaxb.CiType;
-import it.polito.nffg.neo4j.jaxb.CiType.Attributes;
-import it.polito.nffg.neo4j.jaxb.CiType.Attributes.Attribute;
-import it.polito.nffg.neo4j.jaxb.CpType;
-import it.polito.nffg.neo4j.jaxb.CpointsType;
-import it.polito.nffg.neo4j.jaxb.CtrlInterfacesType;
-import it.polito.nffg.neo4j.jaxb.EpCpType;
-import it.polito.nffg.neo4j.jaxb.EpType;
-import it.polito.nffg.neo4j.jaxb.EpType.Flowspace;
-import it.polito.nffg.neo4j.jaxb.EpointsType;
-import it.polito.nffg.neo4j.jaxb.EpsCpsType;
-import it.polito.nffg.neo4j.jaxb.FlowrulesType;
-import it.polito.nffg.neo4j.jaxb.FlowrulesType.Flowspace.Tcp;
-import it.polito.nffg.neo4j.jaxb.MonParamsType;
-import it.polito.nffg.neo4j.jaxb.MonParamsType.Parameter;
-import it.polito.nffg.neo4j.jaxb.NeType;
-import it.polito.nffg.neo4j.jaxb.NelementsType;
-import it.polito.nffg.neo4j.jaxb.NfType;
-import it.polito.nffg.neo4j.jaxb.Nffg;
-import it.polito.nffg.neo4j.jaxb.NfunctionsType;
-import it.polito.nffg.neo4j.jaxb.ObjectFactory;
-import it.polito.nffg.neo4j.jaxb.Paths;
-import it.polito.nffg.neo4j.jaxb.PortDirEnumType;
-import it.polito.nffg.neo4j.jaxb.PortType;
-import it.polito.nffg.neo4j.jaxb.SpecType;
-import it.polito.nffg.neo4j.jaxb.SpecType.Cpu;
-import it.polito.nffg.neo4j.jaxb.SpecType.Deployment;
-import it.polito.nffg.neo4j.jaxb.SpecType.Image;
-import it.polito.nffg.neo4j.jaxb.SpecType.Memory;
-import it.polito.nffg.neo4j.jaxb.SpecType.Storage;
-
-public class Neo4jManagerClient {
-
- private JAXBContext jc;
-
- private String address;
-
- private Nffg nffg;
-
- private List<String> endpoints = new LinkedList<String>();
-
- private List<String> firewalls = new LinkedList<String>();
-
- private Map<String, List<Entry>> routingTable = new HashMap<String, List<Entry>>();
-
- private String source;
-
- private String destination;
-
- private String xmlString;
-
- private WebTarget baseTarget;
-
- public Neo4jManagerClient() {
-
- }
-
- public Neo4jManagerClient( String address, String source, String destination, List<String> endpoints,
- List<String> firewalls, Map<String, List<Entry>> routingTable) {
- this.address = address;
- this.source = source;
- this.destination = destination;
- this.endpoints = endpoints;
- this.firewalls = firewalls;
- this.routingTable = routingTable;
-
- Client client = ClientBuilder.newBuilder().register(PathsMessageBodyReader.class).build();
-
- this.baseTarget = client.target(this.address);
- }
-
- public Paths getPaths() throws Exception {
- try {
- this.generateCustomXml();
- }
- catch (JAXBException e) {
- throw (e);
- }
-
- WebTarget graphsTarget = baseTarget.path("graphs");
- WebTarget pathSourceDestination = graphsTarget.path("{graphId}/paths");
- WebTarget deleteNffg = graphsTarget.path("{graphId}");
-
- Response deleteNffgResponse = deleteNffg.resolveTemplate("graphId", "1").request().delete();
- if (deleteNffgResponse.getStatus() != javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode()
- && deleteNffgResponse.getStatus() != javax.ws.rs.core.Response.Status.NOT_FOUND.getStatusCode()) {
- throw new Exception("graph deletion failed");
- }
-
- Response createNffgResponse = graphsTarget .request("application/xml")
- .post(Entity.entity(this.xmlString, "application/xml"));
- if (createNffgResponse.getStatus() != javax.ws.rs.core.Response.Status.CREATED.getStatusCode()) {
- throw new Exception("graph creation failed");
- }
-
- System.out.println("Getting paths from node \"" + this.source + "\" to node \"" + this.destination + "\"...");
- Response getPath = pathSourceDestination.resolveTemplate("graphId", "1")
- .queryParam("src", this.source)
- .queryParam("dst", this.destination)
- .queryParam("dir", "outgoing")
- .request(MediaType.APPLICATION_XML)
- .get();
-
- System.out.println("Paths from node \"" + this.source + "\" to node \"" + this.destination + "\":");
-
- Paths paths = null;
- try {
- paths = getPath.readEntity(Paths.class);
- }
- catch (ProcessingException e) {
- throw (e);
- }
- catch (IllegalStateException e) {
- throw (e);
- }
-
- return paths;
- }
-
- private void generateCustomXml() throws JAXBException {
-
- jc = JAXBContext.newInstance("it.polito.nffg.neo4j.jaxb");
-
- nffg = new Nffg();
- nffg.setId("nffg_1");
-
- generateEndpoints();
- generateFirewalls();
- generateConnections();
-
- MonParamsType monitoring_parameters = new MonParamsType();
- nffg.setMonitoringParameters(monitoring_parameters);
-
- JAXBElement<Nffg> root = (new ObjectFactory()).createNffg(nffg);
-
- Marshaller m;
- try {
- m = jc.createMarshaller();
- m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
-
- StringWriter stringWriter = new StringWriter();
- try {
- XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(stringWriter);
- m.marshal(root, xmlStreamWriter);
- xmlString = stringWriter.getBuffer().toString();
- }
- catch (XMLStreamException e) {
- e.printStackTrace();
- }
- catch (FactoryConfigurationError e) {
-
- e.printStackTrace();
- }
- // m.marshal( root, new File("nffg.xml") );
- System.out.println(xmlString);
-
- }
- catch (JAXBException e) {
- throw (e);
- }
- }
-
- private void generateConnections() {
- NelementsType network_elements = new NelementsType();
- NeType network_element = new NeType();
- network_element.setId("ne_1");
- network_element.setType("BiSBiS");
- EpsCpsType ep_cps = new EpsCpsType();
-
- for (String node : routingTable.keySet()) {
- EpCpType ep_cp = new EpCpType();
- ep_cp.setIdRef(node);
- FlowrulesType flowrules = new FlowrulesType();
- it.polito.nffg.neo4j.jaxb.FlowrulesType.Flowspace flowspace =
- new it.polito.nffg.neo4j.jaxb.FlowrulesType.Flowspace();
- flowrules.setFlowspace(flowspace);
- ActionsType actions = new ActionsType();
- for (Entry e : routingTable.get(node)) {
- ActionType action = new ActionType();
- action.setType(ActionEnumType.fromValue(e.getDirection()));
- action.setPort(e.getDestination());
- actions.getAction().add(action);
- }
- flowrules.setActions(actions);
-
- ep_cp.getFlowrules().add(flowrules);
- ep_cps.getEpCp().add(ep_cp);
- }
- network_element.setEpsCps(ep_cps);
-
- MonParamsType monitoring_parameters = new MonParamsType();
- Parameter parameter = new Parameter();
- parameter.getValue().add("Bandwith ep_1 cp_1 100mbit");
- monitoring_parameters.getParameter().add(parameter);
- Parameter parameter2 = new Parameter();
- parameter2.getValue().add("Delay ep_1 cp_1 50ms");
- monitoring_parameters.getParameter().add(parameter2);
-
- network_element.setMonitoringParameters(monitoring_parameters);
-
- network_elements.getNetworkElement().add(network_element);
-
- nffg.setNetworkElements(network_elements);
-
- }
-
- private void generateFirewalls() {
- NfunctionsType network_functions = new NfunctionsType();
-
- for (String firewall : firewalls) {
- NfType nf = new NfType();
- nf.setId(firewall);
- nf.setFunctionalType("firewall");
-
- SpecType specification = new SpecType();
- Deployment deployment = new Deployment();
- deployment.setType("PolitoFirewall");
- Image image = new Image();
- image.setUri("http://www.polito.it");
- Cpu cpu = new Cpu();
- cpu.setNumCores((short) (7));
- Memory memory = new Memory();
- memory.setSize("10MiB");
- Storage storage = new Storage();
- storage.setSize("100MiB");
- specification.setDeployment(deployment);
- specification.setImage(image);
- specification.setCpu(cpu);
- specification.setMemory(memory);
- specification.setStorage(storage);
-
- CpointsType connection_points = new CpointsType();
- CpType connection_point = new CpType();
- connection_point.setId(firewall + "_in");
- PortType port = new PortType();
- port.setId(79);
- port.setDirection(PortDirEnumType.IN);
- port.setType("GbE");
- connection_point.setPort(port);
- connection_points.getConnectionPoint().add(connection_point);
-
- CpType connection_point2 = new CpType();
- connection_point2.setId(firewall + "_out");
- PortType port2 = new PortType();
- port2.setId(77);
- port2.setDirection(PortDirEnumType.OUT);
- port2.setType("10GbE");
- connection_point2.setPort(port2);
-
- connection_points.getConnectionPoint().add(connection_point2);
-
- CtrlInterfacesType control_interfaces = new CtrlInterfacesType();
- CiType control_interface = new CiType();
- control_interface.setId(firewall + "_ci");
-
- Attributes attributes = new Attributes();
- Attribute attribute = new Attribute();
- attribute.setValue("tcp://127.0.0.1:5555");
- attributes.getAttribute().add(attribute);
- Attribute attribute2 = new Attribute();
- attribute2.setValue("Netconf");
- attributes.getAttribute().add(attribute2);
- control_interface.setAttributes(attributes);
-
- control_interfaces.getControlInterface().add(control_interface);
-
- MonParamsType monitoring_parameters = new MonParamsType();
- Parameter parameter = new Parameter();
- parameter.getValue().add("Measure script");
- monitoring_parameters.getParameter().add(parameter);
-
- nf.setSpecification(specification);
- nf.setConnectionPoints(connection_points);
- nf.setControlInterfaces(control_interfaces);
- nf.setMonitoringParameters(monitoring_parameters);
-
- network_functions.getNetworkFunction().add(nf);
-
- }
- nffg.setNetworkFunctions(network_functions);
-
- }
-
- private void generateEndpoints() {
- EpointsType eps = new EpointsType();
-
- for (String e : endpoints) {
- EpType endpoint = new EpType();
- endpoint.setId(e);
- Flowspace flowspace = new Flowspace();
- flowspace.setIngPhysPort("10");
- Tcp tcp = new Tcp();
- tcp.setSrc(80);
- flowspace.setTcp(tcp);
- endpoint.setFlowspace(flowspace);
- eps.getEndpoint().add(endpoint);
- }
- nffg.setEndpoints(eps);
- }
-
-}