Implement client authentication to ElasticSearch
[aai/search-data-service.git] / src / main / java / org / onap / aai / sa / searchdbabstraction / elasticsearch / dao / ElasticSearchHttpController.java
index a0b72f7..6087488 100644 (file)
@@ -54,7 +54,6 @@ import java.util.Properties;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.ws.rs.HttpMethod;
 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;
@@ -133,13 +132,15 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
 
     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();
@@ -641,11 +642,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 +730,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 +760,7 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
 
         InputStream inputStream = null;
 
-        if (!isSuccessCode(resultCode)) {
+        if (!ApiUtils.isSuccessStatusCode(resultCode)) {
             inputStream = conn.getErrorStream();
         } else {
             try {
@@ -842,11 +843,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 +854,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 +1213,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++;