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 <[email protected]>
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