From 86550adee3f54719b77750f011aa4f61a95d6e64 Mon Sep 17 00:00:00 2001 From: Vladimir Lavor Date: Fri, 22 Jul 2016 11:59:46 +0200 Subject: [PATCH] Status revision - added message if status is unsuccessful Change-Id: I4429db50b9d609723b3c323eb544cd745f01f187 Signed-off-by: Vladimir Lavor --- .../impl/manager/PolicyManagerImpl.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java index 8306eba57..3b5f5a5e2 100644 --- a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java +++ b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java @@ -65,18 +65,26 @@ public class PolicyManagerImpl implements PolicyManager { @Nonnull public ListenableFuture syncPolicy(@Nullable final Configuration dataAfter, @Nullable final Configuration dataBefore, final long version) { - final ListenableFuture> result; + ListenableFuture> creationResult; if (dataBefore == null && dataAfter != null) { - result = syncEndpoints(dataAfter, Create); + creationResult = syncEndpoints(dataAfter, Create); } else if (dataBefore != null && dataAfter == null) { - result = syncEndpoints(dataBefore, Delete); + creationResult = syncEndpoints(dataBefore, Delete); } else { - syncEndpoints(dataBefore, Delete); - syncEndpoints(dataAfter, Create); - result = Futures.immediateFuture(Optional.empty()); + final ListenableFuture> deletionResult = syncEndpoints(dataBefore, Delete); + creationResult = Futures.transform(deletionResult, new AsyncFunction, Optional>() { + @Nonnull + @Override + public ListenableFuture> apply(@Nonnull Optional deletionResult) throws Exception { + if (deletionResult.isPresent()) { + // Wait till task is done. Result is not used, delete case has no status + deletionResult.get(); + } + return syncEndpoints(dataAfter, Create); + } + }); } - - return Futures.transform(result, new AsyncFunction, Boolean>() { + return Futures.transform(creationResult, new AsyncFunction, Boolean>() { @Override public ListenableFuture apply(@Nullable final Optional statusValue) throws Exception { Preconditions.checkArgument(statusValue != null, "provided status must not be null"); @@ -97,6 +105,7 @@ public class PolicyManagerImpl implements PolicyManager { * @param action - specifies whether data are intended for creating or removing of configuration * @return status of policy resolution */ + @Nonnull private ListenableFuture> syncEndpoints(final Configuration dataAfter, final DsAction action) { if (dataAfter.getRendererEndpoints() == null || dataAfter.getRendererEndpoints().getRendererEndpoint() == null) { @@ -191,6 +200,9 @@ public class PolicyManagerImpl implements PolicyManager { private CheckedFuture reportPolicy(final long version, @Nonnull final Optional statusValue) { + if (statusValue.isPresent()) { + LOG.warn("IOS-XE renderer: operation not successfully completed, check unconfigured policy in operational/renderer:renderers"); + } final ReadWriteTransaction readWriteTransaction = dataBroker.newReadWriteTransaction(); final InstanceIdentifier iid = InstanceIdentifier.create(Renderers.class) .child(Renderer.class, new RendererKey(IOS_XE_RENDERER)) -- 2.36.6