diff options
Diffstat (limited to 'ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf')
-rw-r--r-- | ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java new file mode 100644 index 0000000..2900265 --- /dev/null +++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java @@ -0,0 +1,226 @@ +package org.onap.ransim.netconf; + +import java.io.IOException; +import java.net.ConnectException; +import org.apache.log4j.Logger; +import com.tailf.jnc.Device; +import com.tailf.jnc.DeviceUser; +import com.tailf.jnc.Element; +import com.tailf.jnc.JNCException; +import com.tailf.jnc.NetconfSession; +import org.onap.ransim.rest.web.mapper.NearRTRICModel; +import org.onap.ransim.rest.web.mapper.GNBCUCPModel; +import org.onap.ransim.rest.web.mapper.GNBCUUPModel; +import org.onap.ransim.rest.web.mapper.GNBDUModel; +import org.onap.ransim.rest.web.mapper.NRCellCUModel; +import org.onap.ransim.rest.web.mapper.NRCellDUModel; + +public class NetconfClient { + + static Logger log = Logger.getLogger(NetconfClient.class.getName()); + + private String emsUserName; + private Device device; + + public NetconfClient(Device device) { + this.device = device; + } + + public NetconfClient(String emsUserName, String username, String password, String serverName, String ip, int port) { + DeviceUser deviceUser = new DeviceUser(emsUserName, username, password); + this.emsUserName = emsUserName; + this.device = new Device(serverName, deviceUser, ip, port); + } + + public Element getInitialNodeSet(NearRTRICModel rtRicModel,String serverId) { + try { + + Element ranNetworkElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/ran-network"); + Element nearRTRICElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/NearRTRIC"); + Element idNearRTRICElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/idNearRTRIC"); + idNearRTRICElement.setValue(rtRicModel.getNearRTRICId()); + Element sapElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/sAP"); + Element hostElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/host"); + hostElement.setValue("localhost"); + Element portElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/port"); + portElement.setValue("8080"); + sapElement.addChild(hostElement); + sapElement.addChild(portElement); + + for(GNBCUUPModel gNBCUUPModel:rtRicModel.getgNBCUUPList()) + { + if(gNBCUUPModel.getgNBCUUPId().toString().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId)) + { + Element gNBCUUPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/GNBCUUPFunction"); + Element idGNBCUUPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/idGNBCUUPFunction"); + idGNBCUUPFunctionElement.setValue(gNBCUUPModel.getgNBCUUPId().toString()); + Element attributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/attributes"); + Element gnBIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/gNBId"); + gnBIdElement.setValue(gNBCUUPModel.getgNBId()); + attributesElement.addChild(gnBIdElement); + attributesElement.addChild(sapElement); + gNBCUUPFunctionElement.addChild(idGNBCUUPFunctionElement); + gNBCUUPFunctionElement.addChild(attributesElement); + nearRTRICElement.addChild(gNBCUUPFunctionElement); + } + } + for(GNBCUCPModel gNBCUCPModel : rtRicModel.getgNBCUCPList()) + { + if(gNBCUCPModel.getgNBCUName().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId)) + { + Element gNBCUCPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/GNBCUCPFunction"); + Element idGNBCUCPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/idGNBCUCPFunction"); + idGNBCUCPFunctionElement.setValue(gNBCUCPModel.getgNBCUName()); + Element attributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/attributes"); + Element gNBCUNameElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/gNBCUName"); + gNBCUNameElement.setValue(gNBCUCPModel.getgNBCUName()); + Element gnBIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/gNBId"); + gnBIdElement.setValue(gNBCUCPModel.getgNBId()); + Element gNBIdLengthElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/gNBIdLength"); + gNBIdLengthElement.setValue(gNBCUCPModel.getgNBIdLength()); + attributesElement.addChild(gNBCUNameElement); + attributesElement.addChild(gnBIdElement); + attributesElement.addChild(gNBIdLengthElement); + attributesElement.addChild(sapElement); + for(NRCellCUModel nRCellCUModel:gNBCUCPModel.getCellCUList()) + { + Element nRCellCUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/NRCellCU"); + Element idNRCellCUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/idNRCellCU"); + idNRCellCUElement.setValue(nRCellCUModel.getCellLocalId()); + Element nRCellattributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/attributes"); + Element cellLocalIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/cellLocalId"); + cellLocalIdElement.setValue(nRCellCUModel.getCellLocalId()); + nRCellattributesElement.addChild(cellLocalIdElement); + nRCellattributesElement.addChild(sapElement); + nRCellCUElement.addChild(idNRCellCUElement); + nRCellCUElement.addChild(nRCellattributesElement); + gNBCUCPFunctionElement.addChild(nRCellCUElement); + } + gNBCUCPFunctionElement.addChild(idGNBCUCPFunctionElement); + gNBCUCPFunctionElement.addChild(attributesElement); + nearRTRICElement.addChild(gNBCUCPFunctionElement); + } + } + for(GNBDUModel gNBDUModel:rtRicModel.getgNBDUList()) + { + if(gNBDUModel.getgNBDUId().toString().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId)) + { + Element gNBDUFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/GNBDUFunction"); + Element idGNBDUFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/idGNBDUFunction"); + idGNBDUFunctionElement.setValue(gNBDUModel.getgNBDUId()); + Element attributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/attributes"); + Element gNBDUNameElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/gNBDUName"); + gNBDUNameElement.setValue(gNBDUModel.getgNBDUName()); + Element gNBIdLengthElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/gNBIdLength"); + gNBIdLengthElement.setValue(gNBDUModel.getgNBIdLength()); + Element gNBDUIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/gNBDUId"); + gNBDUIdElement.setValue(gNBDUModel.getgNBDUId()); + attributesElement.addChild(gNBIdLengthElement); + attributesElement.addChild(gNBDUNameElement); + attributesElement.addChild(gNBDUIdElement); + attributesElement.addChild(sapElement); + for(NRCellDUModel nRCellDUModel : gNBDUModel.getCellDUList()) + { + Element nRCellDUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/NRCellDU"); + Element idNRCellDUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/idNRCellDU"); + idNRCellDUElement.setValue(nRCellDUModel.getCellLocalId()); + Element nRCellattributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/attributes"); + Element cellLocalIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/cellLocalId"); + cellLocalIdElement.setValue(nRCellDUModel.getCellLocalId()); + Element nRSectorCarrierRefElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/nRSectorCarrierRef"); + nRSectorCarrierRefElement.setValue("OU=Sales"); + Element administrativeStateElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/administrativeState"); + administrativeStateElement.setValue(nRCellDUModel.getAdministrativeState()); + Element nRPCIElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/nRPCI"); + nRPCIElement.setValue(nRCellDUModel.getnRPCI()); + Element nRTACElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network", + "/nRTAC"); + nRTACElement.setValue(nRCellDUModel.getnRTAC()); + nRCellattributesElement.addChild(cellLocalIdElement); + nRCellattributesElement.addChild(sapElement); + nRCellattributesElement.addChild(nRSectorCarrierRefElement); + nRCellattributesElement.addChild(administrativeStateElement); + nRCellattributesElement.addChild(nRPCIElement); + nRCellattributesElement.addChild(nRTACElement); + nRCellDUElement.addChild(idNRCellDUElement); + nRCellDUElement.addChild(nRCellattributesElement); + gNBDUFunctionElement.addChild(nRCellDUElement); + } + gNBDUFunctionElement.addChild(idGNBDUFunctionElement); + gNBDUFunctionElement.addChild(attributesElement); + nearRTRICElement.addChild(gNBDUFunctionElement); + } + } + + nearRTRICElement.addChild(idNearRTRICElement); + ranNetworkElement.addChild(nearRTRICElement); + + return ranNetworkElement; + + } catch (JNCException e) { + log.error("Exception occured during NodeSet creation {}", e); + return null; + } + + } + + public void editConfig(Element initialConfig) { + try { + Boolean connected = false; + while (!connected) { + try { + Thread.sleep(6000); + device.connect(emsUserName); + connected = true; + } catch (ConnectException e) { + log.error("Device is not up yet... retrying after 3s"); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + } + + } + + device.newSession("cfg"); + log.info(initialConfig.toXMLString()); + device.getSession("cfg").editConfig(NetconfSession.CANDIDATE, initialConfig); + device.getSession("cfg").commit(); + log.info("Initial configuration set"); + } catch (IOException | JNCException e) { + log.error("Exception occured during edit config {}", e); + } + } + +} |