From 43b219a89a9f9bcb6e6c1a46816f5d33cca7bf54 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:04:40 -0400 Subject: [PATCH 01/11] chore: print tests --- granica/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/granica/__init__.py b/granica/__init__.py index 8d7b807..c0432df 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -88,6 +88,9 @@ def __init__(self): self.events.register_last("before-send.s3", self.bolt_router.send) def client(self, *args, **kwargs): + kwargs.get("single_endpoint_mode") + print("single endpoint mode:") + print(kwargs.get("single_endpoint_mode") if kwargs.get("service_name") == "s3" or "s3" in args: kwargs["config"] = self._merge_bolt_config(kwargs.get("config")) return self._session.create_client(*args, **kwargs) From 1f4d942d382c4415c48b643f668f7bbdd1f2601e Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:06:07 -0400 Subject: [PATCH 02/11] chore: fix typo --- granica/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/granica/__init__.py b/granica/__init__.py index c0432df..8703c04 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -90,7 +90,7 @@ def __init__(self): def client(self, *args, **kwargs): kwargs.get("single_endpoint_mode") print("single endpoint mode:") - print(kwargs.get("single_endpoint_mode") + print(kwargs.get("single_endpoint_mode")) if kwargs.get("service_name") == "s3" or "s3" in args: kwargs["config"] = self._merge_bolt_config(kwargs.get("config")) return self._session.create_client(*args, **kwargs) From a6e557f0e171f569c77080705fd8116a12a94dc0 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:07:32 -0400 Subject: [PATCH 03/11] chore: try session --- granica/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/granica/__init__.py b/granica/__init__.py index 8703c04..2eed98e 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -22,7 +22,7 @@ # Override Session Class class Session(Boto3Session): - def __init__(self): + def __init__(self, single_endpoint_mode=False): super(Session, self).__init__() custom_domain = environ.get("GRANICA_CUSTOM_DOMAIN") From c23c76043caa03c94e57271cdcaaeead520f1ddd Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:10:38 -0400 Subject: [PATCH 04/11] chore: pop after creation --- granica/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/granica/__init__.py b/granica/__init__.py index 2eed98e..04a88c7 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -91,6 +91,7 @@ def client(self, *args, **kwargs): kwargs.get("single_endpoint_mode") print("single endpoint mode:") print(kwargs.get("single_endpoint_mode")) + kwargs.pop("single_endpoint_mode") if kwargs.get("service_name") == "s3" or "s3" in args: kwargs["config"] = self._merge_bolt_config(kwargs.get("config")) return self._session.create_client(*args, **kwargs) From 27acb8465270b59b3b7bb85e8d2a996c5bb1f988 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:41:10 -0400 Subject: [PATCH 05/11] chore: stuff --- granica/__init__.py | 9 +++++---- granica/bolt_router.py | 3 +++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/granica/__init__.py b/granica/__init__.py index 04a88c7..52b9ca5 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -88,12 +88,13 @@ def __init__(self, single_endpoint_mode=False): self.events.register_last("before-send.s3", self.bolt_router.send) def client(self, *args, **kwargs): - kwargs.get("single_endpoint_mode") - print("single endpoint mode:") - print(kwargs.get("single_endpoint_mode")) - kwargs.pop("single_endpoint_mode") if kwargs.get("service_name") == "s3" or "s3" in args: kwargs["config"] = self._merge_bolt_config(kwargs.get("config")) + single_endpoint_mode = kwargs.get("single_endpoint_mode", False) + kwargs["config"]["single_endpoint_mode"] = single_endpoint_mode + kwargs.pop("single_endpoint_mode", None) + self.bolt_router.single_endpoint_mode = single_endpoint_mode + return self._session.create_client(*args, **kwargs) else: return self._session.create_client(*args, **kwargs) diff --git a/granica/bolt_router.py b/granica/bolt_router.py index 6cb964b..87b9762 100755 --- a/granica/bolt_router.py +++ b/granica/bolt_router.py @@ -265,6 +265,8 @@ def __init__( for _ in range(4) ) + self.single_endpoint_mode = False + if update_interval > 0: @async_function @@ -279,6 +281,7 @@ def update_endpoints(): def send(self, *args, **kwargs): # Dispatches to the configured Bolt scheme and host. + print("SINGLE ENDPOINT MODE: {}".format(self.single_endpoint_mode)) prepared_request = kwargs["request"] incoming_request = copy.deepcopy(prepared_request) _, _, path, query, fragment = urlsplit(prepared_request.url) From 1fdeaae21b54892472a44d14e9a132dfca811836 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:42:10 -0400 Subject: [PATCH 06/11] chore: no config --- granica/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/granica/__init__.py b/granica/__init__.py index 52b9ca5..021b031 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -91,7 +91,6 @@ def client(self, *args, **kwargs): if kwargs.get("service_name") == "s3" or "s3" in args: kwargs["config"] = self._merge_bolt_config(kwargs.get("config")) single_endpoint_mode = kwargs.get("single_endpoint_mode", False) - kwargs["config"]["single_endpoint_mode"] = single_endpoint_mode kwargs.pop("single_endpoint_mode", None) self.bolt_router.single_endpoint_mode = single_endpoint_mode From d7c2707980db5a9d7c51d09d2d7177677fc6da62 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:45:09 -0400 Subject: [PATCH 07/11] feat: single endpoint mode support --- granica/__init__.py | 8 ++++++++ granica/bolt_router.py | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/granica/__init__.py b/granica/__init__.py index 021b031..a6d8e2e 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -94,6 +94,14 @@ def client(self, *args, **kwargs): kwargs.pop("single_endpoint_mode", None) self.bolt_router.single_endpoint_mode = single_endpoint_mode + if single_endpoint_mode: + if kwargs.get("crunch_endpoint", False): + raise ValueError( + "single_endpoint_mode is True but crunch_endpoint is not provided" + ) + else: + self.bolt_router.crunch_endpoint = kwargs.get("crunch_endpoint") + return self._session.create_client(*args, **kwargs) else: return self._session.create_client(*args, **kwargs) diff --git a/granica/bolt_router.py b/granica/bolt_router.py index 87b9762..c5ed12d 100755 --- a/granica/bolt_router.py +++ b/granica/bolt_router.py @@ -266,6 +266,7 @@ def __init__( ) self.single_endpoint_mode = False + self.crunch_endpoint = None if update_interval > 0: @@ -281,7 +282,6 @@ def update_endpoints(): def send(self, *args, **kwargs): # Dispatches to the configured Bolt scheme and host. - print("SINGLE ENDPOINT MODE: {}".format(self.single_endpoint_mode)) prepared_request = kwargs["request"] incoming_request = copy.deepcopy(prepared_request) _, _, path, query, fragment = urlsplit(prepared_request.url) @@ -357,6 +357,9 @@ def _get_endpoints(self): raise e def _select_endpoint(self, method): + if self.single_endpoint_mode: + return self.crunch_endpoint + preferred_order = ( self.PREFERRED_READ_ENDPOINT_ORDER if method in {"GET", "HEAD"} From b3a48e40bf63da56537ceca47964865a0fa9672e Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:46:10 -0400 Subject: [PATCH 08/11] fix: condition --- granica/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/granica/__init__.py b/granica/__init__.py index a6d8e2e..56c3b18 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -95,7 +95,7 @@ def client(self, *args, **kwargs): self.bolt_router.single_endpoint_mode = single_endpoint_mode if single_endpoint_mode: - if kwargs.get("crunch_endpoint", False): + if not kwargs.get("crunch_endpoint", False): raise ValueError( "single_endpoint_mode is True but crunch_endpoint is not provided" ) From 4ff659153ca3dc71a460ecde5d5f93d0605faf55 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:47:55 -0400 Subject: [PATCH 09/11] feat: cleanup kwargs --- granica/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/granica/__init__.py b/granica/__init__.py index 56c3b18..15afbe4 100755 --- a/granica/__init__.py +++ b/granica/__init__.py @@ -91,7 +91,6 @@ def client(self, *args, **kwargs): if kwargs.get("service_name") == "s3" or "s3" in args: kwargs["config"] = self._merge_bolt_config(kwargs.get("config")) single_endpoint_mode = kwargs.get("single_endpoint_mode", False) - kwargs.pop("single_endpoint_mode", None) self.bolt_router.single_endpoint_mode = single_endpoint_mode if single_endpoint_mode: @@ -102,6 +101,9 @@ def client(self, *args, **kwargs): else: self.bolt_router.crunch_endpoint = kwargs.get("crunch_endpoint") + kwargs.pop("single_endpoint_mode", None) + kwargs.pop("crunch_endpoint", None) + return self._session.create_client(*args, **kwargs) else: return self._session.create_client(*args, **kwargs) From 1b07d9ef5dfa8a1730b00c50173a174750225149 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 12:55:45 -0400 Subject: [PATCH 10/11] feat: debug --- granica/bolt_router.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/granica/bolt_router.py b/granica/bolt_router.py index c5ed12d..ce82d76 100755 --- a/granica/bolt_router.py +++ b/granica/bolt_router.py @@ -285,7 +285,11 @@ def send(self, *args, **kwargs): prepared_request = kwargs["request"] incoming_request = copy.deepcopy(prepared_request) _, _, path, query, fragment = urlsplit(prepared_request.url) + print("selecting endpoint") host = self._select_endpoint(prepared_request.method) + print("selected endpoint") + print(host) + print(host == self.crunch_endpoint) if self._scheme == "http": host = host + ":9000" From faff1d20e244d1254dae432080bbb657c47305d5 Mon Sep 17 00:00:00 2001 From: Kote Date: Fri, 3 Nov 2023 13:06:43 -0400 Subject: [PATCH 11/11] chore: rm debug prints --- granica/bolt_router.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/granica/bolt_router.py b/granica/bolt_router.py index ce82d76..c5ed12d 100755 --- a/granica/bolt_router.py +++ b/granica/bolt_router.py @@ -285,11 +285,7 @@ def send(self, *args, **kwargs): prepared_request = kwargs["request"] incoming_request = copy.deepcopy(prepared_request) _, _, path, query, fragment = urlsplit(prepared_request.url) - print("selecting endpoint") host = self._select_endpoint(prepared_request.method) - print("selected endpoint") - print(host) - print(host == self.crunch_endpoint) if self._scheme == "http": host = host + ":9000"