sovereign 1.0.0b108__tar.gz → 1.0.0b109__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sovereign might be problematic. Click here for more details.
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/PKG-INFO +1 -1
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/pyproject.toml +1 -1
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/statistics.py +3 -21
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/views/discovery.py +15 -5
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/LICENSE.txt +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/README.md +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/app.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/cache.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/constants.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/context.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/dynamic_config/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/dynamic_config/deser.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/dynamic_config/loaders.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/error_info.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/logging/access_logger.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/logging/application_logger.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/logging/base_logger.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/logging/bootstrapper.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/logging/types.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/middlewares.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/modifiers/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/modifiers/lib.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/rendering.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/response_class.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/schemas.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/server.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/sources/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/sources/file.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/sources/inline.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/sources/lib.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/sources/poller.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/static/node_expression.js +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/static/panel.js +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/static/sass/style.scss +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/static/style.css +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/templates/base.html +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/templates/err.html +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/templates/resources.html +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/testing/loaders.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/testing/modifiers.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/tracing.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/auth.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/crypto.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/aes_gcm_cipher.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/base_cipher.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/disabled_cipher.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/fernet_cipher.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/dictupdate.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/eds.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/entry_point_loader.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/mock.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/resources.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/templates.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/timer.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/version_info.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/weighted_clusters.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/views/__init__.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/views/api.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/views/crypto.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/views/healthchecks.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/views/interface.py +0 -0
- {sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/worker.py +0 -0
|
@@ -3,15 +3,12 @@ from typing import Optional, Any, Callable, Dict
|
|
|
3
3
|
from functools import wraps
|
|
4
4
|
from sovereign.schemas import config as sovereign_config
|
|
5
5
|
|
|
6
|
-
emitted: Dict[str, Any] = dict()
|
|
7
|
-
|
|
8
6
|
STATSD: Dict[str, Optional["StatsDProxy"]] = {"instance": None}
|
|
9
7
|
|
|
10
8
|
|
|
11
9
|
class StatsDProxy:
|
|
12
10
|
def __init__(self, statsd_instance: Optional[Any] = None) -> None:
|
|
13
11
|
self.statsd = statsd_instance
|
|
14
|
-
self.emitted = emitted
|
|
15
12
|
|
|
16
13
|
def __getattr__(self, item: str) -> Any:
|
|
17
14
|
if self.statsd is not None:
|
|
@@ -23,14 +20,9 @@ class StatsDProxy:
|
|
|
23
20
|
|
|
24
21
|
def do_nothing(self, *args: Any, **kwargs: Any) -> None:
|
|
25
22
|
k = args[0]
|
|
26
|
-
emitted[k] = emitted.setdefault(k, 0) + 1
|
|
27
23
|
|
|
28
24
|
|
|
29
25
|
class StatsdNoop:
|
|
30
|
-
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
|
31
|
-
k = args[0]
|
|
32
|
-
emitted[k] = emitted.setdefault(k, 0) + 1
|
|
33
|
-
|
|
34
26
|
def __enter__(self): # type: ignore
|
|
35
27
|
return self
|
|
36
28
|
|
|
@@ -41,7 +33,6 @@ class StatsdNoop:
|
|
|
41
33
|
@wraps(func)
|
|
42
34
|
def wrapped(*args: Any, **kwargs: Any): # type: ignore
|
|
43
35
|
return func(*args, **kwargs)
|
|
44
|
-
|
|
45
36
|
return wrapped
|
|
46
37
|
|
|
47
38
|
|
|
@@ -51,18 +42,9 @@ def configure_statsd() -> StatsDProxy:
|
|
|
51
42
|
config = sovereign_config.statsd
|
|
52
43
|
try:
|
|
53
44
|
from datadog import DogStatsd
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
super()._report(*args, **kwargs)
|
|
58
|
-
# Capture the metric name and increment its count for debugging
|
|
59
|
-
if metric := kwargs.get("metric"):
|
|
60
|
-
self.emitted: Dict[str, Any] = dict()
|
|
61
|
-
self.emitted[metric] = self.emitted.setdefault(metric, 0) + 1
|
|
62
|
-
|
|
63
|
-
module: Optional[CustomStatsd]
|
|
64
|
-
module = CustomStatsd()
|
|
65
|
-
if config.enabled:
|
|
45
|
+
module: Optional[DogStatsd]
|
|
46
|
+
module = DogStatsd()
|
|
47
|
+
if config.enabled and module:
|
|
66
48
|
module.host = config.host
|
|
67
49
|
module.port = config.port
|
|
68
50
|
module.namespace = config.namespace
|
|
@@ -10,8 +10,17 @@ from sovereign.schemas import (
|
|
|
10
10
|
)
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
def
|
|
14
|
-
|
|
13
|
+
def response_headers(
|
|
14
|
+
discovery_request: DiscoveryRequest, response: cache.Entry, xds: str
|
|
15
|
+
) -> dict[str, str]:
|
|
16
|
+
return {
|
|
17
|
+
"X-Sovereign-Client-Build": discovery_request.envoy_version,
|
|
18
|
+
"X-Sovereign-Client-Version": discovery_request.version_info,
|
|
19
|
+
"X-Sovereign-Requested-Resources": ",".join(discovery_request.resource_names)
|
|
20
|
+
or "all",
|
|
21
|
+
"X-Sovereign-Requested-Type": xds,
|
|
22
|
+
"X-Sovereign-Response-Version": response.version,
|
|
23
|
+
}
|
|
15
24
|
|
|
16
25
|
|
|
17
26
|
router = APIRouter()
|
|
@@ -51,11 +60,12 @@ async def discovery_response(
|
|
|
51
60
|
XDS_CLIENT_VERSION=xds_req.version_info,
|
|
52
61
|
XDS_SERVER_VERSION=entry.version,
|
|
53
62
|
)
|
|
63
|
+
headers = response_headers(xds_req, entry, xds_type)
|
|
54
64
|
if entry.len == 0:
|
|
55
|
-
return Response(status_code=404)
|
|
65
|
+
return Response(status_code=404, headers=headers)
|
|
56
66
|
if entry.version == xds_req.version_info:
|
|
57
|
-
return
|
|
58
|
-
return Response(entry.text, media_type="application/json")
|
|
67
|
+
return Response(status_code=304, headers=headers)
|
|
68
|
+
return Response(entry.text, media_type="application/json", headers=headers)
|
|
59
69
|
|
|
60
70
|
if entry := await cache.blocking_read(xds_req):
|
|
61
71
|
return handle_response(entry)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/aes_gcm_cipher.py
RENAMED
|
File without changes
|
{sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/base_cipher.py
RENAMED
|
File without changes
|
{sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/disabled_cipher.py
RENAMED
|
File without changes
|
{sovereign-1.0.0b108 → sovereign-1.0.0b109}/src/sovereign/utils/crypto/suites/fernet_cipher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|