support clear text/jetty obfuscated password
[aai/search-data-service.git] / src / main / java / org / onap / aai / sa / searchdbabstraction / elasticsearch / dao / ElasticSearchHttpController.java
index a0b72f7..759c997 100644 (file)
@@ -53,8 +53,8 @@ import java.util.Optional;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.ws.rs.HttpMethod;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.Response.Status.Family;
 import javax.ws.rs.core.UriBuilder;
 import org.eclipse.jetty.http.HttpStatus;
 import org.json.simple.JSONArray;
@@ -128,18 +128,21 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
             "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n";
     private static final String BULK_DELETE_TEMPLATE =
             "{ \"delete\": { \"_index\": \"%s\", \"_type\": \"%s\", \"_id\": \"%s\", \"_version\":\"%s\"}}\n";
+    public final static String APPLICATION_XND_JSON_TYPE = new MediaType("application", "x-ndjson").toString();
 
     private final ElasticSearchConfig config;
 
     protected AnalysisConfiguration analysisConfig;
 
-
     public ElasticSearchHttpController(ElasticSearchConfig config) {
         this.config = config;
         analysisConfig = new AnalysisConfiguration();
 
         String rootUrl = null;
         try {
+            if ("https".equals(config.getUriScheme())) {
+                new ElasticSearchHttpsController(config);
+            }
             rootUrl = buildUrl(createUriBuilder("")).toString();
             logger.info(SearchDbMsgs.ELASTIC_SEARCH_CONNECTION_ATTEMPT, rootUrl);
             checkConnection();
@@ -500,7 +503,10 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
                 conn = (HttpURLConnection) buildUrl(createUriBuilder("_bulk")).openConnection();
                 conn.setRequestMethod(HttpMethod.PUT);
                 conn.setDoOutput(true);
-                conn.setRequestProperty(CONTENT_TYPE, APPLICATION_FORM_URLENCODED);
+                conn.setRequestProperty(CONTENT_TYPE, APPLICATION_XND_JSON_TYPE);
+                if(config.useAuth()){
+                       conn.setRequestProperty("Authorization", config.getAuthValue());
+                }
                 conn.setRequestProperty("Connection", "Close");
 
             } catch (IOException e) {
@@ -641,11 +647,8 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
         MdcOverride override = getStartTime(new MdcOverride());
 
         HttpURLConnection conn = createConnection(url, HttpMethod.PUT);
-
-
         attachDocument(conn, document);
 
-
         opResult = getOperationResult(conn);
         buildDocumentResult(opResult, indexName);
 
@@ -732,6 +735,9 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
             conn = (HttpURLConnection) url.openConnection();
             conn.setRequestProperty(CONTENT_TYPE, APPLICATION_JSON);
             conn.setDoOutput(true);
+            if (config.useAuth()) {
+                conn.setRequestProperty("Authorization", config.getAuthValue());
+            }
         } catch (IOException e) {
             shutdownConnection(conn);
             throw new DocumentStoreOperationException("Failed to open connection to URL " + url, e);
@@ -759,7 +765,7 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
 
         InputStream inputStream = null;
 
-        if (!isSuccessCode(resultCode)) {
+        if (!ApiUtils.isSuccessStatusCode(resultCode)) {
             inputStream = conn.getErrorStream();
         } else {
             try {
@@ -842,11 +848,7 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
     }
 
     private boolean isSuccess(OperationResult result) {
-        return isSuccessCode(result.getResultCode());
-    }
-
-    private boolean isSuccessCode(int statusCode) {
-        return Family.familyOf(statusCode).equals(Family.SUCCESSFUL);
+        return ApiUtils.isSuccessStatusCode(result.getResultCode());
     }
 
     private UriBuilder createUriBuilder(String path, String... paths) {
@@ -857,7 +859,7 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
         builder.host(config.getIpAddress());
         String port = Optional.ofNullable(config.getHttpPort()).orElse("0");
         builder.port(Integer.valueOf(port));
-        builder.scheme("http");
+        builder.scheme(config.getUriScheme());
         return builder;
     }
 
@@ -1216,7 +1218,7 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
 
             // Increment the operation counts.
             totalOps++;
-            if (isSuccessCode(item.operationStatus().getStatus())) {
+            if (ApiUtils.isSuccessStatusCode(item.operationStatus().getStatus())) {
                 totalSuccess++;
             } else {
                 totalFails++;
@@ -1395,7 +1397,8 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
         metricsLogger.info(message,
                 new LogFields() //
                         .setField(LogLine.DefinedFields.RESPONSE_CODE, operationResult.getResultCode())
-                        .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, operationResult.getResult()),
+                        .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, operationResult.getResult())
+                        .setField(LogLine.DefinedFields.SERVER_IP, "ElasticHost-"+config.getIpAddress()),
                 override, args);
     }
 }