From 34771f3e531e26d179e5ba77b987befe4035b38e Mon Sep 17 00:00:00 2001 From: ayalaben Date: Sun, 27 May 2018 13:54:38 +0300 Subject: Catalog notification port Change-Id: I714ac047c98551ddf29ca509811265bfd7c66f24 Issue-ID: SDC-1257 Signed-off-by: ayalaben --- .../item/rest/services/CatalogNotifier.java | 55 ++++++++++++---------- .../sdcrests/item/rest/services/ItemsImpl.java | 9 +++- 2 files changed, 38 insertions(+), 26 deletions(-) (limited to 'openecomp-be/api/openecomp-sdc-rest-webapp') diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/CatalogNotifier.java b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/CatalogNotifier.java index f19de3d04a..4f2b7aed63 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/CatalogNotifier.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/CatalogNotifier.java @@ -30,6 +30,7 @@ import java.util.concurrent.TimeUnit; import java.util.function.Function; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; @@ -44,15 +45,18 @@ import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.logging.api.LoggingContext; import org.openecomp.sdcrests.item.types.ItemAction; -public class CatalogNotifier { + class CatalogNotifier { private static final Logger LOGGER = LoggerFactory.getLogger(CatalogNotifier.class); private static final String USER_ID_HEADER_PARAM = "USER_ID"; private static final String CONFIG_FILE = "configuration.yaml"; private static final String PROTOCOL_KEY = "beProtocol"; + private static final String HTTP_PROTOCOL = "http|HTTP"; + private static final String HTTPS_PROTOCOL = "https|HTTPS"; private static final String HOST_KEY = "beFqdn"; - private static final String PORT_KEY = "beHttpPort"; + private static final String HTTP_PORT_KEY = "beHttpPort"; + private static final String HTTPS_PORT_KEY = "beSslPort"; private static final String URL_KEY = "onboardCatalogNotificationUrl"; private static final String URL_DEFAULT_FORMAT = "%s://%s:%s/sdc2/rest/v1/catalog/notif/vsp/"; @@ -60,7 +64,6 @@ public class CatalogNotifier { private static String notifyCatalogUrl; private static ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); - private static boolean executeNotificationFlag = true; static { @@ -75,11 +78,17 @@ public class CatalogNotifier { configurationMap = readFromFile(configurationYamlFile, reader); Object protocol = configurationMap.get(PROTOCOL_KEY); Object host = configurationMap.get(HOST_KEY); - Object port = configurationMap.get(PORT_KEY); - if (protocol == null || host == null || port == null) { - LOGGER.error("Could not read configuration file configuration.yaml"); - executeNotificationFlag = false; + if (protocol == null || host == null) { + throw new ExceptionInInitializerError("Could not read configuration file configuration.yaml."); + } + + Object port = null; + if (String.valueOf(protocol).matches(HTTP_PROTOCOL)) { + port = configurationMap.get(HTTP_PORT_KEY); + } + if (String.valueOf(protocol).matches(HTTPS_PROTOCOL)) { + port = configurationMap.get(HTTPS_PORT_KEY); } if (configurationMap.get(URL_KEY) != null) { @@ -93,22 +102,20 @@ public class CatalogNotifier { } } catch (Exception e) { - LOGGER.error("Could not read configuration file configuration.yaml"); - executeNotificationFlag = false; + throw new ExceptionInInitializerError( + "Could not read configuration file configuration.yaml. Error: " + e.getMessage()); + } } public void execute(Collection itemIds, ItemAction action, int numOfRetries) { - if (executeNotificationFlag) { - - String userId = SessionContextProviderFactory.getInstance().createInterface().get().getUser().getUserId(); + String userId = SessionContextProviderFactory.getInstance().createInterface().get().getUser().getUserId(); - Callable callable = createCallable(JsonUtil.object2Json(itemIds), action, numOfRetries, userId); + Callable callable = createCallable(JsonUtil.object2Json(itemIds), action, numOfRetries, userId); - executor.submit(callable); - } + executor.submit(callable); } @@ -121,22 +128,22 @@ public class CatalogNotifier { private Void handleHttpRequest(String url, String itemIds, ItemAction action, String userId, int numOfRetries) { - try (CloseableHttpClient httpclient = HttpClients.createDefault()) { + try (CloseableHttpClient httpclient = HttpClients.createDefault()) { HttpPost request = createPostRequest(url, itemIds, userId); HttpResponse response = httpclient.execute(request); - LOGGER.error( - String.format("Catalog notification on vspId - %s action - %s. Response: %s", itemIds, - action.name(), response.getStatusLine())); + LOGGER.debug(String.format("Catalog notification on vspId - %s action - %s. Response: %s", itemIds, + action.name(), response.getStatusLine())); - if (numOfRetries > 1 && response.getStatusLine().getStatusCode() == 500) { + if (numOfRetries > 1 && response.getStatusLine().getStatusCode() == Response.Status.INTERNAL_SERVER_ERROR + .getStatusCode()) { Callable callable = createCallable(getFailedIds(itemIds, response.getEntity()), action, --numOfRetries, userId); - executor.schedule(callable, 5 , TimeUnit.SECONDS); + executor.schedule(callable, 5, TimeUnit.SECONDS); } } catch (Exception e) { - LOGGER.error(String.format("Catalog notification on vspId - %s action - %s FAILED. Error: %S", - itemIds.toString(), action.name(), e.getMessage())); + LOGGER.error(String.format("Catalog notification on vspId - %s action - %s FAILED. Error: %S", itemIds, + action.name(), e.getMessage())); } return null; } @@ -173,7 +180,7 @@ public class CatalogNotifier { } else if (action == ItemAction.RESTORE) { actionStr = "restored"; } - LOGGER.error("Catalog notification on URL - " + notifyCatalogUrl + actionStr); + LOGGER.debug("Catalog notification URL - " + notifyCatalogUrl + actionStr); return notifyCatalogUrl + actionStr; } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java index 359662ad33..afdac0ad61 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java @@ -86,7 +86,7 @@ public class ItemsImpl implements Items { private NotificationPropagationManager notifier = NotificationPropagationManagerFactory.getInstance().createInterface(); - private CatalogNotifier catalogNotifier = new CatalogNotifier(); + private Map actionSideAffectsMap = new EnumMap<>(ItemAction.class); @@ -120,7 +120,12 @@ public class ItemsImpl implements Items { } actionSideAffectsMap.get(request.getAction()).execute(item, user); - catalogNotifier.execute(Collections.singleton(itemId),request.getAction(),2); + try { + CatalogNotifier catalogNotifier = new CatalogNotifier(); + catalogNotifier.execute(Collections.singleton(itemId), request.getAction(), 2); + } catch (Exception e){ + LOGGER.error("Failed to send catalog notification on item " + itemId + " Error: " + e.getMessage()); + } return Response.ok().build(); } -- cgit 1.2.3-korg