diff options
-rw-r--r-- | vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/VnfApiProvider.java (renamed from vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java) | 256 | ||||
-rw-r--r-- | vnfapi/provider/src/main/resources/org/opendaylight/blueprint/vnfapi-blueprint.xml | 2 | ||||
-rw-r--r-- | vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfApiProviderTest.java | 6 | ||||
-rw-r--r-- | vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfapiProviderTestBase.java | 5 |
4 files changed, 150 insertions, 119 deletions
diff --git a/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java b/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/VnfApiProvider.java index 30f85859..129f2a4e 100644 --- a/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java +++ b/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/VnfApiProvider.java @@ -152,32 +152,33 @@ import java.util.concurrent.Future; * which provides storage for the most commonly used components of the MD-SAL. Additionally the * base class provides some basic logging and initialization / clean up methods. */ -public class vnfapiProvider implements AutoCloseable, VNFAPIService, DataChangeListener { +public class VnfApiProvider implements AutoCloseable, VNFAPIService, DataChangeListener { + + private final Logger log = LoggerFactory.getLogger(VnfApiProvider.class); + + private static final String APP_NAME = "vnfapi"; + + private VNFSDNSvcLogicServiceClient svcLogicClient; + private final ExecutorService executor; + protected DataBroker dataBroker; protected NotificationPublishService notificationService; protected RpcProviderRegistry rpcRegistry; protected BindingAwareBroker.RpcRegistration<VNFAPIService> rpcRegistration; - private final Logger log = LoggerFactory.getLogger(vnfapiProvider.class); - private final String appName = "vnfapi"; - private final ExecutorService executor; - - private VNFSDNSvcLogicServiceClient svcLogicClient; - private ListenerRegistration<DataChangeListener> dclServices; - - public vnfapiProvider(DataBroker dataBroker2, NotificationPublishService notificationPublishService, + public VnfApiProvider(DataBroker dataBroker2, NotificationPublishService notificationPublishService, RpcProviderRegistry rpcProviderRegistry, VNFSDNSvcLogicServiceClient client) { - this.log.info("Creating provider for " + appName); + log.info("Creating provider for " + APP_NAME); executor = Executors.newFixedThreadPool(1); dataBroker = dataBroker2; notificationService = notificationPublishService; rpcRegistry = rpcProviderRegistry; - this.svcLogicClient = client; + svcLogicClient = client; initialize(); } - public void initialize() { - log.info("Initializing provider for " + appName); + private void initialize() { + log.info("Initializing provider for " + APP_NAME); // Create the top level containers createContainers(); try { @@ -186,7 +187,7 @@ public class vnfapiProvider implements AutoCloseable, VNFAPIService, DataChangeL log.error("Caught Exception while trying to load properties file: ", e); } - log.info("Initialization complete for " + appName); + log.info("Initialization complete for " + APP_NAME); } private void createContainers() { @@ -236,19 +237,22 @@ public class vnfapiProvider implements AutoCloseable, VNFAPIService, DataChangeL } } - @Override public void close() throws Exception { - log.info("Closing provider for " + appName); + @Override + public void close() throws Exception { + log.info("Closing provider for " + APP_NAME); executor.shutdown(); rpcRegistration.close(); - log.info("Successfully closed provider for " + appName); + log.info("Successfully closed provider for " + APP_NAME); } // On data change not used - @Override public void onDataChanged(AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) { - boolean changed = false; + @Override + public void onDataChanged(AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) { + log.info(" IN ON DATA CHANGE: "); - WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction(); + boolean changed = false; + WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction(); DataObject updatedSubTree = change.getUpdatedSubtree(); if (updatedSubTree != null) { @@ -256,131 +260,159 @@ public class vnfapiProvider implements AutoCloseable, VNFAPIService, DataChangeL log.debug("updatedSubTree was non-null:" + updatedSubTree); } if (updatedSubTree instanceof Vnfs) { - ArrayList<VnfList> vnfList = (ArrayList<VnfList>) ((Vnfs) updatedSubTree).getVnfList(); - if (vnfList != null) { - for (VnfList entry : vnfList) { - ServiceData serviceData = entry.getServiceData(); - ServiceStatus serviceStatus = entry.getServiceStatus(); - if (serviceData != null && serviceStatus != null) { - // - // ServiceData change detected, check the AckFinal indicator and request-status to see if we need to proceed. - // - if ((!"Y".equals(serviceStatus.getFinalIndicator())) && (RequestStatus.Synccomplete - .equals(serviceStatus.getRequestStatus()))) { - if (log.isDebugEnabled()) { - log.debug("Final Indicator is not Y, calling handleServiceDataUpdated"); - } - //handleServiceDataUpdated(serviceData, serviceStatus, writeTransaction); - changed = true; - } - } - } - } + changed = isChanged(changed, (Vnfs) updatedSubTree); } if (updatedSubTree instanceof PreloadVnfs) { - ArrayList<VnfPreloadList> vnfList = - (ArrayList<VnfPreloadList>) ((PreloadVnfs) updatedSubTree).getVnfPreloadList(); - if (vnfList != null) { - for (VnfPreloadList entry : vnfList) { - PreloadData preloadData = entry.getPreloadData(); - if (preloadData != null) { - changed = true; - } - } - } + changed = isChanged(changed, (PreloadVnfs) updatedSubTree); } //1610 if (updatedSubTree instanceof PreloadVnfInstances) { - ArrayList<VnfInstancePreloadList> vnfInstanceList = - (ArrayList<VnfInstancePreloadList>) ((PreloadVnfInstances) updatedSubTree) - .getVnfInstancePreloadList(); - if (vnfInstanceList != null) { - for (VnfInstancePreloadList entry : vnfInstanceList) { - VnfInstancePreloadData vnfInstancePreloadData = entry.getVnfInstancePreloadData(); - if (vnfInstancePreloadData != null) { - changed = true; - } - } - } + changed = isChanged(changed, (PreloadVnfInstances) updatedSubTree); } //1610 if (updatedSubTree instanceof VnfInstances) { - ArrayList<VnfInstanceList> vnfInstanceList = - (ArrayList<VnfInstanceList>) ((VnfInstances) updatedSubTree).getVnfInstanceList(); - if (vnfInstanceList != null) { - for (VnfInstanceList entry : vnfInstanceList) { - VnfInstanceServiceData vnfInstanceServiceData = entry.getVnfInstanceServiceData(); - ServiceStatus serviceStatus = entry.getServiceStatus(); - if (vnfInstanceServiceData != null && serviceStatus != null) { - // VnfInstanceServiceData change detected, check the AckFinal indicator and request-status - // to see if we need to proceed. - if ((!"Y".equals(serviceStatus.getFinalIndicator())) && (RequestStatus.Synccomplete - .equals(serviceStatus.getRequestStatus()))) { - if (log.isDebugEnabled()) { - log.debug("Final Indicator is not Y, calling handleServiceDataUpdated"); - } - changed = true; - } - } - } - } + changed = isChanged(changed, (VnfInstances) updatedSubTree); } //1610 if (updatedSubTree instanceof PreloadVfModules) { - ArrayList<VfModulePreloadList> vnfInstanceList = - (ArrayList<VfModulePreloadList>) ((PreloadVfModules) updatedSubTree).getVfModulePreloadList(); - if (vnfInstanceList != null) { - for (VfModulePreloadList entry : vnfInstanceList) { - VfModulePreloadData vnfInstancePreloadData = entry.getVfModulePreloadData(); - if (vnfInstancePreloadData != null) { - changed = true; - } - } - } + changed = isChanged(changed, (PreloadVfModules) updatedSubTree); } //1610 if (updatedSubTree instanceof VfModules) { - ArrayList<VfModuleList> vfModuleList = - (ArrayList<VfModuleList>) ((VfModules) updatedSubTree).getVfModuleList(); - if (vfModuleList != null) { - for (VfModuleList entry : vfModuleList) { - VfModuleServiceData vfModuleServiceData = entry.getVfModuleServiceData(); - ServiceStatus serviceStatus = entry.getServiceStatus(); - if (vfModuleServiceData != null && serviceStatus != null) { - // VfModuleServiceData change detected, check the AckFinal indicator and request-status to - // see if we need to proceed. - if ((!"Y".equals(serviceStatus.getFinalIndicator())) && (RequestStatus.Synccomplete - .equals(serviceStatus.getRequestStatus()))) { - if (log.isDebugEnabled()) { - log.debug("Final Indicator is not Y, calling handleServiceDataUpdated"); - } - changed = true; - } - } - } - } + changed = isChanged(changed, (VfModules) updatedSubTree); } } + // Do the write transaction only if something changed. if (changed) { CheckedFuture<Void, TransactionCommitFailedException> checkedFuture = writeTransaction.submit(); Futures.addCallback(checkedFuture, new FutureCallback<Void>() { - @Override public void onSuccess(Void arg0) { + @Override + public void onSuccess(Void arg0) { log.debug("Successfully updated Service Status"); } - @Override public void onFailure(Throwable ex) { - log.debug("Failed updating Service Status", ex); + @Override + public void onFailure(Throwable e) { + log.debug("Failed updating Service Status", e); } }, executor); } } + private boolean isChanged(boolean changed, VfModules updatedSubTree) { + ArrayList<VfModuleList> vfModuleList = + (ArrayList<VfModuleList>) updatedSubTree.getVfModuleList(); + if (vfModuleList != null) { + for (VfModuleList entry : vfModuleList) { + VfModuleServiceData vfModuleServiceData = entry.getVfModuleServiceData(); + ServiceStatus serviceStatus = entry.getServiceStatus(); + if (vfModuleServiceData != null && serviceStatus != null) { + // VfModuleServiceData change detected, check the AckFinal indicator and request-status to + // see if we need to proceed. + return isChanged(changed, serviceStatus); + } + } + } + return changed; + } + + private boolean isChanged(boolean changed, PreloadVfModules updatedSubTree) { + ArrayList<VfModulePreloadList> vnfInstanceList = + (ArrayList<VfModulePreloadList>) updatedSubTree.getVfModulePreloadList(); + if (vnfInstanceList != null) { + for (VfModulePreloadList entry : vnfInstanceList) { + VfModulePreloadData vnfInstancePreloadData = entry.getVfModulePreloadData(); + if (vnfInstancePreloadData != null) { + return true; + } + } + } + return changed; + } + + private boolean isChanged(boolean changed, VnfInstances updatedSubTree) { + ArrayList<VnfInstanceList> vnfInstanceList = + (ArrayList<VnfInstanceList>) updatedSubTree.getVnfInstanceList(); + if (vnfInstanceList != null) { + for (VnfInstanceList entry : vnfInstanceList) { + VnfInstanceServiceData vnfInstanceServiceData = entry.getVnfInstanceServiceData(); + ServiceStatus serviceStatus = entry.getServiceStatus(); + if (vnfInstanceServiceData != null && serviceStatus != null) { + // VnfInstanceServiceData change detected, check the AckFinal indicator and request-status + // to see if we need to proceed. + return isChanged(changed, serviceStatus); + } + } + } + return changed; + } + + private boolean isChanged(boolean changed, PreloadVnfInstances updatedSubTree) { + ArrayList<VnfInstancePreloadList> vnfInstanceList = + (ArrayList<VnfInstancePreloadList>) updatedSubTree + .getVnfInstancePreloadList(); + if (vnfInstanceList != null) { + for (VnfInstancePreloadList entry : vnfInstanceList) { + VnfInstancePreloadData vnfInstancePreloadData = entry.getVnfInstancePreloadData(); + if (vnfInstancePreloadData != null) { + return true; + } + } + } + return changed; + } + + private boolean isChanged(boolean changed, PreloadVnfs updatedSubTree) { + ArrayList<VnfPreloadList> vnfList = + (ArrayList<VnfPreloadList>) updatedSubTree.getVnfPreloadList(); + if (vnfList != null) { + for (VnfPreloadList entry : vnfList) { + PreloadData preloadData = entry.getPreloadData(); + if (preloadData != null) { + return true; + } + } + } + return changed; + } + + private boolean isChanged(boolean changed, Vnfs updatedSubTree) { + ArrayList<VnfList> vnfList = (ArrayList<VnfList>) updatedSubTree.getVnfList(); + if (vnfList != null) { + for (VnfList entry : vnfList) { + ServiceData serviceData = entry.getServiceData(); + ServiceStatus serviceStatus = entry.getServiceStatus(); + if (serviceData != null && serviceStatus != null) { + // + // ServiceData change detected, check the AckFinal indicator and request-status to see if we need to proceed. + // + return isChanged(changed, serviceStatus); + } + } + } + return changed; + } + + private boolean isChanged(boolean changed, ServiceStatus serviceStatus) { + if ((!"Y".equals(serviceStatus.getFinalIndicator())) && (RequestStatus.Synccomplete + .equals(serviceStatus.getRequestStatus()))) { + if (log.isDebugEnabled()) { + log.debug("Final Indicator is not Y, calling handleServiceDataUpdated"); + } + return true; + } + return changed; + } + private static class Iso8601Util { + private static TimeZone tz = TimeZone.getTimeZone("UTC"); private static DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + private Iso8601Util() {} + static { df.setTimeZone(tz); } diff --git a/vnfapi/provider/src/main/resources/org/opendaylight/blueprint/vnfapi-blueprint.xml b/vnfapi/provider/src/main/resources/org/opendaylight/blueprint/vnfapi-blueprint.xml index 8741a09f..1afd1a65 100644 --- a/vnfapi/provider/src/main/resources/org/opendaylight/blueprint/vnfapi-blueprint.xml +++ b/vnfapi/provider/src/main/resources/org/opendaylight/blueprint/vnfapi-blueprint.xml @@ -22,7 +22,7 @@ interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" odl:type="default" /> - <bean id="provider" class="org.onap.sdnc.vnfapi.vnfapiProvider"> + <bean id="provider" class="org.onap.sdnc.vnfapi.VnfApiProvider"> <argument ref="dataBroker" /> <argument ref="notificationService" /> <argument ref="rpcRegistry" /> diff --git a/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfApiProviderTest.java b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfApiProviderTest.java index c74ce534..b5b85f6e 100644 --- a/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfApiProviderTest.java +++ b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfApiProviderTest.java @@ -36,12 +36,12 @@ import org.slf4j.LoggerFactory; public class VnfApiProviderTest extends AbstractConcurrentDataBrokerTest { - protected vnfapiProvider vnfapiProvider; + protected VnfApiProvider vnfapiProvider; protected DataBroker dataBroker; protected @Mock NotificationPublishService mockNotificationPublishService; protected @Mock RpcProviderRegistry mockRpcProviderRegistry; protected @Mock VNFSDNSvcLogicServiceClient mockVNFSDNSvcLogicServiceClient; - protected static final Logger LOG = LoggerFactory.getLogger(vnfapiProvider.class); + protected static final Logger LOG = LoggerFactory.getLogger(VnfApiProvider.class); protected DataBrokerUtil db; @@ -54,7 +54,7 @@ public class VnfApiProviderTest extends AbstractConcurrentDataBrokerTest { dataBroker = getDataBroker(); db = new DataBrokerUtil(dataBroker); try { - vnfapiProvider = new vnfapiProvider( + vnfapiProvider = new VnfApiProvider( dataBroker, mockNotificationPublishService, mockRpcProviderRegistry, diff --git a/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfapiProviderTestBase.java b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfapiProviderTestBase.java index f174f7fa..0c025523 100644 --- a/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfapiProviderTestBase.java +++ b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfapiProviderTestBase.java @@ -105,7 +105,6 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import org.powermock.reflect.Whitebox; import java.util.ArrayList; -import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; @@ -128,7 +127,7 @@ public class VnfapiProviderTestBase { @Mock private ReadWriteTransaction readWriteTransactionInDataChanged; @Mock private CheckedFuture<Void, TransactionCommitFailedException> checkedFuture; - private vnfapiProvider vnfapiProvider; + private VnfApiProvider vnfapiProvider; private String vfModuleName; private String vfModuleModelId; private String vnfInstanceId; @@ -152,7 +151,7 @@ public class VnfapiProviderTestBase { doReturn(writeTransaction).when(dataBroker).newWriteOnlyTransaction(); doReturn(checkedFuture).when(writeTransaction).submit(); - vnfapiProvider = spy(new vnfapiProvider(dataBroker, notificationPublishService, rpcProviderRegistry, + vnfapiProvider = spy(new VnfApiProvider(dataBroker, notificationPublishService, rpcProviderRegistry, vnfsdnSvcLogicServiceClient)); } |