summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2018-05-04 17:11:51 +0200
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2018-05-04 17:18:10 +0200
commit96a55871dabf4fa374de16091e165f0dc77bd9f7 (patch)
tree63083d4440d82b1ed1b78bd7455c51a1ef464fb3
parent120c2910e15cabe611149648ac9db3bc7b67ddf6 (diff)
Fix the ServiceTypeId null
Fix the ServiceTypeId null sometimes when deploying SDC artifacts, this was due to DCAE call returning empty result (Call too early) Issue-ID: CLAMP-151 Change-Id: I2582fabb56815a2fe40936a1cd250ff9bf3f6862 Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
-rw-r--r--src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java68
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java8
2 files changed, 41 insertions, 35 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
index 6bab2303..1e5dedaa 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
@@ -145,6 +145,25 @@ public class DcaeInventoryServices {
}
}
+ private int getTotalCountFromDcaeInventoryResponse(String responseStr) throws ParseException {
+ JSONParser parser = new JSONParser();
+ Object obj0 = parser.parse(responseStr);
+ JSONObject jsonObj = (JSONObject) obj0;
+ Long totalCount = (Long) jsonObj.get("totalCount");
+ return totalCount.intValue();
+ }
+
+ private DcaeInventoryResponse getItemsFromDcaeInventoryResponse(String responseStr)
+ throws ParseException, IOException {
+ JSONParser parser = new JSONParser();
+ Object obj0 = parser.parse(responseStr);
+ JSONObject jsonObj = (JSONObject) obj0;
+ JSONArray itemsArray = (JSONArray) jsonObj.get("items");
+ JSONObject dcaeServiceType0 = (JSONObject) itemsArray.get(0);
+ return JacksonUtils.getObjectMapperInstance().readValue(dcaeServiceType0.toString(),
+ DcaeInventoryResponse.class);
+ }
+
/**
* DO a query to DCAE to get some Information.
*
@@ -168,26 +187,14 @@ public class DcaeInventoryServices {
+ artifactName;
String fullUrl = refProp.getStringValue(DCAE_INVENTORY_URL) + "/dcae-service-types" + queryString;
logger.info("Dcae Inventory Service full url - " + fullUrl);
- String dcaeInventoryResponse = null;
- String responseStr = queryDCAEInventory(fullUrl);
- JSONParser parser = new JSONParser();
- Object obj0 = parser.parse(responseStr);
- JSONObject jsonObj = (JSONObject) obj0;
- Long totalCount = (Long) jsonObj.get("totalCount");
- int numServices = totalCount.intValue();
- if (numServices > 0) {
- JSONArray itemsArray = (JSONArray) jsonObj.get("items");
- JSONObject dcaeServiceType0 = (JSONObject) itemsArray.get(0);
- dcaeInventoryResponse = dcaeServiceType0.toString();
- logger.info("getDcaeInformation, answer from DCAE inventory:" + dcaeInventoryResponse);
- }
+ DcaeInventoryResponse response = queryDcaeInventory(fullUrl);
LoggingUtils.setResponseContext("0", "Get Dcae Information success", this.getClass().getName());
LoggingUtils.setTimeContext(startTime, new Date());
- metricsLogger.info("getDcaeInformation complete: number services returned=" + numServices);
- return JacksonUtils.getObjectMapperInstance().readValue(dcaeInventoryResponse, DcaeInventoryResponse.class);
+ return response;
}
- private String queryDCAEInventory(String fullUrl) throws IOException, InterruptedException {
+ private DcaeInventoryResponse queryDcaeInventory(String fullUrl)
+ throws IOException, InterruptedException, ParseException {
int retryInterval = 0;
int retryLimit = 1;
if (refProp.getStringValue(DCAE_INVENTORY_RETRY_LIMIT) != null) {
@@ -196,24 +203,21 @@ public class DcaeInventoryServices {
if (refProp.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL) != null) {
retryInterval = Integer.valueOf(refProp.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL));
}
- int i = 0;
- while (i < retryLimit) {
- i++;
- try {
- return DcaeHttpConnectionManager.doDcaeHttpQuery(fullUrl, "GET", null, null);
- } catch (BadRequestException e) {
- if (i == retryLimit) {
- // reach the retry limit, but still failed to connect to
- // DCAE
- throw e;
- } else {
- // wait for a while and try to connect to DCAE again
- Thread.sleep(retryInterval);
- }
+ for (int i = 0; i < retryLimit; i++) {
+ metricsLogger.info("Attempt n°" + i + " to contact DCAE inventory");
+ String response = DcaeHttpConnectionManager.doDcaeHttpQuery(fullUrl, "GET", null, null);
+ int totalCount = getTotalCountFromDcaeInventoryResponse(response);
+ metricsLogger.info("getDcaeInformation complete: totalCount returned=" + totalCount);
+ if (totalCount > 0) {
+ logger.info("getDcaeInformation, answer from DCAE inventory:" + response);
+ return getItemsFromDcaeInventoryResponse(response);
}
+ logger.info(
+ "Dcae inventory totalCount returned is 0, so waiting " + retryInterval + "ms before retrying ...");
+ // wait for a while and try to connect to DCAE again
+ Thread.sleep(retryInterval);
}
- // normally it should not go to this branch. It should either return the
- // DCAE query result, or throw exception
+ logger.warn("Dcae inventory totalCount returned is still 0, after " + retryLimit + " attempts, returning NULL");
return null;
}
diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
index c00d7de8..9fff4efc 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
@@ -64,6 +64,7 @@ import org.springframework.stereotype.Component;
@Component
public class PolicyClient {
+ protected PolicyEngine policyEngine;
protected static final String LOG_POLICY_PREFIX = "Response is ";
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyClient.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@@ -352,10 +353,11 @@ public class PolicyClient {
*
* @return A new policy engine
*/
- private PolicyEngine getPolicyEngine() {
- PolicyEngine policyEngine;
+ private synchronized PolicyEngine getPolicyEngine() {
try {
- policyEngine = new PolicyEngine(policyConfiguration.getProperties());
+ if (policyEngine == null) {
+ policyEngine = new PolicyEngine(policyConfiguration.getProperties());
+ }
} catch (PolicyEngineException e) {
throw new PolicyClientException("Exception when creating a new policy engine", e);
}