+ @Override
+ public Mapping getMapping(String nodeId, String circuitPackName, String portName) {
+ KeyedInstanceIdentifier<Nodes, NodesKey> portMappingIID = InstanceIdentifier.create(Network.class)
+ .child(Nodes.class, new NodesKey(nodeId));
+ try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
+ Optional<Nodes> portMapppingOpt = readTx.read(LogicalDatastoreType.CONFIGURATION, portMappingIID).get();
+ if (!portMapppingOpt.isPresent()) {
+ LOG.warn("Could not get portMapping for node {}", nodeId);
+ return null;
+ }
+ Map<MappingKey, Mapping> mappings = portMapppingOpt.get().getMapping();
+ for (Mapping mapping : mappings.values()) {
+ if (circuitPackName.equals(mapping.getSupportingCircuitPackName())
+ && portName.equals(mapping.getSupportingPort())) {
+ return mapping;
+ }
+ }
+ } catch (InterruptedException | ExecutionException ex) {
+ LOG.error("Unable to get mapping list for nodeId {}", nodeId, ex);
+ }
+ return null;
+ }
+
+
+ @Override
+ public void deleteMapping(String nodeId, String logicalConnectionPoint) {
+ LOG.info("Deleting Mapping {} of node '{}'", logicalConnectionPoint, nodeId);
+ WriteTransaction rw = this.dataBroker.newWriteOnlyTransaction();
+ InstanceIdentifier<Mapping> mappingIID = InstanceIdentifier.create(Network.class)
+ .child(Nodes.class, new NodesKey(nodeId)).child(Mapping.class, new MappingKey(logicalConnectionPoint));
+ rw.delete(LogicalDatastoreType.CONFIGURATION, mappingIID);
+ try {
+ rw.commit().get(1, TimeUnit.SECONDS);
+ LOG.info("Mapping {} removed for node '{}'", logicalConnectionPoint, nodeId);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("Error for removing mapping {} for node '{}'", logicalConnectionPoint, nodeId);
+ }
+ }