summaryrefslogtreecommitdiffstats
path: root/aai-service
diff options
context:
space:
mode:
Diffstat (limited to 'aai-service')
-rwxr-xr-xaai-service/lighty/pom.xml48
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientLighty.java94
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorLighty.java776
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIDeclarationsLighty.java1997
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIExecutorInterfaceLighty.java36
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIRequestLighty.java470
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceLighty.java1545
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceProviderLighty.java206
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/CustomQueryRequestLighty.java136
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/EchoRequestLighty.java98
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericQueryRequestLighty.java129
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericRequestLighty.java261
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestLighty.java130
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/PathRequestLighty.java92
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipListRequestLighty.java67
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipRequestLighty.java67
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/SelfLinkRequestLighty.java110
-rwxr-xr-xaai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/UpdateRequestLighty.java153
-rw-r--r--aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/lighty/AaaServiceModule.java55
-rwxr-xr-xaai-service/pom.xml1
20 files changed, 0 insertions, 6471 deletions
diff --git a/aai-service/lighty/pom.xml b/aai-service/lighty/pom.xml
deleted file mode 100755
index e3b7fe7c9..000000000
--- a/aai-service/lighty/pom.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onap.ccsdk.parent</groupId>
- <artifactId>binding-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
- <relativePath/>
- </parent>
-
- <groupId>org.onap.ccsdk.sli.adaptors</groupId>
- <artifactId>aai-service-lighty</artifactId>
- <version>0.6.1-SNAPSHOT</version>
- <packaging>jar</packaging>
-
- <name>ccsdk-sli-adaptors :: aai-service :: ${project.artifactId}</name>
- <url>http://maven.apache.org</url>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.onap.ccsdk.sli.core</groupId>
- <artifactId>ccsdk-lighty-dependency-versions</artifactId>
- <version>${project.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>io.lighty.core</groupId>
- <artifactId>lighty-controller</artifactId>
- </dependency>
- <dependency>
- <groupId>org.onap.ccsdk.sli.adaptors</groupId>
- <artifactId>aai-service-provider</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientLighty.java
deleted file mode 100755
index 67d8c07de..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientLighty.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * Modifications Copyright © 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Map;
-import org.onap.aai.inventory.v16.GenericVnf;
-import org.onap.aai.inventory.v16.PhysicalLink;
-import org.onap.aai.inventory.v16.SearchResults;
-import org.onap.aai.inventory.v16.Vserver;
-import org.onap.ccsdk.sli.adaptors.aai.data.notify.NotifyEvent;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
-import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
-
-/**
- * THIS CLASS IS A COPY OF {@link AAIClient} WITH REMOVED OSGi DEPENDENCIES
- */
-public interface AAIClientLighty extends SvcLogicResource, SvcLogicJavaPlugin {
-
- public SearchResults requestServiceInstanceURL(String svcInstanceId) throws AAIServiceException;
-
- // VServers
- public Vserver requestVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId) throws AAIServiceException;
-
- public URL requestVserverURLNodeQuery(String vserverName) throws AAIServiceException;
- public String getTenantIdFromVserverUrl(URL url);
- public String getCloudOwnerFromVserverUrl(URL url);
- public String getCloudRegionFromVserverUrl(URL url);
- public String getVServerIdFromVserverUrl(URL url, String tennantId);
- public Vserver requestVServerDataByURL(URL url) throws AAIServiceException;
-
-
-
- // ----------------- Release 1510 ----------------------
- // // GenericVNF
- public GenericVnf requestGenericVnfData(String vnfId) throws AAIServiceException;
- public boolean postGenericVnfData(String vnfId, GenericVnf request) throws AAIServiceException;
-
- // Physical Link
- public PhysicalLink requestPhysicalLinkData(String vnfId) throws AAIServiceException;
- public boolean postPhysicalLinkData(String vnfId, PhysicalLink request) throws AAIServiceException;
- public boolean deletePhysicalLinkData(String vnfId, String resourceVersion) throws AAIServiceException;
-
- // UBB Notify
- public boolean sendNotify(NotifyEvent event, String serviceInstanceId, String pathCode) throws AAIServiceException;
-
- // Node Query - 1602
- public SearchResults requestNodeQuery(String type, String entityIdentifier, String entityName) throws AAIServiceException;
- public String requestDataByURL(URL url) throws AAIServiceException;
- public GenericVnf requestGenericVnfeNodeQuery(String vnfName) throws AAIServiceException;
-
- public QueryStatus backup(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException;
- public QueryStatus restore(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException;
-
- public void logKeyError(String keys);
-
- public QueryStatus processResponseData(String rv, String resource, AAIRequestLighty request, String prefix,
- SvcLogicContext ctx, Map<String, String> nameValues, String modifier) throws IOException, AAIServiceException ;
- public String getPathTemplateForResource(String resoourceName, String join, SvcLogicContext ctx) throws MalformedURLException;
- public boolean isDeprecatedFormat(String resource, Map<String, String> nameValues);
-
- String query(AAIRequestLighty request) throws AAIServiceException;
- String save(AAIRequestLighty request) throws AAIServiceException;
- boolean delete(AAIRequestLighty request, String resourceVersion) throws AAIServiceException;
- boolean update(AAIRequestLighty request, String resourceVersion) throws AAIServiceException;
-
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorLighty.java
deleted file mode 100755
index f4cb55218..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorLighty.java
+++ /dev/null
@@ -1,776 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.NoSuchAlgorithmException;
-import java.text.SimpleDateFormat;
-import java.util.Properties;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocketFactory;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.http.impl.EnglishReasonPhraseCatalog;
-import org.onap.ccsdk.sli.adaptors.aai.AAIService.TransactionIdTracker;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-import org.onap.ccsdk.sli.adaptors.aai.data.ErrorResponse;
-import org.onap.ccsdk.sli.adaptors.aai.data.RequestError;
-import org.onap.ccsdk.sli.adaptors.aai.data.ResourceVersion;
-import org.onap.ccsdk.sli.adaptors.aai.data.ServiceException;
-import org.onap.ccsdk.sli.core.sli.MetricLogger;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * THIS CLASS IS A COPY OF {@link AAIClientRESTExecutor} WITH REMOVED OSGi DEPENDENCIES
- */
-public class AAIClientRESTExecutorLighty implements AAIExecutorInterfaceLighty {
-
- private final String truststorePath;
- private final String truststorePassword;
- private final String keystorePath;
- private final String keystorePassword;
- private final Boolean ignoreCertificateHostError;
- // authentication credentials
- private String userName;
- private String userPassword;
- private final String applicationId;
- private static final String HTTP_URL_CONNECTION_RESULT="HttpURLConnection result: {} : {}";
- private static final String ENTRY_DOESNT_EXIST="Entry does not exist.";
-
- /**
- * class Constructor
- * @param props - properties to initialize an instance.
- */
- public AAIClientRESTExecutorLighty(Properties props) {
- super();
-
- userName = props.getProperty(AAIService.CLIENT_NAME);
- userPassword = props.getProperty(AAIService.CLIENT_PWWD);
-
- if(userName == null || userName.isEmpty()){
- LOG.debug("Basic user name is not set");
- }
- if(userPassword == null || userPassword.isEmpty()) {
- LOG.debug("Basic password is not set");
- }
-
- truststorePath = props.getProperty(AAIService.TRUSTSTORE_PATH);
- truststorePassword = props.getProperty(AAIService.TRUSTSTORE_PSSWD);
- keystorePath = props.getProperty(AAIService.KEYSTORE_PATH);
- keystorePassword = props.getProperty(AAIService.KEYSTORE_PSSWD);
-
- String tmpApplicationId =props.getProperty(AAIService.APPLICATION_ID);
- if(tmpApplicationId == null || tmpApplicationId.isEmpty()) {
- tmpApplicationId = "SDNC";
- }
- applicationId = tmpApplicationId;
-
- String iche = props.getProperty(AAIService.CERTIFICATE_HOST_ERROR);
- boolean host_error = false;
- if(iche != null && !iche.isEmpty()) {
- host_error = Boolean.valueOf(iche);
- }
-
- ignoreCertificateHostError = host_error;
-
- HttpsURLConnection.setDefaultHostnameVerifier( (String string,SSLSession ssls) -> {
- return ignoreCertificateHostError;
-
- });
-
- if(truststorePath != null && truststorePassword != null && (new File(truststorePath)).exists()) {
- System.setProperty("javax.net.ssl.trustStore", truststorePath);
- System.setProperty("javax.net.ssl.trustStorePassword", truststorePassword);
- }
-
- if(keystorePath != null && keystorePassword != null && (new File(keystorePath)).exists())
- {
- //both jersey and HttpURLConnection can use this
- SSLContext ctx = null;
- try {
- ctx = SSLContext.getInstance("TLS");
-
- KeyManagerFactory kmf = null;
- try (FileInputStream fin = new FileInputStream(keystorePath)){
- String storeType = "PKCS12";
- String def = KeyStore.getDefaultType();
- kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
-
- String extension = keystorePath.substring(keystorePath.lastIndexOf(".") + 1);
-
- if(extension != null && !extension.isEmpty() && "JKS".equalsIgnoreCase(extension)) {
- storeType = "JKS";
- }
- KeyStore ks = KeyStore.getInstance(storeType);
-
- char[] pwd = keystorePassword.toCharArray();
- ks.load(fin, pwd);
- kmf.init(ks, pwd);
- } catch (Exception ex) {
- LOG.error("AAIResource", ex);
- }
-
- ctx.init(kmf.getKeyManagers(), null, null);
-
- CTX = ctx;
- LOG.debug("SSLContext created");
-
- } catch (KeyManagementException | NoSuchAlgorithmException exc) {
- LOG.error("AAIResource", exc);
- }
- }
-
- try {
- Field methodsField = HttpURLConnection.class.getDeclaredField("methods");
- methodsField.setAccessible(true);
- // get the methods field modifiers
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- // bypass the "private" modifier
- modifiersField.setAccessible(true);
-
- // remove the "final" modifier
- modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL);
-
- /* valid HTTP methods */
- String[] methods = {
- "GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE", "PATCH"
- };
- // set the new methods - including patch
- methodsField.set(null, methods);
-
- } catch (SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {
- LOG.warn("Adding PATCH method", e);
- }
- LOG.info("AAIResource.ctor initialized.");
-
- }
-
- private static final Logger LOG = LoggerFactory.getLogger(AAIService.class);
- private static final String NOT_PROVIDED = "NOT PROVIDED";
- private final MetricLogger ml = new MetricLogger();
-
- private SSLContext CTX;
-
-
- private int connection_timeout = 300000;
-
- private int read_timeout = 300000;
-
- /**
- * Returns an String that contains JSON data returned from the AAI Server.
- * <p>
- * This method always returns immediately, whether or not the
- * data exists.
- *
- * @param request an instance of AAIRequiest representing
- * the request made by DirectedGraph node.
- * @return the JSON based representation of data instance requested.
- * @see String
- */
- @Override
- public String get(AAIRequestLighty request) throws AAIServiceException {
- String response = null;
- InputStream inputStream = null;
- HttpURLConnection con = null;
- URL requestUrl = null;
-
- StringBuilder errorStringBuilder = new StringBuilder();
-
- try {
-
- if(request.getRequestObject() != null) {
- requestUrl = request.getRequestUrl(HttpMethod.POST, null);
- requestUrl = appendDepth(requestUrl, request);
- con = getConfiguredConnection(requestUrl, HttpMethod.POST);
- String json_text = request.toJSONString();
- LOGwriteDateTrace("data", json_text);
- logMetricRequest("POST "+requestUrl.getPath(), json_text, requestUrl.getPath());
- OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
- osw.write(json_text);
- osw.flush();
- } else {
- requestUrl = request.getRequestUrl(HttpMethod.GET, null);
- requestUrl = appendDepth(requestUrl, request);
- con = getConfiguredConnection(requestUrl, HttpMethod.GET);
- logMetricRequest("GET "+requestUrl.getPath(), "", requestUrl.getPath());
- }
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
- String responseMessage = null;
- try {
- responseMessage = con.getResponseMessage();
- } catch(Exception exc) {
- responseMessage = EnglishReasonPhraseCatalog.INSTANCE.getReason(responseCode,null);
- } finally {
- if(responseMessage == null)
- responseMessage = NOT_PROVIDED;
- }
-
- // Process the response
- LOG.info(HTTP_URL_CONNECTION_RESULT, responseCode, responseMessage);
- logMetricResponse(responseCode, responseMessage);
-
- if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
-
- ObjectMapper mapper = AAIService.getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK) {
- StringBuilder stringBuilder = new StringBuilder();
- String line = null;
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- response = stringBuilder.toString();
- try {
- Object object = mapper.readValue(response, Object.class);
- LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, responseMessage, mapper.writeValueAsString(object));
- } catch(Exception exc) {
- LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, responseMessage, mapper.writeValueAsString(response));
- }
- } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) {
- LOGwriteEndingTrace(responseCode, responseMessage, ENTRY_DOESNT_EXIST);
- ErrorResponse errorresponse = null;
- try {
- errorresponse = mapper.readValue(reader, ErrorResponse.class);
- } catch(Exception exc) {
- errorresponse = new ErrorResponse();
- RequestError requestError = new RequestError();
- ServiceException serviceException = new ServiceException();
- serviceException.setText(ENTRY_DOESNT_EXIST);
- requestError.setServiceException(serviceException);
- errorresponse.setRequestError(requestError );
- }
- throw new AAIServiceException(responseCode, errorresponse);
- } else if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
- StringBuilder stringBuilder = new StringBuilder();
- String line = null;
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOGwriteEndingTrace(responseCode, responseMessage, stringBuilder.toString());
- ServiceException serviceException = new ServiceException();
- serviceException.setMessageId("HTTP_UNAUTHORIZED");
- serviceException.setText(stringBuilder.toString());
- RequestError requestError = new RequestError();
- requestError.setServiceException(serviceException);
- ErrorResponse errorresponse = new ErrorResponse();
- errorresponse.setRequestError(requestError);
- throw new AAIServiceException(responseCode, errorresponse);
- } else {
- String line = null;
- while( ( line = reader.readLine() ) != null ) {
- errorStringBuilder.append("\n").append( line );
- }
-
- ErrorResponse errorresponse = mapper.readValue(errorStringBuilder.toString(), ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
-
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn(errorStringBuilder.toString(), exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
- LOG.warn("", exc);
- }
- }
- }
- return response;
- }
-
- /**
- * Returns an String that contains JSON data returned from the AAI Server.
- * <p>
- * This method always returns immediately, whether or not the
- * data exists.
- *
- * @param request an instance of AAIRequiest representing
- * the request made by DirectedGraph node.
- * @return the JSON based representation of data instance requested.
- * @see String
- */
- @Override
- public String post(AAIRequestLighty request) throws AAIServiceException {
- InputStream inputStream = null;
-
- try {
- String resourceVersion = null;
- AAIDatum instance = request.getRequestObject();
-
- try {
- Method getResourceVersionMethod = instance.getClass().getMethod("getResourceVersion");
- if(getResourceVersionMethod != null){
- try {
- Object object = getResourceVersionMethod.invoke(instance);
- if(object != null)
- resourceVersion = object.toString();
- } catch (InvocationTargetException exc) {
- LOG.warn("", exc);
- }
- }
- } catch(Exception exc) {
- LOG.error("", exc);
- }
-
- URL requestUrl = request.getRequestUrl(HttpMethod.PUT, resourceVersion);
- HttpURLConnection con = getConfiguredConnection(requestUrl, HttpMethod.PUT);
- ObjectMapper mapper = AAIService.getObjectMapper();
- String jsonText = request.toJSONString();
-
- LOGwriteDateTrace("data", jsonText);
- logMetricRequest("PUT "+requestUrl.getPath(), jsonText, requestUrl.getPath());
-
- OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
- osw.write(jsonText);
- osw.flush();
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
- String responseMessage = null;
- try {
- responseMessage = con.getResponseMessage();
- } catch(Exception exc) {
- responseMessage = EnglishReasonPhraseCatalog.INSTANCE.getReason(responseCode,null);
- } finally {
- if(responseMessage == null)
- responseMessage = NOT_PROVIDED;
- }
-
- LOG.info(HTTP_URL_CONNECTION_RESULT, responseCode, responseMessage);
- logMetricResponse(responseCode, responseMessage);
-
- // Process the response
- BufferedReader reader;
- String line = null;
- reader = new BufferedReader( new InputStreamReader( inputStream ) );
- mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
-
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- StringBuilder stringBuilder = new StringBuilder();
-
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOGwriteEndingTrace(responseCode, responseMessage, (stringBuilder.length() > 0) ? stringBuilder.toString() : "{no-data}");
- return stringBuilder.toString();
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse));
-
- throw new AAIServiceException(responseCode, errorresponse);
- }
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("AAIRequestExecutor.post", exc);
- throw new AAIServiceException(exc);
- } finally {
- try {
- if(inputStream != null)
- inputStream.close();
- } catch (Exception exc) {
- LOG.warn("AAIRequestExecutor.post", exc);
- }
- }
- }
-
- /**
- * Returns Boolean that contains completion state of the command executed.
- * <p>
- * This method always returns immediately, whether or not the
- * data exists.
- *
- * @param request an instance of AAIRequiest representing
- * @param resourceVersion a resource version of the data instacne to be deleted.
- * the request made by DirectedGraph node.
- * @return completion state of the command.
- * @see String
- */
- @Override
- public Boolean delete(AAIRequestLighty request, String resourceVersion) throws AAIServiceException {
- Boolean response = null;
- InputStream inputStream = null;
-
- if(resourceVersion == null) {
- throw new AAIServiceException("resource-version is required for DELETE request");
- }
-
- try {
- URL requestUrl = request.getRequestUrl(HttpMethod.DELETE, resourceVersion);
- HttpURLConnection conn = getConfiguredConnection(requestUrl, HttpMethod.DELETE);
- logMetricRequest("DELETE "+requestUrl.getPath(), "", requestUrl.getPath());
- conn.setDoOutput(true);
-
- // Check for errors
- int responseCode = conn.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- inputStream = conn.getInputStream();
- } else {
- inputStream = conn.getErrorStream();
- }
- String responseMessage = null;
- try {
- responseMessage = conn.getResponseMessage();
- } catch(Exception exc) {
- responseMessage = EnglishReasonPhraseCatalog.INSTANCE.getReason(responseCode,null);
- } finally {
- if(responseMessage == null)
- responseMessage = NOT_PROVIDED;
- }
-
- // Process the response
- LOG.info(HTTP_URL_CONNECTION_RESULT, responseCode, responseMessage);
- logMetricResponse(responseCode, responseMessage);
-
- if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
- String line = null;
-
- ObjectMapper mapper = AAIService.getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- StringBuilder stringBuilder = new StringBuilder();
-
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOGwriteEndingTrace(responseCode, responseMessage, stringBuilder.toString());
- response = true;
- } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) {
- LOGwriteEndingTrace(responseCode, responseMessage, ENTRY_DOESNT_EXIST);
- response = false;
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("delete", exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
- LOG.warn("delete", exc);
- }
- }
- }
- return response;
- }
-
- /**
- * Returns an String that contains JSON data returned from the AAI Server.
- * <p>
- * This method always returns immediately, whether or not the
- * data exists.
- *
- * @param request an instance of AAIRequiest representing
- * the request made by DirectedGraph node.
- * @param clas an definition of the class for which data will be returned
- * @return the instance of the class with data.
- * @see String
- */
- @Override
- public Object query(AAIRequestLighty request, Class clas) throws AAIServiceException {
- Object response = null;
- InputStream inputStream = null;
-
- try {
- URL requestUrl = request.getRequestQueryUrl(HttpMethod.GET);
- HttpURLConnection con = getConfiguredConnection(requestUrl, HttpMethod.GET);
- logMetricRequest("GET "+requestUrl.getPath(), "", requestUrl.getPath());
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
- String responseMessage = null;
- try {
- responseMessage = con.getResponseMessage();
- } catch(Exception exc) {
- responseMessage = EnglishReasonPhraseCatalog.INSTANCE.getReason(responseCode,null);
- } finally {
- if(responseMessage == null)
- responseMessage = NOT_PROVIDED;
- }
-
- LOG.info(HTTP_URL_CONNECTION_RESULT, responseCode, responseMessage);
- logMetricResponse(responseCode, responseMessage);
- ObjectMapper mapper = AAIService.getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK) {
- // Process the response
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
- response = mapper.readValue(reader, clas);
- LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response));
- } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) {
- LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", ENTRY_DOESNT_EXIST);
- return response;
- } else {
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
-
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("GET", exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
- LOG.warn("GET", exc);
- }
- }
- }
- return response;
- }
-
- @Override
- public Boolean patch(AAIRequestLighty request, String resourceVersion) throws AAIServiceException {
- InputStream inputStream = null;
-
- try {
- AAIDatum instance = request.getRequestObject();
- if(instance instanceof ResourceVersion) {
- resourceVersion = ((ResourceVersion)instance).getResourceVersion();
- }
-
- URL requestUrl = null;
- requestUrl = request.getRequestUrl("PATCH", resourceVersion);
- HttpURLConnection con = getConfiguredConnection(requestUrl, "PATCH");
- ObjectMapper mapper = AAIService.getObjectMapper();
- String jsonText = request.toJSONString();
-
- LOGwriteDateTrace("data", jsonText);
- logMetricRequest("PATCH "+requestUrl.getPath(), jsonText, requestUrl.getPath());
-
- OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
- osw.write(jsonText);
- osw.flush();
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
- String responseMessage = null;
- try {
- responseMessage = con.getResponseMessage();
- } catch(Exception exc) {
- LOG.info("Exception occured", exc.getMessage());
- responseMessage = EnglishReasonPhraseCatalog.INSTANCE.getReason(responseCode,null);
- } finally {
- if(responseMessage == null)
- responseMessage = NOT_PROVIDED;
- }
-
- LOG.info(HTTP_URL_CONNECTION_RESULT, responseCode, responseMessage);
- logMetricResponse(responseCode, responseMessage);
-
- // Process the response
- BufferedReader reader;
- String line = null;
- reader = new BufferedReader( new InputStreamReader( inputStream ) );
- mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
-
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- StringBuilder stringBuilder = new StringBuilder();
-
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOGwriteEndingTrace(responseCode, responseMessage, (stringBuilder.length() > 0) ? stringBuilder.toString() : "{no-data}");
- return true;
- } else {
- StringBuilder stringBuilder = new StringBuilder();
-
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append("\n").append( line );
- }
- LOG.info(stringBuilder.toString());
-
-
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse));
-
- throw new AAIServiceException(responseCode, errorresponse);
- }
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("AAIRequestExecutor.patch", exc);
- throw new AAIServiceException(exc);
- } finally {
- try {
- if(inputStream != null)
- inputStream.close();
- } catch (Exception exc) {
- LOG.warn("AAIRequestExecutor.patch", exc);
- }
- }
- }
-
- /**
- *
- * @param httpReqUrl
- * @param method
- * @return
- * @throws Exception
- */
- protected HttpURLConnection getConfiguredConnection(URL httpReqUrl, String method) throws Exception {
- HttpURLConnection con = (HttpURLConnection) httpReqUrl.openConnection();
-
- // Set up the connection properties
- con.setRequestProperty("Connection", "close");
- con.setDoInput(true);
- con.setDoOutput(true);
- con.setUseCaches(false);
- con.setConnectTimeout(connection_timeout);
- con.setReadTimeout(read_timeout);
- con.setRequestMethod(method);
- con.setRequestProperty("Accept", "application/json");
- con.setRequestProperty("Transfer-Encoding","chunked");
- con.setRequestProperty("Content-Type",
- "PATCH".equalsIgnoreCase(method) ? "application/merge-patch+json" : "application/json");
- con.setRequestProperty("X-FromAppId", applicationId);
- con.setRequestProperty("X-TransactionId", TransactionIdTracker.getNextTransactionId());
- String mlId = ml.getRequestID();
- if (mlId != null && !mlId.isEmpty()) {
- LOG.debug(String.format("MetricLogger requestId = %s", mlId));
- con.setRequestProperty(MetricLogger.REQUEST_ID, mlId);
- } else {
- LOG.debug("MetricLogger requestId is null");
- }
-
- if (userName != null && !userName.isEmpty() && userPassword != null && !userPassword.isEmpty()) {
- String basicAuth = "Basic " + new String(Base64.encodeBase64((userName + ":" + userPassword).getBytes()));
- con.setRequestProperty("Authorization", basicAuth);
- }
-
- if (con instanceof HttpsURLConnection && CTX != null) {
- SSLSocketFactory sockFact = CTX.getSocketFactory();
- HttpsURLConnection.class.cast(con).setSSLSocketFactory(sockFact);
- }
- return con;
- }
-
- private URL appendDepth(URL requestUrl, AAIRequestLighty request) throws MalformedURLException {
-
- String depth = request.requestProperties.getProperty("depth", "1");
- String path = requestUrl.toString();
- if(path.contains("?depth=") || path.contains("&depth=")) {
- return requestUrl;
- } else {
- if(path.contains("?")) {
- path = String.format("%s&depth=%s", path, depth);
- } else {
- path = String.format("%s?depth=%s", path, depth);
- }
- return new URL(path);
- }
- }
-
- public void logMetricRequest(String targetServiceName, String msg, String path){
- String svcInstanceId = "";
- String svcName = null;
- String partnerName = null;
- String targetEntity = "A&AI";
- String targetVirtualEntity = null;
-
- ml.logRequest(svcInstanceId, svcName, partnerName, targetEntity, targetServiceName, targetVirtualEntity, msg);
- }
-
- public void logMetricResponse(int responseCode, String responseDescription){
- ml.logResponse(responseCode < 400 ? "COMPLETE" : "ERROR", Integer.toString(responseCode), responseDescription);
- }
-
- protected void LOGwriteFirstTrace(String method, String url) {
- String time = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(System.currentTimeMillis());
- LOG.info("A&AI transaction :");
- LOG.info("Request Time : " + time + ", Method : " + method);
- LOG.info("Request URL : "+ url);
- }
-
- protected void LOGwriteDateTrace(String name, String data) {
- LOG.info("Input - " + name + " : " + data);
- }
-
- protected void LOGwriteEndingTrace(int response_code, String comment, String data) {
- LOG.info("Response code : " + response_code +", " + comment);
- LOG.info(String.format("Response data : %s", data));
- }
-
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIDeclarationsLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIDeclarationsLighty.java
deleted file mode 100755
index 1099f6586..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIDeclarationsLighty.java
+++ /dev/null
@@ -1,1997 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.xml.bind.annotation.XmlType;
-import org.apache.commons.lang.StringUtils;
-import org.onap.aai.inventory.v16.GenericVnf;
-import org.onap.aai.inventory.v16.Image;
-import org.onap.aai.inventory.v16.Metadata;
-import org.onap.aai.inventory.v16.Metadatum;
-import org.onap.aai.inventory.v16.RelatedToProperty;
-import org.onap.aai.inventory.v16.Relationship;
-import org.onap.aai.inventory.v16.RelationshipData;
-import org.onap.aai.inventory.v16.RelationshipList;
-import org.onap.aai.inventory.v16.ResultData;
-import org.onap.aai.inventory.v16.SearchResults;
-import org.onap.aai.inventory.v16.ServiceInstance;
-import org.onap.aai.inventory.v16.Vlan;
-import org.onap.aai.inventory.v16.Vlans;
-import org.onap.aai.inventory.v16.Vserver;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-import org.onap.ccsdk.sli.adaptors.aai.query.FormattedQueryResultList;
-import org.onap.ccsdk.sli.adaptors.aai.query.Result;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * THIS CLASS IS A COPY OF {@link AAIDeclarations} WITH REMOVED OSGi DEPENDENCIES
- */
-public abstract class AAIDeclarationsLighty implements AAIClientLighty {
-
- public static final String TRUSTSTORE_PATH = "org.onap.ccsdk.sli.adaptors.aai.ssl.trust";
- public static final String TRUSTSTORE_PSSWD = "org.onap.ccsdk.sli.adaptors.aai.ssl.trust.psswd";
- public static final String KEYSTORE_PATH = "org.onap.ccsdk.sli.adaptors.aai.ssl.key";
- public static final String KEYSTORE_PSSWD = "org.onap.ccsdk.sli.adaptors.aai.ssl.key.psswd";
-
- public static final String APPLICATION_ID = "org.onap.ccsdk.sli.adaptors.aai.application";
-
- public static final String CLIENT_NAME = "org.onap.ccsdk.sli.adaptors.aai.client.name";
- public static final String CLIENT_PWWD = "org.onap.ccsdk.sli.adaptors.aai.client.psswd";
-
-
- public static final String CONNECTION_TIMEOUT = "connection.timeout";
- public static final String READ_TIMEOUT = "read.timeout";
-
- public static final String TARGET_URI = "org.onap.ccsdk.sli.adaptors.aai.uri";
-
- public static final String AAI_VERSION = "org.onap.ccsdk.sli.adaptors.aai.version";
-
- // Availability zones query
- public static final String QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.query";
-
- // Update
- public static final String UPDATE_PATH = "org.onap.ccsdk.sli.adaptors.aai.update";
-
- // Service instance
- public static final String SVC_INSTANCE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.svcinst";
- public static final String SVC_INST_QRY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.svcinst.query";
-
- // VServer
- public static final String NETWORK_VSERVER_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.vserver";
-
- public static final String VNF_IMAGE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query";
-
- public static final String PARAM_SERVICE_TYPE = "org.onap.ccsdk.sli.adaptors.aai.param.service.type";
- public static final String CERTIFICATE_HOST_ERROR = "org.onap.ccsdk.sli.adaptors.aai.host.certificate.ignore";
-
- // UBB Notify
- public static final String UBB_NOTIFY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.notify";
- public static final String SELFLINK_AVPN = "org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn";
- public static final String SELFLINK_FQDN = "org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn";
-
- //Service
- public static final String SERVICE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.service";
-
- // site-pair-sets
- public static final String SITE_PAIR_SET_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.site.pair.set";
-
- // node query (1602)
- public static final String QUERY_NODES_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.nodes";
-
- private static final String VERSION_PATTERN = "/v$/";
-
- private static final String AAI_SERVICE_EXCEPTION = "AAI Service Exception";
-
- protected abstract Logger getLogger();
- public abstract AAIExecutorInterfaceLighty getExecutor();
-
- private static final String RELATIONSHIP_DATA= "Retrofitting relationship data: ";
-
-
- @Override
- public QueryStatus query(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx)
- throws SvcLogicException {
-
- getLogger().debug("AAIService.query \tresource = "+resource);
-
- String vnfId;
- String vnfName = null;
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
- getLogger().debug("key = "+ nameValues.toString());
-
- if(!AAIServiceUtils.isValidFormat(resource, nameValues)) {
- ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource));
- return QueryStatus.FAILURE;
- }
-
- if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) {
- ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource));
- return QueryStatus.FAILURE;
- }
-
- // process data using new model
- boolean useNewModelProcessing = true;
- // process server query by name the old way
- if("vserver".equals(resource) || "vserver2".equals(resource)){
- if(nameValues.containsKey("vserver_name") || nameValues.containsKey("vserver-name") || nameValues.containsKey("vserver.vserver_name") || nameValues.containsKey("vserver.vserver-name"))
- useNewModelProcessing = false;
- }
- if("generic-vnf".equals(resource)){
- if(nameValues.containsKey("vnf_name") || nameValues.containsKey("vnf-name") || nameValues.containsKey("generic_vnf.vnf_name") || nameValues.containsKey("generic-vnf.vnf-name"))
- useNewModelProcessing = false;
- }
-
- // process data using new model
- if(useNewModelProcessing && AAIRequest.createRequest(resource, nameValues) != null) {
-
- try {
- return newModelQuery(resource, localOnly, select, key, prefix, orderBy, ctx);
- } catch (Exception exc) {
- getLogger().warn("Failed query - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- }
-
- ObjectMapper mapper = AAIService.getObjectMapper();
- Map<String,Object> attributes = new HashMap<>();
-
- String modifier = null;
-
- if(resource.contains(":")) {
- String[] tokens = resource.split(":");
- resource = tokens[0];
- if(tokens.length > 1) {
- modifier = tokens[1];
- }
- }
-
- resource = resource.toLowerCase().replace("-", "_");
-
- try {
-
- switch(resource) {
- case "generic_vnf":
- vnfId = nameValues.get("vnf_id");
- if(nameValues.containsKey("vnf_id"))
- vnfId = nameValues.get("vnf_id");
- else if(nameValues.containsKey("generic_vnf.vnf_name"))
- vnfId = nameValues.get("generic_vnf.vserver_name");
-
- if(nameValues.containsKey("vnf_name"))
- vnfName = nameValues.get("vnf_name");
- else if(nameValues.containsKey("generic_vnf.vnf_name"))
- vnfName = nameValues.get("generic_vnf.vnf_name");
-
- if(vnfId != null && !vnfId.isEmpty()) {
- // at this point of the project this part should not be executed
- vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", "");
- GenericVnf vnf = this.requestGenericVnfData(vnfId);
- if(vnf == null) {
- return QueryStatus.NOT_FOUND;
- }
-
- attributes = mapper.convertValue(vnf, attributes.getClass());
- } else if(vnfName != null && !vnfName.isEmpty()) {
- try {
- vnfName = vnfName.trim().replace("'", "").replace("$", "").replace("'", "");
- GenericVnf vnf = this.requestGenericVnfeNodeQuery(vnfName);
- if(vnf == null) {
- return QueryStatus.NOT_FOUND;
- }
- vnfId=vnf.getVnfId();
- nameValues.put("vnf_id", vnfId);
- attributes = mapper.convertValue(vnf, attributes.getClass());
- } catch (AAIServiceException exc) {
- int errorCode = exc.getReturnCode();
- switch(errorCode) {
- case 400:
- case 404:
- case 412:
- break;
- default:
- getLogger().warn("Caught exception trying to refresh generic VNF", exc);
- }
- ctx.setAttribute(prefix + ".error.message", exc.getMessage());
- if(errorCode >= 300) {
- ctx.setAttribute(prefix + ".error.http.response-code",
- Integer.toString(exc.getReturnCode()));
- }
- return QueryStatus.FAILURE;
- }
- } else {
- getLogger().warn("No arguments are available to process generic VNF");
- return QueryStatus.FAILURE;
- }
- break;
- case "vserver":
- case "vserver2":
- String vserverName = null;
- if(nameValues.containsKey("vserver_name"))
- vserverName = nameValues.get("vserver_name");
- else if(nameValues.containsKey("vserver.vserver_name"))
- vserverName = nameValues.get("vserver.vserver_name");
-
- String vserverId = null;
- if(nameValues.containsKey("vserver_id"))
- vserverId = nameValues.get("vserver_id");
- if(nameValues.containsKey("vserver.vserver_id"))
- vserverId = nameValues.get("vserver.vserver_id");
- String tenantId = nameValues.get("teannt_id");
-
- if(vserverName != null) vserverName = vserverName.trim().replace("'", "").replace("$", "").replace("'", "");
- if(vserverId != null) vserverId = vserverId.trim().replace("'", "").replace("$", "").replace("'", "");
- if(tenantId != null) tenantId = tenantId.trim().replace("'", "").replace("$", "").replace("'", "");
-
- if (vserverName != null) {
- URL vserverUrl = null;
- try {
- vserverUrl = this.requestVserverURLNodeQuery(vserverName);
- } catch (AAIServiceException aaiexc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, aaiexc);
- ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage());
- if (aaiexc.getReturnCode() >= 300) {
- ctx.setAttribute(prefix + ".error.http" + "" + ".response-code", Integer.toString(aaiexc.getReturnCode()));
- }
-
- if (aaiexc.getReturnCode() == 404)
- return QueryStatus.NOT_FOUND;
- else
- return QueryStatus.FAILURE;
- }
- if (vserverUrl == null) {
- return QueryStatus.NOT_FOUND;
- }
-
- tenantId = getTenantIdFromVserverUrl(vserverUrl);
- String cloudOwner = getCloudOwnerFromVserverUrl(vserverUrl);
- String cloudRegionId = getCloudRegionFromVserverUrl(vserverUrl);
-
- Vserver vserver = null;
- try {
- vserver = this.requestVServerDataByURL(vserverUrl);
- } catch (AAIServiceException aaiexc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, aaiexc);
- ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage());
- if (aaiexc.getReturnCode() >= 300) {
- ctx.setAttribute(prefix + ".error.http" + ".response-code", Integer.toString(aaiexc.getReturnCode()));
- }
-
- if (aaiexc.getReturnCode() == 404)
- return QueryStatus.NOT_FOUND;
- else
- return QueryStatus.FAILURE;
- }
- if (vserver == null) {
- return QueryStatus.NOT_FOUND;
- }
- attributes = mapper.convertValue(vserver, attributes.getClass());
- if (!attributes.containsKey("tenant-id") && tenantId != null) {
- attributes.put("tenant-id", tenantId);
- }
- if (!attributes.containsKey("cloud-owner") && cloudOwner != null) {
- attributes.put("cloud-owner", cloudOwner);
- }
- if (!attributes.containsKey("cloud-region-id") && cloudRegionId != null) {
- attributes.put("cloud-region-id", cloudRegionId);
- }
- } else if (vserverId != null && tenantId != null) {
- Vserver vserver = this.requestVServerData(tenantId, vserverId, "att-aic", "AAIAIC25");
- if(vserver == null) {
- return QueryStatus.NOT_FOUND;
- }
- attributes = mapper.convertValue(vserver, attributes.getClass());
- if(!attributes.containsKey("tenant-id") && tenantId != null){
- attributes.put("tenant-id", tenantId);
- }
- } else {
- return QueryStatus.FAILURE;
- }
- break;
-
- default:
- return QueryStatus.FAILURE;
- }
-
- QueryStatus retval = QueryStatus.SUCCESS;
-
- if (attributes == null || attributes.isEmpty()) {
- retval = QueryStatus.NOT_FOUND;
- getLogger().debug("No data found");
- } else {
- if (ctx != null) {
- if (prefix != null) {
- ArrayList<String> keys = new ArrayList<>(attributes.keySet());
-
- int numCols = keys.size();
-
- for (int i = 0; i < numCols; i++) {
- String colValue;
- String colName = keys.get(i);
- Object object = attributes.get(colName);
-
- if(object != null && object instanceof String) {
- colValue = (String)object;
-
- if (prefix != null) {
- getLogger().debug("Setting "+prefix + "." + colName.replaceAll("_", "-")+" = "+ colValue);
- ctx.setAttribute(prefix + "." + colName.replaceAll("_", "-"), colValue);
- } else {
- getLogger().debug("Setting " + colValue.replaceAll("_", "-")+" = "+colValue);
- ctx.setAttribute(colValue.replaceAll("_", "-"), colValue);
- }
- } else if(object != null && object instanceof Map) {
- if(colName.equals(modifier) || "relationship-list".equals(colName)){
- String localNodifier = modifier;
- if(localNodifier == null)
- localNodifier = "relationship-list";
- Map<String, Object> properties = (Map<String, Object>)object;
- writeMap(properties, prefix+"."+localNodifier, ctx);
- }
- }
- }
- }
- }
- }
- getLogger().debug("Query - returning " + retval);
- return retval;
-
- } catch (Exception exc) {
- getLogger().warn("Failed query - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- }
-
-
- public void writeMap(Map<String, Object> properties, String prefix, SvcLogicContext ctx) {
- Set<String> mapKeys = properties.keySet();
-
- for(String mapKey : mapKeys) {
- Object entity = properties.get(mapKey);
- if(entity instanceof ArrayList) {
- writeList((ArrayList<?>)entity, prefix + "." + mapKey, ctx);
- } else
- if(entity instanceof String || entity instanceof Long || entity instanceof Integer || entity instanceof Boolean) {
- ctx.setAttribute(prefix + "." + mapKey, entity.toString());
- getLogger().debug(prefix + "." + mapKey + " : " + entity.toString());
- } else if(entity instanceof Map) {
- String localPrefix = prefix;
- if(mapKey != null) {
- localPrefix = String.format("%s.%s", prefix, mapKey);
- }
- writeMap( (Map<String, Object>)entity, localPrefix, ctx);
- }
- }
- }
-
- private void writeList(ArrayList<?> list, String prefix, SvcLogicContext ctx) {
- for(int i = 0; i < list.size(); i++ ) {
- Object entity = list.get(i);
- if(entity instanceof Map) {
- writeMap( (Map<String, Object>)entity, prefix + "[" + i + "]", ctx);
- } else
- if(entity instanceof String || entity instanceof Long || entity instanceof Integer || entity instanceof Boolean) {
- ctx.setAttribute(prefix, entity.toString());
- getLogger().debug(prefix + " : " + entity.toString());
- }
- }
-
- if(!list.isEmpty()) {
- ctx.setAttribute(prefix + "_length", Integer.toString(list.size()));
- getLogger().debug(prefix + "_length" + " : " + Integer.toString(list.size()));
- }
- }
-
- @Override
- public QueryStatus save(String resource, boolean force, boolean localOnly, String key, Map<String, String> params, String prefix, SvcLogicContext ctx)
- throws SvcLogicException {
-
- getLogger().debug("AAIService.save\tresource="+resource);
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
-
- if(!AAIServiceUtils.isValidFormat(resource, nameValues)) {
- ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource));
- return QueryStatus.FAILURE;
- }
-
- if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) {
- getLogger().warn("AAIService.save has unspecified resource");
- ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource));
- return QueryStatus.FAILURE;
- }
- // keys passed
- getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray()));
-
- // process params
- if(params.containsKey("prefix")) {
- Map<String, String> tmpParams = ctxGetBeginsWith(ctx, params.get("prefix"));
- if(!tmpParams.isEmpty()) {
- params.putAll(tmpParams);
-// params.remove("prefix");
- }
- }
- // params passed
- getLogger().debug("parms = "+ Arrays.toString(params.entrySet().toArray()));
-
- boolean useNewModelProcessing = true;
- // process server query by name the old way
- if("vserver".equals(resource) || "vserver2".equals(resource)){
- if(nameValues.containsKey("vserver-name")) {
- useNewModelProcessing = false;
- }
-
- if(!params.containsKey("vserver-selflink")) {
-
- AAIRequest request = AAIRequest.createRequest(resource, nameValues);
- URL path = null;
- try {
- request.processRequestPathValues(nameValues);
- path = request.getRequestUrl("GET", null);
- params.put("vserver-selflink", path.toString());
- } catch (UnsupportedEncodingException | MalformedURLException | URISyntaxException e) {
- getLogger().warn("URL error Exception", e);
- params.put("vserver-selflink", "/vserver");
- }
- }
- }
-
- // process data using new model
- if(useNewModelProcessing && AAIRequest.createRequest(resource, nameValues) != null) {
-
- try {
- if(!resource.contains(":")){
- return newModelSave(resource, force, key, params, prefix, ctx);
- } else {
- String[] tokens = resource.split(":");
- String localResource = tokens[0];
- String dependency = tokens[1];
-
- AAIDatum instance = newModelObjectRequest( localResource, nameValues, prefix, ctx);
- if(instance == null) {
- return QueryStatus.NOT_FOUND;
- }
-
- switch(dependency){
- case "relationship-list":
- newModelProcessRelationshipList(instance, params, prefix, ctx);
- break;
- case "metadata":
- newModelProcessMetadata(instance, params, prefix, ctx);
- break;
- }
- // create a method to update relationship-list
- AAIRequestLighty request = AAIRequestLighty.createRequest(localResource, nameValues);
- request.setRequestObject(instance);
- request.processRequestPathValues(nameValues);
-
- getExecutor().post(request);
- getLogger().debug("Save relationship list - returning SUCCESS");
- return QueryStatus.SUCCESS;
- }
- } catch (Exception exc) {
- ctx.setAttribute(prefix + ".error.message", exc.getMessage());
- if(exc instanceof AAIServiceException) {
- AAIServiceException aaiexc = (AAIServiceException)exc;
- if(aaiexc.getReturnCode() >= 300) {
- ctx.setAttribute(prefix + ".error.http" + ".response-code", Integer.toString(aaiexc.getReturnCode()));
- }
-
- if(aaiexc.getReturnCode() == 404) {
- return QueryStatus.NOT_FOUND;
- }
- }
- getLogger().warn("Failed save() - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- } else {
- getLogger().debug("Save() request for {} is not supported- returning FAILURE", resource);
- return QueryStatus.FAILURE;
- }
- }
-
- @Override
- public QueryStatus update(String resource, String key, Map<String, String> params, String prefix, SvcLogicContext ctx) throws SvcLogicException {
-
- resource = resource.toLowerCase();
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
- getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray()));
- if(!AAIServiceUtils.isValidFormat(resource, nameValues)) {
- ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource));
- return QueryStatus.FAILURE;
- }
-
- if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) {
- ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource));
- return QueryStatus.FAILURE;
- }
-
- // check if request is for groups
- if(!AAIServiceUtils.containsResource(resource, nameValues)) {
- ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not permitted in 'update' operation", resource));
- return QueryStatus.FAILURE;
- }
-
- getLogger().debug("parms = "+ Arrays.toString(params.entrySet().toArray()));
-
- AAIRequestLighty request = AAIRequestLighty.createRequest(resource, nameValues);
- request = new UpdateRequestLighty(request, params);
-
- String[] arguments = request.getArgsList();
- for(String name : arguments) {
- String modifiedKey = name.replaceAll("-", "_");
- if(nameValues.containsKey(modifiedKey)) {
- String argValue = nameValues.get(modifiedKey);
- if(argValue != null) argValue = argValue.trim().replace("'", "").replace("$", "").replace("'", "");
- request.addRequestProperty(name, argValue);
- }
- }
-
- try {
- QueryStatus retval = QueryStatus.SUCCESS;
-
- retval = newModelQuery(resource, false, null, key, "tmpDelete", null, ctx);
-
- if(retval == null || retval != QueryStatus.SUCCESS) {
- return retval;
- }
-
- String resourceVersion = ctx.getAttribute("tmpDelete.resource-version");
- if(resourceVersion == null) {
- return QueryStatus.NOT_FOUND;
- }
- params.put("resource-version", resourceVersion);
-
- request.processRequestPathValues(nameValues);
- getExecutor().patch(request, resourceVersion);
- } catch(AAIServiceException aaiexc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, aaiexc);
- if(aaiexc.getReturnCode() == 404)
- return QueryStatus.NOT_FOUND;
- else
- return QueryStatus.FAILURE;
- } catch (Exception exc) {
- getLogger().warn("Failed update - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
-
- getLogger().debug("Update - returning SUCCESS");
- return QueryStatus.SUCCESS;
- }
-
- @Override
- public QueryStatus delete(String resource, String key, SvcLogicContext ctx) throws SvcLogicException {
- getLogger().debug("AAIService.delete\tresource="+resource);
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
- getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray()));
-
- if(!AAIServiceUtils.isValidFormat(resource, nameValues)) {
- ctx.setAttribute(String.format("%s.error.message", "aaiData"), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource));
- return QueryStatus.FAILURE;
- }
-
- if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) {
- ctx.setAttribute(String.format("%s.error.message", "tmpDelete"), String.format("Resource %s is not supported", resource));
- return QueryStatus.FAILURE;
- }
-
- // check if request is for groups
- if(!AAIServiceUtils.containsResource(resource, nameValues)) {
- ctx.setAttribute(String.format("%s.error.message", "tmpDelete"), String.format("Resource %s is not permitted in 'delete' operation", resource));
- return QueryStatus.FAILURE;
- }
-
- if(AAIRequest.createRequest(resource, nameValues) != null) {
- if(resource.contains(":")) {
- switch (resource.split(":")[1]){
- case "relationship-list":
- return processDeleteRelationshipList(resource, key, ctx, nameValues);
- case "metadata":
- return processDeleteMetadata(resource, key, ctx, nameValues);
- }
- }
-
-
- try {
- QueryStatus retval = QueryStatus.SUCCESS;
-
- retval = newModelQuery(resource, false, null, key, "tmpDelete", null, ctx);
-
- if(retval == null || retval != QueryStatus.SUCCESS) {
- return retval;
- }
-
- String resourceVersion = ctx.getAttribute("tmpDelete.resource-version");
- if(resourceVersion == null) {
- return QueryStatus.NOT_FOUND;
- }
-
- try {
- AAIRequestLighty request = AAIRequestLighty.createRequest(resource, nameValues);
- if(request == null) {
- return QueryStatus.FAILURE;
- }
-
- request.processRequestPathValues(nameValues);
-
- if(getExecutor().delete(request, resourceVersion)) {
- return QueryStatus.SUCCESS;
- }
- } catch(AAIServiceException aaiexc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, aaiexc);
- if(aaiexc.getReturnCode() == 404)
- return QueryStatus.NOT_FOUND;
- else
- return QueryStatus.FAILURE;
-
- } catch (Exception exc) {
- getLogger().warn("requestGenericVnfData", exc);
- return QueryStatus.FAILURE;
- }
-
- } catch (Exception exc) {
- getLogger().warn("Failed delete - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- } else {
- String resourceName = resource;
- String identifier = null;
-
- if(resourceName.contains(":")) {
- String[] tokens = resourceName.split(":");
- if(tokens != null && tokens.length > 0) {
- resourceName = tokens[0];
- identifier = tokens[1];
- }
- }
- if("relationship-list".equals(identifier) || "relationshipList".equals(identifier)) {
-// RelationshipRequest relationshipRequest = new RelationshipRequest();
- if("generic-vnf".equals(resourceName)){
- String vnfId = nameValues.get("vnf_id");
- String relatedTo = nameValues.get("related_to");
- vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", "");
- relatedTo = relatedTo.trim().replace("'", "").replace("$", "").replace("'", "");
-
- GenericVnf vnf;
- try {
- vnf = this.requestGenericVnfData(vnfId);
- if(vnf == null)
- return QueryStatus.NOT_FOUND;
- } catch (AAIServiceException exc) {
- getLogger().warn("Failed delete - returning NOT_FOUND", exc);
- return QueryStatus.NOT_FOUND;
- }
- boolean itemRemoved = false;
- RelationshipList relationshipList = vnf.getRelationshipList();
- List<Relationship> relationships = relationshipList.getRelationship();
- List<Relationship> iterableList = new LinkedList<>(relationships);
- for(Relationship relationship : iterableList) {
- if(relationship.getRelatedTo().equals(relatedTo)) {
- relationships.remove(relationship);
- itemRemoved = true;
- }
- }
-
- if(!itemRemoved)
- return QueryStatus.NOT_FOUND;
- try {
- this.postGenericVnfData(vnf.getVnfId(), vnf);
- } catch (AAIServiceException exc) {
- if(exc.getReturnCode() == 404){
- return QueryStatus.NOT_FOUND;
- } else {
- getLogger().warn("Failed delete - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- }
- return QueryStatus.SUCCESS;
- }
- }
- }
- return QueryStatus.FAILURE;
- }
-
- @Override
- public QueryStatus exists(String resource, String key, String prefix, SvcLogicContext ctx) throws SvcLogicException {
- return query(resource, false, null, key, prefix, null, ctx);
- }
-
- @Override
- public QueryStatus isAvailable(String arg0, String arg1, String arg2, SvcLogicContext arg3)
- throws SvcLogicException {
- throw new SvcLogicException("Method AAIService.isAvailable() has not been implemented yet");
- }
-
- @Override
- public QueryStatus notify(String resource, String action, String key, SvcLogicContext ctx) throws SvcLogicException {
- throw new SvcLogicException("Method AAIService.notify() has not been implemented yet");
- }
-
- // @Override
- public QueryStatus newModelQuery(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) {
-
- QueryStatus retval = QueryStatus.SUCCESS;
- String modifier = null;
-
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
- if(resource.contains(":")) {
- modifier = resource.split(":")[1];
- }
-
- try {
- AAIRequestLighty request = AAIRequestLighty.createRequest(resource, nameValues);
- if(request == null) {
- return QueryStatus.FAILURE;
- }
-
- Map<String, String> params = new HashMap<>();
-
- request.processRequestPathValues(nameValues);
- if(nameValues.containsKey("prefix")){
- Map<String, String> tmpParams = ctxGetBeginsWith(ctx, nameValues.get("prefix"));
- if(!tmpParams.isEmpty()) {
- params.putAll(tmpParams);
- }
- }
- String rv = getExecutor().get(request);
-
- retval = processResponseData(rv, resource, request, prefix, ctx, nameValues, modifier);
-
- } catch(AAIServiceException aaiexc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, aaiexc);
- int errorCode = aaiexc.getReturnCode();
- ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage());
- if(errorCode >= 300) {
- ctx.setAttribute(prefix + ".error.http.response-code",
- Integer.toString(aaiexc.getReturnCode()));
- }
-
- if(aaiexc.getReturnCode() == 404)
- return QueryStatus.NOT_FOUND;
-
- return QueryStatus.FAILURE;
- } catch (Exception exc) {
- getLogger().warn("requestGenericVnfData", exc);
- ctx.setAttribute(prefix + ".error.message", exc.getMessage());
- return QueryStatus.FAILURE;
- }
-
- return retval;
- }
-
- public QueryStatus processResponseData(String rv, String resource, AAIRequestLighty request, String prefix, SvcLogicContext ctx, Map<String, String> nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException
- {
- Object response;
-
- if(rv == null) {
- return QueryStatus.NOT_FOUND;
- }
-
- response = request.jsonStringToObject(rv);
- if(response == null) {
- return QueryStatus.NOT_FOUND;
- }
-
- if("generic-query".equals(resource)) {
- SearchResults rd = SearchResults.class.cast(response);
- List<ResultData> rdList = rd.getResultData();
- if(rdList == null || rdList.isEmpty()) {
- return QueryStatus.NOT_FOUND;
- }
- ResultData rDatum = rdList.get(0);
- nameValues.put("selflink", rDatum.getResourceLink());
- AAIRequestLighty req2 = AAIRequestLighty.createRequest(rDatum.getResourceType(), nameValues);
- req2.processRequestPathValues(nameValues);
- rv = getExecutor().get(req2);
- if(rv == null) {
- return QueryStatus.NOT_FOUND;
- }
-
- response = req2.jsonStringToObject(rv);
- if(response == null) {
- return QueryStatus.NOT_FOUND;
- }
- }
-
- if("nodes-query".equals(resource)) {
- SearchResults rd = SearchResults.class.cast(response);
- List<ResultData> rdList = rd.getResultData();
- if(rdList == null || rdList.isEmpty()) {
- return QueryStatus.NOT_FOUND;
- }
- ResultData rDatum = rdList.get(0);
- response = rDatum;
- }
-
- if("formatted-query".equals(resource) || "custom-query".equals(resource)) {
- FormattedQueryResultList rd = FormattedQueryResultList.class.cast(response);
- List<Result> iRIlist = rd.getResults();
- if(iRIlist == null || iRIlist.isEmpty()) {
- return QueryStatus.NOT_FOUND;
- }
- }
-
- // process relationship list
- // this is a temporary soluton to address the realationship handling changes added in Release 17.07
- try {
- Class<?> clazz = response.getClass();
- Method getter = clazz.getMethod("getRelationshipList");
- Object obj = getter.invoke(response);
- if(obj != null && obj instanceof RelationshipList) {
- RelationshipList list = RelationshipList.class.cast(obj);
- AAIServiceUtils.populateRelationshipDataFromPath(list);
- }
- } catch(Exception exc) {
- getLogger().debug(RELATIONSHIP_DATA + exc.getMessage());
- }
-
- String preFix;
- if(prefix == null || prefix.isEmpty()) {
- preFix = "";
- } else {
- preFix = prefix + ".";
- }
-
- Map<String,Object> props = objectToProperties(response);
- Set<String> keys = props.keySet();
- for(String theKey: keys) {
- if(getLogger().isTraceEnabled())
- getLogger().trace(theKey);
-
- Object value = props.get(theKey);
- if(value == null)
- continue;
- Object type = value.getClass();
- if(value instanceof String) {
- ctx.setAttribute(preFix + theKey, value.toString());
- continue;
- }
- if(value instanceof Boolean) {
- ctx.setAttribute(preFix + theKey, value.toString());
- continue;
- }
- if(value instanceof Integer) {
- ctx.setAttribute(preFix + theKey, value.toString());
- continue;
- }
- if(value instanceof Long) {
- ctx.setAttribute(preFix + theKey, value.toString());
- continue;
- }
-
- if(value instanceof ArrayList) {
- ArrayList<?> array = ArrayList.class.cast(value);
- for(int i = 0; i < array.size(); i++) {
- writeList(array, String.format("%s.%s", prefix, theKey), ctx);
- }
- continue;
- }
-
- if("relationship-list".equals(theKey)){
- Map<String, Object> relationshipList = (Map<String, Object>)value;
- // we are interested in seeing just the selected relationship
- if(theKey.equals(modifier)) {
- List<?> relationships = (List<?>)relationshipList.get("relationship");
- if(relationships != null && !relationships.isEmpty()) {
-
- List newRelationships = new LinkedList();
- newRelationships.addAll(relationships);
-
- for(Object obj : newRelationships){
- if(obj instanceof Map<?, ?>) {
- Map<?, ?> relProperties = (Map<?, ?>)obj;
- if(relProperties.containsKey("related-to")) {
- Object relPropsRelatedTo = relProperties.get("related-to");
-
- String relatedTo = nameValues.get("related_to");
- if(relatedTo != null) {
- relatedTo = relatedTo.trim().replace("'", "").replace("$", "").replace("'", "");
- if(!relatedTo.equals(relPropsRelatedTo)) {
- relationships.remove(relProperties);
- }
- continue;
- } else {
- continue;
- }
- }
- }
- }
- }
- }
- writeMap(relationshipList, String.format("%s.%s", prefix, theKey), ctx);
- continue;
- }
-
- if(value instanceof Map) {
- Map<String, Object> subnetsList = (Map<String, Object>)value;
- writeMap(subnetsList, String.format("%s.%s", prefix, theKey), ctx);
- continue;
- }
-
- }
- return QueryStatus.SUCCESS;
- }
-
-
- public QueryStatus newModelBackupRequest(String resource, Map<String, String> params, String prefix, SvcLogicContext ctx) {
-
- QueryStatus retval = QueryStatus.SUCCESS;
- HashMap<String, String> nameValues = new HashMap<>();
-
- try {
- AAIRequestLighty request = AAIRequestLighty.createRequest(resource, nameValues);
- if(request == null) {
- return QueryStatus.FAILURE;
- }
-
- boolean argsFound = false;
- String[] arguments = request.getArgsList();
- for(String name : arguments) {
- String tmpName = name.replaceAll("-", "_");
- String value = params.get(tmpName);
- if(value != null && !value.isEmpty()) {
- value = value.trim().replace("'", "").replace("$", "").replace("'", "");
- request.addRequestProperty(name, value);
- argsFound = true;
- }
- }
- if(!argsFound) {
- getLogger().warn("No arguments were found. Terminating backup request.");
- return QueryStatus.FAILURE;
- }
-
- String rv = getExecutor().get(request);
- ctx.setAttribute(prefix, rv);
- } catch(AAIServiceException aaiexc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, aaiexc);
- if(aaiexc.getReturnCode() == 404)
- return QueryStatus.NOT_FOUND;
-
- return QueryStatus.FAILURE;
- } catch (Exception exc) {
- getLogger().warn("newModelBackupRequest", exc);
- return QueryStatus.FAILURE;
- }
-
- return retval;
- }
-
- public AAIDatum newModelObjectRequest(String resource, Map<String, String> params, String prefix, SvcLogicContext ctx)
- throws AAIServiceException {
-
- AAIDatum response = null;
-
- try {
- AAIRequestLighty request = AAIRequestLighty.createRequest(resource, params);
- if(request == null) {
- return null;
- }
-
- request.processRequestPathValues(params);
- String rv = getExecutor().get(request);
- response = request.jsonStringToObject(rv);
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- getLogger().warn("newModelBackupRequest", exc);
- throw new AAIServiceException(exc);
- }
-
- return response;
- }
-
-
- @Override
- public QueryStatus release(String arg0, String arg1, SvcLogicContext arg2) throws SvcLogicException {
- throw new SvcLogicException("Method AAIService.release() has not been implemented yet");
- }
-
- @Override
- public QueryStatus reserve(String arg0, String arg1, String arg2, String arg3, SvcLogicContext arg4)
- throws SvcLogicException {
- throw new SvcLogicException("Method AAIService.reserve() has not been implemented yet");
- }
-
- private QueryStatus newModelSave(String resource, boolean force, String key, Map<String, String> params, String prefix, SvcLogicContext ctx) {
- getLogger().debug("Executing newModelSave for resource : " + resource);
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
-
- try {
- ArrayList<String> subResources = new ArrayList<>();
- Set<String> set = params.keySet();
- Map<String, Method> setters = new HashMap<>();
- Map<String, Method> getters = new HashMap<>();
-
- // 1. find class
- AAIRequestLighty request = AAIRequestLighty.createRequest(resource, nameValues);
- Class<? extends AAIDatum> resourceClass = request.getModelClass();
- getLogger().debug(resourceClass.getName());
- AAIDatum instance = resourceClass.newInstance();
-
- {
- Annotation[] annotations = resourceClass.getAnnotations();
- for(Annotation annotation : annotations) {
- Class<? extends Annotation> anotationType = annotation.annotationType();
- String annotationName = anotationType.getName();
-
- // 2. find string property setters and getters for the lists
- if("javax.xml.bind.annotation.XmlType".equals(annotationName)){
- XmlType order = (XmlType)annotation;
- String[] values = order.propOrder();
- for(String value : values) {
- String id = AAIServiceUtils.camelCaseToDashedString(value);
- Field field = resourceClass.getDeclaredField(value);
- Class<?> type = field.getType();
- Method setter = null;
- try {
- setter = resourceClass.getMethod("set"+StringUtils.capitalize(value), type);
- if(type.getName().startsWith("java.lang") || "boolean".equals(type.getName()) || "long".equals(type.getName()) || "int".equals(type.getName())) {
- try {
- Object arglist[] = new Object[1];
- arglist[0] = params.get(id);
-
- if(arglist[0] != null) {
- if(!type.getName().equals("java.lang.String")) {
-// getLogger().debug(String.format("Processing %s with parameter %s", types[0].getName(), value));
- if("java.lang.Long".equals(type.getName()) || "java.lang.Integer".equals(type.getName())) {
- String fv = params.get(id);
- if(fv == null || fv.isEmpty()) {
- arglist[0] = null;
- } else {
- arglist[0] = valueOf(type, params.get(id));
- }
- } else if("boolean".equals(type.getName())) {
- arglist[0] = valueOf(Boolean.class, params.get(id));
- } else if("int".equals(type.getName())) {
- arglist[0] = valueOf(Integer.class, params.get(id));
- } else if("long".equals(type.getName())) {
- String fv = params.get(id);
- if(fv == null || fv.isEmpty()) {
- arglist[0] = null;
- } else {
- arglist[0] = valueOf(Long.class, params.get(id));
- }
- } else {
- arglist[0] = valueOf(type, params.get(id));
- }
- }
- Object obj = setter.invoke(instance, arglist);
- }
- set.remove(id);
-
- } catch (Exception x) {
- Throwable cause = x.getCause();
- getLogger().warn("Failed process for " + resourceClass.getName(), x);
- }
- } else if("java.util.List".equals(type.getName())) {
- List<String> newValues = new ArrayList<>();
- String length = id+"_length";
- if(!params.isEmpty() && params.containsKey(length)) {
- String tmp = params.get(length);
- int count = Integer.parseInt(tmp);
- for(int i=0; i<count; i++) {
- String tmpValue = params.get(String.format("%s[%d]", id, i));
- newValues.add(tmpValue);
- }
- if(!newValues.isEmpty()) {
- Object o = setter.invoke(instance, newValues);
- }
- }
- set.remove(id);
- } else {
- setters.put(id, setter);
- }
- } catch(Exception exc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, exc);
- }
-
- Method getter;
- try {
- getter = resourceClass.getMethod("get"+StringUtils.capitalize(value));
- if(!type.getName().equals("java.lang.String")) {
- getters.put(id, getter);
- }
- } catch(Exception exc) {
- getLogger().warn(AAI_SERVICE_EXCEPTION, exc);
- }
-
- }
- subResources.addAll(Arrays.asList(values));
- }
- }
- }
-
- // remove getters that have matching setter
- for(String setKey : setters.keySet()) {
- if(getters.containsKey(setKey)) {
- getters.remove(setKey);
- }
- }
-
- Set<String> relationshipKeys = new TreeSet<>();
- Set<String> vlansKeys = new TreeSet<>();
- Set<String> metadataKeys = new TreeSet<>();
-
- for(String attribute : set) {
- String value = params.get(attribute);
- if(attribute.startsWith("relationship-list")) {
- relationshipKeys.add(attribute);
- } else if(attribute.startsWith("vlans")) {
- vlansKeys.add(attribute);
- } else if(attribute.startsWith("metadata")) {
- metadataKeys.add(attribute);
- }
- }
- // 3. find list property getters
- for(String attribute : set) {
- String value = params.get(attribute);
- Method method = getters.get(attribute);
- if(method != null) {
- try {
- Object arglist[] = new Object[0];
-// arglist[0] = value;
- Class<?>[] types = method.getParameterTypes();
- if(types.length == 0){
- Object o = method.invoke(instance, arglist);
- if(o instanceof ArrayList) {
- ArrayList<String> values = (ArrayList<String>)o;
- value = value.replace("[", "").replace("]", "");
- List<String> items = Arrays.asList(value.split("\\s*,\\s*"));
- for(String s : items) {
- values.add(s.trim());
- }
- }
- }
- } catch (Exception x) {
- Throwable cause = x.getCause();
- getLogger().warn("Failed process for " + resourceClass.getName(), x);
- }
- }
- }
- // 4. Process Relationships
- // add relationship list
- if( (subResources.contains("relationship-list") || subResources.contains("relationshipList")) && !relationshipKeys.isEmpty()) {
- RelationshipList relationshipList = null;
- Object obj = null;
- Method getRelationshipListMethod = null;
- try {
- getRelationshipListMethod = resourceClass.getMethod("getRelationshipList");
- } catch(Exception exc) {
- getLogger().debug(RELATIONSHIP_DATA + exc.getMessage());
- }
-
- if(getRelationshipListMethod != null){
- try {
- obj = getRelationshipListMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- if(obj != null && obj instanceof RelationshipList){
- relationshipList = (RelationshipList)obj;
- } else {
- relationshipList = new RelationshipList();
- Method setRelationshipListMethod = resourceClass.getMethod("setRelationshipList", RelationshipList.class);
- if(setRelationshipListMethod != null){
- try {
- Object arglist[] = new Object[1];
- arglist[0] = relationshipList;
-
- obj = setRelationshipListMethod.invoke(instance, arglist);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- }
-
- List<Relationship> relationships = relationshipList.getRelationship();
-
- int i = 0;
- while(true){
- String searchKey = "relationship-list.relationship[" + i + "].related-to";
- if(!params.containsKey(searchKey))
- break;
- int j = 0;
- String relatedTo = params.get(searchKey);
- String relatedLinkKey = "relationship-list.relationship[" + i + "].related-link";
- String relatedLink = null;
- if(params.containsKey(relatedLinkKey)) {
- relatedLink = params.get(relatedLinkKey);
- }
- Relationship relationship = new Relationship();
- relationships.add(relationship);
- relationship.setRelatedTo(relatedTo);
- String relationshipLabel = "relationship-list.relationship[" + i + "].relationship-label";
- if(params.containsKey(searchKey)) {
- relationship.setRelationshipLabel(params.get(relationshipLabel));
- }
- getLogger().debug("About to process related link of {}", relatedLink);
- if(relatedLink != null) {
- if(relatedLink.contains("v$"))
- relatedLink = relatedLink.replace(VERSION_PATTERN, "/v16/");
- relationship.setRelatedLink(relatedLink);
- } else {
- Map<String, String> relParams = new HashMap<>();
-
- while(true) {
- String searchRelationshipKey = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key";
- String searchRelationshipValue = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value";
- if(!params.containsKey(searchRelationshipKey))
- break;
-
- relParams.put(params.get(searchRelationshipKey), params.get(searchRelationshipValue));
- j++;
- }
- AAIRequest rlRequest = AAIRequest.createRequest(relatedTo, relParams);
- for(Map.Entry<String,String> entry : relParams.entrySet()) {
- rlRequest.addRequestProperty(entry.getKey(), entry.getValue());
- }
- String path = rlRequest.updatePathDataValues(null);
- relationship.setRelatedLink(path);
- }
- {
- int k = 0;
- // process related to properties
- Map<String, String> relParams = new HashMap<String, String>();
-
- while(true) {
- String searchRelatedToKey = "relationship-list.relationship[" + i + "].related-to-property[" + k + "].property-key";
- String searchRelatedToValue = "relationship-list.relationship[" + i + "].related-to-property[" + k + "].property-value";
- if(!params.containsKey(searchRelatedToKey))
- break;
-
- RelatedToProperty relDatum = new RelatedToProperty();
- relDatum.setPropertyKey(params.get(searchRelatedToKey));
- relDatum.setPropertyValue(params.get(searchRelatedToValue));
- relationship.getRelatedToProperty().add(relDatum);
-
- relParams.put(params.get(searchRelatedToKey), params.get(searchRelatedToValue));
- k++;
- }
- }
- i++;
- }
- }
-
- // 4. vlans
- if(subResources.contains("vlans") && !vlansKeys.isEmpty()) {
- Object obj = null;
- Vlans vlanList = null;
- Method getVLansMethod = resourceClass.getMethod("getVlans");
- if(getVLansMethod != null){
- try {
- obj = getVLansMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- if(obj != null && obj instanceof Vlans){
- vlanList = (Vlans)obj;
- } else {
- vlanList = new Vlans();
- Method setVlansMethod = resourceClass.getMethod("setVlans", Vlans.class);
- if(setVlansMethod != null){
- try {
- Object arglist[] = new Object[1];
- arglist[0] = vlanList;
-
- obj = setVlansMethod.invoke(instance, arglist);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- }
-
- int i = 0;
- while(true){
- String searchKey = "vlans.vlan[" + i + "].vlan-interface";
- if(!params.containsKey(searchKey))
- break;
-
- String vlanInterface = params.get("vlans.vlan[" + i + "].vlan-interface");
- String vlanIdInner = params.get("vlans.vlan[" + i + "].vlan-id-inner");
- String vlanIdOute = params.get("vlans.vlan[" + i + "].vlan-id-outer");
- String speedValue = params.get("vlans.vlan[" + i + "].speed-value");
- String speedUnits = params.get("vlans.vlan[" + i + "].speed-units");
-
- Vlan vlan = new Vlan();
- vlan.setVlanInterface(vlanInterface);
-
- if(vlanIdInner != null) {
- Long iVlanIdInner = Long.parseLong(vlanIdInner);
- vlan.setVlanIdInner(iVlanIdInner);
- }
-
- if(vlanIdOute != null) {
- Long iVlanIdOuter = Long.parseLong(vlanIdOute);
- vlan.setVlanIdOuter(iVlanIdOuter);
- }
-
- if(speedValue != null) {
- vlan.setSpeedValue(speedValue);
- vlan.setSpeedUnits(speedUnits);
- }
-
- vlanList.getVlan().add(vlan);
- i++;
- }
- }
-
- // 5. metadata
- if(subResources.contains("metadata") && !metadataKeys.isEmpty()) {
- Object obj = null;
- Metadata metadataList = null;
- Method getMetadataMethod = resourceClass.getMethod("getMetadata");
- if(getMetadataMethod != null){
- try {
- obj = getMetadataMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- if(obj != null && obj instanceof Metadata){
- metadataList = (Metadata)obj;
- } else {
- metadataList = new Metadata();
- Method setMetadataMethod = resourceClass.getMethod("setMetadata", Metadata.class);
- if(setMetadataMethod != null){
- try {
- Object arglist[] = new Object[1];
- arglist[0] = metadataList;
-
- obj = setMetadataMethod.invoke(instance, arglist);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- }
-
- // process data
- int i = 0;
- while(true){
- String metaKey = "metadata.metadatum[" + i + "].meta-key";
- if(!params.containsKey(metaKey))
- break;
-
- String metaValue = params.get("metadata.metadatum[" + i + "].meta-value");
-
- Metadatum vlan = new Metadatum();
- vlan.setMetaname(metaKey);
- vlan.setMetaval(metaValue);
-
- metadataList.getMetadatum().add(vlan);
- i++;
- }
-
- }
-
-
- // 6. Prepare AAI request
- String[] args = request.getArgsList();
- for(String arg : args) {
- String modifiedKey = arg.replaceAll("-", "_");
- if(nameValues.containsKey(modifiedKey)) {
- String argValue = nameValues.get(modifiedKey);
- if(argValue != null) argValue = argValue.trim().replace("'", "").replace("$", "").replace("'", "");
- request.addRequestProperty(arg, argValue);
- }
- }
-
- request.processRequestPathValues(nameValues);
- request.setRequestObject(instance);
- Object response = getExecutor().post(request);
- if(request.expectsDataFromPUTRequest()){
- if(response != null && response instanceof String) {
- String rv = response.toString();
- QueryStatus retval = processResponseData(rv, resource, request, prefix, ctx, nameValues, null);
- getLogger().debug("newModelSave - returning " + retval.toString());
- return retval;
- }
- }
-
- } catch(AAIServiceException exc){
- ctx.setAttribute(prefix + ".error.message", exc.getMessage());
- int returnCode = exc.getReturnCode();
- if(returnCode >= 300) {
- ctx.setAttribute(prefix + ".error.http.response-code",
- Integer.toString(exc.getReturnCode()));
- }
-
- if(returnCode == 400 || returnCode == 412)
- return QueryStatus.FAILURE;
- else if(returnCode == 404)
- return QueryStatus.NOT_FOUND;
- else {
- getLogger().warn("Failed newModelSave - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- } catch(Exception exc){
- getLogger().warn("Failed newModelSave - returning FAILURE", exc);
- ctx.setAttribute(prefix + ".error.message", exc.getMessage());
- return QueryStatus.FAILURE;
- }
-
- getLogger().debug("newModelSave - returning SUCCESS");
- return QueryStatus.SUCCESS;
- }
-
- private QueryStatus newModelProcessRelationshipList(Object instance, Map<String, String> params, String prefix, SvcLogicContext ctx) throws Exception {
-
- Class resourceClass = instance.getClass();
-
- Set<String> relationshipKeys = new TreeSet<>();
-
- Set<String> set = params.keySet();
-
- for(String attribute : set) {
- String value = params.get(attribute);
-
- if(attribute.startsWith("relationship-list")) {
- relationshipKeys.add(attribute);
- }
- }
-
- // 3. Process Relationships
- // add relationship list
- if(!relationshipKeys.isEmpty()) {
- RelationshipList relationshipList;
- Object obj = null;
- Method getRelationshipListMethod = null;
- try {
- getRelationshipListMethod = resourceClass.getMethod("getRelationshipList");
- } catch(Exception exc) {
- getLogger().debug(RELATIONSHIP_DATA + exc.getMessage());
- }
- if(getRelationshipListMethod != null){
- try {
- obj = getRelationshipListMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- if(obj != null && obj instanceof RelationshipList){
- relationshipList = (RelationshipList)obj;
- } else {
- relationshipList = new RelationshipList();
- Method setRelationshipListMethod = resourceClass.getMethod("setRelationshipList", RelationshipList.class);
- if(setRelationshipListMethod != null){
- try {
- Object arglist[] = new Object[1];
- arglist[0] = relationshipList;
-
- obj = setRelationshipListMethod.invoke(instance, arglist);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- }
-
- boolean createdNewRelationships = false;
- List<Relationship> relationships = relationshipList.getRelationship();
- if(relationships == null) {
- relationships = new ArrayList<>();
- createdNewRelationships = true;
- }
-
- int i = 0;
- while(true){
- String searchKey = "relationship-list.relationship[" + i + "].related-to";
- if(!params.containsKey(searchKey))
- break;
-
- String relatedTo = params.get(searchKey);
- String relatedLinkKey = "relationship-list.relationship[" + i + "].related-link";
- String relatedLink = null;
- if(params.containsKey(relatedLinkKey)) {
- relatedLink = params.get(relatedLinkKey);
- }
-
- Relationship relationship = new Relationship();
- relationships.add(relationship);
- relationship.setRelatedTo(relatedTo);
-
- String relationshipLabel = "relationship-list.relationship[" + i + "].relationship-label";
- if(params.containsKey(searchKey)) {
- relationship.setRelationshipLabel(params.get(relationshipLabel));
- }
-
- if (relatedLink != null) {
- if(relatedLink.contains("v$"))
- relatedLink = relatedLink.replace(VERSION_PATTERN, AAIRequest.getSupportedAAIVersion());
- relationship.setRelatedLink(relatedLink);
- } else {
- Map<String, String> relParams = new HashMap<>();
- int j = 0;
-
- while (true) {
- String searchRelationshipKey = "relationship-list.relationship[" + i + "].relationship-data["
- + j + "].relationship-key";
- String searchRelationshipValue = "relationship-list.relationship[" + i + "].relationship-data["
- + j + "].relationship-value";
- if (!params.containsKey(searchRelationshipKey))
- break;
-
- RelationshipData relDatum = new RelationshipData();
- relDatum.setRelationshipKey(params.get(searchRelationshipKey));
- relDatum.setRelationshipValue(params.get(searchRelationshipValue));
- relationship.getRelationshipData().add(relDatum);
-
- relParams.put(params.get(searchRelationshipKey), params.get(searchRelationshipValue));
- j++;
- }
- AAIRequest rlRequest = AAIRequest.createRequest(relatedTo, relParams);
- for (Map.Entry<String, String> entry : relParams.entrySet()) {
- rlRequest.addRequestProperty(entry.getKey(), entry.getValue());
- }
- String path = rlRequest.updatePathDataValues(null);
- relationship.setRelatedLink(path);
- }
- {
- int k = 0;
- // process related to properties
- Map<String, String> relParams = new HashMap<String, String>();
-
- while(true) {
- String searchRelatedToKey = "relationship-list.relationship[" + i + "].related-to-property[" + k + "].property-key";
- String searchRelatedToValue = "relationship-list.relationship[" + i + "].related-to-property[" + k + "].property-value";
- if(!params.containsKey(searchRelatedToKey))
- break;
-
- RelatedToProperty relDatum = new RelatedToProperty();
- relDatum.setPropertyKey(params.get(searchRelatedToKey));
- relDatum.setPropertyValue(params.get(searchRelatedToValue));
- relationship.getRelatedToProperty().add(relDatum);
-
- relParams.put(params.get(searchRelatedToKey), params.get(searchRelatedToValue));
- k++;
- }
- }
-
- i++;
- }
- }
-
- return QueryStatus.SUCCESS;
- }
-
- private QueryStatus newModelProcessMetadata(Object instance, Map<String, String> params, String prefix, SvcLogicContext ctx) throws Exception {
-
- if (!(instance instanceof ServiceInstance) && !(instance instanceof Image)) {
- throw new IllegalArgumentException("request is not applicable for selected request");
- }
-
- Class resourceClass = instance.getClass();
- Set<String> metadataKeys = new TreeSet<String>();
- Set<String> set = params.keySet();
- for(String attribute : set) {
- if(attribute.startsWith("metadata")) {
- metadataKeys.add(attribute);
- }
- }
-
- // 3. Process Metadata
- // add metadata
- if(!metadataKeys.isEmpty()) {
- Metadata metadata = null;
- Object obj = null;
- Method getMetadataMethod = resourceClass.getMethod("getMetadata");
- if(getMetadataMethod != null){
- try {
- obj = getMetadataMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- if(obj != null && obj instanceof Metadata){
- metadata = (Metadata)obj;
- } else {
- metadata = new Metadata();
- Method setMetadataMethod = resourceClass.getMethod("setMetadata", Metadata.class);
- if(setMetadataMethod != null){
- try {
- setMetadataMethod.invoke(instance, metadata);
- } catch (InvocationTargetException x) {
- }
- }
- }
-
- List<Metadatum> metadatumList = metadata.getMetadatum();
- int i = 0;
- while(true){
- String metaNameKey = "metadata.metadatum[" + i + "].metaname";
- String metaValueKey = "metadata.metadatum[" + i + "].metaval";
- if(!params.containsKey(metaNameKey) || !params.containsKey(metaValueKey))
- break;
-
- Metadatum metadatum = new Metadatum();
- metadatum.setMetaname(params.get(metaNameKey));
- metadatum.setMetaval(params.get(metaValueKey));
- metadatumList.add(metadatum);
-
- i++;
- }
- }
-
- return QueryStatus.SUCCESS;
- }
-
- private Relationship findRelationship(List<Relationship> relationships, String relatedTo) {
- if(relatedTo == null)
- return null;
-
- for(Relationship relationship : relationships) {
- if(relationship.getRelatedTo().equals(relatedTo)){
- return relationship;
- }
- }
- return null;
- }
-
-
- public QueryStatus backup(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
- String resource = params.get("resource").toLowerCase();
- String prefix = params.get("data-key");
-
- HashMap<String, String> nameValues = new HashMap<>();
- if(AAIRequest.createRequest(resource, nameValues) != null) {
-
- try {
- return newModelBackupRequest(resource, params, prefix, ctx);
- } catch (Exception exc) {
- getLogger().warn("Failed backup - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- }
-
- return QueryStatus.NOT_FOUND;
- }
-
- @Override
- public QueryStatus restore(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
-
- QueryStatus retval = QueryStatus.SUCCESS;
- String resource = params.get("resource").toLowerCase();
- String prefix = params.get("data-key");
-
- HashMap<String, String> nameValues = new HashMap<>();
- if(AAIRequest.createRequest(resource, nameValues) != null) {
-
- try {
- retval = newModelBackupRequest(resource, params, "tmpRestore", ctx);
- if(retval == QueryStatus.SUCCESS) {
- ctx.setAttribute("tmpRestore", null);
- }
- } catch (Exception exc) {
- getLogger().warn("Failed restore - returning FAILURE", exc);
- return QueryStatus.FAILURE;
- }
- }
-
- return QueryStatus.NOT_FOUND;
- }
-
- protected Map<String, Object> objectToProperties(Object object) {
- ObjectMapper mapper = AAIService.getObjectMapper();
- return mapper.convertValue(object, Map.class);
- }
-
- static <T> T valueOf(Class<T> klazz, String arg) {
- Exception cause = null;
- T ret = null;
- try {
- ret = klazz.cast(klazz.getDeclaredMethod("valueOf", String.class).invoke(null, arg));
- } catch (NoSuchMethodException exc) {
- LoggerFactory.getLogger(AAIService.class).warn("Wrong data type", exc);
- ret = klazz.cast(arg);
- } catch (IllegalAccessException e) {
- cause = e;
- } catch (InvocationTargetException e) {
- cause = e;
- }
- if (cause == null) {
- return ret;
- } else {
- throw new IllegalArgumentException(cause);
- }
- }
-
- private QueryStatus processDeleteRelationshipList(String resource, String key, SvcLogicContext ctx, HashMap<String, String> nameValues) {
- try {
- AAIRequest request = AAIRequest.createRequest(resource.split(":")[0], nameValues);
- if(request == null) {
- return QueryStatus.FAILURE;
- }
-
- request.processRequestPathValues(nameValues);
- URL url = request.getRequestUrl("GET", null);
-
- Class resourceClass = request.getModelClass();
- Object instance = getResource(url.toString(), resourceClass);
- if(instance == null)
- return QueryStatus.NOT_FOUND;
-
- // get resource version
- String resourceVersion = null;
- Method getResourceVersionMethod = resourceClass.getMethod("getResourceVersion");
- if(getResourceVersionMethod != null){
- try {
- Object object = getResourceVersionMethod.invoke(instance);
- if(object != null)
- resourceVersion = object.toString();
- } catch (InvocationTargetException exc) {
- getLogger().warn("Retrieving resource version", exc);
- }
- }
-
- RelationshipList relationshipList = null;
- Object obj = null;
- Method getRelationshipListMethod = null;
- try {
- getRelationshipListMethod = resourceClass.getMethod("getRelationshipList");
- } catch(Exception exc) {
- getLogger().debug(RELATIONSHIP_DATA + exc.getMessage());
- }
- if(getRelationshipListMethod != null){
- try {
- obj = getRelationshipListMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- if(obj != null && obj instanceof RelationshipList){
- relationshipList = (RelationshipList)obj;
- } else {
- getLogger().debug("No relationships found to process.");
- return QueryStatus.NOT_FOUND;
- }
-
- if(relationshipList.getRelationship() == null || relationshipList.getRelationship().isEmpty()) {
- return QueryStatus.NOT_FOUND;
- }
- String relatedTo = nameValues.get("related_to");
- if(relatedTo == null) {
- return QueryStatus.FAILURE;
- }
-
- relatedTo = relatedTo.replaceAll("_", "-");
-
- String relatedLink = nameValues.get("relationship.related_link");
- if(relatedLink != null) {
- relatedLink = URLDecoder.decode(relatedLink, "UTF-8");
- }
-
- List<Relationship> relationships = relationshipList.getRelationship();
- List<Relationship> relationshipsToDelete = new LinkedList<>();
-
- for(Relationship relationship : relationships) {
- if(relatedTo.equals(relationship.getRelatedTo())) {
- if(relatedLink != null) {
- if(relationship.getRelatedLink() != null ) {
- String localRelatedLink = relationship.getRelatedLink();
- localRelatedLink = URLDecoder.decode(localRelatedLink, "UTF-8");
- if(localRelatedLink.endsWith(relatedLink)) {
- getLogger().debug(String.format("Found relationship of '%s' to keyword '%s'", relationship.getRelatedTo(), relatedTo));
- relationshipsToDelete.add(relationship);
- }
- }
- } else {
- getLogger().debug(String.format("Found relationship of '%s' to keyword '%s'", relationship.getRelatedTo(), relatedTo));
- relationshipsToDelete.add(relationship);
- }
- }
- }
- if(relationshipsToDelete == null || relationshipsToDelete.isEmpty()) {
- getLogger().info(String.format("Relationship has not been found for %s", key));
- return QueryStatus.NOT_FOUND;
- }
-
- String path = url.toString();
- path = path + "/relationship-list/relationship";
- URL deleteUrl = new URL(path);
-
- ObjectMapper mapper = AAIService.getObjectMapper();
-
- boolean cumulativeResponse = true;
-
- for(Relationship targetRelationship : relationshipsToDelete) {
- String json_text = mapper.writeValueAsString(targetRelationship);
- boolean response = deleteList(deleteUrl, json_text);
- if(!response)
- cumulativeResponse = response;
-
- }
-
- if(!cumulativeResponse)
- return QueryStatus.FAILURE;
-
- return QueryStatus.SUCCESS;
-
- } catch(Exception exc) {
- getLogger().warn("processDelete", exc);
- return QueryStatus.FAILURE;
- }
- }
-
- private QueryStatus processDeleteMetadata(String resource, String key, SvcLogicContext ctx, HashMap<String, String> nameValues) {
- try {
- AAIRequest request = AAIRequest.createRequest(resource, nameValues);
- if(request == null) {
- return QueryStatus.FAILURE;
- }
-
- request.processRequestPathValues(nameValues);
- URL url = request.getRequestUrl("GET", null);
-
- Class<?> resourceClass = request.getModelClass();
- Object instance = getResource(url.toString(), resourceClass);
-
- // get resource version
- String resourceVersion = null;
- Method getResourceVersionMethod = resourceClass.getMethod("getResourceVersion");
- if(getResourceVersionMethod != null){
- try {
- resourceVersion = (String) getResourceVersionMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- }
- }
-
- Metadata metadata = null;
- Object obj = null;
- Method getMetadataMethod = resourceClass.getMethod("getMetadata");
- if(getMetadataMethod != null){
- try {
- obj = getMetadataMethod.invoke(instance);
- } catch (InvocationTargetException x) {
- Throwable cause = x.getCause();
- }
- }
- if(obj != null && obj instanceof Metadata){
- metadata = (Metadata)obj;
- } else {
- getLogger().debug("No metadata found to process.");
- return QueryStatus.NOT_FOUND;
- }
-
- if(metadata.getMetadatum() == null || metadata.getMetadatum().isEmpty()) {
- return QueryStatus.NOT_FOUND;
- }
-
- List<Metadatum> metadatumList = metadata.getMetadatum();
- Metadatum metadatumToDelete = null;
-
- final String metaname = nameValues.get("metaname");
-
- for(Metadatum metadatum : metadatumList) {
- getLogger().debug(String.format("Comparing existing metadatum of '%s' to keyword '%s'", metadatum.getMetaname(), metaname));
- if(metaname.equals(metadatum.getMetaname())) {
- metadatumToDelete = metadatum;
- break;
- }
- }
- if(metadatumToDelete == null) {
- getLogger().info(String.format("Metadatum has not been found for %s", key));
- return QueryStatus.NOT_FOUND;
- }
-
- String path = url.toString();
- path = path + "/metadata/metadatum/" + encodeQuery( metadatumToDelete.getMetaname() ) +
- "?resource-version=" + metadatumToDelete.getResourceVersion();
- URL deleteUrl = new URL(path);
- boolean response = deleteList(deleteUrl, null);
-
- if(!response)
- return QueryStatus.FAILURE;
-
- return QueryStatus.SUCCESS;
-
- } catch(Exception exc) {
- getLogger().warn("processDelete", exc);
- return QueryStatus.FAILURE;
- }
- }
-
- protected String encodeQuery(String param) throws UnsupportedEncodingException {
- return URLEncoder.encode(param, "UTF-8").replace("+", "%20");
- }
-
- static final Map<String, String> ctxGetBeginsWith( SvcLogicContext ctx, String prefix ) {
- Map<String, String> tmpPrefixMap = new HashMap<>();
-
- if(prefix == null || prefix.isEmpty()){
- return tmpPrefixMap;
- }
-
- for( String key : ctx.getAttributeKeySet() ) {
- if( key.startsWith(prefix) ) {
- String tmpKey = key.substring(prefix.length() + 1);
- tmpPrefixMap.put( tmpKey, ctx.getAttribute(key));
- }
- }
-
- Map<String, String> prefixMap = new HashMap<>();
- Pattern p = Pattern.compile(".*\\[\\d\\]");
-
- SortedSet<String> keys = new TreeSet<String>(tmpPrefixMap.keySet () );
- for(String key : keys) {
- Matcher m = p.matcher(key);
- if(m.matches()) {
- continue;
- } else if(key.endsWith("_length")) {
- String listKey = key.substring(0, key.indexOf("_length"));
- int max = Integer.parseInt(tmpPrefixMap.get(key));
-
- ArrayList<String> data = new ArrayList<>();
- for(int x = 0; x < max; x++){
- String tmpKey = String.format("%s[%d]", listKey, x);
- String tmpValue = tmpPrefixMap.get(tmpKey);
- if(tmpValue != null && !tmpValue.isEmpty()) {
- data.add(tmpValue);
- }
- }
- if(!data.isEmpty()) {
- prefixMap.put(listKey, data.toString());
- } else {
- prefixMap.put(key, tmpPrefixMap.get(key));
- }
- } else {
- prefixMap.put(key, tmpPrefixMap.get(key));
- }
- }
-
- return prefixMap;
- }
-
- public abstract <T> T getResource(String key, Class<T> type) throws AAIServiceException ;
- protected abstract boolean deleteList(URL url, String caller) throws AAIServiceException;
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIExecutorInterfaceLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIExecutorInterfaceLighty.java
deleted file mode 100755
index d2c3812a1..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIExecutorInterfaceLighty.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-/**
- * THIS CLASS IS A COPY OF {@link AAIExecutorInterface} WITH REMOVED OSGi DEPENDENCIES
- */
-public interface AAIExecutorInterfaceLighty {
- public String get(AAIRequestLighty request) throws AAIServiceException;
- public String post(AAIRequestLighty request) throws AAIServiceException;
- public Boolean delete(AAIRequestLighty request, String resourceVersion) throws AAIServiceException;
- public Object query(AAIRequestLighty request, Class clas) throws AAIServiceException;
- public Boolean patch(AAIRequestLighty request, String resourceVersion) throws AAIServiceException;
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIRequestLighty.java
deleted file mode 100755
index 81acfca59..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIRequestLighty.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TreeSet;
-import org.apache.commons.lang.StringUtils;
-import org.onap.aai.inventory.v16.GenericVnf;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * THIS CLASS IS A COPY OF {@link AAIRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public abstract class AAIRequestLighty {
- protected static final Logger LOG = LoggerFactory.getLogger(AAIRequestLighty.class);
-
- protected static final String TARGET_URI = "org.onap.ccsdk.sli.adaptors.aai.uri";
-
- protected static final String MASTER_REQUEST = "master-request";
-
- public static final String RESOURCE_VERSION = "resource-version";
-
- public static final String DEPTH = "depth";
-
- protected static Properties configProperties;
- protected final String targetUri;
- protected static AAIServiceLighty aaiService;
-
- protected AAIDatum requestDatum;
-
- protected final Properties requestProperties = new Properties();
-
-
- public static AAIRequestLighty createRequest(String resoourceName, Map<String, String> nameValues){
-
- String resoource = resoourceName;
- String masterResource = null;
-
- if(resoource == null)
- return null;
-
- if(resoource.contains(":")) {
- String[] tokens = resoource.split(":");
- if(tokens != null && tokens.length == 2) {
- resoource = tokens[1];
- masterResource = tokens[0];
- Class<? extends AAIDatum> clazz = getClassFromResource(resoource) ;
-
- if(clazz == null) {
- return null;
- }
- }
- }
-
- if(nameValues.containsKey("selflink")){
- Class<? extends AAIDatum> clazz = getClassFromResource(resoource) ;
-
- if(clazz != null)
- return new SelfLinkRequestLighty(clazz);
- else
- return null;
- }
-
- switch(resoource){
- case "generic-query":
- return new GenericQueryRequestLighty();
- case "nodes-query":
- return new NodesQueryRequestLighty();
- case "custom-query":
- case "formatted-query":
- return new CustomQueryRequestLighty();
- case "echo":
- case "test":
- return new EchoRequestLighty();
-
- case "linterface":
- case "l2-bridge-sbg":
- case "l2-bridge-bgf":
- {
- resoource = "l-interface";
- return getRequestFromResource("l-interface");
- }
- case "relationship-list":
- return new RelationshipListRequestLighty(
- AAIRequestLighty.createRequest(masterResource, nameValues));
- case "relationship":
- return new RelationshipRequestLighty(
- AAIRequestLighty.createRequest(masterResource, nameValues));
- default:
- return getRequestFromResource(resoource);
- }
- }
-
-
- /**
- * Map containing resource tag to its bit position in bitset mapping
- */
- private static Map<String, String> tagValues = new LinkedHashMap<>();
- /**
- * Map containing bitset value of the path to its path mapping
- */
- private static Map<BitSet, String> bitsetPaths = new LinkedHashMap<>();
-
-
- public static Set<String> getResourceNames() {
- return tagValues.keySet();
- }
-
-
- public static void setProperties(Properties props, AAIServiceLighty aaiService) {
- AAIRequestLighty.configProperties = props;
- AAIRequestLighty.aaiService = aaiService;
-
- try
- {
- URL url = aaiService.getClass().getResource("/aai-path.properties");
-
- InputStream in = url.openStream();
- Reader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
-
- Properties properties = new Properties();
- properties.load(reader);
- LOG.info("loaded " + properties.size());
-
- Set<String> keys = properties.stringPropertyNames();
-
- int index = 0;
- Set<String> resourceNames = new TreeSet<>();
-
- for(String key : keys) {
- String[] tags = key.split("\\|");
- for(String tag : tags) {
- if(!resourceNames.contains(tag)) {
- resourceNames.add(tag);
- tagValues.put(tag, Integer.toString(++index));
- }
- }
- BitSet bs = new BitSet(256);
- for(String tag : tags) {
- String value = tagValues.get(tag);
- Integer bitIndex = Integer.parseInt(value) ;
- bs.set(bitIndex);
- }
- String path = properties.getProperty(key);
- LOG.info(String.format("bitset %s\t\t%s", bs.toString(), path));
- bitsetPaths.put(bs, path);
- }
- LOG.info("loaded " + resourceNames.toString());
- }
- catch (Exception e)
- {
- LOG.error("Caught exception", e);
- }
- }
-
- public AAIRequestLighty() {
- targetUri = configProperties.getProperty(TARGET_URI);
- }
-
- public void addRequestProperty(String key, String value) {
- requestProperties.put(key, value);
- }
-
- public final void setRequestObject(AAIDatum value) {
- requestDatum = value;
- }
-
- public final AAIDatum getRequestObject() {
- return requestDatum;
- }
-
- public final void addMasterRequest(AAIRequestLighty masterRequest) {
- requestProperties.put(MASTER_REQUEST, masterRequest);
- }
-
- protected static String encodeQuery(String param) throws UnsupportedEncodingException {
- return URLEncoder.encode(param, "UTF-8").replace("+", "%20");
- }
-
- protected void handleException(AAIRequestLighty lInterfaceRequest, JsonProcessingException exc) {
- aaiService.getLogger().warn("Could not deserialize object of type " + lInterfaceRequest.getClass().getSimpleName(), exc) ;
- }
-
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
-
- String request_url = null;
-
- request_url = targetUri + updatePathDataValues(resourceVersion);
-
- URL http_req_url = new URL(request_url);
-
- aaiService.LOGwriteFirstTrace(method, http_req_url.toString());
-
- return http_req_url;
- }
-
- public String updatePathDataValues(Object resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
- String request_url = getRequestPath();
-
- Set<String> uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames());
-
- for(String resoourceName:uniqueResources) {
- AAIRequestLighty
- locRequest = AAIRequestLighty.createRequest(resoourceName, new HashMap<String, String>());
- if(locRequest != null) {
- Class<?> clazz = locRequest.getClass();
- Method function = null;
- try {
- function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass());
- request_url = (String) function.invoke(null, request_url, requestProperties);
- } catch (Exception e) {
- LOG.error("Caught exception", e);
- }
- }
- }
-
- if(resourceVersion != null) {
- request_url = request_url +"?resource-version="+resourceVersion;
- }
-
- return request_url;
- }
-
- protected String getRequestPath() throws MalformedURLException {
- return getRequestPath(null);
- }
-
- protected String getRequestPath(String resource) throws MalformedURLException {
- if(requestProperties.containsKey("resource-path")) {
- return requestProperties.getProperty("resource-path");
- }
-
- Set<String> uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames());
- if(resource != null) {
- // for group search add itself, but remove singular version of itself
- if(!uniqueResources.contains(resource)) {
- boolean replaced = false;
- Set<String> tmpUniqueResources = new HashSet<>();
- tmpUniqueResources.addAll(uniqueResources);
- for(String item : tmpUniqueResources){
- String plural = item +"s";
- if(item.endsWith("y")){
- plural = item.substring(0, item.length()-1)+ "ies";
- }
- if(plural.equals(resource)) {
- uniqueResources.remove(item);
- uniqueResources.add(resource);
- replaced = true;
- break;
- }
- }
- if(!replaced){
- if(!uniqueResources.contains(resource)) {
- uniqueResources.add(resource);
- }
- }
- }
- }
- BitSet bitset = new BitSet();
- for(String key : uniqueResources) {
- if(tagValues.containsKey(key)) {
- Object tmpValue = tagValues.get(key);
- if(tmpValue != null) {
- String value = tmpValue.toString();
- int bitIndex = Integer.parseInt(value);
- bitset.set(bitIndex);
- }
- }
- }
-
- String path = bitsetPaths.get(bitset);
- if(path == null) {
- throw new MalformedURLException("PATH not found for key string containing valies :" +requestProperties.toString());
- }
- return path;
- }
-
- public abstract URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException;
-
- public abstract String toJSONString();
-
- public abstract String[] getArgsList();
-
- public abstract Class<? extends AAIDatum> getModelClass() ;
-
- public String getPrimaryResourceName(String resource) {
- return resource;
- }
-
- public String formatKey(String argument) {
- return argument;
- }
-
- public AAIDatum jsonStringToObject(String jsonData) throws JsonParseException, JsonMappingException, IOException {
- if(jsonData == null) {
- return null;
- }
-
- AAIDatum response = null;
- ObjectMapper mapper = getObjectMapper();
- response = mapper.readValue(jsonData, getModelClass());
- return response;
- }
-
- protected static Set<String> extractUniqueResourceSetFromKeys(Set<String> keySet) {
- Set<String> uniqueResources = new TreeSet<>();
- List<String> keys = new ArrayList<>(keySet);
- for(String resource : keys) {
- if(resource.contains(".")) {
- String [] split = resource.split("\\.");
- uniqueResources.add(split[0].replaceAll("_", "-"));
- }
- }
- return uniqueResources;
- }
-
- public void processRequestPathValues(Map<String, String> nameValues) {
- Set<String> uniqueResources = extractUniqueResourceSetFromKeys(nameValues.keySet());
-
- Set<String> tokens = new TreeSet<>();
- tokens.add(DEPTH);
- tokens.addAll(Arrays.asList(this.getArgsList()));
-
- for(String resoourceName:uniqueResources) {
- AAIRequestLighty
- locRequest = AAIRequestLighty.createRequest(resoourceName, nameValues);
- if(locRequest != null)
- tokens.addAll(Arrays.asList(locRequest.getArgsList()));
- }
-
- String[] arguments = tokens.toArray(new String[0]);
- for(String name : arguments) {
- String tmpName = name.replaceAll("-", "_");
- String value = nameValues.get(tmpName);
- if(value != null && !value.isEmpty()) {
- value = value.trim().replace("'", "").replace("$", "").replace("'", "");
- this.addRequestProperty(name, value);
- }
- }
- }
-
- public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException {
- return request_url;
- }
-
- public boolean isDeleteDataRequired() {
- return false;
- }
-
- ObjectMapper getObjectMapper() {
- return AAIService.getObjectMapper();
- }
-
- public static Class<? extends AAIDatum> getClassFromResource(String resoourceName) {
- String className = GenericVnf.class.getName();
- String[] split = resoourceName.split("-");
- for(int i = 0; i < split.length; i++) {
- split[i] = StringUtils.capitalize(split[i]);
- }
-
- String caps = StringUtils.join(split);
- className = className.replace("GenericVnf", caps);
- try {
- return (Class<? extends AAIDatum>)Class.forName(className);
- } catch (ClassNotFoundException e) {
- LOG.warn("AAIRequestLighty does not support class: " + e.getMessage());
- return null;
- }
- }
-
- protected static AAIRequestLighty getRequestFromResource(String resoourceName) {
-
- Class<? extends AAIDatum> clazz = getClassFromResource(resoourceName);
-
- if(clazz == null) {
- return null;
- }
- return new GenericRequestLighty(clazz);
- }
-
- public static Map<String, String> splitQuery(String query) throws UnsupportedEncodingException {
- Map<String, String> query_pairs = new LinkedHashMap<>();
-
- if(query != null && !query.isEmpty()) {
- String[] pairs = query.split("&");
- for (String pair : pairs) {
- int idx = pair.indexOf('=');
- query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
- }
- }
- return query_pairs;
- }
-
- public static Map<String, String> splitPath(String path) throws UnsupportedEncodingException {
- Map<String, String> query_pairs = new LinkedHashMap<>();
-
- if(path != null && !path.isEmpty()) {
- String[] pairs = path.split("/");
- for (String pair : pairs) {
- int idx = pair.indexOf('=');
- query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
- }
- }
- return query_pairs;
- }
-
- protected boolean expectsDataFromPUTRequest() {
- return false;
- }
-
-
- public String getTargetUri() {
- return targetUri;
- }
-
- public static final String getSupportedAAIVersion() {
- return configProperties.getProperty(AAIDeclarations.AAI_VERSION, "/v16/");
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceLighty.java
deleted file mode 100755
index bd9115b64..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceLighty.java
+++ /dev/null
@@ -1,1545 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Modifications Copyright (C) 2019 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.NoSuchAlgorithmException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TimeZone;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocketFactory;
-import javax.ws.rs.HttpMethod;
-import javax.xml.bind.annotation.XmlElement;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang3.StringUtils;
-import org.onap.aai.inventory.v16.GenericVnf;
-import org.onap.aai.inventory.v16.PhysicalLink;
-import org.onap.aai.inventory.v16.ResultData;
-import org.onap.aai.inventory.v16.SearchResults;
-import org.onap.aai.inventory.v16.Vserver;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-import org.onap.ccsdk.sli.adaptors.aai.data.ErrorResponse;
-import org.onap.ccsdk.sli.adaptors.aai.data.notify.NotifyEvent;
-import org.onap.ccsdk.sli.core.sli.ConfigurationException;
-import org.onap.ccsdk.sli.core.sli.MetricLogger;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-
-/**
- * THIS CLASS IS A COPY OF {@link AAIService} WITH REMOVED OSGi DEPENDENCIES
- */
-public class AAIServiceLighty extends AAIDeclarationsLighty implements AAIClientLighty, SvcLogicResource {
-
- public static final String AAICLIENT_PROPERTIES = "/aaiclient.properties";
- public static final String PATH_PROPERTIES = "/aai-path.properties";
-
- private static final Logger LOG = LoggerFactory.getLogger(AAIServiceLighty.class);
-
- private final String truststorePath;
- private final String truststorePassword;
- private final String keystorePath;
- private final String keystorePassword;
- private final Boolean ignoreCertificateHostError;
-
- private final String targetUri;
- private final String networkVserverPath;
-
- private final String svc_inst_query_path;
-
- private final String ubb_notify_path;
- private final String selflinkAvpn;
- private final String selflinkFqdn;
-
- private final int connectionTimeout;
- private final int readTimeout;
-
- // 1602
- private final String queryNodesPath;
- private final String applicationId;
-
- // authentication credentials
- private String userName;
- private String userPassword;
-
- // runtime
- private final boolean runtimeOSGI;
-
- private SSLContext CTX;
-
- private final MetricLogger ml = new MetricLogger();
-
- private AAIExecutorInterfaceLighty executor;
-
- public AAIServiceLighty(final UtilsProvider configuration) {
- this(configuration.getProperties());
- }
-
- public AAIServiceLighty(final URL url) {
- this(getProperties(url));
- }
-
- public AAIServiceLighty(Properties props) {
- LOG.info("Entered AAIService.ctor");
-
- String runtime = System.getProperty("aaiclient.runtime");
- if("OSGI".equals(runtime)) {
- runtimeOSGI = true;
- } else {
- runtimeOSGI = false;
- }
-
- try {
- AAIRequestLighty.setProperties(props, this);
-
- } catch(Exception exc){
- LOG.error("AicAAIResource.static", exc);
- }
-
- executor = new AAIClientRESTExecutorLighty(props);
-
- userName = props.getProperty(CLIENT_NAME);
- userPassword = props.getProperty(CLIENT_PWWD);
-
- if(userName == null || userName.isEmpty()){
- LOG.debug("Basic user name is not set");
- }
- if(userPassword == null || userPassword.isEmpty()) {
- LOG.debug("Basic password is not set");
- }
-
- truststorePath = props.getProperty(TRUSTSTORE_PATH);
- truststorePassword = props.getProperty(TRUSTSTORE_PSSWD);
- keystorePath = props.getProperty(KEYSTORE_PATH);
- keystorePassword = props.getProperty(KEYSTORE_PSSWD);
-
- targetUri = props.getProperty(TARGET_URI);
- props.getProperty(QUERY_PATH);
- props.getProperty(UPDATE_PATH);
-
- String tmpApplicationId = props.getProperty(APPLICATION_ID);
- if(tmpApplicationId == null || tmpApplicationId.isEmpty()) {
- tmpApplicationId = "SDNC";
- }
- this.applicationId = tmpApplicationId;
-
- // connection timeout
- int tmpConnectionTimeout = 30000;
- int tmpReadTimeout = 30000;
-
- try {
- String tmpValue = null;
- tmpValue = props.getProperty(CONNECTION_TIMEOUT, "30000");
- tmpConnectionTimeout = Integer.parseInt(tmpValue);
- tmpValue = props.getProperty(READ_TIMEOUT, "30000");
- tmpReadTimeout = Integer.parseInt(tmpValue);
- } catch(Exception exc) {
- LOG.error("Failed setting connection timeout", exc);
- tmpConnectionTimeout = 30000;
- tmpReadTimeout = 30000;
- }
- connectionTimeout = tmpConnectionTimeout;
- readTimeout = tmpReadTimeout;
-
- networkVserverPath =props.getProperty(NETWORK_VSERVER_PATH);
-
- props.getProperty(SVC_INSTANCE_PATH);
- svc_inst_query_path = props.getProperty(SVC_INST_QRY_PATH);
- props.getProperty(PARAM_SERVICE_TYPE, "service-type");
-
- props.getProperty(VNF_IMAGE_QUERY_PATH);
-
- ubb_notify_path = props.getProperty(UBB_NOTIFY_PATH);
- selflinkAvpn = props.getProperty(SELFLINK_AVPN);
- selflinkFqdn = props.getProperty(SELFLINK_FQDN);
-
- props.getProperty(SERVICE_PATH);
-
- props.getProperty(SITE_PAIR_SET_PATH);
-
- queryNodesPath = props.getProperty(QUERY_NODES_PATH);
-
- String iche = props.getProperty(CERTIFICATE_HOST_ERROR);
- boolean host_error = false;
- if(iche != null && !iche.isEmpty()) {
- host_error = Boolean.valueOf(iche);
- }
-
- ignoreCertificateHostError = host_error;
-
- HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){
- public boolean verify(String string,SSLSession ssls) {
- return ignoreCertificateHostError;
- }
- });
-
- if(truststorePath != null && truststorePassword != null && (new File(truststorePath)).exists()) {
- System.setProperty("javax.net.ssl.trustStore", truststorePath);
- System.setProperty("javax.net.ssl.trustStorePassword", truststorePassword);
- }
-
- if(keystorePath != null && keystorePassword != null && (new File(keystorePath)).exists()) {
- //DefaultClientConfig config = new DefaultClientConfig();
- //both jersey and HttpURLConnection can use this
- SSLContext ctx = null;
- try {
- ctx = SSLContext.getInstance("TLS");
-
- KeyManagerFactory kmf = null;
- try (FileInputStream fin = new FileInputStream(keystorePath)){
- String def = "SunX509";
- String storeType = "PKCS12";
- def = KeyStore.getDefaultType();
- kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
-
- String extension = keystorePath.substring(keystorePath.lastIndexOf(".") + 1);
- if("JKS".equalsIgnoreCase(extension)) {
- storeType = "JKS";
- }
- KeyStore ks = KeyStore.getInstance(storeType);
-
- char[] pwd = keystorePassword.toCharArray();
- ks.load(fin, pwd);
- kmf.init(ks, pwd);
- } catch (Exception ex) {
- LOG.error("AAIResource", ex);
- }
-
- if(null!=kmf) {
- ctx.init(kmf.getKeyManagers(), null, null);
- }
- /*
- * config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new
- * HTTPSProperties( new HostnameVerifier() {
- *
- * @Override public boolean verify( String s, SSLSession sslSession ) { return
- * ignoreCertificateHostError; } }, ctx));
- */
-
- CTX = ctx;
- LOG.debug("SSLContext created");
-
- } catch (KeyManagementException | NoSuchAlgorithmException exc) {
- LOG.error("AAIResource", exc);
- }
- }
-
- LOG.info("AAIResource.ctor initialized.");
-
- try {
- Field methodsField = HttpURLConnection.class.getDeclaredField("methods");
- methodsField.setAccessible(true);
- // get the methods field modifiers
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- // bypass the "private" modifier
- modifiersField.setAccessible(true);
-
- // remove the "final" modifier
- modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL);
-
- /* valid HTTP methods */
- String[] methods = {
- "GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE", "PATCH"
- };
- // set the new methods - including patch
- methodsField.set(null, methods);
-
- } catch (SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {
- LOG.error("Exception occured", e);
- }
-
- }
-
- private static Properties getProperties(URL url) {
- Properties properties = new Properties();
- try {
- properties.load(url.openStream());
- } catch (IOException exc) {
- LOG.error("getProperties", exc);
- }
- return properties;
- }
-
- public void setExecutor(AAIExecutorInterfaceLighty executor) {
- this.executor = executor;
- }
-
- public void cleanUp() {
-
- }
-
- /**
- *
- * @param http_req_url
- * @param method
- * @return
- * @throws Exception
- */
- protected HttpURLConnection getConfiguredConnection(URL http_req_url, String method) throws Exception {
- HttpURLConnection con = (HttpURLConnection) http_req_url.openConnection();
-
- // Set up the connection properties
- con.setRequestProperty( "Connection", "close" );
- con.setDoInput(true);
- con.setDoOutput(true);
- con.setUseCaches(false);
- con.setConnectTimeout( connectionTimeout );
- con.setReadTimeout( readTimeout );
- con.setRequestMethod( method );
- con.setRequestProperty( "Accept", "application/json" );
- con.setRequestProperty( "Content-Type", "PATCH".equalsIgnoreCase(method) ? "application/merge-patch+json" : "application/json" );
- con.setRequestProperty("X-FromAppId", applicationId);
- con.setRequestProperty("X-TransactionId", TransactionIdTracker.getNextTransactionId());
- String mlId = ml.getRequestID();
- if(mlId != null && !mlId.isEmpty()) {
- LOG.debug(String.format("MetricLogger requestId = %s", mlId));
- con.setRequestProperty(MetricLogger.REQUEST_ID, mlId);
- } else {
- LOG.debug("MetricLogger requestId is null");
- }
- con.setRequestProperty("Transfer-Encoding","chunked");
-
- if(userName != null && !userName.isEmpty() && userPassword != null && !userPassword.isEmpty()) {
- String basicAuth = "Basic " + new String(Base64.encodeBase64((userName + ":" + userPassword).getBytes()));
- con.setRequestProperty ("Authorization", basicAuth);
- }
-
- if(con instanceof HttpsURLConnection && CTX != null) {
- SSLSocketFactory sockFact = CTX.getSocketFactory();
- HttpsURLConnection.class.cast(con).setSSLSocketFactory( sockFact );
- }
- return con;
- }
-
-
- @Override
- public GenericVnf requestGenericVnfData(String vnf_id) throws AAIServiceException {
- GenericVnf response = null;
-
- try {
- AAIRequestLighty request = AAIRequestLighty.getRequestFromResource("generic-vnf");
- request.addRequestProperty("generic-vnf.vnf-id", vnf_id);
- String rv = executor.get(request);
- if(rv != null) {
- ObjectMapper mapper = getObjectMapper();
- response = mapper.readValue(rv, GenericVnf.class);
- }
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn(Object.class.getClass().getEnclosingMethod().getName(), exc);
- throw new AAIServiceException(exc);
- }
-
- return response;
-
- }
-
- @Override
- public boolean postGenericVnfData(String vnf_id, GenericVnf data) throws AAIServiceException {
- try {
- AAIRequestLighty request = AAIRequestLighty.getRequestFromResource("generic-vnf");
- request.addRequestProperty("generic-vnf.vnf-id", vnf_id);
- request.setRequestObject(data);
- Object response = executor.post(request);
- return true;
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("requestGenericVnfData", exc);
- throw new AAIServiceException(exc);
- }
- }
-
- @Override
- public SearchResults requestServiceInstanceURL(String svc_instance_id) throws AAIServiceException {
- SearchResults response = null;
- InputStream inputStream = null;
-
- try {
- String path = svc_inst_query_path;
- path = path.replace("{svc-instance-id}", encodeQuery(svc_instance_id));
-
- String request_url = targetUri+path;
- URL http_req_url = new URL(request_url);
-
- HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET);
-
- LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString());
- LOGwriteDateTrace("svc_instance_id", svc_instance_id);
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
-
- // Process the response
- LOG.debug("HttpURLConnection result:" + responseCode);
- if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
-
- ObjectMapper mapper = getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK) {
- response = mapper.readValue(reader, SearchResults.class);
- LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response));
- } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) {
- LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist.");
- return response;
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
-
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("requestServiceInstanceURL", exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
- LOG.warn("Error closing Inputstream", exc);
- }
- }
- }
- return response;
- }
-
-
- private static Properties initialize(URL url ) throws ConfigurationException {
-
- if(url == null) {
- throw new NullPointerException();
- }
-
- InputStream is = null;
- Properties props = new Properties();
-
- try {
- if(LOG.isDebugEnabled())
- LOG.info("Property file is: " + url.toString());
-
- is = url.openStream();
-
- props.load(is);
- if(LOG.isDebugEnabled()) {
- LOG.info("Properties loaded: " + props.size());
- Enumeration<Object> en = props.keys();
-
- while(en.hasMoreElements()) {
- String key = (String)en.nextElement();
- String property = props.getProperty(key);
- LOG.debug(key + " : " + property);
- }
- }
- } catch (Exception e) {
- throw new ConfigurationException("Could not load properties file.", e);
- }
- return props;
- }
-
- static class TransactionIdTracker {
-// protected static AtomicLong tracker = new AtomicLong();
-
- public static String getNextTransactionId() {
- // Check if RequestId exists as MDC. If not, create new.
- String transactionId = MDC.get("RequestId");
- if ("".equals(transactionId) || transactionId == null) {
- transactionId = UUID.randomUUID().toString();
- LOG.info("Missing requestID. Assigned " + transactionId);
- MDC.put("RequestId", transactionId);
- }
- return transactionId;
- }
-
- }
-
- protected void LOGwriteFirstTrace(String method, String url) {
- String time = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(System.currentTimeMillis());
- LOG.info("A&AI transaction :");
- LOG.info("Request Time : " + time + ", Method : " + method);
- LOG.info("Request URL : "+ url);
- }
-
- protected void LOGwriteDateTrace(String name, String data) {
- LOG.info("Input - " + name + " : " + data);
- }
-
- protected void LOGwriteEndingTrace(int response_code, String comment, String data) {
- LOG.info("Response code : " + response_code +", " + comment);
- LOG.info(String.format("Response data : %s", data));
- }
-
- protected String encodeQuery(String param) throws UnsupportedEncodingException {
- return URLEncoder.encode(param, "UTF-8").replace("+", "%20");
- }
-
- private String encodeCustomerURL(final String selection)
- {
- String encrypted_url = selection;
- String apnpattern =
- "/aai/v11/business/customers/customer/(.+)/service-subscriptions/service-subscription/(.+)/service-instances/service-instance/(.+)/";
- Pattern pattern = Pattern.compile(apnpattern);
-
- try {
- URL url = new URL(selection);
- String path = url.getPath();
-
- LOG.info("Trying to match apn to <" + path + ">");
-
- Matcher matcher = pattern.matcher(path);
-
- while(matcher.find()) {
- String customer = matcher.group(1);
- String subscription = matcher.group(2);
- String service = matcher.group(3);
-
- encrypted_url = selection.replace(customer, encodeQuery(customer));
- encrypted_url = encrypted_url.replace(subscription, encodeQuery(subscription));
- encrypted_url = encrypted_url.replace(service, encodeQuery(service));
- }
- } catch (Exception e) {
- LOG.warn("", e);
- }
-
- return encrypted_url;
- }
-
-
-
- /*
- * (non-Javadoc)
- * @see org.onap.sdnct.sli.aai.AAIClient#requestVServersData(java.lang.String, java.lang.String)
- */
- @Override
- public Vserver requestVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId) throws AAIServiceException {
- Vserver response = null;
-
- try {
- AAIRequestLighty request = AAIRequestLighty.getRequestFromResource("vserver");
- request.addRequestProperty("cloud-region.cloud-owner", cloudOwner);
- request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId);
- request.addRequestProperty("tenant.tenant-id", tenantId);
- request.addRequestProperty("vserver.vserver-id", vserverId);
-
- String rv = executor.get(request);
- if(rv != null) {
- ObjectMapper mapper = getObjectMapper();
- response = mapper.readValue(rv, Vserver.class);
- }
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn(Object.class.getClass().getEnclosingMethod().getName(), exc);
- throw new AAIServiceException(exc);
- }
- return response;
- }
-
-
- //================== End of DvsSwitch =================
- //==================== PhysicalLink ======================
- @Override
- public PhysicalLink requestPhysicalLinkData(String linkName) throws AAIServiceException {
- PhysicalLink response = null;
-
- try {
- AAIRequestLighty request = AAIRequestLighty.getRequestFromResource("physical-link");
- request.addRequestProperty("physical-link.link-name", linkName);
-
- String rv = executor.get(request);
- if(rv != null) {
- ObjectMapper mapper = getObjectMapper();
- response = mapper.readValue(rv, PhysicalLink.class);
- }
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("requestPhysicalLinkData", exc);
- throw new AAIServiceException(exc);
- }
- return response;
- }
-
- @Override
- public boolean postPhysicalLinkData(String linkName, PhysicalLink data) throws AAIServiceException {
- try {
- AAIRequestLighty request = AAIRequestLighty.getRequestFromResource("physical-link");
- request.addRequestProperty("physical-link.link-name", linkName);
- request.setRequestObject(data);
- Object response = executor.post(request);
- return true;
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn(Object.class.getClass().getEnclosingMethod().getName(), exc);
- throw new AAIServiceException(exc);
- }
- }
-
- @Override
- public boolean deletePhysicalLinkData(String linkName, String resourceVersion) throws AAIServiceException {
- boolean response = false;
-
- try {
- AAIRequestLighty request = AAIRequestLighty.getRequestFromResource("physical-link");
- request.addRequestProperty("physical-link.link-name", linkName);
- response = executor.delete(request, resourceVersion);
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("deletePhysicalLinkData", exc);
- throw new AAIServiceException(exc);
- }
- return response;
- }
-
- public boolean deleteAAIEntity(URL url, String caller) throws AAIServiceException {
-
- if(url == null) {
- throw new NullPointerException();
- }
-
- boolean response = false;
- InputStream inputStream = null;
-
- try {
- URL http_req_url = url;
-
- HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.DELETE);
-
- LOGwriteFirstTrace("DELETE", http_req_url.toString());
-
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
-
- // Process the response
- LOG.debug("HttpURLConnection result:" + responseCode);
- if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
- String line = null;
-
- ObjectMapper mapper = getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- StringBuilder stringBuilder = new StringBuilder();
-
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString());
- response = true;
- } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) {
- LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist.");
- response = false;
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
-
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn(caller, exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
- LOG.warn("Error closing InputStream", exc);
- }
- }
- }
- return response;
- }
-
- /**
- * Generic method to GET json data from an A&AI callback URL.
- * Then convert that json to an Object.
- * If successful the Object is attempted to be cast to the type parameter.
- *
- * @param key
- * callback url for A&AI
- * @param type
- * the class of object that A&AI will return
- * @return the object created from json or null if the response code is not 200
- *
- * @throws AAIServiceException
- * if empty or null key and or type or there's an error with processing
- */
- public <T> T dataChangeRequestAaiData(String key, Class<T> type) throws AAIServiceException {
- if (StringUtils.isEmpty(key) || type == null) {
- throw new AAIServiceException("Key is empty or null and or type is null");
- }
-
- T response = null;
-
- SvcLogicContext ctx = new SvcLogicContext();
- if(!key.contains(" = ") && isValidURL(key)) {
- key = String.format("selflink = '%s'", key);
- } else
- if(!key.contains(" = ") && isValidURI(key)) {
- key = String.format("resource-path = '%s'", key);
- }
-
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
-
- SelfLinkRequestLighty request = new SelfLinkRequestLighty(type);
- request.processRequestPathValues(nameValues);
- Object obj = this.getExecutor().query(request, type);
- response = type.cast(obj);
-
- return response != null ? type.cast(response) : response;
- }
-
-
- public boolean sendNotify(NotifyEvent event, String serviceInstanceId, String pathCode) throws AAIServiceException {
- InputStream inputStream = null;
-
- try {
-
- String selfLink = selflinkFqdn;
- if(SELFLINK_AVPN != null && SELFLINK_AVPN.equals(pathCode)) {
- selfLink = selflinkAvpn;
- }
- selfLink = selfLink.replace("{service-instance-id}", encodeQuery(serviceInstanceId));
- event.setSelflink(selfLink);
-
- ObjectMapper mapper = getObjectMapper();
- String json_text = mapper.writeValueAsString(event);
-
- SSLSocketFactory sockFact = CTX.getSocketFactory();
-
- String request_url = targetUri+ubb_notify_path;
- URL http_req_url = new URL(request_url);
-
- HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT);
-
- if (json_text != null) {
- OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
- osw.write(json_text);
- osw.flush();
- osw.close();
- }
-
- LOGwriteFirstTrace("PUT", request_url);
- LOGwriteDateTrace("NotifyEvent", json_text);
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
-
- // Process the response
- BufferedReader reader;
- String line = null;
- reader = new BufferedReader( new InputStreamReader( inputStream ) );
-
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- StringBuilder stringBuilder = new StringBuilder();
-
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder.length() > 0) ? stringBuilder.toString() :
- "{no-data}");
- return true;
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse));
-
- throw new AAIServiceException(responseCode, errorresponse);
- }
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("sendNotify", exc);
- throw new AAIServiceException(exc);
- } finally {
- try {
- if(inputStream != null)
- inputStream.close();
- } catch (Exception exc) {
- LOG.warn("Error closing Input stream", exc);
- }
- }
- }
-
- @Override
- public SearchResults requestNodeQuery(String node_type, String entityIdentifier, String entityName) throws AAIServiceException {
- SearchResults response = null;
- InputStream inputStream = null;
-
- try {
- String request_url = targetUri+queryNodesPath;
- request_url = request_url.replace("{node-type}", encodeQuery(node_type)) ;
- request_url = request_url.replace("{entity-identifier}", entityIdentifier) ;
- request_url = request_url.replace("{entity-name}", encodeQuery(entityName)) ;
- URL http_req_url = new URL(request_url);
-
- HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET);
-
- LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString());
- LOGwriteDateTrace("node_type", node_type);
- LOGwriteDateTrace("vnf_name", entityName);
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
-
- // Process the response
- LOG.debug("HttpURLConnection result:" + responseCode);
- if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
-
- ObjectMapper mapper = getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK) {
- response = mapper.readValue(reader, SearchResults.class);
- LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response));
- } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) {
- LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist.");
- return response;
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
-
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("requestNodeQuery", exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
- LOG.warn("Error closing Input stream", exc);
- }
- }
- }
- return response;
-
- }
-
-
- @Override
- public String requestDataByURL(URL url) throws AAIServiceException {
-
- if(url == null) {
- throw new NullPointerException();
- }
-
- String response = null;
- InputStream inputStream = null;
-
- try {
- URL http_req_url = url;
-
- HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET);
-
- LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString());
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
-
- // Process the response
- LOG.debug("HttpURLConnection result:" + responseCode);
- if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
-
- ObjectMapper mapper = getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK) {
- StringBuilder stringBuilder = new StringBuilder("\n");
- String line = null;
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOG.info(stringBuilder.toString());
-// response = mapper.readValue(reader, String.class);
- response = stringBuilder.toString();
- LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response));
- } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) {
- LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist.");
- response = null;
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
-
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("requestNetworkVceData", exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
- LOG.warn("Error closing Input stream", exc);
- }
- }
- }
- return response;
- }
-
-
- @Override
- public GenericVnf requestGenericVnfeNodeQuery(String vnf_name) throws AAIServiceException {
-
- if(vnf_name == null) {
- throw new NullPointerException();
- }
-
- GenericVnf entity = null;
- SearchResults resp = this.requestNodeQuery("generic-vnf", "vnf-name", vnf_name);
-
- List<ResultData> resultDataList = resp.getResultData();
-
- try {
- for (ResultData datum : resultDataList) {
- URI url = new URI(datum.getResourceLink());
- entity = this.getResource(url.toString(), GenericVnf.class);
- }
- }
- catch (Exception e)
- {
- LOG.error("Caught exception", e);
- }
- return entity;
- }
-
- @Override
- public Vserver requestVServerDataByURL(URL url) throws AAIServiceException {
-
- if(url == null) {
- throw new NullPointerException();
- }
-
- Vserver entity = null;
-
- try {
- entity = this.getResource(url.toString(), Vserver.class);
- } catch (AAIServiceException exc) {
- throw exc;
- } catch (Exception e) {
- throw new AAIServiceException(e);
- }
- return entity;
- }
-
- @Override
- public URL requestVserverURLNodeQuery(String vserver_name) throws AAIServiceException {
-
- if(vserver_name == null) {
- throw new NullPointerException();
- }
-
- URL entity = null;
- SearchResults resp = this.requestNodeQuery("vserver", "vserver-name", vserver_name);
-
- List<ResultData> resultDataList = resp.getResultData();
-
- try {
- for (ResultData datum : resultDataList) {
- String data_type = datum.getResourceType();
- String resourceLink = datum.getResourceLink();
- if(!resourceLink.isEmpty() && !resourceLink.toLowerCase().startsWith("http")) {
- resourceLink = (new EchoRequest()).targetUri + resourceLink;
- }
- entity = new URL(resourceLink);
- }
- } catch (Exception e) {
- throw new AAIServiceException(e);
- }
- return entity;
- }
-
- @Override
- public String getTenantIdFromVserverUrl(URL url) {
-
- String path = url.getPath();
-
- String[] split = path.split("/tenants/tenant/");
- if(split.length > 1) {
- split = split[1].split("/");
- return split[0];
- } else {
- return null;
- }
- }
-
- @Override
- public String getCloudOwnerFromVserverUrl(URL url) {
-
- String path = url.getPath();
-
- String[] split = path.split("/cloud-regions/cloud-region/");
- if(split.length > 1) {
- split = split[1].split("/");
- return split[0];
- } else {
- return null;
- }
- }
-
- @Override
- public String getCloudRegionFromVserverUrl(URL url) {
-
- String path = url.getPath();
-
- String[] split = path.split("/cloud-regions/cloud-region/");
- if(split.length > 1) {
- split = split[1].split("/");
- return split[1];
- } else {
- return null;
- }
- }
-
- @Override
- public String getVServerIdFromVserverUrl(URL url, String tenantId) {
- String pattern = networkVserverPath;
- pattern = pattern.replace("{tenant-id}", tenantId);
-
- int end = pattern.indexOf("{vserver-id}");
- String prefix = pattern.substring(0, end);
-
- String path = url.getPath();
-
- if(path.startsWith(prefix)) {
- path = path.substring(prefix.length());
- }
-
- return path;
- }
-
- protected Logger getLogger(){
- return LOG;
- }
-
-
- @Override
- public AAIExecutorInterfaceLighty getExecutor() {
- return executor;
- }
-
- /**
- * Creates a current time stamp in UTC i.e. 2016-03-08T22:15:13.343Z.
- * If there are any parameters the values are appended to the time stamp.
- *
- * @param parameters
- * values to be appended to current time stamp
- * @param ctx
- * used to set an attribute for a DG
- * @throws SvcLogicException
- */
- public void setStatusMethod(Map<String, String> parameters, SvcLogicContext ctx) throws SvcLogicException {
- if (ctx == null) {
- throw new SvcLogicException("SvcLogicContext is null.");
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append(String.format("%tFT%<tTZ", Calendar.getInstance(TimeZone.getTimeZone("Z")))).append(" - ");
-
- for (Entry<String, String> entry : parameters.entrySet()) {
- sb.append(entry.getValue()).append(" ");
- }
-
- if (sb.length() > 0) {
- sb.setLength(sb.length() - 2);
- }
-
- ctx.setAttribute("aai-summary-status-message", sb.toString());
- LOG.info("aai-summary-status-message: " + sb.toString());
- }
-
- /**
- * Generic method to GET json data from an A&AI using key structure.
- * Then convert that json to an Object.
- * If successful the Object is attempted to be cast to the type parameter.
- *
- * @param key
- * key identifying the resource to be retrieved from AAI
- * @param type
- * the class of object that A&AI will return
- * @return the object created from json or null if the response code is not 200
- *
- * @throws AAIServiceException
- * if empty or null key and or type or there's an error with processing
- */
-
- public <T> T getResource(String key, Class<T> type) throws AAIServiceException {
- if (StringUtils.isEmpty(key) || type == null) {
- throw new AAIServiceException("Key is empty or null and or type is null");
- }
-
- T response = null;
-
- SvcLogicContext ctx = new SvcLogicContext();
- if(!key.contains(" = ")) {
- if(isValidURL(key)) {
- key = String.format("selflink = '%s'", key);
- } else if(isValidURI(key)) {
- key = String.format("resource-path = '%s'", key);
- } else {
- return response;
- }
- }
-
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
-
- AAIRequestLighty request = new SelfLinkRequestLighty(type);
- if(nameValues.containsKey(PathRequest.RESOURCE_PATH.replaceAll("-", "_"))) {
- request = new PathRequestLighty(type);
- }
-
- request.processRequestPathValues(nameValues);
- Object obj = this.getExecutor().query(request, type);
- response = type.cast(obj);
-
- return response != null ? type.cast(response) : response;
- }
-
- public boolean isValidURL(String url) {
-
- URL u = null;
-
- try {
- u = new URL(url);
- } catch (MalformedURLException e) {
- LOG.warn("MalformedURLException", e);
- return false;
- }
-
- try {
- u.toURI();
- } catch (URISyntaxException e) {
- LOG.warn("URISyntaxException", e);
- return false;
- }
-
- return true;
- }
-
-
- public boolean isValidURI(String url) {
-
- URI u = null;
-
- try {
- u = new URI(url);
- } catch (URISyntaxException e) {
- LOG.warn("URISyntaxException", e);
- return false;
- }
-
- return true;
- }
-
-
- protected boolean deleteList(URL httpReqUrl, String json_text) throws AAIServiceException {
- if(httpReqUrl == null) {
- throw new NullPointerException();
- }
-
- boolean response = false;
- InputStream inputStream = null;
-
- try {
- HttpURLConnection con = getConfiguredConnection(httpReqUrl, HttpMethod.DELETE);
-
-// SSLSocketFactory sockFact = CTX.getSocketFactory();
-// con.setSSLSocketFactory( sockFact );
- if (json_text != null) {
- OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
- osw.write(json_text);
- osw.flush();
- osw.close();
- }
-
- LOGwriteFirstTrace("DELETE", httpReqUrl.toString());
- LOGwriteDateTrace("data", json_text);
-
- // Check for errors
- int responseCode = con.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- inputStream = con.getInputStream();
- } else {
- inputStream = con.getErrorStream();
- }
-
- // Process the response
- LOG.debug("HttpURLConnection result:" + responseCode);
- if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
- BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
- String line = null;
-
- ObjectMapper mapper = getObjectMapper();
-
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
- StringBuilder stringBuilder = new StringBuilder();
-
- while( ( line = reader.readLine() ) != null ) {
- stringBuilder.append( line );
- }
- LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString());
- response = true;
- } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) {
- LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist.");
- response = false;
- } else {
- ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
- LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse));
- throw new AAIServiceException(responseCode, errorresponse);
- }
-
- } catch(AAIServiceException aaiexc) {
- throw aaiexc;
- } catch (Exception exc) {
- LOG.warn("deleteList", exc);
- throw new AAIServiceException(exc);
- } finally {
- if(inputStream != null){
- try {
- inputStream.close();
- } catch(Exception exc) {
-
- }
- }
- }
- return response;
- }
-
- public static ObjectMapper getObjectMapper() {
- ObjectMapper mapper = new ObjectMapper();
- AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance());
- AnnotationIntrospector secondary = new JacksonAnnotationIntrospector();
- mapper.setAnnotationIntrospector(AnnotationIntrospector.pair(introspector, secondary));
- mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
- mapper.setSerializationInclusion(Include.NON_NULL);
- mapper.setSerializationInclusion(Include.NON_EMPTY);
- return mapper;
- }
-
- public void logMetricRequest(String requestId, String targetServiceName, String msg, String path){
- String svcInstanceId = "";
- String svcName = null;
- String partnerName = null;
- String targetEntity = "A&AI";
- String targetVirtualEntity = null;
-
- ml.logRequest(svcInstanceId, svcName, partnerName, targetEntity, targetServiceName, targetVirtualEntity, msg);
- }
-
- public void logMetricResponse(String requestId, int responseCode, String responseDescription){
- ml.logResponse(responseCode < 400 ? "COMPLETE" : "ERROR", Integer.toString(responseCode), responseDescription);
- }
-
- public void logKeyError(String keys){
- LOG.error("Atleast one of the keys [" + keys + "] should have been populated. This will cause a NPE.");
- }
-
-
- /**
- * Retrofit code
- */
- @Override
- public QueryStatus save(String resource, boolean force, boolean localOnly, String key, Map<String, String> params, String prefix, SvcLogicContext ctx)
- throws SvcLogicException {
- String normResource = resource.split(":")[0];
-
- switch(normResource){
- case "custom-query":
- case "formatted-query":
- case "generic-query":
- case "nodes-query":
- case "linterface":
- case "l2-bridge-sbg":
- case "l2-bridge-bgf":
- case "echo":
- case "test":
- break;
-
- default:
- if(key.contains("selflink =")) {
- break;
- }
- if(!key.contains(String.format("%s.", normResource))) {
- key = rewriteKey(resource, key, ctx);
- }
- }
- return super.save(resource, force, localOnly, key, params, prefix, ctx);
- }
-
- @Override
- public QueryStatus query(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx)
- throws SvcLogicException {
- String normResource = resource.split(":")[0];
-
- switch(normResource){
- case "custom-query":
- case "formatted-query":
- case "generic-query":
- case "nodes-query":
- case "linterface":
- case "l2-bridge-sbg":
- case "l2-bridge-bgf":
- case "echo":
- case "test":
- break;
-
- default:
- if(key.contains("selflink =")) {
- break;
- }
- if(!key.contains(String.format("%s.", normResource))) {
- key = rewriteKey(resource, key, ctx);
- }
- }
-
- return super.query(resource, localOnly, select, key, prefix, orderBy, ctx);
- }
-
- @Override
- public QueryStatus delete(String resource, String key, SvcLogicContext ctx) throws SvcLogicException {
- String normResource = resource.split(":")[0];
-
- switch(normResource){
- case "custom-query":
- case "formatted-query":
- case "generic-query":
- case "nodes-query":
- case "linterface":
- case "l2-bridge-sbg":
- case "l2-bridge-bgf":
- case "echo":
- case "test":
- break;
-
- default:
- if(key.contains("selflink =")) {
- break;
- }
- if(!key.contains(String.format("%s.", normResource))) {
- key = rewriteKey(resource, key, ctx);
- }
- }
-
- return super.delete(resource, key, ctx);
- }
-
- @Override
- public QueryStatus update(String resource, String key, Map<String, String> params, String prefix, SvcLogicContext ctx) throws SvcLogicException {
- String normResource = resource.split(":")[0];
-
- switch(normResource){
- case "custom-query":
- case "formatted-query":
- case "generic-query":
- case "nodes-query":
- case "linterface":
- case "l2-bridge-sbg":
- case "l2-bridge-bgf":
- case "echo":
- case "test":
- break;
-
- default:
- if(key.contains("selflink =")) {
- break;
- }
- if(!key.contains(String.format("%s.", normResource))) {
- key = rewriteKey(resource, key, ctx);
- }
- }
-
- return super.update(resource, key, params, prefix, ctx);
- }
-
- private String rewriteKey(String resource, String key, SvcLogicContext ctx) {
- LOG.info("AAI Deprecation - the format of request key is no longer supported. Please rewrite this key : " + key);
-
- String normResource = resource.split(":")[0];
- Class<? extends AAIDatum> clazz = AAIRequestLighty.getClassFromResource(normResource) ;
-
- if(clazz == null)
- return key;
-
- List<String> fieldAnnotatedNames = new LinkedList<>();
-
- Field[] fields = clazz.getDeclaredFields();
- for(Field field : fields) {
- String fieldName = field.getName();
- XmlElement annotation = field.getAnnotation(XmlElement.class);
- if(annotation == null)
- continue;
- String primaryId = annotation.name();
- if("##default".equals(primaryId)) {
- primaryId = fieldName;
- }
- fieldAnnotatedNames.add(primaryId);
- }
-
- HashMap<String, String> nameValues = AAIServiceUtils.keyToHashMap(key, ctx);
- Set<String> keyset = nameValues.keySet();
- for(String keyName : keyset) {
- if(keyName.contains("."))
- continue;
- else {
- String tmpKeyName = keyName.replaceAll("_", "-");
- String valueToSubstitute = String.format("%s =", tmpKeyName);
- if(fieldAnnotatedNames.contains(tmpKeyName) && key.contains(valueToSubstitute)) {
- key = key.replace(valueToSubstitute, String.format("%s.%s =", normResource, tmpKeyName));
- }
- }
- }
-
-
- return key;
- }
-
- @Override
- public String getPathTemplateForResource(String resoourceName, String keys, SvcLogicContext ctx) throws MalformedURLException {
- return AAIServiceUtils.getPathForResource(resoourceName, StringUtils.join(keys, " AND "), ctx);
- }
-
- @Override
- public boolean isDeprecatedFormat(String resource, Map<String, String> nameValues) {
- return !AAIServiceUtils.isValidFormat(resource, nameValues);
- }
-
- public AAIRequestLighty getRequestFromResource(String resoourceName) {
- return AAIRequestLighty.getRequestFromResource(resoourceName);
- }
-
- /* (non-Javadoc)
- * @see org.onap.ccsdk.sli.core.sli.aai.haha#query(org.onap.ccsdk.sli.core.sli.aai.AAIRequestLighty)
- */
- @Override
- public String query(AAIRequestLighty request) throws AAIServiceException {
- return executor.get(request);
- }
-
- /* (non-Javadoc)
- * @see org.onap.ccsdk.sli.core.sli.aai.haha#save(org.onap.ccsdk.sli.core.sli.aai.AAIRequestLighty)
- */
- @Override
- public String save(AAIRequestLighty request) throws AAIServiceException {
- return executor.post(request);
- }
-
- public boolean update(AAIRequestLighty request, String resourceVersion) throws AAIServiceException {
- return executor.patch(request, resourceVersion);
- }
-
- /* (non-Javadoc)
- * @see org.onap.ccsdk.sli.core.sli.aai.haha#delete(org.onap.ccsdk.sli.core.sli.aai.AAIRequestLighty, java.lang.String)
- */
- @Override
- public boolean delete(AAIRequestLighty request, String resourceVersion) throws AAIServiceException {
- return executor.delete(request, resourceVersion);
- }
-
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceProviderLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceProviderLighty.java
deleted file mode 100755
index c0e825268..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceProviderLighty.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.Optional;
-import java.util.Properties;
-import java.util.Vector;
-import org.onap.ccsdk.sli.core.utils.KarafRootFileResolver;
-import org.onap.ccsdk.sli.core.utils.PropertiesFileResolver;
-import org.onap.ccsdk.sli.core.utils.common.BundleContextFileResolver;
-import org.onap.ccsdk.sli.core.utils.common.CoreDefaultFileResolver;
-import org.onap.ccsdk.sli.core.utils.common.SdncConfigEnvVarFileResolver;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * THIS CLASS IS A COPY OF {@link AAIServiceProvider} WITH REMOVED OSGi DEPENDENCIES
- */
-public class AAIServiceProviderLighty implements UtilsProvider {
-
- private static final Logger LOG = LoggerFactory.getLogger(AAIServiceProviderLighty.class);
-
- /**
- * The name of the properties file for database configuration
- */
- private static final String AAISEERVICE_PROP_FILE_NAME = "aaiclient.properties";
-
- /**
- * The name of the pwd key
- */
- private static final String AAICLIENT_PROPERTY_NAME = "org.onap.ccsdk.sli.adaptors.aai.client.psswd";
-
- /**
- * A prioritized list of strategies for resolving dblib properties files.
- */
- private Vector<PropertiesFileResolver> dblibPropertiesFileResolvers = new Vector<>();
-
- /**
- * The configuration properties for the db connection.
- */
- private Properties properties;
-
- /**
- * Set up the prioritized list of strategies for resolving dblib properties files.
- */
- public AAIServiceProviderLighty() {
- dblibPropertiesFileResolvers.add(new SdncConfigEnvVarFileResolver(
- "Using property file (1) from environment variable"
- ));
- dblibPropertiesFileResolvers.add(new BundleContextFileResolver(
- "Using property file (3) from JRE argument", AAIServiceProviderLighty.class
- ));
- dblibPropertiesFileResolvers.add(new KarafRootFileResolver(
- "Using property file (4) from karaf root", this
- ));
- dblibPropertiesFileResolvers.add(new CoreDefaultFileResolver(
- "Using property file (5) from default directory"
- ));
-
- // determines properties file as according to the priority described in the class header comment
- final File propertiesFile = determinePropertiesFile();
- if (propertiesFile != null) {
- try(FileInputStream fileInputStream = new FileInputStream(propertiesFile)) {
- properties = new Properties();
- properties.load(fileInputStream);
-
- if(properties.containsKey(AAICLIENT_PROPERTY_NAME)) {
- String sensitive = properties.getProperty(AAICLIENT_PROPERTY_NAME);
- if(sensitive != null && sensitive.startsWith("ENC:")) {
- try {
- sensitive = sensitive.substring(4);
- String postsense = decrypt(sensitive);
- properties.setProperty(AAICLIENT_PROPERTY_NAME, postsense);
- } catch(Exception exc) {
- LOG.error("Failed to translate property", exc);
- }
- }
- }
- } catch (final IOException e) {
- LOG.error("Failed to load properties for file: {}", propertiesFile.toString(),
- new AAIServiceException("Failed to load properties for file: "
- + propertiesFile.toString(), e));
- }
- }
- }
-
- /**
- *
- * @param value
- * @return decrypted string if successful or the original value if unsuccessful
- */
- private String decrypt(String value) {
- try {
- BundleContext bctx = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
-
- ServiceReference sref = bctx.getServiceReference("org.opendaylight.aaa.encrypt.AAAEncryptionService");
- if(sref == null) {
- LOG.warn("Could not acquire service reference for 'org.opendaylight.aaa.encrypt.AAAEncryptionService'");
- return value;
- }
- Object encrSvc = bctx.getService(sref);
- if(encrSvc == null) {
- LOG.warn("Could not access service for 'org.opendaylight.aaa.encrypt.AAAEncryptionService'");
- return value;
- }
-
- Method gs2Method = encrSvc.getClass().getMethod("decrypt", new Class[] { "".getClass() });
- Object unmasked = gs2Method.invoke(encrSvc, new Object[] { value });
- return unmasked.toString();
-
- } catch (Exception exc) {
- LOG.error("Failure", exc);
- return value;
- }
- }
-
- /**
- * Extract db config properties.
- *
- * @return the db config properties
- */
- public Properties getProperties() {
- return properties;
- }
-
- /**
- * Reports the method chosen for properties resolution to the <code>Logger</code>.
- *
- * @param message Some user friendly message
- * @param fileOptional The file location of the chosen properties file
- * @return the file location of the chosen properties file
- */
- private static File reportSuccess(final String message, final Optional<File> fileOptional) {
- if(fileOptional.isPresent()) {
- final File file = fileOptional.get();
- LOG.info("{} {}", message, file.getPath());
- return file;
- }
- return null;
- }
-
- /**
- * Reports fatal errors. This is the case in which no properties file could be found.
- *
- * @param message An appropriate fatal error message
- * @param dblibConfigurationException An exception describing what went wrong during resolution
- */
- private static void reportFailure(final String message,
- final AAIServiceException dblibConfigurationException) {
-
- LOG.error("{}", message, dblibConfigurationException);
- }
-
- /**
- * Determines the dblib properties file to use based on the following priority:
- * <ol>
- * <li>A directory identified by the system environment variable <code>SDNC_CONFIG_DIR</code></li>
- * <li>The default directory <code>DEFAULT_DBLIB_PROP_DIR</code></li>
- * <li>A directory identified by the JRE argument <code>dblib.properties</code></li>
- * <li>A <code>dblib.properties</code> file located in the karaf root directory</li>
- * </ol>
- */
- File determinePropertiesFile() {
-
- for (final PropertiesFileResolver dblibPropertiesFileResolver : dblibPropertiesFileResolvers) {
- final Optional<File> fileOptional = dblibPropertiesFileResolver.resolveFile(AAISEERVICE_PROP_FILE_NAME);
- if (fileOptional.isPresent()) {
- return reportSuccess(dblibPropertiesFileResolver.getSuccessfulResolutionMessage(), fileOptional);
- }
- }
-
- reportFailure("Missing configuration properties resource(3)",
- new AAIServiceException("Missing configuration properties resource(3): "
- + AAISEERVICE_PROP_FILE_NAME));
- return null;
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/CustomQueryRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/CustomQueryRequestLighty.java
deleted file mode 100755
index fa8dce485..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/CustomQueryRequestLighty.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-import org.onap.ccsdk.sli.adaptors.aai.query.FormattedQueryRequestData;
-import org.onap.ccsdk.sli.adaptors.aai.query.FormattedQueryResultList;
-
-/**
- * THIS CLASS IS A COPY OF {@link CustomQueryRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class CustomQueryRequestLighty extends AAIRequestLighty {
-
- public static final String GENERIC_SEARCH_PATH_CONST = "org.onap.ccsdk.sli.adaptors.aai.query.generic";
-
- private final String generic_search_path;
-
- public static final String FORMAT = "format";
-
-
- public CustomQueryRequestLighty() {
- String tmpGenericSearchPath = configProperties.getProperty(GENERIC_SEARCH_PATH_CONST);
- tmpGenericSearchPath = tmpGenericSearchPath.split("search")[0];
- generic_search_path = tmpGenericSearchPath +"query";
- }
-
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
-
- String requestUrl = targetUri+generic_search_path;
-
- requestUrl = processPathData(requestUrl, requestProperties);
-
- String formatQuery = requestProperties.getProperty(FORMAT);
-
- if(formatQuery != null) {
- requestUrl = requestUrl +"?format="+formatQuery;
- }
- URL httpReqUrl = new URL(requestUrl);
-
- aaiService.LOGwriteFirstTrace(method, httpReqUrl.toString());
-
- return httpReqUrl;
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
- return getRequestUrl(method, null);
- }
-
-
- @Override
- public String toJSONString() {
- ObjectMapper mapper = getObjectMapper();
- FormattedQueryRequestData tenant = (FormattedQueryRequestData)requestDatum;
- String jsonText = null;
- try {
- jsonText = mapper.writeValueAsString(tenant);
- } catch (JsonProcessingException exc) {
- handleException(this, exc);
- return null;
- }
- return jsonText;
- }
-
-
- @Override
- public String[] getArgsList() {
- String[] args = {FORMAT};
- return args;
- }
-
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return FormattedQueryRequestData.class;
- }
-
-
- public static String processPathData(String requestUrl, Properties requestProperties) throws UnsupportedEncodingException {
-
- String key = FORMAT;
-
- String encodedVnf = encodeQuery(requestProperties.getProperty(key));
- requestUrl = requestUrl.replace("{identifier}", encodedVnf) ;
- aaiService.LOGwriteDateTrace("identifier", requestProperties.getProperty(key));
-
- return requestUrl;
- }
-
- public AAIDatum jsonStringToObject(String jsonData) throws IOException {
- if(jsonData == null) {
- return null;
- }
-
- AAIDatum response = null;
- ObjectMapper mapper = getObjectMapper();
- response = mapper.readValue(jsonData, FormattedQueryResultList.class);
- return response;
- }
-
- protected boolean expectsDataFromPUTRequest() {
- return true;
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/EchoRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/EchoRequestLighty.java
deleted file mode 100755
index 46e6aa7af..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/EchoRequestLighty.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-import org.onap.ccsdk.sli.adaptors.aai.data.EchoResponse;
-
-/**
- * THIS CLASS IS A COPY OF {@link EchoRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class EchoRequestLighty extends AAIRequestLighty {
-
-
-
- private final String echoPath;
-
- public EchoRequestLighty() {
- echoPath = "/aai/util/echo";
- }
-
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
-
- String requestUrl = targetUri+echoPath;
-
- if(resourceVersion != null) {
- requestUrl = requestUrl +"?resource-version="+resourceVersion;
- }
- URL httpReqUrl = new URL(requestUrl);
-
- aaiService.LOGwriteFirstTrace(method, httpReqUrl.toString());
-
- return httpReqUrl;
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
- return getRequestUrl(method, null);
- }
-
-
- @Override
- public String toJSONString() {
- ObjectMapper mapper = getObjectMapper();
- EchoResponse tenant = (EchoResponse)requestDatum;
- String jsonText = null;
- try {
- jsonText = mapper.writeValueAsString(tenant);
- } catch (JsonProcessingException exc) {
- handleException(this, exc);
- return null;
- }
- return jsonText;
- }
-
-
- @Override
- public String[] getArgsList() {
- String[] args = {};
- return args;
- }
-
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return EchoResponse.class;
- }
-
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericQueryRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericQueryRequestLighty.java
deleted file mode 100755
index 65fe0e783..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericQueryRequestLighty.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import org.onap.aai.inventory.v16.ResultData;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-
-/**
- * THIS CLASS IS A COPY OF {@link GenericQueryRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class GenericQueryRequestLighty extends AAIRequestLighty {
-
- public static final String GENERIC_SEARCH_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.generic";
-
- private final String generic_search_path;
-
- public static final String START_NODE_TYPE = "start-node-type";
- public static final String IDENTIFIER = "identifier";
- public static final String VALUE = "value";
-
-
- public GenericQueryRequestLighty() {
- generic_search_path = configProperties.getProperty(GENERIC_SEARCH_PATH);
- }
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
-
- String request_url = targetUri+generic_search_path;
-
- request_url = processPathData(request_url, requestProperties);
-
- if(resourceVersion != null) {
- request_url = request_url +"?resource-version="+resourceVersion;
- }
- URL http_req_url = new URL(request_url);
-
- aaiService.LOGwriteFirstTrace(method, http_req_url.toString());
-
- return http_req_url;
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
- return getRequestUrl(method, null);
- }
-
-
- @Override
- public String toJSONString() {
- ObjectMapper mapper = getObjectMapper();
- ResultData tenant = (ResultData)requestDatum;
- String json_text = null;
- try {
- json_text = mapper.writeValueAsString(tenant);
- } catch (JsonProcessingException exc) {
- handleException(this, exc);
- return null;
- }
- return json_text;
- }
-
-
- @Override
- public String[] getArgsList() {
- String[] args = {START_NODE_TYPE, IDENTIFIER, VALUE};
- return args;
- }
-
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return ResultData.class;
- }
-
-
- public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException {
-
- String key = IDENTIFIER;
-
- String encoded_vnf = encodeQuery(requestProperties.getProperty(key));
- request_url = request_url.replace("{identifier}", encoded_vnf) ;
- aaiService.LOGwriteDateTrace(IDENTIFIER, requestProperties.getProperty(key));
-
- key = VALUE;
-
- encoded_vnf = encodeQuery(requestProperties.getProperty(key));
- request_url = request_url.replace("{value}", encoded_vnf) ;
- aaiService.LOGwriteDateTrace(VALUE, requestProperties.getProperty(key));
-
- key = START_NODE_TYPE;
-
- encoded_vnf = encodeQuery(requestProperties.getProperty(key));
- request_url = request_url.replace("{start-node-type}", encoded_vnf) ;
- aaiService.LOGwriteDateTrace(START_NODE_TYPE, requestProperties.getProperty(key));
-
- return request_url;
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericRequestLighty.java
deleted file mode 100755
index 96b1e7f19..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericRequestLighty.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
- /**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Joiner;
-import java.io.UnsupportedEncodingException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import org.onap.aai.inventory.v16.L3Network;
-import org.onap.aai.inventory.v16.L3Networks;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-
-/**
- * THIS CLASS IS A COPY OF {@link GenericRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class GenericRequestLighty extends AAIRequestLighty {
-
-
- protected Class<? extends AAIDatum> model;
-
- public GenericRequestLighty(Class<? extends AAIDatum> clazz) {
- model = clazz;
- }
-
- @Override
- public String updatePathDataValues(Object resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
-
- String originalPath = null;
- String pathSubstitute = null;
- String resourceName = null;
-
- Annotation[] annotations = model.getAnnotations();
- for(Annotation annotation : annotations) {
- Class<? extends Annotation> anotationType = annotation.annotationType();
- String annotationName = anotationType.getName();
- if("javax.xml.bind.annotation.XmlRootElement".equals(annotationName)){
- XmlRootElement order = (XmlRootElement)annotation;
- resourceName = order.name();
- }
- }
-
- String request_url = getRequestPath(resourceName);
-
- Map<String, String> queryParams = new HashMap<> ();
- if(resourceVersion != null) {
- queryParams.put("resource-version", resourceVersion.toString());
- }
-
- Set<String> uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames());
-
- String[] keys = requestProperties.keySet().toArray(new String[0]);
- for(String key : keys) {
- switch(key) {
- case "cloud-region.cloud-region-id":
- case "entitlement.resource-uuid":
- case "license.resource-uuid":
- case "route-target.route-target-role":
- case "service-capability.vnf-type":
- case "ctag-pool.availability-zone-name":
- continue;
- }
-
- String value = requestProperties.getProperty(key);
- if(key.contains(".")) {
- String[] splitKey = key.split("\\.");
- if("cloud-region".equals(splitKey[0])){
- String cloudRegionId = requestProperties.getProperty("cloud-region.cloud-region-id");
- aaiService.LOGwriteDateTrace("cloud-region-id", cloudRegionId);
- String token = String.format("%s/{%s}/{cloud-region-id}", splitKey[0], splitKey[1] );
- String encoded_owner = encodeQuery(value);
- String encoded_region = encodeQuery(cloudRegionId);
- request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region));
- } else if("entitlement".equals(splitKey[0])){
- String cloudRegionId = requestProperties.getProperty("entitlement.resource-uuid");
- aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId);
- String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] );
- String encoded_owner = encodeQuery(value);
- String encoded_region = encodeQuery(cloudRegionId);
- request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region));
- } else if("license".equals(splitKey[0])){
- String cloudRegionId = requestProperties.getProperty("license.resource-uuid");
- aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId);
- String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] );
- String encoded_owner = encodeQuery(value);
- String encoded_region = encodeQuery(cloudRegionId);
- request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region));
- } else if("route-target".equals(splitKey[0])){
- String cloudRegionId = requestProperties.getProperty("route-target.route-target-role");
- aaiService.LOGwriteDateTrace("route-target-role", cloudRegionId);
- String token = String.format("%s/{%s}/{route-target-role}", splitKey[0], splitKey[1] );
- String encoded_owner = encodeQuery(value);
- String encoded_region = encodeQuery(cloudRegionId);
- request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region));
- } else if("service-capability".equals(splitKey[0])){
- String vnfType = requestProperties.getProperty("service-capability.vnf-type");
- aaiService.LOGwriteDateTrace("vnf-type", vnfType);
- String token = String.format("%s/{%s}/{vnf-type}", splitKey[0], splitKey[1] );
- String encoded_service_type = encodeQuery(value);
- String encoded_vnf_type = encodeQuery(vnfType);
- if("service-capability".equals(resourceName)) {
- request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_service_type, encoded_vnf_type));
- } else if("service-capabilities".equals(resourceName)) {
- queryParams.put("service-type", encoded_service_type);
- queryParams.put("vnf-type", encoded_vnf_type);
- }
- } else if("ctag-pool".equals(splitKey[0])){
- String cloudRegionId = requestProperties.getProperty("ctag-pool.availability-zone-name");
- aaiService.LOGwriteDateTrace("availability-zone-name", cloudRegionId);
- String token = String.format("%s/{%s}/{availability-zone-name}", splitKey[0], splitKey[1] );
- String encoded_owner = encodeQuery(value);
- String encoded_region = encodeQuery(cloudRegionId);
- request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region));
- } else {
- Class<? extends AAIDatum> clazz = getClassFromResource(splitKey[0]);
-
- if(clazz != null) {
- if(clazz == this.model) {
- Field[] fields = this.model.getDeclaredFields();
- Field field = fields[0];
- String fieldName = field.getName();
- XmlElement annotation = field.getAnnotation(XmlElement.class);
- String primaryId = null;
- if(annotation != null) {
- primaryId = annotation.name();
- if("##default".equals(primaryId)) {
- primaryId = fieldName;
- }
- } else {
- primaryId = fieldName;
- }
-
- String token = String.format("%s/{%s}", splitKey[0], primaryId);
-
- if(splitKey[1].equals(primaryId)) {
- String encoded_vnf = encodeQuery(value);
- request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf));
- } else {
- queryParams.put(splitKey[1], encodeQuery(value));
- originalPath = token;
- pathSubstitute = String.format("%s", splitKey[0]);
- }
- } else if(L3Networks.class == this.model) {
- Field[] fields = L3Network.class.getDeclaredFields();
- Field field = fields[0];
- String fieldName = field.getName();
- XmlElement annotation = field.getAnnotation(XmlElement.class);
- String primaryId = annotation.name();
- if("##default".equals(primaryId)) {
- primaryId = fieldName;
- }
-
- String token = String.format("%s/{%s}", splitKey[0], primaryId);
- originalPath = token;
- pathSubstitute = String.format("");
-
- queryParams.put(splitKey[1], encodeQuery(value));
- } else {
- String token = String.format("%s/{%s}", splitKey[0], splitKey[1]);
- String encoded_vnf = encodeQuery(value);
- request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf));
- }
- }
-
- }
- aaiService.LOGwriteDateTrace(splitKey[1], value);
- }
- }
-
- if(originalPath != null && pathSubstitute != null)
- request_url = request_url.replace(originalPath, pathSubstitute);
-
- if(!queryParams.isEmpty()) {
- Joiner.MapJoiner mapJoiner = Joiner.on("&").withKeyValueSeparator("=");
- String queryString = mapJoiner.join(queryParams);
- request_url = String.format("%s?%s", request_url, queryString);
- }
-
- return request_url;
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
- return this.getRequestUrl(method, null);
- }
-
-
- @Override
- public String toJSONString() {
- ObjectMapper mapper = getObjectMapper();
-
- String json_text = null;
- try {
- json_text = mapper.writeValueAsString(requestDatum);
- } catch (JsonProcessingException exc) {
- handleException(this, exc);
- return null;
- }
- return json_text;
- }
-
- @Override
- public String[] getArgsList() {
- String[] args = {};
- return args;
- }
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return model;
- }
-
- public void processRequestPathValues(Map<String, String> nameValues) {
- // identify unique resources
- Set<String> uniqueResources = AAIRequest.extractUniqueResourceSetFromKeys(nameValues.keySet());
-
- String[] arguments = nameValues.keySet().toArray(new String[0]);
- for(String name : arguments) {
- String tmpName = name.replaceAll("-", "_");
- String value = nameValues.get(tmpName);
- if(value != null && !value.isEmpty()) {
- value = value.trim().replace("'", "").replace("$", "").replace("'", "");
- tmpName = name.replaceAll("_", "-");
- this.addRequestProperty(tmpName, value);
- }
- }
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestLighty.java
deleted file mode 100755
index ed79b261b..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestLighty.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import org.onap.aai.inventory.v16.SearchResults;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-
-/**
- * THIS CLASS IS A COPY OF {@link NodesQueryRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class NodesQueryRequestLighty extends AAIRequestLighty {
-
- public static final String NODES_SEARCH_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.nodes";
-
- private final String nodes_search_path;
-
- public static final String NODE_TYPE = "node-type";
- public static final String ENTITY_IDENTIFIER = "entity-identifier";
- public static final String ENTITY_VALUE = "entity-value";
-
-
- public NodesQueryRequestLighty() {
- nodes_search_path = configProperties.getProperty(NODES_SEARCH_PATH);
- }
-
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
-
- String request_url = targetUri+nodes_search_path;
-
- request_url = processPathData(request_url, requestProperties);
-
- if(resourceVersion != null) {
- request_url = request_url +"?resource-version="+resourceVersion;
- }
- URL http_req_url = new URL(request_url);
-
- aaiService.LOGwriteFirstTrace(method, http_req_url.toString());
-
- return http_req_url;
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
- return getRequestUrl(method, null);
- }
-
-
- @Override
- public String toJSONString() {
- ObjectMapper mapper = getObjectMapper();
- SearchResults tenant = (SearchResults)requestDatum;
- String json_text = null;
- try {
- json_text = mapper.writeValueAsString(tenant);
- } catch (JsonProcessingException exc) {
- handleException(this, exc);
- return null;
- }
- return json_text;
- }
-
-
- @Override
- public String[] getArgsList() {
- String[] args = {NODE_TYPE, ENTITY_IDENTIFIER, ENTITY_VALUE};
- return args;
- }
-
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return SearchResults.class;
- }
-
-
- public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException {
-
- String key = ENTITY_IDENTIFIER;
-
- String encoded_vnf = encodeQuery(requestProperties.getProperty(key));
- request_url = request_url.replace("{entity-identifier}", encoded_vnf) ;
- aaiService.LOGwriteDateTrace(ENTITY_IDENTIFIER, requestProperties.getProperty(key));
-
- key = ENTITY_VALUE;
-
- encoded_vnf = encodeQuery(requestProperties.getProperty(key));
- request_url = request_url.replace("{entity-name}", encoded_vnf) ;
- aaiService.LOGwriteDateTrace("entity-name", requestProperties.getProperty(key));
-
- key = NODE_TYPE;
-
- encoded_vnf = encodeQuery(requestProperties.getProperty(key));
- request_url = request_url.replace("{node-type}", encoded_vnf) ;
- aaiService.LOGwriteDateTrace(NODE_TYPE, requestProperties.getProperty(key));
-
- return request_url;
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/PathRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/PathRequestLighty.java
deleted file mode 100755
index 47543d0b2..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/PathRequestLighty.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-
-/**
- * THIS CLASS IS A COPY OF {@link PathRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class PathRequestLighty extends AAIRequestLighty {
-
- private final Class<? extends AAIDatum> classType;
-
- public static final String RESOURCE_PATH = "resource-path";
-
- public PathRequestLighty(Class<?> type) {
- classType = (Class<? extends AAIDatum>)type;
- }
-
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
-
- String request_url = targetUri + "{resource-path}";
-
- String encoded_vnf = requestProperties.getProperty(RESOURCE_PATH);
- request_url = request_url.replace("{resource-path}", encoded_vnf) ;
-
- URL http_req_url = new URL(request_url);
-
- aaiService.LOGwriteFirstTrace(method, http_req_url.toString());
-
- return http_req_url;
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
- return this.getRequestUrl(method, null);
- }
-
-
- @Override
- public String toJSONString() {
- ObjectMapper mapper = getObjectMapper();
- String json_text = null;
- try {
- json_text = mapper.writeValueAsString(classType);
- } catch (JsonProcessingException exc) {
- handleException(this, exc);
- return null;
- }
- return json_text;
- }
-
- @Override
- public String[] getArgsList() {
- String[] args = {RESOURCE_PATH};
- return args;
- }
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return classType;
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipListRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipListRequestLighty.java
deleted file mode 100755
index 03a22e732..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipListRequestLighty.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.List;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.message.BasicNameValuePair;
-import org.onap.aai.inventory.v16.RelationshipList;
-
-/**
- * THIS CLASS IS A COPY OF {@link RelationshipListRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class RelationshipListRequestLighty extends GenericRequestLighty {
-
- public static final String SELFLINK = "selflink";
-
- public RelationshipListRequestLighty(AAIRequestLighty masterRequest) {
- super(RelationshipList.class);
- this.addMasterRequest(masterRequest);
- }
-
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
-
- URL url = super.getRequestUrl(method, null);
- URIBuilder builder = new URIBuilder(url.toURI());
- String newPath = builder.getPath() + "/relationship-list";
- builder.setPath(newPath);
- if(resourceVersion != null) {
- List<NameValuePair> queryList = builder.getQueryParams();
- NameValuePair nvp = new BasicNameValuePair("resourceVersion", resourceVersion);
- queryList.add(nvp);
- }
-
- aaiService.LOGwriteFirstTrace(method, builder.toString());
-
- return builder.build().toURL();
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipRequestLighty.java
deleted file mode 100755
index 6e375d5a9..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipRequestLighty.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.List;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.message.BasicNameValuePair;
-import org.onap.aai.inventory.v16.Relationship;
-
-/**
- * THIS CLASS IS A COPY OF {@link RelationshipRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class RelationshipRequestLighty extends GenericRequestLighty {
-
- public RelationshipRequestLighty(AAIRequestLighty masterRequest) {
- super(Relationship.class);
- this.addMasterRequest(masterRequest);
- }
-
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
-
-
- URL url = super.getRequestUrl(method, null);
- URIBuilder builder = new URIBuilder(url.toURI());
- String newPath = builder.getPath() + "/relationship-list/relationship";
- builder.setPath(newPath);
- if(resourceVersion != null) {
- List<NameValuePair> queryList = builder.getQueryParams();
- NameValuePair nvp = new BasicNameValuePair("resourceVersion", resourceVersion);
- queryList.add(nvp);
- }
-
- aaiService.LOGwriteFirstTrace(method, builder.toString());
-
- return builder.build().toURL();
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/SelfLinkRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/SelfLinkRequestLighty.java
deleted file mode 100755
index aafc993a0..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/SelfLinkRequestLighty.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * @author Rich Tabedzki
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Joiner;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-
-/**
- * THIS CLASS IS A COPY OF {@link SelfLinkRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class SelfLinkRequestLighty extends AAIRequestLighty {
-
- private final Class<? extends AAIDatum> classType;
-
- public static final String SELFLINK = "selflink";
-
- public SelfLinkRequestLighty(Class<?> type) {
- classType = (Class<? extends AAIDatum>)type;
- }
-
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
-
- String request_url = null;
-
- request_url = requestProperties.getProperty(SELFLINK);
- try {
- URI uri = new URI(request_url);
- if(uri.getHost() == null) {
- request_url = targetUri + request_url;
- }
- } catch(Exception exc) {
- LOG.error("SelfLinkRequest.getRequestUrl", exc);
- }
- String query = null;
-
- if(request_url.contains("?")) {
- query = request_url.substring(request_url.indexOf("?"));
- Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
-// String queryString = mapJoiner.join(query);
- } else {
- request_url = request_url + "?depth=1";
- }
-
- URL http_req_url = new URL(request_url);
-
- aaiService.LOGwriteFirstTrace(method, http_req_url.toString());
-
- return http_req_url;
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
- return this.getRequestUrl(method, null);
- }
-
-
- @Override
- public String toJSONString() {
- ObjectMapper mapper = getObjectMapper();
- String json_text = null;
- try {
- json_text = mapper.writeValueAsString(classType);
- } catch (JsonProcessingException exc) {
- handleException(this, exc);
- return null;
- }
- return json_text;
- }
-
- @Override
- public String[] getArgsList() {
- String[] args = {SELFLINK};
- return args;
- }
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return classType;
- }
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/UpdateRequestLighty.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/UpdateRequestLighty.java
deleted file mode 100755
index 312215410..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/UpdateRequestLighty.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-/**
- * The UpdateRequest class provides processing related to update transaction.
- * @author richtabedzki
- */
-
-package org.onap.ccsdk.sli.adaptors.aai;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
-
-/**
- * THIS CLASS IS A COPY OF {@link UpdateRequest} WITH REMOVED OSGi DEPENDENCIES
- */
-public class UpdateRequestLighty extends AAIRequestLighty {
-
- private AAIRequestLighty request;
- private Map<String, String> params;
-
- public UpdateRequestLighty(AAIRequestLighty request, Map<String, String> parms) {
- this.request = request;
- this.params = parms;
- }
-
- @Override
- public URL getRequestUrl(String method, String resourceVersion)
- throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
- return request.getRequestUrl(method, resourceVersion);
- }
-
- @Override
- public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
- return request.getRequestQueryUrl(method);
- }
-
- @Override
- public String toJSONString() {
- updateArrayEntries(params);
- ObjectMapper mapper = AAIService.getObjectMapper();
- String json = null;
-
- try {
- json = mapper.writeValueAsString(params);
- } catch (JsonProcessingException e) {
- LOG.error("Could not convert parameters of " + request.getRequestObject().getClass().getName(), e);
- }
-
- return json;
- }
-
- /**
- *
- * Update array entries.
- * The method converts indexed data entries to an array of values
- *
- * @param data Map containing String:String values representing input data
- */
- private void updateArrayEntries( Map<String, String> data) {
- Set<String> set = data.keySet()
- .stream()
- .filter(s -> s.endsWith("_length"))
- .collect(Collectors.toSet());
-
- for(String lenghtKey : set) {
- String key = lenghtKey.replace("_length", "");
-// String index = data.get(lenghtKey);
- List<String> array = new ArrayList<>();
-
- Set<String> subset = data.keySet()
- .stream()
- .filter(s -> s.startsWith(String.format("%s[",key)))
- .collect(Collectors.toSet());
- for(String subKey : subset) {
- String subValue = data.get(subKey);
- array.add(subValue);
- LOG.trace("{} : {} ", subKey, subValue);
- }
- data.put(key, array.toString());
- data.remove(lenghtKey);
- for(String subKey : subset) {
- data.remove(subKey);
- }
- }
- }
-
- @Override
- public String[] getArgsList() {
- return request.getArgsList();
- }
-
- @Override
- public Class<? extends AAIDatum> getModelClass() {
- return request.getModelClass();
- }
-
- @Override
- public void addRequestProperty(String key, String value) {
- request.requestProperties.put(key, value);
- }
-
- public static String processPathData(String requestUrl, Properties requestProperties) {
-
-// if(request != null) {
-// Class<?> clazz = request.getClass();
-// Method function = null;
-// try {
-// function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass());
-// request_url = (String) function.invoke(null, request_url, requestProperties);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-
-// request.processPathData(request_url, requestProperties);
- return requestUrl;
- }
-
- public void processRequestPathValues(Map<String, String> nameValues) {
- request.processRequestPathValues(nameValues);
- }
-
-}
diff --git a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/lighty/AaaServiceModule.java b/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/lighty/AaaServiceModule.java
deleted file mode 100644
index d3ae452a0..000000000
--- a/aai-service/lighty/src/main/java/org/onap/ccsdk/sli/adaptors/aai/lighty/AaaServiceModule.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * Copyright (c) 2019 PANTHEON.tech s.r.o.
- * ===================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- * OF ANY KIND, either express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END============================================
- *
- */
-package org.onap.ccsdk.sli.adaptors.aai.lighty;
-
-import io.lighty.core.controller.api.AbstractLightyModule;
-import org.onap.ccsdk.sli.adaptors.aai.AAIClientLighty;
-import org.onap.ccsdk.sli.adaptors.aai.AAIServiceLighty;
-import org.onap.ccsdk.sli.adaptors.aai.AAIServiceProviderLighty;
-
-/**
- * The implementation of the {@link io.lighty.core.controller.api.LightyModule} that manages and provides services from
- * the aai-service-provider artifact.
- */
-public class AaaServiceModule extends AbstractLightyModule {
-
- private AAIServiceProviderLighty aaiServiceProvider;
- private AAIServiceLighty aaiService;
-
- @Override
- protected boolean initProcedure() {
- this.aaiServiceProvider = new AAIServiceProviderLighty();
- this.aaiService = new AAIServiceLighty(aaiServiceProvider);
- return true;
- }
-
- @Override
- protected boolean stopProcedure() {
- return true;
- }
-
- public AAIServiceLighty getAAIClient() {
- return aaiService;
- }
-
- // FIXME original blueprint is exposing AAIClient interface but it contains dependencies on AAIRequest which
- // contains dependencies on OSGi - rewrite this AAIRequest into interface or remove the OSGi dependency
- public AAIClientLighty getAAIService() {
- return aaiService;
- }
-
-}
diff --git a/aai-service/pom.xml b/aai-service/pom.xml
index bd24021b4..a2e18c900 100755
--- a/aai-service/pom.xml
+++ b/aai-service/pom.xml
@@ -21,6 +21,5 @@
<module>provider</module>
<module>features</module>
<module>installer</module>
- <module>lighty</module>
</modules>
</project>