2 * Copyright © 2019 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.tapi.utils;
10 import edu.umd.cs.findbugs.annotations.NonNull;
13 import java.io.FileInputStream;
14 import java.io.FileNotFoundException;
15 import java.io.InputStream;
16 import java.util.Optional;
17 import org.opendaylight.mdsal.binding.api.DataBroker;
18 import org.opendaylight.mdsal.binding.api.WriteTransaction;
19 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
20 import org.opendaylight.transportpce.common.DataStoreContext;
21 import org.opendaylight.transportpce.common.converter.XMLDataObjectConverter;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
23 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput;
24 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInputBuilder;
25 import org.opendaylight.yangtools.yang.binding.DataObject;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
31 public final class TopologyDataUtils {
33 private static final Logger LOG = LoggerFactory.getLogger(TopologyDataUtils.class);
34 private static final String TOPOLOGY_FILE =
35 "src/test/resources/openroadm-topology2.xml";
36 private static final String PORTMAPPING_FILE =
37 "src/test/resources/portmapping-example.xml";
39 public static GetTopologyDetailsInput buildGetTopologyDetailsInput() {
40 GetTopologyDetailsInputBuilder builtInput = new GetTopologyDetailsInputBuilder();
41 builtInput.setTopologyIdOrName("topo1");
42 return builtInput.build();
45 public static void writeTopologyFromFileToDatastore(DataStoreContext dataStoreContextUtil) {
46 Networks result = null;
47 File topoFile = new File(TOPOLOGY_FILE);
48 if (topoFile.exists()) {
49 String fileName = topoFile.getName();
50 InputStream targetStream;
52 targetStream = new FileInputStream(topoFile);
53 Optional<NormalizedNode<?, ?>> transformIntoNormalizedNode = null;
54 transformIntoNormalizedNode = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContextUtil)
55 .transformIntoNormalizedNode(targetStream);
56 if (!transformIntoNormalizedNode.isPresent()) {
57 throw new IllegalStateException(String.format(
58 "Could not transform the input %s into normalized nodes", fileName));
60 Optional<DataObject> dataObject = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContextUtil)
61 .getDataObject(transformIntoNormalizedNode.get(), Networks.QNAME);
62 if (!dataObject.isPresent()) {
63 throw new IllegalStateException("Could not transform normalized nodes into data object");
65 result = (Networks) dataObject.get();
67 } catch (FileNotFoundException e) {
68 LOG.error("File not found : {} at {}", e.getMessage(), e.getLocalizedMessage());
71 LOG.error("xml file {} not found at {}", topoFile.getName(), topoFile.getAbsolutePath());
73 LOG.info("Storing openroadm-topology in datastore");
74 InstanceIdentifier<Networks> ietfNetworksIID = InstanceIdentifier.builder(Networks.class).build();
75 writeTransaction(dataStoreContextUtil.getDataBroker(), ietfNetworksIID, result);
76 LOG.info("openroadm-topology stored with success in datastore");
79 private static boolean writeTransaction(DataBroker dataBroker, InstanceIdentifier instanceIdentifier,
82 WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
83 transaction.put(LogicalDatastoreType.CONFIGURATION, instanceIdentifier, object);
88 public static void writePortmappingFromFileToDatastore(DataStoreContext dataStoreContextUtil) {
89 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network result = null;
90 File portmappingFile = new File(PORTMAPPING_FILE);
91 if (portmappingFile.exists()) {
92 String fileName = portmappingFile.getName();
93 InputStream targetStream;
95 targetStream = new FileInputStream(portmappingFile);
96 Optional<NormalizedNode<?, ?>> transformIntoNormalizedNode = null;
97 transformIntoNormalizedNode = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContextUtil)
98 .transformIntoNormalizedNode(targetStream);
99 if (!transformIntoNormalizedNode.isPresent()) {
100 throw new IllegalStateException(String.format(
101 "Could not transform the input %s into normalized nodes", fileName));
103 Optional<DataObject> dataObject = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContextUtil)
104 .getDataObject(transformIntoNormalizedNode.get(), org.opendaylight.yang.gen.v1.http.org.opendaylight
105 .transportpce.portmapping.rev190702.Network.QNAME);
106 if (!dataObject.isPresent()) {
107 throw new IllegalStateException("Could not transform normalized nodes into data object");
109 result = (org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702
110 .Network) dataObject.get();
112 } catch (FileNotFoundException e) {
113 LOG.error("File not found : {} at {}", e.getMessage(), e.getLocalizedMessage());
116 LOG.error("xml file {} not found at {}", portmappingFile.getName(), portmappingFile.getAbsolutePath());
118 InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702
119 .Network> portmappingIID = InstanceIdentifier.builder(org.opendaylight.yang.gen.v1.http.org.opendaylight
120 .transportpce.portmapping.rev190702.Network.class).build();
121 writeTransaction(dataStoreContextUtil.getDataBroker(), portmappingIID, result);
122 LOG.info("portmapping-example stored with success in datastore");
125 private TopologyDataUtils() {