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

hefengen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shenyu-client-python.git


The following commit(s) were added to refs/heads/main by this push:
     new 3bc3581  support multi namespaces. (#21)
3bc3581 is described below

commit 3bc35819bf4523509d14254780aba5a89317faf8
Author: DamonXue <damonx...@gmail.com>
AuthorDate: Mon Dec 30 21:22:25 2024 +0800

    support multi namespaces. (#21)
    
    * support multi namespaces.
    
    * change version for python3.7.
    
    * enhance
---
 client/apache_shenyu_client/api.py | 69 ++++++++++++++++++++++++--------------
 requirements.txt                   |  2 +-
 2 files changed, 44 insertions(+), 27 deletions(-)

diff --git a/client/apache_shenyu_client/api.py 
b/client/apache_shenyu_client/api.py
index 1826ca7..1f7de8f 100644
--- a/client/apache_shenyu_client/api.py
+++ b/client/apache_shenyu_client/api.py
@@ -24,6 +24,8 @@ from requests.exceptions import (ReadTimeout, 
RequestException, ConnectTimeout)
 from .config import GatewayConfig, ALL_ENV
 from .exception import (EnvTypeExp, SetUpUriExp, SetUpRegisterExp, 
SetUpGatewayExp, GetRegisterTokenErr)
 
+__all__ = ["GatewayProxy"]
+
 
 class GatewayProxy(object):
 
@@ -32,6 +34,7 @@ class GatewayProxy(object):
     """
     gateway proxy class
     """
+
     def __init__(self):
         self.headers = {"Content-Type": "application/json;charset=UTF-8"}
         self.env = GatewayConfig.uri.get("environment")
@@ -90,6 +93,8 @@ class GatewayProxy(object):
             self.register_token_type = 
GatewayConfig.register.get("register_type")
             self.register_base_servers = 
GatewayConfig.register.get("servers").split(",")
             self.register_namespace_id = 
GatewayConfig.register.get("namespace_id")
+            self.register_namespace_id = self.register_namespace_id.split(";") 
if self.register_namespace_id else [
+                self.SYS_DEFAULT_NAMESPACE_ID]
             self.register_path = "/platform/login"
             self.register_token_servers = [_url + self.register_path for _url 
in self.register_base_servers]
             self.register_username = GatewayConfig.register.get("props", 
{}).get("username")
@@ -181,19 +186,23 @@ class GatewayProxy(object):
             "appName": self.app_name,
             "contextPath": self.context_path,
             "rpcType": self.rpc_type,
-            "namespaceId": self.register_namespace_id or 
self.SYS_DEFAULT_NAMESPACE_ID,
+            "namespaceId": self.register_namespace_id[0],
             "host": self.host,
             "port": self.port
         }
         register_flag = False
         for _url in self.register_uri_list:
-            res = self._request(_url, json_data)
-            if not res:
-                continue
-            else:
-                print("[SUCCESS], register uri success, register data 
is:{}".format(str(json_data)))
-                register_flag = True
-                break
+            for _namespace in self.register_namespace_id:
+                if not _namespace:
+                    continue
+                json_data["namespaceId"] = _namespace
+                res = self._request(_url, json_data)
+                if not res:
+                    continue
+                else:
+                    print("[SUCCESS], register uri success, register data 
is:{}".format(str(json_data)))
+                    register_flag = True
+                    break
         if not register_flag:
             print("[ERROR], register uri fail, app_name is:{}, host is:{}, 
port is:{}".format(self.app_name,
                                                                                
               self.host,
@@ -226,7 +235,7 @@ class GatewayProxy(object):
         json_data = {
             "appName": self.app_name,
             "contextPath": self.context_path,
-            "namespaceId": self.register_namespace_id or 
self.SYS_DEFAULT_NAMESPACE_ID,
+            "namespaceId": self.register_namespace_id[0],
             "path": path,
             "pathDesc": path_desc,
             "rpcType": self.rpc_type,
@@ -238,13 +247,17 @@ class GatewayProxy(object):
         }
         register_flag = False
         for _url in self.register_meta_data_path_list:
-            res = self._request(_url, json_data)
-            if not res:
-                continue
-            else:
-                print("[SUCCESS], register metadata success, register data 
is:{}".format(str(json_data)))
-                register_flag = True
-                break
+            for _namespace in self.register_namespace_id:
+                if not _namespace:
+                    continue
+                json_data["namespaceId"] = _namespace
+                res = self._request(_url, json_data)
+                if not res:
+                    continue
+                else:
+                    print("[SUCCESS], register metadata success, register data 
is:{}".format(str(json_data)))
+                    register_flag = True
+                    break
         if not register_flag:
             print("[ERROR],register metadata fail, app_name:{}, path:{}, 
contextPath:{}".format(self.app_name,
                                                                                
                 path,
@@ -277,7 +290,7 @@ class GatewayProxy(object):
                 break
         if not register_flag:
             print("[ERROR],register discovery config fail, app_name:{}, 
contextPath:{}".format(self.app_name,
-                                                                               
                 self.context_path))
+                                                                               
                self.context_path))
         return register_flag
 
     def offline_register(self):
@@ -301,19 +314,23 @@ class GatewayProxy(object):
             "protocol": self.rpc_type,
             "host": self.host,
             "port": self.port,
-            "namespaceId": self.register_namespace_id | 
self.SYS_DEFAULT_NAMESPACE_ID,
+            "namespaceId": self.register_namespace_id[0],
             "eventType": "OFFLINE"
         }
         register_flag = False
         for _url in self.register_offline_suffix:
-            res = self._request(_url, json_data)
-            if not res:
-                continue
-            else:
-                print("[SUCCESS], offline register success, register data 
is:{}".format(str(json_data)))
-                register_flag = True
-                break
+            for _namespace in self.register_namespace_id:
+                if not _namespace:
+                    continue
+                json_data["namespaceId"] = _namespace
+                res = self._request(_url, json_data)
+                if not res:
+                    continue
+                else:
+                    print("[SUCCESS], offline register success, register data 
is:{}".format(str(json_data)))
+                    register_flag = True
+                    break
         if not register_flag:
             print("[ERROR],offline register fail, app_name:{}, 
contextPath:{}".format(self.app_name,
-                                                                               
        self.context_path))
+                                                                               
       self.context_path))
         return register_flag
diff --git a/requirements.txt b/requirements.txt
index ef487e0..37912b8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1 @@
-requests==2.32.3
\ No newline at end of file
+requests>=2.31.0
\ No newline at end of file

Reply via email to