splight-lib 2.3.23__tar.gz → 2.3.25__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.23/splight_lib.egg-info → splight-lib-2.3.25}/PKG-INFO +1 -1
- {splight-lib-2.3.23 → splight-lib-2.3.25}/setup.py +1 -1
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/database/remote_client.py +2 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/logging/_internal.py +10 -4
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/logging/component.py +8 -0
- splight-lib-2.3.25/splight_lib/logging/constants.py +5 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/logging/logging.py +48 -1
- {splight-lib-2.3.23 → splight-lib-2.3.25/splight_lib.egg-info}/PKG-INFO +1 -1
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib.egg-info/SOURCES.txt +1 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/base.py +2 -2
- {splight-lib-2.3.23 → splight-lib-2.3.25}/LICENSE.txt +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/README.md +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/setup.cfg +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/auth/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/auth/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/auth/exceptions.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/cache/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/cache/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/client/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/client/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/client/filter.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/client/hooks.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/communication/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/communication/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/communication/exceptions.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/database/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/database/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/datalake/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/datalake/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/deployment/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/deployment/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/endpoints/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/hub/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/hub/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/notification/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/notification/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/remote/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/remote/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/storage/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_abstract/storage/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/auth/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/auth/exceptions.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/auth/mac_auth.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/auth/token.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/communication/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/communication/classmap.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/communication/local_client.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/communication/remote_client.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/database/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/database/classmap.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/database/local_client.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/datalake/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/datalake/local_client.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/datalake/remote_client.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/exceptions.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/file_handler.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/filter.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/hub/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/hub/client.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/client/settings.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/component/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/component/abstract.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/encryption.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/execution.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/logging/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/restclient/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/restclient/client.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/restclient/exceptions.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/restclient/types.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/settings.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib/webhook.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib.egg-info/dependency_links.txt +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib.egg-info/not-zip-safe +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib.egg-info/requires.txt +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_lib.egg-info/top_level.txt +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/alert.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/asset.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/attribute.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/blockchain.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/channel.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/communication/__init__.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/communication/context.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/communication/events.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/component.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/constants.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/credential.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/datalake.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/deployment.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/exception.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/file.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/hub.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/namespace.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/notification.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/query.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/secret.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/setpoint.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/severity.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/user.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/splight_models/variable.py +0 -0
- {splight-lib-2.3.23 → splight-lib-2.3.25}/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}
|
|
@@ -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
|
|
@@ -14,6 +14,6 @@ class SplightBaseModel(BaseModel):
|
|
|
14
14
|
"""Get class name of the model from the repr string
|
|
15
15
|
Class attribute is mapped to the metaclass.
|
|
16
16
|
"""
|
|
17
|
-
clean_path = "".join([c for c in str(cls) if c.isalpha() or c =="."])
|
|
17
|
+
clean_path = "".join([c for c in str(cls) if c.isalpha() or c == "."])
|
|
18
18
|
class_name = clean_path.split(".")[-1]
|
|
19
|
-
return class_name
|
|
19
|
+
return class_name
|
|
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
|