2 * Copyright (c) 2015 CableLabs 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.unimgr.command;
13 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
14 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
16 import org.opendaylight.unimgr.impl.UnimgrMapper;
17 import org.opendaylight.unimgr.impl.UnimgrUtils;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Evc;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
23 import org.opendaylight.yangtools.yang.binding.DataObject;
24 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
28 import com.google.common.base.Optional;
30 public class EvcDeleteCommand extends AbstractDeleteCommand {
32 private static final Logger LOG = LoggerFactory.getLogger(EvcDeleteCommand.class);
34 public EvcDeleteCommand(DataBroker dataBroker,
35 AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
36 super.changes = changes;
37 super.dataBroker = dataBroker;
41 public void execute() {
42 Map<InstanceIdentifier<?>, DataObject> originalData = changes.getOriginalData();
43 Set<InstanceIdentifier<?>> removedIids = changes.getRemovedPaths();
44 for (InstanceIdentifier<?> evcIid : removedIids) {
45 DataObject removedDataObject = originalData.get(evcIid);
46 if (removedDataObject instanceof Evc) {
47 Evc evc = (Evc)removedDataObject;
48 Optional<Node> optionalSourceUniNode = UnimgrUtils.readNode(dataBroker,
49 LogicalDatastoreType.OPERATIONAL,
54 Optional<Node> optionalDestinationUniNode = UnimgrUtils.readNode(dataBroker,
55 LogicalDatastoreType.OPERATIONAL,
60 if (optionalSourceUniNode.isPresent()
61 && optionalDestinationUniNode.isPresent()) {
62 Node sourceUniNode = optionalSourceUniNode.get();
63 Node destUniNode = optionalDestinationUniNode.get();
64 UniAugmentation sourceUniAugmentation = sourceUniNode
65 .getAugmentation(UniAugmentation.class);
66 UniAugmentation destUniAugmentation = destUniNode
67 .getAugmentation(UniAugmentation.class);
68 InstanceIdentifier<Node> sourceOvsdbIid =
72 .firstIdentifierOf(Node.class);
73 InstanceIdentifier<Node> destOvsdbIid =
77 .firstIdentifierOf(Node.class);
78 Optional<Node> optionalSourceOvsdNode =
79 UnimgrUtils.readNode(dataBroker,
80 LogicalDatastoreType.OPERATIONAL,
82 Optional<Node> optionalDestinationOvsdbNode =
83 UnimgrUtils.readNode(dataBroker,
84 LogicalDatastoreType.OPERATIONAL,
86 if (optionalSourceOvsdNode.isPresent()
87 && optionalDestinationOvsdbNode.isPresent()) {
88 Node sourceOvsdbNode = optionalSourceOvsdNode.get();
89 Node destinationOvsdbNode = optionalDestinationOvsdbNode.get();
90 OvsdbNodeAugmentation sourceOvsdbNodeAugmentation =
91 sourceOvsdbNode.getAugmentation(OvsdbNodeAugmentation.class);
92 OvsdbNodeAugmentation destinationOvsdbNodeAugmentation =
93 destinationOvsdbNode.getAugmentation(OvsdbNodeAugmentation.class);
94 InstanceIdentifier<Node> sourceBridgeIid =
95 sourceOvsdbNodeAugmentation
96 .getManagedNodeEntry()
101 .firstIdentifierOf(Node.class);
102 InstanceIdentifier<Node> destinationBridgeIid =
103 destinationOvsdbNodeAugmentation
104 .getManagedNodeEntry()
109 .firstIdentifierOf(Node.class);
110 Optional<Node> optionalSourceBridgeNode = UnimgrUtils.readNode(dataBroker,
111 LogicalDatastoreType.OPERATIONAL,
113 Optional<Node> optionalDestinationBridgeNode = UnimgrUtils.readNode(dataBroker,
114 LogicalDatastoreType.OPERATIONAL,
115 destinationBridgeIid);
116 if (optionalSourceBridgeNode.isPresent()
117 && optionalDestinationBridgeNode.isPresent()) {
118 Node sourceBridgeNode = optionalSourceBridgeNode.get();
119 Node destinationBridgeNode = optionalSourceBridgeNode.get();
120 TpId sourceTp = sourceBridgeNode.getTerminationPoint().iterator().next().getTpId();
121 TpId destTp = destinationBridgeNode.getTerminationPoint().iterator().next().getTpId();
122 InstanceIdentifier<?> sourceTpIid = UnimgrMapper.getTerminationPointIid(sourceBridgeNode,
124 InstanceIdentifier<?> destinationTpIid = UnimgrMapper.getTerminationPointIid(destinationBridgeNode,
126 UnimgrUtils.deleteNode(dataBroker, sourceTpIid, LogicalDatastoreType.CONFIGURATION);
127 UnimgrUtils.deleteNode(dataBroker, destinationTpIid, LogicalDatastoreType.CONFIGURATION);
128 UnimgrUtils.deleteNode(dataBroker, sourceTpIid, LogicalDatastoreType.OPERATIONAL);
129 UnimgrUtils.deleteNode(dataBroker, destinationTpIid, LogicalDatastoreType.OPERATIONAL);
131 LOG.info("Unable to retrieve the Ovsdb Bridge node source and/or destination.");
134 LOG.info("Unable to retrieve the Ovsdb node source and/or destination.");
137 LOG.info("Unable to retrieve the Uni source and/or destination.");