package org.opendaylight.ovsdb.southbound.transactions.md;
+import com.google.common.base.Optional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.Map.Entry;
-
+import java.util.Set;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
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.ovsdb.node.attributes.Queues;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.QueuesBuilder;
+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.ovsdb.rev150105.ovsdb.node.attributes.queues.QueuesExternalIds;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.queues.QueuesExternalIdsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.queues.QueuesExternalIdsKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Optional;
-
public class OvsdbQueueUpdateCommand extends AbstractTransactionCommand {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbQueueUpdateCommand.class);
* </p>
*
* @param transaction the {@link ReadWriteTransaction}
- * @param updatedQueueRows updated {@link Queue} rows
-
*/
private void updateQueue(ReadWriteTransaction transaction) {
if (ovsdbNode.isPresent()) {
for (Entry<UUID, Queue> entry : updatedQueueRows.entrySet()) {
Queue queue = entry.getValue();
- Queue oldQueue = oldQueueRows.get(entry.getKey());
QueuesBuilder queuesBuilder = new QueuesBuilder();
queuesBuilder.setQueueId(new Uri(getQueueId(queue)));
queuesBuilder.setQueueUuid(new Uuid(entry.getKey().toString()));
Collection<Long> dscp = queue.getDscpColumn().getData();
if (!dscp.isEmpty()) {
- try {
- queuesBuilder.setDscp(new Short(dscp.iterator().next().toString()));
- } catch (NumberFormatException e) {
- queuesBuilder.setDscp(new Short("0"));
- }
+ queuesBuilder.setDscp(dscp.iterator().next().shortValue());
}
+ Queue oldQueue = oldQueueRows.get(entry.getKey());
setOtherConfig(transaction, queuesBuilder, oldQueue, queue, nodeIId);
setExternalIds(transaction, queuesBuilder, oldQueue, queue, nodeIId);
}
}
+ @SuppressWarnings("unchecked")
private String getQueueId(Queue queue) {
if (queue.getExternalIdsColumn() != null
&& queue.getExternalIdsColumn().getData() != null
- && queue.getExternalIdsColumn().getData().containsKey(SouthboundConstants.QUEUE_ID_EXTERNAL_ID_KEY)) {
- return queue.getExternalIdsColumn().getData().get(SouthboundConstants.QUEUE_ID_EXTERNAL_ID_KEY);
- } else {
- return SouthboundConstants.QUEUE_URI_PREFIX + "://" + queue.getUuid().toString();
+ && queue.getExternalIdsColumn().getData().containsKey(SouthboundConstants.IID_EXTERNAL_ID_KEY)) {
+ InstanceIdentifier<Queues> queueIid =
+ (InstanceIdentifier<Queues>) SouthboundUtil.deserializeInstanceIdentifier(
+ queue.getExternalIdsColumn().getData().get(SouthboundConstants.IID_EXTERNAL_ID_KEY));
+ if (queueIid != null) {
+ QueuesKey queuesKey = queueIid.firstKeyOf(Queues.class);
+ if (queuesKey != null) {
+ return queuesKey.getQueueId().getValue();
+ }
+ }
}
+ return SouthboundConstants.QUEUE_URI_PREFIX + "://" + queue.getUuid().toString();
}
private void setOtherConfig(ReadWriteTransaction transaction,