2 * Copyright © 2021 Orange. 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.networkmodel.listeners;
10 import java.util.Collection;
11 import java.util.LinkedList;
12 import org.eclipse.jdt.annotation.NonNull;
13 import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
14 import org.opendaylight.mdsal.binding.api.DataTreeModification;
15 import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.network.Nodes;
18 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 public class PortMappingListener implements DataTreeChangeListener<Mapping> {
25 private static final Logger LOG = LoggerFactory.getLogger(PortMappingListener.class);
27 private final NetworkModelService networkModelService;
29 public PortMappingListener(NetworkModelService networkModelService) {
30 this.networkModelService = networkModelService;
34 public void onDataTreeChanged(@NonNull Collection<DataTreeModification<Mapping>> changes) {
35 for (DataTreeModification<Mapping> change : changes) {
36 if (change.getRootNode().getDataBefore() != null && change.getRootNode().getDataAfter() != null) {
37 Mapping oldMapping = change.getRootNode().getDataBefore();
38 Mapping newMapping = change.getRootNode().getDataAfter();
39 if (oldMapping.getPortAdminState().equals(newMapping.getPortAdminState())
40 || oldMapping.getPortOperState().equals(newMapping.getPortOperState())) {
43 LinkedList<PathArgument> path = new LinkedList<>();
44 path.addAll((Collection<? extends PathArgument>) change.getRootPath().getRootIdentifier()
47 @SuppressWarnings("unchecked") InstanceIdentifier<Nodes> portmappintNodeID =
48 (InstanceIdentifier<Nodes>) InstanceIdentifier.create(path);
49 String nodeId = InstanceIdentifier.keyOf(portmappintNodeID).getNodeId();
50 networkModelService.updateOpenRoadmTopologies(nodeId, newMapping);