2 * Copyright (c) 2016 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
9 package org.opendaylight.unimgr.command;
11 import java.util.List;
13 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
14 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
16 import org.opendaylight.unimgr.api.AbstractCommand;
17 import org.opendaylight.unimgr.impl.UnimgrMapper;
18 import org.opendaylight.unimgr.utils.MdsalUtils;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntries;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntriesKey;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.Queues;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QueuesKey;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
31 import com.google.common.base.Optional;
33 public class UniRemoveCommand extends AbstractCommand<Node> {
35 private static final Logger LOG = LoggerFactory.getLogger(UniRemoveCommand.class);
37 public UniRemoveCommand(final DataBroker dataBroker, final DataTreeModification<Node> removedUniNode) {
38 super(dataBroker, removedUniNode);
42 public void execute() {
43 final Node uniNode = dataObject.getRootNode().getDataBefore();
44 final UniAugmentation uniAugmentation = uniNode.getAugmentation(UniAugmentation.class);
45 final InstanceIdentifier<?> removedUniIid = dataObject.getRootPath().getRootIdentifier()
46 .firstIdentifierOf(UniAugmentation.class);
47 if (uniAugmentation != null) {
48 final OvsdbNodeRef ovsNodedRef = uniAugmentation.getOvsdbNodeRef();
49 final InstanceIdentifier<Node> ovsdbNodeIid = ovsNodedRef.getValue().firstIdentifierOf(Node.class);
50 final Optional<Node> optionalNode = MdsalUtils.readNode(dataBroker,
51 LogicalDatastoreType.OPERATIONAL,
53 if (optionalNode.isPresent()) {
54 final Node ovsdbNode = optionalNode.get();
55 LOG.info("Delete QoS and Queues entries");
56 List<QosEntries> qosList = ovsdbNode
57 .getAugmentation(OvsdbNodeAugmentation.class)
59 QosEntriesKey qosEntryKey = null;
60 for (final QosEntries qosEntry : qosList) {
61 qosEntryKey = qosEntry.getKey();
62 InstanceIdentifier<QosEntries> qosIid = UnimgrMapper.getOvsdbQoSEntriesIid(ovsdbNode, qosEntryKey);
63 MdsalUtils.deleteNode(dataBroker, qosIid, LogicalDatastoreType.CONFIGURATION);
65 List<Queues> queuesList = ovsdbNode
66 .getAugmentation(OvsdbNodeAugmentation.class)
68 QueuesKey queuesKey = null;
69 for (final Queues queue : queuesList) {
70 queuesKey = queue.getKey();
71 InstanceIdentifier<Queues> queuesIid = UnimgrMapper.getOvsdbQueuesIid(ovsdbNode, queuesKey);
72 MdsalUtils.deleteNode(dataBroker, queuesIid, LogicalDatastoreType.CONFIGURATION);
74 LOG.info("Delete bride node");
75 final InstanceIdentifier<Node> bridgeIid = UnimgrMapper.getOvsdbBridgeNodeIid(ovsdbNode);
76 MdsalUtils.deleteNode(dataBroker, bridgeIid, LogicalDatastoreType.CONFIGURATION);
78 final InstanceIdentifier<Node> iidUni = UnimgrMapper.getUniIid(dataBroker, uniAugmentation.getIpAddress(),
79 LogicalDatastoreType.OPERATIONAL);
81 MdsalUtils.deleteNode(dataBroker, iidUni, LogicalDatastoreType.OPERATIONAL);
85 LOG.info("Received Uni Augmentation is null", removedUniIid);