From 276f51a97b8c92d7ec38e7032ba13d15e73bcaee Mon Sep 17 00:00:00 2001 From: Damonxue Date: Wed, 20 Nov 2024 12:24:53 +0800 Subject: [PATCH 1/3] support multi namespaces. --- client/apache_shenyu_client/api.py | 63 ++++++++++++++++++------------ 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/client/apache_shenyu_client/api.py b/client/apache_shenyu_client/api.py index 1826ca7..7955050 100644 --- a/client/apache_shenyu_client/api.py +++ b/client/apache_shenyu_client/api.py @@ -24,6 +24,8 @@ 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 @@ def _setup_register_params(self): 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,21 @@ def register_uri(self): "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: + 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 +233,7 @@ def register_metadata(self, **kwargs): 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 +245,15 @@ def register_metadata(self, **kwargs): } 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: + 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 +286,7 @@ def register_discovery_config(self, **kwargs): 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 +310,21 @@ def offline_register(self): "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: + 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 From fa47603a6dd5f33beccaa617ff8dc1f8036c899a Mon Sep 17 00:00:00 2001 From: Damonxue Date: Thu, 21 Nov 2024 13:29:56 +0800 Subject: [PATCH 2/3] change version for python3.7. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 6706cd592bdae920614c9de0828463b2948421f3 Mon Sep 17 00:00:00 2001 From: Damonxue Date: Fri, 29 Nov 2024 15:48:37 +0800 Subject: [PATCH 3/3] enhance --- client/apache_shenyu_client/api.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/apache_shenyu_client/api.py b/client/apache_shenyu_client/api.py index 7955050..1f7de8f 100644 --- a/client/apache_shenyu_client/api.py +++ b/client/apache_shenyu_client/api.py @@ -193,6 +193,8 @@ def register_uri(self): register_flag = False for _url in self.register_uri_list: for _namespace in self.register_namespace_id: + if not _namespace: + continue json_data["namespaceId"] = _namespace res = self._request(_url, json_data) if not res: @@ -246,6 +248,8 @@ def register_metadata(self, **kwargs): register_flag = False for _url in self.register_meta_data_path_list: for _namespace in self.register_namespace_id: + if not _namespace: + continue json_data["namespaceId"] = _namespace res = self._request(_url, json_data) if not res: @@ -316,6 +320,8 @@ def offline_register(self): register_flag = False for _url in self.register_offline_suffix: for _namespace in self.register_namespace_id: + if not _namespace: + continue json_data["namespaceId"] = _namespace res = self._request(_url, json_data) if not res: