sovereign 1.0.0a4__py3-none-any.whl → 1.0.0b148__py3-none-any.whl
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/__init__.py +2 -2
- sovereign/app.py +3 -6
- sovereign/cache/__init__.py +12 -85
- sovereign/cache/backends/__init__.py +1 -1
- sovereign/cache/backends/s3.py +6 -24
- sovereign/cache/filesystem.py +5 -6
- sovereign/cache/types.py +0 -2
- sovereign/configuration.py +8 -42
- sovereign/context.py +9 -8
- sovereign/dynamic_config/__init__.py +4 -3
- sovereign/dynamic_config/deser.py +1 -1
- sovereign/dynamic_config/loaders.py +3 -3
- sovereign/error_info.py +3 -2
- sovereign/events.py +3 -3
- sovereign/logging/access_logger.py +1 -1
- sovereign/logging/application_logger.py +1 -1
- sovereign/logging/bootstrapper.py +1 -1
- sovereign/modifiers/lib.py +1 -1
- sovereign/rendering.py +90 -22
- sovereign/response_class.py +2 -2
- sovereign/server.py +26 -45
- sovereign/sources/__init__.py +3 -0
- sovereign/sources/file.py +21 -0
- sovereign/sources/inline.py +39 -0
- sovereign/sources/lib.py +41 -0
- sovereign/sources/poller.py +537 -0
- sovereign/statistics.py +1 -2
- sovereign/testing/loaders.py +0 -1
- sovereign/tracing.py +5 -6
- sovereign/types.py +10 -15
- sovereign/utils/auth.py +2 -3
- sovereign/utils/crypto/suites/disabled_cipher.py +2 -2
- sovereign/utils/dictupdate.py +1 -1
- sovereign/utils/eds.py +1 -3
- sovereign/utils/entry_point_loader.py +2 -2
- sovereign/utils/mock.py +3 -4
- sovereign/utils/resources.py +1 -1
- sovereign/utils/templates.py +2 -4
- sovereign/utils/timer.py +3 -5
- sovereign/utils/weighted_clusters.py +1 -2
- sovereign/views/__init__.py +3 -6
- sovereign/views/api.py +7 -28
- sovereign/views/crypto.py +1 -1
- sovereign/views/discovery.py +5 -20
- sovereign/views/healthchecks.py +27 -45
- sovereign/views/interface.py +10 -70
- sovereign/worker.py +31 -20
- {sovereign-1.0.0a4.dist-info → sovereign-1.0.0b148.dist-info}/METADATA +3 -4
- sovereign-1.0.0b148.dist-info/RECORD +77 -0
- {sovereign-1.0.0a4.dist-info → sovereign-1.0.0b148.dist-info}/entry_points.txt +0 -8
- sovereign/rendering_common.py +0 -91
- sovereign/v2/__init__.py +0 -0
- sovereign/v2/data/data_store.py +0 -621
- sovereign/v2/data/render_discovery_response.py +0 -24
- sovereign/v2/data/repositories.py +0 -90
- sovereign/v2/data/utils.py +0 -33
- sovereign/v2/data/worker_queue.py +0 -273
- sovereign/v2/jobs/refresh_context.py +0 -117
- sovereign/v2/jobs/render_discovery_job.py +0 -145
- sovereign/v2/logging.py +0 -81
- sovereign/v2/types.py +0 -41
- sovereign/v2/web.py +0 -101
- sovereign/v2/worker.py +0 -199
- sovereign-1.0.0a4.dist-info/RECORD +0 -85
- {sovereign-1.0.0a4.dist-info → sovereign-1.0.0b148.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
sovereign/__init__.py,sha256=9fOh4r27OcCcKWKvNBp3CcHmADJhc1sJIi7qsbNY97g,1069
|
|
2
|
+
sovereign/app.py,sha256=07CJEiqCMlz9R32r0_nh9Y426uztw1tY81mBCgEOeoY,5030
|
|
3
|
+
sovereign/configuration.py,sha256=lBRUyep4VBRj1VDDfOhYv50kH7qup_Di6HQQn6XOHrs,20053
|
|
4
|
+
sovereign/constants.py,sha256=qdWD1lTvkaW5JGF7TmZhfksQHlRAJFVqbG7v6JQA9k8,46
|
|
5
|
+
sovereign/context.py,sha256=m2-VAZANSlnLbcJ6mmTl2XipE6l-BXyYeQiy3WN8jtY,9077
|
|
6
|
+
sovereign/error_info.py,sha256=r2KXBYq9Fo7AI2pmIpATWFm0pykr2MqfrKH0WWW5Sfk,1488
|
|
7
|
+
sovereign/events.py,sha256=8WEIJo0C7mnx-pLjOTXPUFWYySvVXqDsj6p2e9LR9Jg,1203
|
|
8
|
+
sovereign/middlewares.py,sha256=6w4JpvtNGvQA4rocQsYQjuu-ckhpKT6gKYA16T-kiqA,3082
|
|
9
|
+
sovereign/rendering.py,sha256=kzNSv6Rszz-sy5rCAL9hq3Z7xvqcT39BnXPNxv58pQs,6940
|
|
10
|
+
sovereign/response_class.py,sha256=beMAFV-4L6DwyWzJzy71GkEW4gb7fzH1jd8-Tul13cU,427
|
|
11
|
+
sovereign/server.py,sha256=6aZEaGn1RibMMqJ1uBDvaXKsw9-DCRiyp9j9TNkPyo8,2985
|
|
12
|
+
sovereign/statistics.py,sha256=wZ7skpaKE4Zk8jvFpVdrSFqlW_hG8qWH3HE5pYeBhP0,2044
|
|
13
|
+
sovereign/tracing.py,sha256=egA8O5VryajsI90NXVdQVVT7sGWIrclgEd559qznDn0,2685
|
|
14
|
+
sovereign/types.py,sha256=u0BYH5ldcvGMCJrY_zWffDpo2gd8GSJV5eGMDwuuCHg,9898
|
|
15
|
+
sovereign/worker.py,sha256=dzXd3fckYYcKVKv_-3YnZf40o1Z5cMvA6a1DMV85Sw4,6072
|
|
16
|
+
sovereign/cache/__init__.py,sha256=UjcRkreQrm0FcBmaZ0868eYffIueZ_rDG3ToxzounqU,6337
|
|
17
|
+
sovereign/cache/filesystem.py,sha256=LrywZkmiV_SCdpu4nz6ru4LdbaJPtkD2Wn4RBuZstDw,2395
|
|
18
|
+
sovereign/cache/types.py,sha256=UdJRlARVLWidFWEfMvaa5NnGHONCGB-xStbFdBb2B-M,241
|
|
19
|
+
sovereign/cache/backends/__init__.py,sha256=6mPpf9OzyCBvRqpZzIBNy6jrDimEmg8yIiUYpNVTkQk,3160
|
|
20
|
+
sovereign/cache/backends/s3.py,sha256=LoChgNI_Ht1gg9K3RiN2tL41ANHke9GIlESs6loo7MI,5206
|
|
21
|
+
sovereign/dynamic_config/__init__.py,sha256=NXCG_-IM_TKCApJns-GsZka8jv_EqKUiF5S8kRSd7Y0,3547
|
|
22
|
+
sovereign/dynamic_config/deser.py,sha256=N3iUvDpuNHWjxUbGFydMVKicx4o8DyfvNukorqnQdt8,1834
|
|
23
|
+
sovereign/dynamic_config/loaders.py,sha256=gPkxTL7gep20HIMRvjgOqAdUWqtb3970VBCAcUrIM4c,2915
|
|
24
|
+
sovereign/logging/access_logger.py,sha256=QVjrN6tmAemmCQ1NDWoarVrl7vogaHoCPL7SjwjthNk,2989
|
|
25
|
+
sovereign/logging/application_logger.py,sha256=BAEmm9Iszz9AL3a32g8t6fTbgZTzJuN5zyZB2kNaj78,1806
|
|
26
|
+
sovereign/logging/base_logger.py,sha256=ScOzHs8Rt1RZaUZGvaJSAlDEjD0BxkD5sLKSm2GgM0I,1243
|
|
27
|
+
sovereign/logging/bootstrapper.py,sha256=2eawwirMH_3gN3K8Gy9DZojBnk38NQaccCrvdMqPO4M,1302
|
|
28
|
+
sovereign/logging/types.py,sha256=rGqJAEVvgvzHy4aPfvEH6yQ-yblXNkEcWG7G8l9ALEA,282
|
|
29
|
+
sovereign/modifiers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
+
sovereign/modifiers/lib.py,sha256=Cx0VrpTKbSjb3YmHyG4Jy6YEaPlrwpeqNaom3zu1_hw,2885
|
|
31
|
+
sovereign/sources/__init__.py,sha256=g9hEpFk8j5i1ApHQpbc9giTyJW41Ppgsqv5P9zGxOJk,78
|
|
32
|
+
sovereign/sources/file.py,sha256=prUThsDCSPNwZaZpkKXhAm-GVRZWbBoGKGU0It4HHXs,690
|
|
33
|
+
sovereign/sources/inline.py,sha256=pP77m7bHjqE3sSoqZthcuw1ARVMf9gooVwbz4B8OAek,1003
|
|
34
|
+
sovereign/sources/lib.py,sha256=0hk_G6mKJrB65WokVZnqF5kdJ3vsQZMNPuJqJO0mBsI,1031
|
|
35
|
+
sovereign/sources/poller.py,sha256=Cy3zx3xS2JcihOlZ16Nymkw3SWQAgOLjeSWsw2K9IPI,19347
|
|
36
|
+
sovereign/templates/base.html,sha256=MMhhvvClTixKibYfhXm8Ezx6ttu6Sqki44niciCPMO4,2990
|
|
37
|
+
sovereign/templates/err.html,sha256=a3cEzOqyqWOIe3YxfTEjkxbTfxBxq1knD6GwzEFljfs,603
|
|
38
|
+
sovereign/templates/resources.html,sha256=5MfXHW8s3tAWda66Q48zVgDhZNLwHGsdCKkKHLZohIs,10420
|
|
39
|
+
sovereign/testing/loaders.py,sha256=mcmErhI9ZkJUBZl8jv2qP-PCBRFeAIgyBFlfCgU4Vvk,199
|
|
40
|
+
sovereign/testing/modifiers.py,sha256=YI0aJOEbb1C_1T5VDrZKyLopk8JiIlKtUtxXMFfsCtk,290
|
|
41
|
+
sovereign/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
+
sovereign/utils/auth.py,sha256=7cc-WrIJBWfUkF5xvV98rRDU8BcKVL1ERinDqNqTGs0,2286
|
|
43
|
+
sovereign/utils/dictupdate.py,sha256=Bi7QaC7en-k3EOepwNJqpOKRNBgp6ZsBZVOvH_0nMtc,2558
|
|
44
|
+
sovereign/utils/eds.py,sha256=QkBf-_zOj3w5-fJkhvr_uYeltpLn5kiCj-A2bRPsCig,4389
|
|
45
|
+
sovereign/utils/entry_point_loader.py,sha256=BEVodk-um70RvT1nSOu_IB-hr1K4ppthXod0VZEiZJ8,526
|
|
46
|
+
sovereign/utils/mock.py,sha256=U0ydUX9Tv4dUOjd96tsXMUqiZ-i6S2CFOny3uo4h6_Q,2395
|
|
47
|
+
sovereign/utils/resources.py,sha256=rPrWgcIt4YhV-Dz88_kr5WrQNiSKt-jTlOZ8EIJxJx8,472
|
|
48
|
+
sovereign/utils/templates.py,sha256=FE_H_oE7VrS3X_VN1z_g10b9-rpmi1_gL-cMxi5XtXU,1057
|
|
49
|
+
sovereign/utils/timer.py,sha256=_dUtEasj0BKbWYuQ_T3HFIyjurXXj-La-dNSMAwKMSo,795
|
|
50
|
+
sovereign/utils/version_info.py,sha256=adBfu0z6jsg8E5-BIUjZyBwZvfLASj7fpCpYeIvBeMY,576
|
|
51
|
+
sovereign/utils/weighted_clusters.py,sha256=bPzuRE7Qgvv04HcR2AhMDvBrFlZ8AfteweLKhY9SvWg,1166
|
|
52
|
+
sovereign/utils/crypto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
+
sovereign/utils/crypto/crypto.py,sha256=FMo4TikqWcPJ5fyc6j2WEHkkwZU3WY3qJKr7VLfckv0,4532
|
|
54
|
+
sovereign/utils/crypto/suites/__init__.py,sha256=smMvNa1VsQ0PvsNj6lnRNh4ktB7dMnas1CqeTOFqgGA,526
|
|
55
|
+
sovereign/utils/crypto/suites/aes_gcm_cipher.py,sha256=Yjfj1LCQDGTzHBjrZR3-koh29L_N34v65kPoIfta0aw,1239
|
|
56
|
+
sovereign/utils/crypto/suites/base_cipher.py,sha256=kUOZh_ZIILyo5zv99-qzbJZDpeMmt76vhkBDEPvAt4A,454
|
|
57
|
+
sovereign/utils/crypto/suites/disabled_cipher.py,sha256=0_vzydVdVIUlX4pYEAMgB_RvHpyZ25uDC4pz1jRJ5wE,573
|
|
58
|
+
sovereign/utils/crypto/suites/fernet_cipher.py,sha256=rP6M5ys1vctyadOxDGNFoyerWPUOunLQdZ2jjS1pxzc,701
|
|
59
|
+
sovereign/views/__init__.py,sha256=oe_kK9egBp9jghG4EujFsAx6c2-eeZurjEtQ3dTlJRo,59
|
|
60
|
+
sovereign/views/api.py,sha256=gKz3ad1tdKlL1Dg01yRu6X2A5Fs_PJbDwpEHy-M-yek,2239
|
|
61
|
+
sovereign/views/crypto.py,sha256=nGD0Bac6jQeK8u0Qe71EJfbY1a-rYqN7wz7BulrOrFw,3366
|
|
62
|
+
sovereign/views/discovery.py,sha256=tR1D1HX8PyZdzjC1XdqYs8-YWeSYZMoJ1Npow5PC_Gc,2512
|
|
63
|
+
sovereign/views/healthchecks.py,sha256=Md4UTiZE9JoZJofrPM2jV-9bJfxDiViRSQmoyTw7SO0,3447
|
|
64
|
+
sovereign/views/interface.py,sha256=ZOnYCxyab6VagwCewQL3oBDaCqgoQRcE32h3ui9uZFw,7241
|
|
65
|
+
sovereign_files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
sovereign_files/static/darkmode.js,sha256=3ip-eKGctDvNhN7UgmaHhzls7r5qIY-Jvh2EpefHbQ0,1449
|
|
67
|
+
sovereign_files/static/node_expression.js,sha256=GKxKTSRc_96IbL3H4L_31ueJFXq4N7scm5R1RNqxP24,1489
|
|
68
|
+
sovereign_files/static/panel.js,sha256=i5mGExjv-I4Gtt9dQiTyFwPZa8pg5rXeuTeidXNUiTE,2695
|
|
69
|
+
sovereign_files/static/resources.css,sha256=Rt_ir_FkoI-VIAOqPhk0vILy8kB2egAYbQU26SOs1io,4500
|
|
70
|
+
sovereign_files/static/resources.js,sha256=-TaXZ6tohyKA1SkX5YwrTcV5M8mOZ68cvEXpvZWznTo,24506
|
|
71
|
+
sovereign_files/static/style.css,sha256=kmvkJ2820RKehWxhddkucbgFkvnpUgBMteOtpEuXjvQ,601347
|
|
72
|
+
sovereign_files/static/style.css.map,sha256=h1ufjfDVX-8z-FuJqFG2-U9AVdi66U-e8uyiGdUZjDw,66576
|
|
73
|
+
sovereign_files/static/sass/style.scss,sha256=LdGXXuHi_tyMc7XhijIOrlIxyfLt827AAs2Z7DYpFpg,990
|
|
74
|
+
sovereign-1.0.0b148.dist-info/METADATA,sha256=oem0ksW8OtXbGl21BjKSJUi4sKmVqWjXCtIYrAUnHX0,5917
|
|
75
|
+
sovereign-1.0.0b148.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
76
|
+
sovereign-1.0.0b148.dist-info/entry_points.txt,sha256=Rt_U9pHxxYT132TIfj6ESPKxfM0d5hByvggUcuFk_NI,1526
|
|
77
|
+
sovereign-1.0.0b148.dist-info/RECORD,,
|
|
@@ -6,10 +6,6 @@ sovereign-worker = sovereign.server:worker
|
|
|
6
6
|
[sovereign.cache.backends]
|
|
7
7
|
s3 = sovereign.cache.backends.s3:S3Backend
|
|
8
8
|
|
|
9
|
-
[sovereign.data_stores]
|
|
10
|
-
memory = sovereign.v2.data.data_store:InMemoryDataStore
|
|
11
|
-
sqlite = sovereign.v2.data.data_store:SqliteDataStore
|
|
12
|
-
|
|
13
9
|
[sovereign.deserializers]
|
|
14
10
|
jinja = sovereign.dynamic_config.deser:JinjaDeserializer
|
|
15
11
|
jinja2 = sovereign.dynamic_config.deser:JinjaDeserializer
|
|
@@ -37,10 +33,6 @@ s3 = sovereign.dynamic_config.loaders:S3Bucket
|
|
|
37
33
|
[sovereign.modifiers]
|
|
38
34
|
sovereign_3rd_party_test = sovereign.testing.modifiers:Test
|
|
39
35
|
|
|
40
|
-
[sovereign.queues]
|
|
41
|
-
memory = sovereign.v2.data.worker_queue:InMemoryQueue
|
|
42
|
-
sqlite = sovereign.v2.data.worker_queue:SqliteQueue
|
|
43
|
-
|
|
44
36
|
[sovereign.sources]
|
|
45
37
|
file = sovereign.sources.file:File
|
|
46
38
|
inline = sovereign.sources.inline:Inline
|
sovereign/rendering_common.py
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import importlib
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
import yaml
|
|
5
|
-
from starlette.exceptions import HTTPException
|
|
6
|
-
from yaml.parser import ParserError
|
|
7
|
-
from yaml.scanner import ScannerError
|
|
8
|
-
|
|
9
|
-
from sovereign import config, logs
|
|
10
|
-
|
|
11
|
-
type_urls = {
|
|
12
|
-
"v2": {
|
|
13
|
-
"listeners": "type.googleapis.com/envoy.api.v2.Listener",
|
|
14
|
-
"clusters": "type.googleapis.com/envoy.api.v2.Cluster",
|
|
15
|
-
"endpoints": "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment",
|
|
16
|
-
"secrets": "type.googleapis.com/envoy.api.v2.auth.Secret",
|
|
17
|
-
"routes": "type.googleapis.com/envoy.api.v2.RouteConfiguration",
|
|
18
|
-
"scoped-routes": "type.googleapis.com/envoy.api.v2.ScopedRouteConfiguration",
|
|
19
|
-
},
|
|
20
|
-
"v3": {
|
|
21
|
-
"listeners": "type.googleapis.com/envoy.config.listener.v3.Listener",
|
|
22
|
-
"clusters": "type.googleapis.com/envoy.config.cluster.v3.Cluster",
|
|
23
|
-
"endpoints": "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment",
|
|
24
|
-
"secrets": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret",
|
|
25
|
-
"routes": "type.googleapis.com/envoy.config.route.v3.RouteConfiguration",
|
|
26
|
-
"scoped-routes": "type.googleapis.com/envoy.config.route.v3.ScopedRouteConfiguration",
|
|
27
|
-
"runtime": "type.googleapis.com/envoy.service.runtime.v3.Runtime",
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def add_type_urls(api_version, resource_type, resources):
|
|
33
|
-
type_url = type_urls.get(api_version, {}).get(resource_type)
|
|
34
|
-
if type_url is not None:
|
|
35
|
-
for resource in resources:
|
|
36
|
-
if not resource.get("@type"):
|
|
37
|
-
resource["@type"] = type_url
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def deserialize_config(content: str) -> dict[str, Any]:
|
|
41
|
-
try:
|
|
42
|
-
envoy_configuration = yaml.safe_load(content)
|
|
43
|
-
except (ParserError, ScannerError) as e:
|
|
44
|
-
logs.access_logger.queue_log_fields(
|
|
45
|
-
error=repr(e),
|
|
46
|
-
YAML_CONTEXT=e.context,
|
|
47
|
-
YAML_CONTEXT_MARK=e.context_mark,
|
|
48
|
-
YAML_NOTE=e.note,
|
|
49
|
-
YAML_PROBLEM=e.problem,
|
|
50
|
-
YAML_PROBLEM_MARK=e.problem_mark,
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
if config.sentry_dsn:
|
|
54
|
-
mod = importlib.import_module("sentry_sdk")
|
|
55
|
-
mod.capture_exception(e)
|
|
56
|
-
|
|
57
|
-
raise HTTPException(
|
|
58
|
-
status_code=500,
|
|
59
|
-
detail=(
|
|
60
|
-
"Failed to load configuration, there may be "
|
|
61
|
-
"a syntax error in the configured templates. "
|
|
62
|
-
"Please check Sentry if you have configured Sentry DSN"
|
|
63
|
-
),
|
|
64
|
-
)
|
|
65
|
-
if not isinstance(envoy_configuration, dict):
|
|
66
|
-
raise RuntimeError(
|
|
67
|
-
f"Deserialized configuration is of unexpected format: {envoy_configuration}"
|
|
68
|
-
)
|
|
69
|
-
return envoy_configuration
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def filter_resources(
|
|
73
|
-
generated: list[dict[str, Any]], requested: list[str]
|
|
74
|
-
) -> list[dict[str, Any]]:
|
|
75
|
-
"""
|
|
76
|
-
If Envoy specifically requested a resource, this removes everything
|
|
77
|
-
that does not match the name of the resource.
|
|
78
|
-
If Envoy did not specifically request anything, every resource is retained.
|
|
79
|
-
"""
|
|
80
|
-
if len(requested) == 0:
|
|
81
|
-
return generated
|
|
82
|
-
return [resource for resource in generated if resource_name(resource) in requested]
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def resource_name(resource: dict[str, Any]) -> str:
|
|
86
|
-
name = resource.get("name") or resource.get("cluster_name")
|
|
87
|
-
if isinstance(name, str):
|
|
88
|
-
return name
|
|
89
|
-
raise KeyError(
|
|
90
|
-
f"Failed to determine the name or cluster_name of the following resource: {resource}"
|
|
91
|
-
)
|
sovereign/v2/__init__.py
DELETED
|
File without changes
|