This is an automated email from the ASF dual-hosted git repository.

dgriffon pushed a commit to branch set-es-password-in-migration
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 1a0556cacff1c5b54641eead86c935b77767d4e1
Author: David Griffon <[email protected]>
AuthorDate: Fri Jul 29 17:03:29 2022 +0200

    UNOMI-583 : add credential support to ES migration data
---
 .../unomi/itests/migration/Migrate16xTo200IT.java   |  2 +-
 .../unomi/shell/migration/MigrationConfig.java      |  4 ++++
 .../unomi/shell/migration/actions/Migrate.java      | 21 ++++++++++++++++++---
 .../unomi/shell/migration/utils/HttpUtils.java      |  7 +++++--
 .../main/resources/org.apache.unomi.migration.cfg   |  2 ++
 5 files changed, 30 insertions(+), 6 deletions(-)

diff --git 
a/itests/src/test/java/org/apache/unomi/itests/migration/Migrate16xTo200IT.java 
b/itests/src/test/java/org/apache/unomi/itests/migration/Migrate16xTo200IT.java
index 1372ba2d7..faf6a87e5 100644
--- 
a/itests/src/test/java/org/apache/unomi/itests/migration/Migrate16xTo200IT.java
+++ 
b/itests/src/test/java/org/apache/unomi/itests/migration/Migrate16xTo200IT.java
@@ -39,7 +39,7 @@ public class Migrate16xTo200IT extends BaseIT {
     public void waitForStartup() throws InterruptedException {
 
         // Restore snapshot from 1.6.x
-        try (CloseableHttpClient httpClient = HttpUtils.initHttpClient(true)) {
+        try (CloseableHttpClient httpClient = HttpUtils.initHttpClient(true, 
null)) {
             // Create snapshot repo
             HttpUtils.executePutRequest(httpClient, 
"http://localhost:9400/_snapshot/snapshots_repository/";, 
resourceAsString("migration/create_snapshots_repository.json"), null);
             // Get snapshot, insure it exists
diff --git 
a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/MigrationConfig.java
 
b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/MigrationConfig.java
index 2e6b99587..da32faba2 100644
--- 
a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/MigrationConfig.java
+++ 
b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/MigrationConfig.java
@@ -38,6 +38,8 @@ import java.util.Map;
 public class MigrationConfig {
 
     public static final String CONFIG_ES_ADDRESS = "esAddress";
+    public static final String CONFIG_ES_LOGIN = "esLogin";
+    public static final String CONFIG_ES_PASSWORD = "esPassword";
     public static final String CONFIG_TRUST_ALL_CERTIFICATES = 
"httpClient.trustAllCertificates";
     public static final String INDEX_PREFIX = "indexPrefix";
     public static final String NUMBER_OF_SHARDS = "number_of_shards";
@@ -49,6 +51,8 @@ public class MigrationConfig {
     static {
         Map<String, MigrationConfigProperty> m = new HashMap<>();
         m.put(CONFIG_ES_ADDRESS, new MigrationConfigProperty("Enter 
ElasticSearch TARGET address (default: http://localhost:9200): ", 
"http://localhost:9200";));
+        m.put(CONFIG_ES_LOGIN, new MigrationConfigProperty("Enter 
ElasticSearch TARGET login (default: none): ", ""));
+        m.put(CONFIG_ES_PASSWORD, new MigrationConfigProperty("Enter 
ElasticSearch TARGET password (default: none): ", ""));
         m.put(CONFIG_TRUST_ALL_CERTIFICATES, new MigrationConfigProperty("We 
need to initialize a HttpClient, do we need to trust all certificates ?", 
null));
         m.put(INDEX_PREFIX, new MigrationConfigProperty("Enter ElasticSearch 
Unomi indices prefix (default: context): ", "context"));
         m.put(NUMBER_OF_SHARDS, new MigrationConfigProperty("Enter 
ElasticSearch index mapping configuration: number_of_shards (default: 3): ", 
"3"));
diff --git 
a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
 
b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
index dd4946d5c..585bd20c6 100644
--- 
a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
+++ 
b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
@@ -19,6 +19,11 @@ package org.apache.unomi.shell.migration.actions;
 import groovy.lang.GroovyClassLoader;
 import groovy.lang.GroovyShell;
 import groovy.util.GroovyScriptEngine;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.karaf.shell.api.action.Action;
 import org.apache.karaf.shell.api.action.Argument;
@@ -42,7 +47,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import static 
org.apache.unomi.shell.migration.MigrationConfig.CONFIG_TRUST_ALL_CERTIFICATES;
+import static org.apache.unomi.shell.migration.MigrationConfig.*;
 
 @Command(scope = "unomi", name = "migrate", description = "This will Migrate 
your data in ES to be compliant with current version. " +
         "It's possible to configure the migration using OSGI configuration 
file: org.apache.unomi.migration.cfg, if no configuration is provided then 
questions will be prompted during the migration process.")
@@ -97,8 +102,18 @@ public class Migrate implements Action {
 
         // reset migration config from previous stored users choices.
         migrationConfig.reset();
-        
-        try (CloseableHttpClient httpClient = 
HttpUtils.initHttpClient(migrationConfig.getBoolean(CONFIG_TRUST_ALL_CERTIFICATES,
 session))) {
+
+        // Handle credentials
+        CredentialsProvider credentialsProvider = null;
+        String login = migrationConfig.getString(CONFIG_ES_LOGIN, session);
+        if (StringUtils.isNotEmpty(login)) {
+            credentialsProvider = new BasicCredentialsProvider();
+            UsernamePasswordCredentials credentials
+                    = new UsernamePasswordCredentials(login, 
migrationConfig.getString(CONFIG_ES_PASSWORD, session));
+            credentialsProvider.setCredentials(AuthScope.ANY, credentials);
+        }
+
+        try (CloseableHttpClient httpClient = 
HttpUtils.initHttpClient(migrationConfig.getBoolean(CONFIG_TRUST_ALL_CERTIFICATES,
 session), credentialsProvider)) {
 
             // Compile scripts
             scripts = parseScripts(scripts, session, httpClient, 
migrationConfig);
diff --git 
a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java
 
b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java
index b5fa7b93d..ec7a8a6dc 100644
--- 
a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java
+++ 
b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java
@@ -17,6 +17,7 @@
 package org.apache.unomi.shell.migration.utils;
 
 import org.apache.http.HttpEntity;
+import org.apache.http.client.CredentialsProvider;
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.methods.*;
 import org.apache.http.config.Registry;
@@ -52,11 +53,13 @@ import java.util.Map;
 public class HttpUtils {
     private static final Logger logger = 
LoggerFactory.getLogger(HttpUtils.class);
 
-    public static CloseableHttpClient initHttpClient(boolean 
trustAllCertificates) throws IOException {
+    public static CloseableHttpClient initHttpClient(boolean 
trustAllCertificates, CredentialsProvider credentialsProvider) throws 
IOException {
         long requestStartTime = System.currentTimeMillis();
 
         HttpClientBuilder httpClientBuilder = 
HttpClients.custom().useSystemProperties();
-
+        if (credentialsProvider != null) {
+            
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
+        }
         if (trustAllCertificates) {
             try {
                 SSLContext sslContext = SSLContext.getInstance("SSL");
diff --git 
a/tools/shell-commands/src/main/resources/org.apache.unomi.migration.cfg 
b/tools/shell-commands/src/main/resources/org.apache.unomi.migration.cfg
index 960020cee..1921ba5cf 100644
--- a/tools/shell-commands/src/main/resources/org.apache.unomi.migration.cfg
+++ b/tools/shell-commands/src/main/resources/org.apache.unomi.migration.cfg
@@ -18,5 +18,7 @@
 # Migration config used for silent migration
 
 # esAddress = http://localhost:9200
+# esLogin = elastic
+# esPassword = password
 # httpClient.trustAllCertificates = true
 # indexPrefix = context
\ No newline at end of file

Reply via email to