- // On data change not used
- @Override
- public void onDataChanged(AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
-
- log.info(" IN ON DATA CHANGE: ");
-
- boolean changed = false;
- WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
- DataObject updatedSubTree = change.getUpdatedSubtree();
-
- if (updatedSubTree != null) {
- if (log.isDebugEnabled()) {
- log.debug("updatedSubTree was non-null:" + updatedSubTree);
- }
- if (updatedSubTree instanceof Vnfs) {
- changed = isChanged(changed, (Vnfs) updatedSubTree);
- }
- if (updatedSubTree instanceof PreloadVnfs) {
- changed = isChanged(changed, (PreloadVnfs) updatedSubTree);
- }
- //1610
- if (updatedSubTree instanceof PreloadVnfInstances) {
- changed = isChanged(changed, (PreloadVnfInstances) updatedSubTree);
- }
- //1610
- if (updatedSubTree instanceof VnfInstances) {
- changed = isChanged(changed, (VnfInstances) updatedSubTree);
- }
- //1610
- if (updatedSubTree instanceof PreloadVfModules) {
- changed = isChanged(changed, (PreloadVfModules) updatedSubTree);
- }
- //1610
- if (updatedSubTree instanceof VfModules) {
- 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) {
- log.debug("Successfully updated Service Status");
- }
-
- @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;
- }