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

smolnar82 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new e63e2b0ba KNOX-3398: Enable Iceberg REST catalog SSL only when 
ENCRYPT_ALL_PORTS is set (#1330)
e63e2b0ba is described below

commit e63e2b0ba10614d348478f5e85c38ad6912fd141
Author: Sandor Molnar <[email protected]>
AuthorDate: Tue Jul 28 14:17:00 2026 +0200

    KNOX-3398: Enable Iceberg REST catalog SSL only when ENCRYPT_ALL_PORTS is 
set (#1330)
---
 .../hive/IcebergRestServiceModelGenerator.java     | 16 +++++++++----
 .../model/AbstractServiceModelGeneratorTest.java   |  6 ++++-
 .../hive/IcebergRestServiceModelGeneratorTest.java | 26 +++++++++++++++++++++-
 3 files changed, 42 insertions(+), 6 deletions(-)

diff --git 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGenerator.java
 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGenerator.java
index 46f874ac5..b250cef27 100644
--- 
a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGenerator.java
+++ 
b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGenerator.java
@@ -37,6 +37,7 @@ public class IcebergRestServiceModelGenerator extends 
AbstractServiceModelGenera
   static final String HTTP_PATH = "hive_metastore_catalog_servlet_path";
   static final String REST_CATALOG_ENABLED = "hive_rest_catalog_enabled";
   static final String SSL_ENABLED    = "hive_metastore_enable_ssl";
+  static final String ENCRYPT_ALL_PORTS_ENV_VAR_NAME = "ENCRYPT_ALL_PORTS";
 
   static final String DEFAULT_HTTP_PATH = "icecli";
 
@@ -75,7 +76,9 @@ public class IcebergRestServiceModelGenerator extends 
AbstractServiceModelGenera
                                       ApiRole role,
                                       ApiConfigList roleConfig, 
ApiServiceConfig coreSettingsConfig) throws ApiException {
     String hostname = role.getHostRef().getHostname();
-    boolean sslEnabled = 
Boolean.parseBoolean(getServiceConfigValue(serviceConfig, SSL_ENABLED));
+    final boolean hmsSslEnabled = 
Boolean.parseBoolean(getServiceConfigValue(serviceConfig, SSL_ENABLED));
+    final boolean encryptAllPorts = isEncryptAllPorts();
+    final boolean sslEnabled = hmsSslEnabled && encryptAllPorts;
     String scheme = sslEnabled ? "https" : "http";
     String port = getHttpPort(serviceConfig);
     String httpPath = getHttpPath(serviceConfig);
@@ -86,14 +89,19 @@ public class IcebergRestServiceModelGenerator extends 
AbstractServiceModelGenera
 
     ServiceModel model =
         createServiceModel(String.format(Locale.getDefault(), "%s://%s:%s/%s", 
scheme, hostname, port, httpPath));
-    model.addServiceProperty(HTTP_PORT, getHttpPort(serviceConfig));
-    model.addServiceProperty(HTTP_PATH, getHttpPath(serviceConfig));
+    model.addServiceProperty(HTTP_PORT, port);
+    model.addServiceProperty(HTTP_PATH, httpPath);
     model.addServiceProperty(REST_CATALOG_ENABLED, 
getRestCatalogEnabled(serviceConfig));
-    model.addServiceProperty(SSL_ENABLED, Boolean.toString(sslEnabled));
+    model.addServiceProperty(SSL_ENABLED, Boolean.toString(hmsSslEnabled));
+    model.addServiceProperty(ENCRYPT_ALL_PORTS_ENV_VAR_NAME, 
Boolean.toString(encryptAllPorts));
 
     return model;
   }
 
+  boolean isEncryptAllPorts() {
+    return Boolean.parseBoolean(System.getenv(ENCRYPT_ALL_PORTS_ENV_VAR_NAME));
+  }
+
   protected String getHttpPort(ApiServiceConfig serviceConfig) {
     return getServiceConfigValue(serviceConfig, HTTP_PORT);
   }
diff --git 
a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java
 
b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java
index efa3445fe..807194d05 100644
--- 
a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java
+++ 
b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java
@@ -79,9 +79,13 @@ public abstract class AbstractServiceModelGeneratorTest 
extends AbstractCMDiscov
 
 
   protected ServiceModel createServiceModel(Map<String, String> serviceConfig, 
Map<String, String> roleConfig) {
+    return createServiceModel(newGenerator(), serviceConfig, roleConfig);
+  }
+
+  protected ServiceModel createServiceModel(ServiceModelGenerator generator, 
Map<String, String> serviceConfig, Map<String, String> roleConfig) {
     ServiceModel model = null;
     try {
-      model = 
newGenerator().generateService(createApiServiceMock(getServiceType()),
+      model = generator.generateService(createApiServiceMock(getServiceType()),
                                              
createApiServiceConfigMock(serviceConfig),
                                              createApiRoleMock(getRoleType()),
                                              
createApiConfigListMock(roleConfig),
diff --git 
a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGeneratorTest.java
 
b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGeneratorTest.java
index 1de14e6b2..04c39edd2 100644
--- 
a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGeneratorTest.java
+++ 
b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hive/IcebergRestServiceModelGeneratorTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.knox.gateway.topology.discovery.cm.model.hive;
 
+import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
 import org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator;
 import 
org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelGeneratorTest;
 import org.junit.Test;
@@ -24,6 +25,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -54,6 +56,7 @@ public class IcebergRestServiceModelGeneratorTest extends 
AbstractServiceModelGe
     serviceConfig.put(IcebergRestServiceModelGenerator.HTTP_PATH, "icecli");
     serviceConfig.put(IcebergRestServiceModelGenerator.REST_CATALOG_ENABLED, 
"true");
     serviceConfig.put(IcebergRestServiceModelGenerator.SSL_ENABLED, "false");
+    
serviceConfig.put(IcebergRestServiceModelGenerator.ENCRYPT_ALL_PORTS_ENV_VAR_NAME,
 "false");
 
     final Map<String, String> roleConfig = Collections.emptyMap();
 
@@ -62,15 +65,36 @@ public class IcebergRestServiceModelGeneratorTest extends 
AbstractServiceModelGe
 
   @Test
   public void testServiceModelSslEnabled() {
+    testServiceModelSsl(true);
+  }
+
+  @Test
+  public void testServiceModelSslDisabledWhenEncryptionDisabled() {
+    testServiceModelSsl(false);
+  }
+
+  private void testServiceModelSsl(boolean encryptionEnabled) {
     final Map<String, String> serviceConfig = new HashMap<>();
     serviceConfig.put(IcebergRestServiceModelGenerator.HTTP_PORT, "8091");
     serviceConfig.put(IcebergRestServiceModelGenerator.HTTP_PATH, "icecli2");
     serviceConfig.put(IcebergRestServiceModelGenerator.REST_CATALOG_ENABLED, 
"false");
     serviceConfig.put(IcebergRestServiceModelGenerator.SSL_ENABLED, "true");
+    
serviceConfig.put(IcebergRestServiceModelGenerator.ENCRYPT_ALL_PORTS_ENV_VAR_NAME,
 Boolean.toString(encryptionEnabled));
 
     final Map<String, String> roleConfig = Collections.emptyMap();
 
-    validateServiceModel(createServiceModel(serviceConfig, roleConfig), 
serviceConfig, roleConfig);
+    final ServiceModel model = createServiceModel(new 
IcebergRestServiceModelGenerator() {
+      @Override
+      boolean isEncryptAllPorts() {
+        return encryptionEnabled;
+      }
+    }, serviceConfig, roleConfig);
+
+    validateServiceModel(model, serviceConfig, roleConfig);
+
+    // HTTPS is only used when HMS SSL is enabled AND all ports are encrypted.
+    final String expectedScheme = encryptionEnabled ? "https" : "http";
+    assertEquals(expectedScheme + "://localhost:8091/icecli2", 
model.getServiceUrl());
   }
 
   @Override

Reply via email to