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

eladkal pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 30524f85c44 make hive cli `zooKeeperNamespace` and `ssl` parameters 
configurable (#63193)
30524f85c44 is described below

commit 30524f85c44a839aa9cabcec05cd61ead8045692
Author: Elad Kalif <[email protected]>
AuthorDate: Mon Mar 9 18:45:38 2026 +0200

    make hive cli `zooKeeperNamespace` and `ssl` parameters configurable 
(#63193)
    
    * make hive cli zooKeeperNamespace and Ssl parameters configurable
    
    * fix static checks
    
    * Update 
providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py
    
    Co-authored-by: GPK <[email protected]>
    
    * fix tests
    
    ---------
    
    Co-authored-by: romsharon98 <[email protected]>
    Co-authored-by: Jarek Potiuk <[email protected]>
    Co-authored-by: GPK <[email protected]>
---
 providers/apache/hive/docs/connections/hive_cli.rst          |  6 ++++++
 .../hive/src/airflow/providers/apache/hive/hooks/hive.py     | 10 +++++++++-
 .../apache/hive/tests/unit/apache/hive/hooks/test_hive.py    | 12 ++++++++----
 3 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/providers/apache/hive/docs/connections/hive_cli.rst 
b/providers/apache/hive/docs/connections/hive_cli.rst
index 5e88df971d9..00807a07502 100644
--- a/providers/apache/hive/docs/connections/hive_cli.rst
+++ b/providers/apache/hive/docs/connections/hive_cli.rst
@@ -77,6 +77,12 @@ High Availability (optional)
     Specify as ``True`` if you want to connect to a Hive installation running 
in high
     availability mode. Specify host accordingly.
 
+Ssl (optional)
+    Specify as ``True`` to enable SSL for your high availability connection.
+
+Zoo Keeper Namespace (optional)
+    Zoo keeper namespace for high availability.
+
 
 When specifying the connection in environment variable you should specify
 it using URI syntax.
diff --git 
a/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py 
b/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py
index 5745c5e4a61..efa0397c0d7 100644
--- a/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py
+++ b/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py
@@ -140,6 +140,10 @@ class HiveCliHook(BaseHook):
                 lazy_gettext("Principal"), widget=BS3TextFieldWidget(), 
default="hive/[email protected]"
             ),
             "high_availability": BooleanField(lazy_gettext("High Availability 
mode"), default=False),
+            "ssl": BooleanField(lazy_gettext("Ssl"), default=True),
+            "zoo_keeper_namespace": StringField(
+                lazy_gettext("Zoo Keeper Namespace"), 
widget=BS3TextFieldWidget(), default="hiveserver2"
+            ),
         }
 
     @classmethod
@@ -188,7 +192,11 @@ class HiveCliHook(BaseHook):
                 if self.high_availability:
                     if not jdbc_url.endswith(";"):
                         jdbc_url += ";"
-                    jdbc_url += 
"serviceDiscoveryMode=zooKeeper;ssl=true;zooKeeperNamespace=hiveserver2"
+                    ssl = conn.extra_dejson.get("ssl", True)
+                    zoo_keeper_namespace = 
conn.extra_dejson.get("zoo_keeper_namespace", "hiveserver2")
+                    jdbc_url += (
+                        
f"serviceDiscoveryMode=zooKeeper;ssl={ssl};zooKeeperNamespace={zoo_keeper_namespace}"
+                    )
             elif self.auth:
                 jdbc_url += ";auth=" + self.auth
 
diff --git a/providers/apache/hive/tests/unit/apache/hive/hooks/test_hive.py 
b/providers/apache/hive/tests/unit/apache/hive/hooks/test_hive.py
index beb82a926b0..94a573a2259 100644
--- a/providers/apache/hive/tests/unit/apache/hive/hooks/test_hive.py
+++ b/providers/apache/hive/tests/unit/apache/hive/hooks/test_hive.py
@@ -1023,18 +1023,22 @@ class TestHiveCli:
         [
             (
                 {"high_availability": "true"},
-                
"serviceDiscoveryMode=zooKeeper;ssl=true;zooKeeperNamespace=hiveserver2",
+                
"serviceDiscoveryMode=zooKeeper;ssl=True;zooKeeperNamespace=hiveserver2",
             ),
             (
                 {"high_availability": "false"},
-                
"serviceDiscoveryMode=zooKeeper;ssl=true;zooKeeperNamespace=hiveserver2",
+                
"serviceDiscoveryMode=zooKeeper;ssl=True;zooKeeperNamespace=hiveserver2",
             ),
-            ({}, 
"serviceDiscoveryMode=zooKeeper;ssl=true;zooKeeperNamespace=hiveserver2"),
+            (
+                {"high_availability": "true", "ssl": "false", 
"zoo_keeper_namespace": "custom_hive_server"},
+                
"serviceDiscoveryMode=zooKeeper;ssl=false;zooKeeperNamespace=custom_hive_server",
+            ),
+            ({}, 
"serviceDiscoveryMode=zooKeeper;ssl=True;zooKeeperNamespace=hiveserver2"),
             # with proxy user
             (
                 {"proxy_user": "a_user_proxy", "high_availability": "true"},
                 "hive.server2.proxy.user=a_user_proxy;"
-                
"serviceDiscoveryMode=zooKeeper;ssl=true;zooKeeperNamespace=hiveserver2",
+                
"serviceDiscoveryMode=zooKeeper;ssl=True;zooKeeperNamespace=hiveserver2",
             ),
         ],
     )

Reply via email to