*/
package org.opendaylight.unimgr.command;
+import java.util.List;
import java.util.Set;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.unimgr.impl.UnimgrMapper;
import org.opendaylight.unimgr.utils.MdsalUtils;
import org.opendaylight.unimgr.utils.OvsdbUtils;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntries;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntriesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.Queues;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QueuesKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
LogicalDatastoreType.OPERATIONAL,
ovsdbNodeIid);
if (optionalNode.isPresent()) {
- LOG.info("Delete bride node");
Node ovsdbNode = optionalNode.get();
+ LOG.info("Delete QoS and Queues entries");
+ List<QosEntries> qosList = ovsdbNode
+ .getAugmentation(OvsdbNodeAugmentation.class)
+ .getQosEntries();
+ QosEntriesKey qosEntryKey = null;
+ for (final QosEntries qosEntry : qosList) {
+ qosEntryKey = qosEntry.getKey();
+ InstanceIdentifier<QosEntries> qosIid = UnimgrMapper.getOvsdbQoSEntriesIid(ovsdbNode, qosEntryKey);
+ MdsalUtils.deleteNode(dataBroker, qosIid, LogicalDatastoreType.CONFIGURATION);
+ }
+
+ List<Queues> queuesList = ovsdbNode
+ .getAugmentation(OvsdbNodeAugmentation.class)
+ .getQueues();
+ QueuesKey queuesKey = null;
+ for (final Queues queue : queuesList) {
+ queuesKey = queue.getKey();
+ InstanceIdentifier<Queues> queuesIid = UnimgrMapper.getOvsdbQueuesIid(ovsdbNode, queuesKey);
+ MdsalUtils.deleteNode(dataBroker, queuesIid, LogicalDatastoreType.CONFIGURATION);
+ }
+
+ LOG.info("Delete bridge node");
InstanceIdentifier<Node> bridgeIid = UnimgrMapper.getOvsdbBridgeNodeIid(ovsdbNode);
Optional<Node> optBridgeNode = MdsalUtils.readNode(dataBroker, bridgeIid);
if (optBridgeNode.isPresent()) {
.child(QueuesOtherConfig.class, new QueuesOtherConfigKey(UnimgrConstants.QOS_MAX_RATE));
return queuesOtherConfig;
}
+
+ public static InstanceIdentifier<QosEntries> getOvsdbQoSEntriesIid(Node ovsdbNode, QosEntriesKey qosEntryKey) {
+ InstanceIdentifier<QosEntries> qosEntriesIid = InstanceIdentifier
+ .create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(UnimgrConstants.OVSDB_TOPOLOGY_ID))
+ .child(Node.class, new NodeKey(ovsdbNode.getNodeId()))
+ .augmentation(OvsdbNodeAugmentation.class)
+ .child(QosEntries.class, qosEntryKey);
+ return qosEntriesIid;
+ }
+
+ public static InstanceIdentifier<Queues> getOvsdbQueuesIid(Node ovsdbNode, QueuesKey queuesKey) {
+ InstanceIdentifier<Queues> queuesIid = InstanceIdentifier
+ .create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(UnimgrConstants.OVSDB_TOPOLOGY_ID))
+ .child(Node.class, new NodeKey(ovsdbNode.getNodeId()))
+ .augmentation(OvsdbNodeAugmentation.class)
+ .child(Queues.class, queuesKey);
+ return queuesIid;
+ }
}
import static org.mockito.Mockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.method;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.junit.Before;
import org.opendaylight.unimgr.utils.UniUtils;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntries;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QosEntriesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.Queues;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QueuesKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
/**
* Test method for {@link org.opendaylight.unimgr.command.UniDeleteCommand#execute()}.
*/
- @SuppressWarnings({ "unchecked", "rawtypes", "deprecation" })
+ @SuppressWarnings({ "unchecked", "rawtypes"})
@Test
public void testExecute() {
final Set<InstanceIdentifier<UniAugmentation>> removedUnis =
.create(NetworkTopology.class)
.child(Topology.class, new TopologyKey(UnimgrConstants.UNI_TOPOLOGY_ID))
.child(Node.class, new NodeKey(OVSDB_NODE_ID));
+ final Node ovsdbNode = mock(Node.class);
+ final OvsdbNodeAugmentation ovsdbNodeAugmentation = mock(OvsdbNodeAugmentation.class);
+ final QosEntries qosEntries = mock(QosEntries.class);
+ final Queues queues = mock(Queues.class);
when(uniAugmentation.getIpAddress()).thenReturn(mock(IpAddress.class));
when(uniAugmentation.getOvsdbNodeRef()).thenReturn(ovsNodedRef);
when(ovsNodedRef.getValue()).thenReturn(uniKey);
when(optionalNode.isPresent()).thenReturn(true);
- when(optionalNode.get()).thenReturn(mock(Node.class));
+ when(optionalNode.get()).thenReturn(ovsdbNode);
+ when(ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class)).thenReturn(ovsdbNodeAugmentation);
+ List<QosEntries> qosEntriesList = new ArrayList<>();
+ when(qosEntries.getKey()).thenReturn(mock(QosEntriesKey.class));
+ qosEntriesList.add(qosEntries);
+ when(ovsdbNodeAugmentation.getQosEntries()).thenReturn(qosEntriesList);
+ List<Queues> queuesList = new ArrayList<>();
+ when(queues.getKey()).thenReturn(mock(QueuesKey.class));
+ queuesList.add(queues);
+ when(ovsdbNodeAugmentation.getQueues()).thenReturn(queuesList);
when(OvsdbUtils.extractRemoved(any(AsyncDataChangeEvent.class), any(Class.class)))
.thenReturn(removedUnis);
when(MdsalUtils.read(any(DataBroker.class), any(LogicalDatastoreType.class),
.thenReturn(instanceOfNode);
when(UnimgrMapper.getUniIid(any(DataBroker.class), any(IpAddress.class),
any(LogicalDatastoreType.class))).thenReturn(instanceOfNode);
+ when(UnimgrMapper.getOvsdbQoSEntriesIid(any(Node.class), any(QosEntriesKey.class))).thenReturn(instanceOfNode);
+ when(UnimgrMapper.getOvsdbQueuesIid(any(Node.class), any(QueuesKey.class))).thenReturn(instanceOfNode);
when(MdsalUtils.deleteNode(any(DataBroker.class), any(InstanceIdentifier.class),
any(LogicalDatastoreType.class))).thenReturn(true);
uniDeleteCommand.execute();
- PowerMockito.verifyStatic(times(3));
+ PowerMockito.verifyStatic(times(5));
MdsalUtils.deleteNode(any(DataBroker.class), any(InstanceIdentifier.class),
any(LogicalDatastoreType.class));
}