import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.external.ids.attributes.ExternalIds;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.external.ids.attributes.ExternalIdsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Trunks;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.TrunksBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
for (Port port : portUpdatedRows) {
if (portUUID.equals(port.getUuid())) {
Collection<Long> vlanId = port.getTagColumn().getData();
+ Set<Long> portTrunks = port.getTrunksColumn().getData();
bridgeName = bridge.getName();
NodeId bridgeId = SouthboundMapper.createManagedNodeId(
getKey(), new OvsdbBridgeName(bridgeName));
port.getUuid().toString()));
if (vlanId.size() > 0) {
Iterator<Long> itr = vlanId.iterator();
- if (itr.next() != null) {
- int id = itr.next().intValue();
- ovsdbTerminationPointBuilder.setVlanTag(new VlanId(id));
- // TODO: re-visit this iteration when expecting more than 1 vlan tag
- // per ovsdb termination point.
- break;
+ // There are no loops here, just get the first element.
+ int id = itr.next().intValue();
+ ovsdbTerminationPointBuilder.setVlanTag(new VlanId(id));
+ }
+ List<Trunks> modelTrunks = new ArrayList<Trunks>();
+ for (Long trunk: portTrunks) {
+ if (trunk != null) {
+ modelTrunks.add(new TrunksBuilder().setTrunk(new VlanId(trunk.intValue())).build());
}
}
+ ovsdbTerminationPointBuilder.setTrunks(modelTrunks);
Column<GenericTableSchema, Set<UUID>> iface = port.getInterfacesColumn();
Set<UUID> ifUuid = iface.getData();
Collection<Interface> ifUpdateRows = TyperUtils.extractRowsUpdated(
new Uuid(interfIter.getUuid().toString()));
ovsdbTerminationPointBuilder.setInterfaceType(
SouthboundMapper.createInterfaceType(type));
+ Set<Long> ofPorts = interfIter.getOpenFlowPortColumn().getData();
+ if (ofPorts != null && !ofPorts.isEmpty()) {
+ Iterator<Long> ofPortsIter = ofPorts.iterator();
+ long ofPort = ofPortsIter.next();
+ if (ofPort >= 0) {
+ ovsdbTerminationPointBuilder
+ .setOfport(ofPort);
+ } else {
+ LOG.debug("Received negative value for ofPort from ovsdb for {} {} {}",
+ bridge.getName(), interfIter.getName(),ofPort);
+ }
+ }
+ Set<Long> ofPortRequests = interfIter
+ .getOpenFlowPortRequestColumn().getData();
+ if (ofPortRequests != null && !ofPortRequests.isEmpty()) {
+ Iterator<Long> ofPortRequestsIter = ofPortRequests.iterator();
+ int ofPort = ofPortRequestsIter.next().intValue();
+ if (ofPort >= 0) {
+ ovsdbTerminationPointBuilder
+ .setOfportRequest(ofPort);
+ } else {
+ LOG.debug("Received negative value for ofPort from ovsdb for {} {} {}",
+ bridge.getName(), interfIter.getName(),ofPort);
+ }
+ }
+
+ Map<String, String> externalIds = interfIter.getExternalIdsColumn().getData();
+ if (externalIds != null && !externalIds.isEmpty()) {
+ Set<String> externalIdKeys = externalIds.keySet();
+ ArrayList<ExternalIds> externalIdsList = new ArrayList<ExternalIds>();
+ String externalIdValue;
+ for (String externalIdKey : externalIdKeys) {
+ externalIdValue = externalIds.get(externalIdKey);
+ if (externalIdKey != null && externalIdValue != null) {
+ externalIdsList.add(new ExternalIdsBuilder()
+ .setExternalIdKey(externalIdKey)
+ .setExternalIdValue(externalIdValue).build());
+ }
+ }
+ ovsdbTerminationPointBuilder.setExternalIds(externalIdsList);
+ }
+
break;
}
}