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;
10 import java.util.List;
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.UnimgrConstants;
17 import org.opendaylight.unimgr.impl.UnimgrMapper;
18 import org.opendaylight.unimgr.utils.MdsalUtils;
19 import org.opendaylight.unimgr.utils.OvsdbUtils;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntries;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntriesKey;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.Queues;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QueuesKey;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
27 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
28 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
29 import org.opendaylight.yangtools.yang.binding.DataObject;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
34 import com.google.common.base.Optional;
36 public class UniDeleteCommand extends AbstractDeleteCommand {
38 private static final Logger LOG = LoggerFactory.getLogger(UniDeleteCommand.class);
40 public UniDeleteCommand(DataBroker dataBroker,
41 AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
42 super.changes = changes;
43 super.dataBroker = dataBroker;
47 public void execute() {
48 Set<InstanceIdentifier<UniAugmentation>> removedUnis = OvsdbUtils.extractRemoved(changes,
49 UniAugmentation.class);
50 if (!removedUnis.isEmpty()) {
51 for (InstanceIdentifier<UniAugmentation> removedUniIid: removedUnis) {
52 UniAugmentation uniAugmentation = MdsalUtils.read(dataBroker,
53 LogicalDatastoreType.OPERATIONAL,
55 if (uniAugmentation != null) {
56 OvsdbNodeRef ovsNodedRef = uniAugmentation.getOvsdbNodeRef();
57 InstanceIdentifier<Node> ovsdbNodeIid = ovsNodedRef.getValue().firstIdentifierOf(Node.class);
58 Optional<Node> optionalNode = MdsalUtils.readNode(dataBroker,
59 LogicalDatastoreType.OPERATIONAL,
61 if (optionalNode.isPresent()) {
62 Node ovsdbNode = optionalNode.get();
63 LOG.info("Delete QoS and Queues entries");
64 List<QosEntries> qosList = ovsdbNode
65 .getAugmentation(OvsdbNodeAugmentation.class)
67 QosEntriesKey qosEntryKey = null;
68 for (final QosEntries qosEntry : qosList) {
69 qosEntryKey = qosEntry.getKey();
70 InstanceIdentifier<QosEntries> qosIid = UnimgrMapper.getOvsdbQoSEntriesIid(ovsdbNode, qosEntryKey);
71 MdsalUtils.deleteNode(dataBroker, qosIid, LogicalDatastoreType.CONFIGURATION);
74 List<Queues> queuesList = ovsdbNode
75 .getAugmentation(OvsdbNodeAugmentation.class)
77 QueuesKey queuesKey = null;
78 for (final Queues queue : queuesList) {
79 queuesKey = queue.getKey();
80 InstanceIdentifier<Queues> queuesIid = UnimgrMapper.getOvsdbQueuesIid(ovsdbNode, queuesKey);
81 MdsalUtils.deleteNode(dataBroker, queuesIid, LogicalDatastoreType.CONFIGURATION);
84 LOG.info("Delete bridge node");
85 InstanceIdentifier<Node> bridgeIid = UnimgrMapper.getOvsdbBridgeNodeIid(ovsdbNode);
86 Optional<Node> optBridgeNode = MdsalUtils.readNode(dataBroker, bridgeIid);
87 if (optBridgeNode.isPresent()) {
88 Node bridgeNode = optBridgeNode.get();
89 InstanceIdentifier<TerminationPoint> iidTermPoint = UnimgrMapper.getTerminationPointIid(bridgeNode,
90 UnimgrConstants.DEFAULT_BRIDGE_NAME);
91 MdsalUtils.deleteNode(dataBroker, iidTermPoint, LogicalDatastoreType.CONFIGURATION);
93 MdsalUtils.deleteNode(dataBroker, bridgeIid, LogicalDatastoreType.CONFIGURATION);
95 InstanceIdentifier<Node> iidUni = UnimgrMapper.getUniIid(dataBroker, uniAugmentation.getIpAddress(),
96 LogicalDatastoreType.OPERATIONAL);
98 MdsalUtils.deleteNode(dataBroker, iidUni, LogicalDatastoreType.OPERATIONAL);
101 LOG.info("Received Uni Augmentation is null", removedUniIid);