aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
diff options
context:
space:
mode:
authorEinat Vinouze <einat.vinouze@intl.att.com>2019-07-16 17:17:36 +0300
committerIttay Stern <ittay.stern@att.com>2019-07-30 06:01:44 +0300
commite601bbdc43bae9a08e2e10c5139a6f76b47860d7 (patch)
tree1913f0b369ead3f2ea5557e5649d8281eca9871c /vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
parent76c6ee4a697617ec4cdee2f3b48bc83136c858c5 (diff)
Implant vid-app-common org.onap.vid.job (main and test)
Issue-ID: VID-378 Change-Id: I41b0bdc2c4e3635f3f3319b1cd63cefc61912dfc Signed-off-by: Einat Vinouze <einat.vinouze@intl.att.com> Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java44
1 files changed, 42 insertions, 2 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
index 4ef6fbd24..015ede893 100644
--- a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
@@ -21,11 +21,13 @@
package org.onap.vid.aai;
import static java.util.Collections.emptyList;
+import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.toMap;
import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
import static org.apache.commons.lang3.StringUtils.isEmpty;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
@@ -37,6 +39,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.function.Function;
+import java.util.stream.Stream;
import javax.inject.Inject;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
@@ -49,6 +52,7 @@ import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.vid.aai.exceptions.InvalidAAIResponseException;
+import org.onap.vid.aai.model.*;
import org.onap.vid.aai.model.AaiGetAicZone.AicZones;
import org.onap.vid.aai.model.AaiGetInstanceGroupsByCloudRegion;
import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.AaiGetNetworkCollectionDetails;
@@ -117,6 +121,7 @@ public class AaiClient implements AaiClientInterface {
private static final String GET_SERVICE_MODELS_RESPONSE_BODY = "{\"start\" : \"service-design-and-creation/models/\", \"query\" : \"query/serviceModels-byDistributionStatus?distributionStatus=DISTRIBUTION_COMPLETE_OK\"}";
+
@Inject
public AaiClient(AAIRestInterface restController, PortDetailsTranslator portDetailsTranslator, CacheProvider cacheProvider) {
this.restController = restController;
@@ -425,8 +430,8 @@ public class AaiClient implements AaiClientInterface {
}
@Override
- public AaiResponse getSubscriberData(String subscriberId) {
- String depth = "2";
+ public AaiResponse getSubscriberData(String subscriberId, boolean omitServiceInstances) {
+ String depth = omitServiceInstances ? "1" : "2";
AaiResponse subscriberDataResponse;
Response resp = doAaiGet(BUSINESS_CUSTOMERS_CUSTOMER + subscriberId + "?depth=" + depth, false);
subscriberDataResponse = processAaiResponse(resp, Services.class, null);
@@ -434,6 +439,41 @@ public class AaiClient implements AaiClientInterface {
}
@Override
+ public ModelVer getLatestVersionByInvariantId(String modelInvariantId) {
+ if (modelInvariantId.isEmpty()) {
+ throw new GenericUncheckedException("no invariant-id provided to getLatestVersionByInvariantId; request is rejected");
+ }
+
+ // add the modelInvariantId to the payload
+ StringBuilder payload = new StringBuilder(GET_SERVICE_MODELS_RESPONSE_BODY);
+ payload.insert(50, modelInvariantId);
+
+ Response response = doAaiPut("service-design-and-creation/models/model/", payload.toString(),false);
+ AaiResponse<ModelVersions> aaiResponse = processAaiResponse(response, ModelVersions.class, null, VidObjectMapperType.FASTERXML);
+ Stream<ModelVer> modelVerStream = toModelVerStream(aaiResponse.getT());
+ return maxModelVer(modelVerStream);
+
+ }
+
+ protected Stream<ModelVer> toModelVerStream(ModelVersions modelVersions) {
+
+ return Stream.of(modelVersions)
+ .map(ModelVersions::getResults)
+ .flatMap(java.util.Collection::stream)
+ .flatMap(map -> map.entrySet().stream())
+ .filter(kv -> StringUtils.equals(kv.getKey(), "model-ver"))
+ .map(Map.Entry::getValue);
+
+ }
+
+ protected ModelVer maxModelVer(Stream<ModelVer> modelVerStream) {
+ return modelVerStream
+ .filter(modelVer -> StringUtils.isNotEmpty(modelVer.getModelVersion()))
+ .max(comparing(ModelVer::getModelVersion, comparing(DefaultArtifactVersion::new)))
+ .orElseThrow(() -> new GenericUncheckedException("Could not find any version"));
+ }
+
+ @Override
public AaiResponse getServices() {
Response resp = doAaiGet("service-design-and-creation/services", false);
return processAaiResponse(resp, GetServicesAAIRespone.class, null);