splight-lib 2.3.22__tar.gz → 2.3.24__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.
- {splight-lib-2.3.22/splight_lib.egg-info → splight-lib-2.3.24}/PKG-INFO +1 -1
- {splight-lib-2.3.22 → splight-lib-2.3.24}/setup.py +1 -1
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/database/remote_client.py +2 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/component/abstract.py +1 -1
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/logging/_internal.py +10 -4
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/logging/component.py +8 -0
- splight-lib-2.3.24/splight_lib/logging/constants.py +5 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/logging/logging.py +48 -1
- {splight-lib-2.3.22 → splight-lib-2.3.24/splight_lib.egg-info}/PKG-INFO +1 -1
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib.egg-info/SOURCES.txt +1 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/LICENSE.txt +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/README.md +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/setup.cfg +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/auth/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/auth/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/auth/exceptions.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/cache/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/cache/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/client/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/client/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/client/filter.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/client/hooks.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/communication/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/communication/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/communication/exceptions.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/database/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/database/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/datalake/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/datalake/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/deployment/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/deployment/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/endpoints/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/hub/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/hub/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/notification/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/notification/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/remote/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/remote/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/storage/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_abstract/storage/abstract.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/auth/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/auth/exceptions.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/auth/mac_auth.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/auth/token.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/communication/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/communication/classmap.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/communication/local_client.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/communication/remote_client.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/database/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/database/classmap.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/database/local_client.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/datalake/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/datalake/local_client.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/datalake/remote_client.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/exceptions.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/file_handler.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/filter.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/hub/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/hub/client.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/client/settings.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/component/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/encryption.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/execution.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/logging/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/restclient/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/restclient/client.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/restclient/exceptions.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/restclient/types.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/settings.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib/webhook.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib.egg-info/dependency_links.txt +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib.egg-info/not-zip-safe +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib.egg-info/requires.txt +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_lib.egg-info/top_level.txt +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/alert.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/asset.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/attribute.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/base.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/blockchain.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/channel.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/communication/__init__.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/communication/context.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/communication/events.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/component.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/constants.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/credential.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/datalake.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/deployment.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/exception.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/file.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/hub.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/namespace.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/notification.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/query.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/secret.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/setpoint.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/severity.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/user.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/variable.py +0 -0
- {splight-lib-2.3.22 → splight-lib-2.3.24}/splight_models/webhook.py +0 -0
|
@@ -56,6 +56,7 @@ class RemoteDatabaseClient(AbstractDatabaseClient, AbstractRemoteClient):
|
|
|
56
56
|
------
|
|
57
57
|
InvalidModel thrown when the model name is not correct.
|
|
58
58
|
"""
|
|
59
|
+
|
|
59
60
|
logger.debug("Saving instance %s.", instance.id, tags=LogTags.DATABASE)
|
|
60
61
|
|
|
61
62
|
constructor = type(instance)
|
|
@@ -205,6 +206,7 @@ class RemoteDatabaseClient(AbstractDatabaseClient, AbstractRemoteClient):
|
|
|
205
206
|
def _create(self, path: str, instance: BaseModel) -> Dict:
|
|
206
207
|
url = self._base_url / f"{path}/"
|
|
207
208
|
data = json.loads(instance.json(exclude_none=True))
|
|
209
|
+
|
|
208
210
|
if isinstance(instance, File):
|
|
209
211
|
with open(instance.file, "rb") as f:
|
|
210
212
|
file = {"file": f}
|
|
@@ -584,7 +584,7 @@ class ParametersMixin:
|
|
|
584
584
|
return ids
|
|
585
585
|
|
|
586
586
|
def _fetch_objects(self, ids_to_fetch: Dict) -> Dict[str, BaseModel]:
|
|
587
|
-
res: Dict = {None: None}
|
|
587
|
+
res: Dict = {None: None, "": None}
|
|
588
588
|
for type, ids_ in ids_to_fetch["database"].items():
|
|
589
589
|
objs = self.database_client.get(DATABASE_TYPES[type], id__in=ids_)
|
|
590
590
|
res.update({obj.id: obj for obj in objs})
|
|
@@ -4,15 +4,17 @@ from logging import INFO, Formatter, Handler
|
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from concurrent_log_handler import ConcurrentRotatingFileHandler
|
|
7
|
+
from splight_lib.logging.constants import LOGGING_DEV
|
|
7
8
|
from splight_lib.logging.logging import (
|
|
9
|
+
ElasticDocumentFormatter,
|
|
8
10
|
SplightFormatter,
|
|
9
11
|
SplightLogger,
|
|
12
|
+
elastic_document_handler,
|
|
10
13
|
standard_output_handler,
|
|
11
14
|
)
|
|
12
15
|
from strenum import UppercaseStrEnum
|
|
13
16
|
|
|
14
17
|
|
|
15
|
-
|
|
16
18
|
# TODO: add more tags
|
|
17
19
|
class LogTags(UppercaseStrEnum):
|
|
18
20
|
RUNTIME = auto()
|
|
@@ -53,9 +55,13 @@ def get_splight_logger(name: Optional[str] = None):
|
|
|
53
55
|
name = "splight-dev"
|
|
54
56
|
logger = SplightLogger(name=name)
|
|
55
57
|
logger.propagate = False
|
|
56
|
-
|
|
57
|
-
logger.addHandler(
|
|
58
|
-
|
|
58
|
+
stdout_handler = standard_output_handler(log_level=logger.level)
|
|
59
|
+
logger.addHandler(stdout_handler)
|
|
60
|
+
es_handler = elastic_document_handler(
|
|
61
|
+
formatter=ElasticDocumentFormatter(type=LOGGING_DEV),
|
|
62
|
+
log_level=logger.level,
|
|
63
|
+
)
|
|
64
|
+
logger.addHandler(es_handler)
|
|
59
65
|
# Add logger.level to root logger
|
|
60
66
|
logger.setLevel(logger.level)
|
|
61
67
|
return logger
|
|
@@ -3,9 +3,12 @@ from logging import INFO, Formatter, Handler, basicConfig
|
|
|
3
3
|
from typing import Optional
|
|
4
4
|
|
|
5
5
|
from concurrent_log_handler import ConcurrentRotatingFileHandler
|
|
6
|
+
from splight_lib.logging.constants import LOGGING_COMPONENTS
|
|
6
7
|
from splight_lib.logging.logging import (
|
|
8
|
+
ElasticDocumentFormatter,
|
|
7
9
|
SplightFormatter,
|
|
8
10
|
SplightLogger,
|
|
11
|
+
elastic_document_handler,
|
|
9
12
|
standard_output_handler,
|
|
10
13
|
)
|
|
11
14
|
|
|
@@ -36,6 +39,11 @@ def get_component_logger(name: Optional[str] = None):
|
|
|
36
39
|
logger.addHandler(stdout_handler)
|
|
37
40
|
file_handler = component_file_handler(log_level=logger.level)
|
|
38
41
|
logger.addHandler(file_handler)
|
|
42
|
+
es_handler = elastic_document_handler(
|
|
43
|
+
formatter=ElasticDocumentFormatter(type=LOGGING_COMPONENTS),
|
|
44
|
+
log_level=logger.level,
|
|
45
|
+
)
|
|
46
|
+
logger.addHandler(es_handler)
|
|
39
47
|
|
|
40
48
|
# Add logger.level to root logger
|
|
41
49
|
logger.setLevel(logger.level)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import json
|
|
1
2
|
import os
|
|
2
3
|
import sys
|
|
3
4
|
import time
|
|
@@ -14,7 +15,11 @@ from logging import (
|
|
|
14
15
|
StreamHandler,
|
|
15
16
|
)
|
|
16
17
|
from logging import root as rootLogger
|
|
17
|
-
from typing import Dict, Optional
|
|
18
|
+
from typing import Dict, Literal, Optional
|
|
19
|
+
|
|
20
|
+
from concurrent_log_handler import ConcurrentRotatingFileHandler
|
|
21
|
+
from pydantic import BaseSettings
|
|
22
|
+
from splight_lib.logging.constants import LOGGING_DEV, LogType
|
|
18
23
|
|
|
19
24
|
TAGS_KEY = "tags"
|
|
20
25
|
|
|
@@ -36,6 +41,21 @@ class SplightFormatter(Formatter):
|
|
|
36
41
|
return formatter.format(record)
|
|
37
42
|
|
|
38
43
|
|
|
44
|
+
class ElasticDocumentFormatter(Formatter):
|
|
45
|
+
def __init__(self, fmt: str = None, type: LogType = LOGGING_DEV) -> None:
|
|
46
|
+
super().__init__(fmt=fmt)
|
|
47
|
+
self.type = type
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def _extra_fields(self) -> Dict:
|
|
51
|
+
return {
|
|
52
|
+
"type": self.type,
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
def format(self, record):
|
|
56
|
+
return json.dumps({**record.__dict__, **self._extra_fields})
|
|
57
|
+
|
|
58
|
+
|
|
39
59
|
class SplightLogger(Logger):
|
|
40
60
|
def __init__(self, name: str = None) -> None:
|
|
41
61
|
# this is to avoid adding handlers to root logger
|
|
@@ -145,3 +165,30 @@ def standard_output_handler(
|
|
|
145
165
|
handler.setFormatter(formatter)
|
|
146
166
|
handler.setLevel(log_level)
|
|
147
167
|
return handler
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class ElasticDocumentHandlerSettings(BaseSettings):
|
|
171
|
+
splight_elastic_logs_filename: str = "/tmp/splight_elastic_logs.log"
|
|
172
|
+
splight_elastic_logs_max_bytes: int = 5e6
|
|
173
|
+
splight_elastic_logs_backup_count: int = 5
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def file_handler_settings(self) -> Dict:
|
|
177
|
+
return {
|
|
178
|
+
"filename": self.splight_elastic_logs_filename,
|
|
179
|
+
"maxBytes": self.splight_elastic_logs_max_bytes,
|
|
180
|
+
"backupCount": self.splight_elastic_logs_backup_count,
|
|
181
|
+
"encoding": "utf-8",
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def elastic_document_handler(
|
|
186
|
+
formatter: Optional[Formatter] = SplightFormatter(),
|
|
187
|
+
log_level: Optional[str] = INFO,
|
|
188
|
+
) -> Handler:
|
|
189
|
+
settings = ElasticDocumentHandlerSettings()
|
|
190
|
+
handler = ConcurrentRotatingFileHandler(**settings.file_handler_settings)
|
|
191
|
+
|
|
192
|
+
handler.setFormatter(formatter)
|
|
193
|
+
handler.setLevel(log_level)
|
|
194
|
+
return handler
|
|
@@ -67,6 +67,7 @@ splight_lib/component/abstract.py
|
|
|
67
67
|
splight_lib/logging/__init__.py
|
|
68
68
|
splight_lib/logging/_internal.py
|
|
69
69
|
splight_lib/logging/component.py
|
|
70
|
+
splight_lib/logging/constants.py
|
|
70
71
|
splight_lib/logging/logging.py
|
|
71
72
|
splight_lib/restclient/__init__.py
|
|
72
73
|
splight_lib/restclient/client.py
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|