void updateCurrentTxData(Class<? extends Identifiable> cls, InstanceIdentifier key, UUID uuid, Object data) {
operationalState.updateCurrentTxData(cls, key, uuid);
- operationalState.getDeviceInfo().markKeyAsInTransit(cls, key);
operationalState.getDeviceInfo().updateConfigData(cls, key, data);
}
- void processDependencies(UnMetDependencyGetter<T> unMetDependencyGetter,
- TransactionBuilder transaction,
+ void processDependencies(final UnMetDependencyGetter<T> unMetDependencyGetter,
+ final TransactionBuilder transaction,
final InstanceIdentifier<Node> nodeIid,
final InstanceIdentifier key,
final T data, final Object... extraData) {
HwvtepDeviceInfo deviceInfo = operationalState.getDeviceInfo();
- Map inTransitDependencies = unMetDependencyGetter.getInTransitDependencies(operationalState, data);
- Map confingDependencies = unMetDependencyGetter.getUnMetConfigDependencies(operationalState, data);
- //we can skip the config termination point dependency as we can create them in device as part of this tx
- confingDependencies.remove(TerminationPoint.class);
+ Map inTransitDependencies = Collections.EMPTY_MAP;
+ Map confingDependencies = Collections.EMPTY_MAP;
+
+ if (!isRemoveCommand() && unMetDependencyGetter != null) {
+ inTransitDependencies = unMetDependencyGetter.getInTransitDependencies(operationalState, data);
+ confingDependencies = unMetDependencyGetter.getUnMetConfigDependencies(operationalState, data);
+ //we can skip the config termination point dependency as we can create them in device as part of this tx
+ confingDependencies.remove(TerminationPoint.class);
+ }
Type type = getClass().getGenericSuperclass();
Type classType = ((ParameterizedType)type).getActualTypeArguments()[0];
if (HwvtepSouthboundUtil.isEmptyMap(confingDependencies) && HwvtepSouthboundUtil.isEmptyMap(inTransitDependencies)) {
doDeviceTransaction(transaction, nodeIid, data, key, extraData);
- //TODO put proper uuid
updateCurrentTxData((Class<? extends Identifiable>) classType, key, new UUID("uuid"), data);
}
if (!HwvtepSouthboundUtil.isEmptyMap(confingDependencies)) {
protected boolean cascadeDelete() {
return false;
}
+
+ protected boolean isRemoveCommand() {
+ return false;
+ }
}
}
}
- private void removeMcastMacRemote(TransactionBuilder transaction,
- InstanceIdentifier<Node> instanceIdentifier, List<RemoteMcastMacs> macList) {
- for (RemoteMcastMacs mac: macList) {
+ private void removeMcastMacRemote(final TransactionBuilder transaction,
+ final InstanceIdentifier<Node> nodeIid, final List<RemoteMcastMacs> macList) {
+ for (RemoteMcastMacs mac : macList) {
+ InstanceIdentifier<RemoteMcastMacs> macKey = nodeIid.augmentation(HwvtepGlobalAugmentation.class).
+ child(RemoteMcastMacs.class, mac.getKey());
+ onConfigUpdate(transaction, nodeIid, mac, macKey);
+ }
+ }
+
+ @Override
+ public void onConfigUpdate(final TransactionBuilder transaction,
+ final InstanceIdentifier<Node> nodeIid,
+ final RemoteMcastMacs remoteMcastMac,
+ final InstanceIdentifier macKey,
+ final Object... extraData) {
+ processDependencies(null, transaction, nodeIid, macKey, remoteMcastMac);
+ }
+
+ @Override
+ public void doDeviceTransaction(final TransactionBuilder transaction,
+ final InstanceIdentifier<Node> instanceIdentifier,
+ final RemoteMcastMacs mac,
+ final InstanceIdentifier macIid,
+ final Object... extraData) {
LOG.debug("Removing remoteMcastMacs, mac address: {}", mac.getMacEntryKey().getValue());
Optional<RemoteMcastMacs> operationalMacOptional =
getOperationalState().getRemoteMcastMacs(instanceIdentifier, mac.getKey());
transaction.add(op.delete(mcastMacsRemote.getSchema()).
where(mcastMacsRemote.getUuidColumn().getSchema().opEqual(macEntryUUID)).build());
transaction.add(op.comment("McastMacRemote: Deleting " + mac.getMacEntryKey().getValue()));
+ getOperationalState().getDeviceInfo().markKeyAsInTransit(RemoteMcastMacs.class, macIid);
} else {
LOG.warn("Unable to delete remoteMcastMacs {} because it was not found in the operational store",
mac.getMacEntryKey().getValue());
}
- InstanceIdentifier<RemoteMcastMacs> macIid = instanceIdentifier.augmentation(HwvtepGlobalAugmentation.class).
- child(RemoteMcastMacs.class, mac.getKey());
updateCurrentTxDeleteData(RemoteMcastMacs.class, macIid, mac);
- }
}
@Override
protected boolean areEqual(RemoteMcastMacs a, RemoteMcastMacs b) {
return a.getKey().equals(b.getKey()) && Objects.equals(a.getLocatorSet(), b.getLocatorSet());
}
+
+ @Override
+ protected boolean isRemoveCommand() {
+ return true;
+ }
}