new ConcurrentHashMap<>();
private final Map<Class<? extends Identifiable>, Map<InstanceIdentifier, DeviceData>> opKeyVsData =
new ConcurrentHashMap<>();
- private final Map<Class<? extends Identifiable>, Map<UUID, Object>> uuidVsData = new ConcurrentHashMap<>();
+ private final Map<Class<? extends Identifiable>, Map<UUID, DeviceData>> uuidVsData = new ConcurrentHashMap<>();
private final DependencyQueue dependencyQueue;
private TransactionHistory controllerTxHistory;
private TransactionHistory deviceUpdateHistory;
}
public Map<UUID, LogicalSwitch> getLogicalSwitches() {
- Map<UUID, Object> switches = uuidVsData.get(LogicalSwitches.class);
+ Map<UUID, DeviceData> switches = uuidVsData.get(LogicalSwitches.class);
Map<UUID, LogicalSwitch> result = new HashMap<>();
if (switches != null) {
- for (Map.Entry<UUID, Object> entry : switches.entrySet()) {
- result.put(entry.getKey(), (LogicalSwitch) entry.getValue());
+ for (Map.Entry<UUID, DeviceData> entry : switches.entrySet()) {
+ result.put(entry.getKey(), (LogicalSwitch) entry.getValue().getData());
}
}
return result;
}
public Map<UUID, PhysicalLocator> getPhysicalLocators() {
- Map<UUID, Object> locators = uuidVsData.get(TerminationPoint.class);
+ Map<UUID, DeviceData> locators = uuidVsData.get(TerminationPoint.class);
Map<UUID, PhysicalLocator> result = new HashMap<>();
if (locators != null) {
- for (Map.Entry<UUID, Object> entry : locators.entrySet()) {
- result.put(entry.getKey(), (PhysicalLocator) entry.getValue());
+ for (Map.Entry<UUID, DeviceData> entry : locators.entrySet()) {
+ result.put(entry.getKey(), (PhysicalLocator) entry.getValue().getData());
}
}
return result;
public void updateDeviceOperData(Class<? extends Identifiable> cls, InstanceIdentifier key,
UUID uuid, Object data) {
LOG.debug("Updating device data {}", key);
- HwvtepSouthboundUtil.updateData(opKeyVsData, cls, key,
- new DeviceData(key, uuid, data, DeviceDataStatus.AVAILABLE));
- HwvtepSouthboundUtil.updateData(uuidVsData, cls, uuid, data);
+ DeviceData deviceData = new DeviceData(key, uuid, data, DeviceDataStatus.AVAILABLE);
+ HwvtepSouthboundUtil.updateData(opKeyVsData, cls, key, deviceData);
+ HwvtepSouthboundUtil.updateData(uuidVsData, cls, uuid, deviceData);
}
public void clearDeviceOperData(Class<? extends Identifiable> cls, InstanceIdentifier key) {
}
public Object getDeviceOperData(Class<? extends Identifiable> cls, UUID uuid) {
- return HwvtepSouthboundUtil.getData(uuidVsData, cls, uuid);
+ return HwvtepSouthboundUtil.getData(uuidVsData, cls, uuid).getData();
}
public DeviceData getDeviceOperData(Class<? extends Identifiable> cls, InstanceIdentifier key) {
return opKeyVsData.get(cls);
}
+ public InstanceIdentifier getDeviceOperKey(final Class<? extends Identifiable> cls, final UUID uuid) {
+ DeviceData deviceData = HwvtepSouthboundUtil.getData(uuidVsData, cls, uuid);
+ if (deviceData != null) {
+ return deviceData.getKey();
+ }
+ return null;
+ }
+
public UUID getUUID(Class<? extends Identifiable> cls, InstanceIdentifier key) {
DeviceData data = HwvtepSouthboundUtil.getData(opKeyVsData, cls, key);
if (data != null) {
String portName = portUpdate.getNameColumn().getData();
Optional<InstanceIdentifier<Node>> switchIid = getTerminationPointSwitch(portUpdateEntry.getKey());
if (!switchIid.isPresent()) {
- switchIid = getTerminationPointSwitch(transaction, node, portName);
+ switchIid = getFromDeviceOperCache(portUpdate.getUuid());
+ if (!switchIid.isPresent()) {
+ LOG.debug("Failed to find node from the DeviceOperCache for port {}. Get it from the DS.",
+ portUpdate);
+ switchIid = getTerminationPointSwitch(transaction, node, portName);
+ }
}
if (switchIid.isPresent()) {
TerminationPointKey tpKey = new TerminationPointKey(new TpId(portName));
}
// Update with Deleted portfaultstatus
deleteEntries(transaction,getPortFaultStatusToRemove(tpPath, portUpdate));
+ } else {
+ LOG.warn("switchIid was not found for port {}", portUpdate);
}
}
}
Node node, String tpName) {
HwvtepGlobalAugmentation hwvtepNode = node.augmentation(HwvtepGlobalAugmentation.class);
List<Switches> switchNodes = hwvtepNode.getSwitches();
- for (Switches managedNodeEntry : switchNodes) {
- @SuppressWarnings("unchecked")
- Node switchNode = HwvtepSouthboundUtil
- .readNode(transaction, (InstanceIdentifier<Node>) managedNodeEntry.getSwitchRef().getValue()).get();
- TerminationPointKey tpKey = new TerminationPointKey(new TpId(tpName));
- if (switchNode.getTerminationPoint() != null) {
- for (TerminationPoint terminationPoint : switchNode.getTerminationPoint()) {
- if (terminationPoint.key().equals(tpKey)) {
- return Optional.of((InstanceIdentifier<Node>) managedNodeEntry.getSwitchRef().getValue());
+ if (switchNodes != null && !switchNodes.isEmpty()) {
+ for (Switches managedNodeEntry : switchNodes) {
+ @SuppressWarnings("unchecked")
+ Node switchNode = HwvtepSouthboundUtil
+ .readNode(transaction,
+ (InstanceIdentifier<Node>) managedNodeEntry.getSwitchRef().getValue()).get();
+ TerminationPointKey tpKey = new TerminationPointKey(new TpId(tpName));
+ if (switchNode.getTerminationPoint() != null) {
+ for (TerminationPoint terminationPoint : switchNode.getTerminationPoint()) {
+ if (terminationPoint.key().equals(tpKey)) {
+ return Optional.of((InstanceIdentifier<Node>) managedNodeEntry.getSwitchRef().getValue());
+ }
}
}
}
+ } else {
+ LOG.trace("PhyscialSwitch not present for the Port {}", tpName);
}
return Optional.absent();
}
}
return result;
}
+
+ private Optional<InstanceIdentifier<Node>> getFromDeviceOperCache(final UUID uuid) {
+
+ InstanceIdentifier<TerminationPoint> terminationPointIid =
+ (InstanceIdentifier<TerminationPoint>)getOvsdbConnectionInstance()
+ .getDeviceInfo().getDeviceOperKey(TerminationPoint.class, uuid);
+ if (terminationPointIid != null) {
+ return Optional.of(terminationPointIid.firstIdentifierOf(Node.class));
+ }
+ return Optional.absent();
+ }
}