From 754851249b5722222a84e5a821f6edea095e72e7 Mon Sep 17 00:00:00 2001 From: Steven Saunders Date: Wed, 16 Dec 2015 14:31:40 -0700 Subject: make create, delete, get work with new topology based REST calls Change-Id: Iad6fa28971ad61003d34ed38ab2e2d8647dc31bd Signed-off-by: Steven Saunders --- .../vcpe/uni/unibase/client/EvcPathClient.java | 9 +- .../vcpe/uni/unibase/client/UniClient.java | 81 +++++++------- .../cablelabs/vcpe/uni/unibase/model/EvcPath.java | 119 +++++++++++---------- .../com/cablelabs/vcpe/uni/unibase/model/Uni.java | 55 +++++++--- 4 files changed, 147 insertions(+), 117 deletions(-) (limited to 'uni') diff --git a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/EvcPathClient.java b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/EvcPathClient.java index 0fb47d1..50feb6c 100644 --- a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/EvcPathClient.java +++ b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/EvcPathClient.java @@ -29,9 +29,10 @@ import java.util.List; public class EvcPathClient { + // private String evcMgrServer = "10.36.0.20"; private String evcMgrServer = "localhost"; private String evcMgrPort = "8181"; - private String evcMgrCfgRESTPath = "/restconf/config/cl-vcpe-mef:evcs/"; + private String evcMgrCfgRESTPath = "/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/"; private Client client; // provided by Jersey @@ -49,7 +50,7 @@ public class EvcPathClient { Dbg.p("\nEVC Create JSON:"); Dbg.p(json); - Response response = target.path("evc") + Response response = target.path("") .request(MediaType.APPLICATION_JSON) .post(Entity.entity(json, MediaType.APPLICATION_JSON)); @@ -74,7 +75,7 @@ public class EvcPathClient { Dbg.p("\nEVC Create/Update JSON:"); Dbg.p(json); - Response response = target.path("evc/"+evcPath.getId()) + Response response = target.path(evcPath.getId()) .request(MediaType.APPLICATION_JSON) .header("Authorization", authorizationHeaderValue) .put(Entity.entity(json, MediaType.APPLICATION_JSON)); @@ -97,7 +98,7 @@ public class EvcPathClient { String authorizationHeaderValue = "Basic " + DatatypeConverter.printBase64Binary(uNameAndPass.getBytes("UTF-8")); - Response response = target.path("evc/" + evcPathId) + Response response = target.path(evcPathId) .request(MediaType.APPLICATION_JSON) .header("Authorization", authorizationHeaderValue) .delete(); diff --git a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/UniClient.java b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/UniClient.java index 08994fe..a61f0d9 100644 --- a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/UniClient.java +++ b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/client/UniClient.java @@ -31,10 +31,15 @@ import javax.xml.bind.DatatypeConverter; public class UniClient { + // put this in config file + // private String uniMgrServer = "localhost"; + + //private String uniMgrServer = "10.36.0.20"; private String uniMgrServer = "localhost"; private String uniMgrPort = "8181"; - private String uniMgrCfgRESTPath = "/restconf/config/cl-vcpe-mef:unis/"; - private String uniMgrOpRESTPath = "/restconf/operational/cl-vcpe-mef:unis/"; + + private String uniMgrCfgRESTPath = "/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/"; + private String uniMgrOpRESTPath = "/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/"; private Client client; // provided by Jersey @@ -42,38 +47,10 @@ public class UniClient { client = ClientBuilder.newClient(); } - //-------------------------------------------------------- - public Response create(Uni uni ) throws Exception - //-------------------------------------------------------- - // create Uni - { - WebTarget target =client.target("http://"+uniMgrServer+":" + uniMgrPort + uniMgrCfgRESTPath); - - String json = uni.toJson(); - Dbg.p("\nUNI Create JSON:"); - Dbg.p(json); - - String uNameAndPass = "admin:admin"; - String authorizationHeaderValue = "Basic " + - DatatypeConverter.printBase64Binary(uNameAndPass.getBytes("UTF-8")); - Response response = target.path("uni") - .request(MediaType.APPLICATION_JSON) - .header("Authorization", authorizationHeaderValue) - .post(Entity.entity(json, MediaType.APPLICATION_JSON)); - - if (response.getStatus() != 200 ) // figure out how to use Status.OK - { - // in production you can be more specific based on reponse code, id, etc - throw new RuntimeException(response.getStatus() + ": there was an error on the server."); - } - //return response.readEntity(Uni.class); - return response; - } - //-------------------------------------------------------- public Response update(Uni uni) throws Exception //-------------------------------------------------------- - // create/update Uni. This seems to be how OLD expects uni creation + // create/update Uni. This seems to be how ODL expects uni creation { WebTarget target =client.target("http://"+uniMgrServer+":" + uniMgrPort + uniMgrCfgRESTPath); @@ -84,7 +61,7 @@ public class UniClient { String uNameAndPass = "admin:admin"; String authorizationHeaderValue = "Basic " + DatatypeConverter.printBase64Binary(uNameAndPass.getBytes("UTF-8")); - Response response = target.path("uni/"+uni.getId()) + Response response = target.path(uni.getId()) .request(MediaType.APPLICATION_JSON) .header("Authorization", authorizationHeaderValue) .put(Entity.entity(json, MediaType.APPLICATION_JSON)); @@ -108,7 +85,7 @@ public class UniClient { String authorizationHeaderValue = "Basic " + DatatypeConverter.printBase64Binary(uNameAndPass.getBytes("UTF-8")); - Response response = target.path("uni/" + uniId) + Response response = target.path(uniId) .request(MediaType.APPLICATION_JSON) .header("Authorization", authorizationHeaderValue) .delete(); @@ -120,10 +97,6 @@ public class UniClient { } } - // - // Code from here below requires work in order to work with ODL - // - //-------------------------------------------------------- public Uni get(String uniId) throws Exception //-------------------------------------------------------- @@ -143,7 +116,6 @@ public class UniClient { return JsonToUni(uni, uniJson); } - //-------------------------------------------------------- public Uni JsonToUni(Uni uni, String uniJson) { //-------------------------------------------------------- @@ -239,6 +211,39 @@ public class UniClient { return uni; } + // + // Code from here below requires work in order to work with ODL + // Currently none of the calls below are being invoked + // Consider removing these from the source + // + + //-------------------------------------------------------- + public Response create(Uni uni ) throws Exception + //-------------------------------------------------------- + // create Uni + { + WebTarget target =client.target("http://"+uniMgrServer+":" + uniMgrPort + uniMgrCfgRESTPath); + + String json = uni.toJson(); + Dbg.p("\nUNI Create JSON:"); + Dbg.p(json); + + String uNameAndPass = "admin:admin"; + String authorizationHeaderValue = "Basic " + + DatatypeConverter.printBase64Binary(uNameAndPass.getBytes("UTF-8")); + Response response = target.path("uni") + .request(MediaType.APPLICATION_JSON) + .header("Authorization", authorizationHeaderValue) + .post(Entity.entity(json, MediaType.APPLICATION_JSON)); + + if (response.getStatus() != 200 ) // figure out how to use Status.OK + { + // in production you can be more specific based on reponse code, id, etc + throw new RuntimeException(response.getStatus() + ": there was an error on the server."); + } + //return response.readEntity(Uni.class); + return response; + } //-------------------------------------------------------- public List getAll() diff --git a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/EvcPath.java b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/EvcPath.java index 469b05b..6c97cf8 100644 --- a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/EvcPath.java +++ b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/EvcPath.java @@ -36,71 +36,72 @@ public class EvcPath { public String toJson() { -//{ -// "evc": -// { -// "evc:id": "822f8284-2b35-11e5-b345-feff819cdc9f", -// "evc:uni-dest": -// [ -// { -// "order": 0, -// "uni": "822f7eec-2b35-11e5-b345-feff819cdc9f" -// } -// ], -// "evc:uni-source": -// [ -// { -// "order": 0, -// "uni": "111f7eec-2c35-11e5-b345-feff819cdc9f" -// } -// ], -// "evc:cos-id": "string", -// "evc:ingress-bw": -// { -// "speed-1G": {} -// }, -// "evc:egress-bw": -// { -// "speed-1G": {} -// } -// } -//} - - String json = "{\n"+ - " \"evc\":\n"+ - " {\n"+ - " \"evc:id\": \""+ this.getId() +"\",\n"+ - " \"evc:uni-dest\":\n"+ - " [\n"+ - " {\n"+ - " \"order\": 0,\n"+ - " \"uni\": \""+ this.uni1.getId() +"\"\n"+ - " }\n"+ - " ],\n"+ - " \"evc:uni-source\":\n"+ - " [\n"+ - " {\n"+ - " \"order\": 0,\n"+ - " \"uni\": \""+ this.uni2.getId() +"\"\n"+ - " }\n"+ - " ],\n"+ - " \"evc:cos-id\": \""+ this.getCos() +"\",\n"+ - " \"evc:ingress-bw\":\n"+ - " {\n"+ -// " \"speed-1G\": {}\n"+ - " \"" + this.getIngressBW() + "\": {}\n"+ - " },\n"+ - " \"evc:egress-bw\":\n"+ + // { + // "network-topology:link": + // [ + // { + // "evc:link-id": "evc1", + // "evc:uni-dest": [ + // { + // "order": 0, + // "ip-address": "10.36.0.21" + // } + // ], + + // "evc:uni-source": [ + // { + // "order": 0, + // "ip-address": "10.36.0.22" + // } + // ], + + // "evc:cos-id": "string", + // "evc:ingress-bw": { + // "speed-1G": {} + // }, + // "evc:egress-bw": { + // "speed-1G": {} + // } + // } + // ] + // } + + String json = + + "{\n"+ + " \"network-topology:link\":\n" + + " [" + " {\n"+ -// " \"speed-1G\": {}\n"+ - " \"" + this.getEgressBW() + "\": {}\n"+ + " \"evc:link-id\": \""+ this.getId() +"\",\n"+ + " \"evc:uni-dest\":\n"+ + " [\n"+ + " {\n"+ + " \"order\": 0,\n"+ + " \"ip-address\": \""+ this.uni1.getIpAddress() +"\"\n"+ + " }\n"+ + " ],\n"+ + " \"evc:uni-source\":\n"+ + " [\n"+ + " {\n"+ + " \"order\": 0,\n"+ + " \"ip-address\": \""+ this.uni2.getIpAddress() +"\"\n"+ + " }\n"+ + " ],\n"+ + " \"evc:cos-id\": \""+ this.getCos() +"\",\n"+ + " \"evc:ingress-bw\":\n"+ + " {\n"+ + " \"" + this.getIngressBW() + "\": {}\n"+ + " },\n"+ + " \"evc:egress-bw\":\n"+ + " {\n"+ + " \"" + this.getEgressBW() + "\": {}\n"+ + " }\n"+ " }\n"+ - " }\n"+ + " ]" + "}"; return json; } - public String getId() { return id; } public void setId(String id) { this.id = id; } diff --git a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/Uni.java b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/Uni.java index cec4d80..0edf3db 100644 --- a/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/Uni.java +++ b/uni/unibase/src/main/java/com/cablelabs/vcpe/uni/unibase/model/Uni.java @@ -126,22 +126,45 @@ public class Uni public String toJson() { - String json = "{\n"+ - " \"uni\":\n"+ - " {\n"+ - " \"uni:id\": \""+ this.getId() +"\",\n"+ - " \"speed\":\n" + - " {\n" + - " \"" + this.getSpeed() + "\": "+"\"1\"\n"+ - " },\n"+ - " \"uni:mac-layer\": \""+ this.getMacLayer() +"\",\n"+ - " \"uni:physical-medium\": \""+ this.getPhysicalMedium() +"\",\n"+ - " \"uni:mtu-size\": \""+ this.getMtuSize() +"\",\n"+ - " \"uni:type\": \"\",\n"+ - " \"uni:mac-address\": \""+ this.getMacAddress() +"\",\n"+ - " \"uni:ip-address\": \""+ this.getIpAddress() +"\",\n"+ - " \"uni:mode\": \""+ this.getMode() +"\"\n"+ - " }\n"+ + /* + { + "network-topology:node": [ + { + "node-id": "uni1", + "speed": { + "speed-1G": 1 + }, + "uni:mac-layer": "IEEE 802.3-2005", + "uni:physical-medium": "UNI TypeFull Duplex 2 Physical Interface", + "uni:mtu-size": 0, + "uni:type": "", + "uni:mac-address": "b8:27:eb:c9:a9:66", + "uni:ip-address": "10.36.0.21", + "uni:mode": "Full Duplex" + } + ] + } + */ + + String json = + "{\n"+ + " \"network-topology:node\":\n" + + " [" + + " {\n"+ + " \"node-id\": \""+ this.getId() +"\",\n"+ + " \"speed\":\n" + + " {\n" + + " \"" + this.getSpeed() + "\": "+"\"1\"\n"+ + " },\n"+ + " \"uni:mac-layer\": \""+ this.getMacLayer() +"\",\n"+ + " \"uni:physical-medium\": \""+ this.getPhysicalMedium() +"\",\n"+ + " \"uni:mtu-size\": \""+ this.getMtuSize() +"\",\n"+ + " \"uni:type\": \"\",\n"+ + " \"uni:mac-address\": \""+ this.getMacAddress() +"\",\n"+ + " \"uni:ip-address\": \""+ this.getIpAddress() +"\",\n"+ + " \"uni:mode\": \""+ this.getMode() +"\"\n"+ + " }\n"+ + " ]" + "}"; return json; -- cgit 1.2.3-korg