import static org.opendaylight.openflowplugin.applications.frm.util.FrmUtil.getActiveBundle;
import static org.opendaylight.openflowplugin.applications.frm.util.FrmUtil.getNodeIdValueFromNodeIdentifier;
-import com.google.common.util.concurrent.FluentFuture;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
-import java.util.concurrent.Future;
import org.opendaylight.infrautils.utils.concurrent.LoggingFutures;
import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.openflowplugin.applications.frm.ForwardingRulesManager;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.OriginalGroupBuilder;
} else {
final String nodeId = getNodeIdValueFromNodeIdentifier(nodeIdent);
nodeConfigurator.enqueueJob(nodeId, () -> {
- final Group group = removeDataObj;
- final RemoveGroupInput removeGroup = new RemoveGroupInputBuilder(group)
+ final var removeGroup = new RemoveGroupInputBuilder(removeDataObj)
.setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)))
.setGroupRef(new GroupRef(identifier))
.setTransactionUri(new Uri(provider.getNewTransactionId()))
.build();
- final ListenableFuture<RpcResult<RemoveGroupOutput>> resultFuture =
- provider.getSalGroupService()
- .removeGroup(removeGroup);
+ final var resultFuture = provider.getSalGroupService() .removeGroup(removeGroup);
Futures.addCallback(resultFuture,
new RemoveGroupCallBack(removeDataObj.getGroupId().getValue(), nodeId),
MoreExecutors.directExecutor());
- LoggingFutures.addErrorLogging(resultFuture, LOG, "removeGroup");
- return resultFuture;
+ return LoggingFutures.addErrorLogging(resultFuture, LOG, "removeGroup");
});
}
}
// TODO: Pull this into ForwardingRulesCommiter and override it here
@Override
- public Future<RpcResult<RemoveGroupOutput>> removeWithResult(final InstanceIdentifier<Group> identifier,
+ public ListenableFuture<RpcResult<RemoveGroupOutput>> removeWithResult(final InstanceIdentifier<Group> identifier,
final Group removeDataObj, final InstanceIdentifier<FlowCapableNode> nodeIdent) {
-
- final Group group = removeDataObj;
- final RemoveGroupInputBuilder builder = new RemoveGroupInputBuilder(group);
-
- builder.setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)));
- builder.setGroupRef(new GroupRef(identifier));
- builder.setTransactionUri(new Uri(provider.getNewTransactionId()));
- return provider.getSalGroupService().removeGroup(builder.build());
+ return provider.getSalGroupService().removeGroup(new RemoveGroupInputBuilder(removeDataObj)
+ .setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)))
+ .setGroupRef(new GroupRef(identifier))
+ .setTransactionUri(new Uri(provider.getNewTransactionId()))
+ .build());
}
@Override
} else {
final String nodeId = getNodeIdValueFromNodeIdentifier(nodeIdent);
nodeConfigurator.enqueueJob(nodeId, () -> {
- final Group originalGroup = original;
- final Group updatedGroup = update;
- final UpdateGroupInputBuilder builder = new UpdateGroupInputBuilder();
- builder.setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)));
- builder.setGroupRef(new GroupRef(identifier));
- builder.setTransactionUri(new Uri(provider.getNewTransactionId()));
- builder.setUpdatedGroup(new UpdatedGroupBuilder(updatedGroup).build());
- builder.setOriginalGroup(new OriginalGroupBuilder(originalGroup).build());
- UpdateGroupInput updateGroupInput = builder.build();
- final ListenableFuture<RpcResult<UpdateGroupOutput>> resultFuture = provider.getSalGroupService()
- .updateGroup(updateGroupInput);
- LoggingFutures.addErrorLogging(resultFuture, LOG, "updateGroup");
+ final var updateGroupInput = new UpdateGroupInputBuilder()
+ .setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)))
+ .setGroupRef(new GroupRef(identifier))
+ .setTransactionUri(new Uri(provider.getNewTransactionId()))
+ .setUpdatedGroup(new UpdatedGroupBuilder(update).build())
+ .setOriginalGroup(new OriginalGroupBuilder(original).build())
+ .build();
+ final var resultFuture = LoggingFutures.addErrorLogging(
+ provider.getSalGroupService().updateGroup(updateGroupInput), LOG, "updateGroup");
Futures.addCallback(resultFuture,
new UpdateGroupCallBack(updateGroupInput.getOriginalGroup().getGroupId().getValue(), nodeId),
MoreExecutors.directExecutor());
}
@Override
- public Future<? extends RpcResult<?>> add(final InstanceIdentifier<Group> identifier, final Group addDataObj,
- final InstanceIdentifier<FlowCapableNode> nodeIdent) {
- BundleId bundleId = getActiveBundle(nodeIdent, provider);
+ public ListenableFuture<? extends RpcResult<?>> add(final InstanceIdentifier<Group> identifier,
+ final Group addDataObj, final InstanceIdentifier<FlowCapableNode> nodeIdent) {
+ final var bundleId = getActiveBundle(nodeIdent, provider);
if (bundleId != null) {
return provider.getBundleGroupListener().add(identifier, addDataObj, nodeIdent, bundleId);
- } else {
- final String nodeId = getNodeIdValueFromNodeIdentifier(nodeIdent);
- return nodeConfigurator
- .enqueueJob(nodeId, () -> {
- final Group group = addDataObj;
- final AddGroupInputBuilder builder = new AddGroupInputBuilder(group);
- builder.setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)));
- builder.setGroupRef(new GroupRef(identifier));
- builder.setTransactionUri(new Uri(provider.getNewTransactionId()));
- AddGroupInput addGroupInput = builder.build();
- final ListenableFuture<RpcResult<AddGroupOutput>> resultFuture;
- resultFuture = provider.getSalGroupService().addGroup(addGroupInput);
- Futures.addCallback(resultFuture,
- new AddGroupCallBack(addGroupInput.getGroupId().getValue(), nodeId),
- MoreExecutors.directExecutor());
- return resultFuture;
- });
}
+
+ final String nodeId = getNodeIdValueFromNodeIdentifier(nodeIdent);
+ return nodeConfigurator.enqueueJob(nodeId, () -> {
+ final var addGroupInput = new AddGroupInputBuilder(addDataObj)
+ .setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)))
+ .setGroupRef(new GroupRef(identifier))
+ .setTransactionUri(new Uri(provider.getNewTransactionId()))
+ .build();
+ final var resultFuture = provider.getSalGroupService().addGroup(addGroupInput);
+ Futures.addCallback(resultFuture,
+ new AddGroupCallBack(addGroupInput.getGroupId().getValue(), nodeId),
+ MoreExecutors.directExecutor());
+ return resultFuture;
+ });
}
@Override
public void createStaleMarkEntity(final InstanceIdentifier<Group> identifier, final Group del,
final InstanceIdentifier<FlowCapableNode> nodeIdent) {
LOG.debug("Creating Stale-Mark entry for the switch {} for Group {} ", nodeIdent, del);
- StaleGroup staleGroup = makeStaleGroup(identifier, del, nodeIdent);
- persistStaleGroup(staleGroup, nodeIdent);
-
- }
-
- private static StaleGroup makeStaleGroup(final InstanceIdentifier<Group> identifier, final Group del,
- final InstanceIdentifier<FlowCapableNode> nodeIdent) {
- StaleGroupBuilder staleGroupBuilder = new StaleGroupBuilder(del);
- return staleGroupBuilder.setGroupId(del.getGroupId()).build();
- }
-
- private void persistStaleGroup(final StaleGroup staleGroup, final InstanceIdentifier<FlowCapableNode> nodeIdent) {
- WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
+ final var staleGroup = new StaleGroupBuilder(del).setGroupId(del.getGroupId()).build();
+ final var writeTransaction = dataBroker.newWriteOnlyTransaction();
writeTransaction.put(LogicalDatastoreType.CONFIGURATION, getStaleGroupInstanceIdentifier(staleGroup, nodeIdent),
staleGroup);
-
- FluentFuture<?> submitFuture = writeTransaction.commit();
- handleStaleGroupResultFuture(submitFuture);
- }
-
- private static void handleStaleGroupResultFuture(final FluentFuture<?> submitFuture) {
- submitFuture.addCallback(new FutureCallback<Object>() {
+ writeTransaction.commit().addCallback(new FutureCallback<CommitInfo>() {
@Override
- public void onSuccess(final Object result) {
+ public void onSuccess(final CommitInfo result) {
LOG.debug("Stale Group creation success");
}