dt-extensions-sdk 1.2.6__py3-none-any.whl → 1.2.9__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.
- {dt_extensions_sdk-1.2.6.dist-info → dt_extensions_sdk-1.2.9.dist-info}/METADATA +3 -3
- {dt_extensions_sdk-1.2.6.dist-info → dt_extensions_sdk-1.2.9.dist-info}/RECORD +7 -7
- dynatrace_extension/__about__.py +1 -1
- dynatrace_extension/sdk/extension.py +22 -5
- {dt_extensions_sdk-1.2.6.dist-info → dt_extensions_sdk-1.2.9.dist-info}/WHEEL +0 -0
- {dt_extensions_sdk-1.2.6.dist-info → dt_extensions_sdk-1.2.9.dist-info}/entry_points.txt +0 -0
- {dt_extensions_sdk-1.2.6.dist-info → dt_extensions_sdk-1.2.9.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: dt-extensions-sdk
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.9
|
4
4
|
Project-URL: Documentation, https://github.com/dynatrace-extensions/dt-extensions-python-sdk#readme
|
5
5
|
Project-URL: Issues, https://github.com/dynatrace-extensions/dt-extensions-python-sdk/issues
|
6
6
|
Project-URL: Source, https://github.com/dynatrace-extensions/dt-extensions-python-sdk
|
@@ -40,7 +40,7 @@ The documentation can be found on [github pages](https://dynatrace-extensions.gi
|
|
40
40
|
|
41
41
|
### Requirements:
|
42
42
|
|
43
|
-
* Python 3.10
|
43
|
+
* Python 3.10
|
44
44
|
|
45
45
|
### Install the SDK
|
46
46
|
|
@@ -116,4 +116,4 @@ hatch run docs:build
|
|
116
116
|
## Publishing to PyPI
|
117
117
|
|
118
118
|
It's automatically published to PyPi on each pushed tag, and uses [gh-action-pypi-publish](https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/)
|
119
|
-
Version will be determined using __about__.py
|
119
|
+
Version will be determined using __about__.py
|
@@ -1,4 +1,4 @@
|
|
1
|
-
dynatrace_extension/__about__.py,sha256=
|
1
|
+
dynatrace_extension/__about__.py,sha256=cMazOtXSab_DsBj2r42iZHp_YVxg7YRhZ4W6OZ43Ruc,109
|
2
2
|
dynatrace_extension/__init__.py,sha256=BvQuknmA7ti3WJi3zEXZfY7aAxJrie37VNitWICsUvI,752
|
3
3
|
dynatrace_extension/cli/__init__.py,sha256=HCboY_eJPoqjFmoPDsBL8Jk6aNvank8K7JpkVrgwzUM,123
|
4
4
|
dynatrace_extension/cli/main.py,sha256=ZOqxZsaMJRZsqR3Og2a9h2PDlkyJE8tAny-p7Mb7dmA,17254
|
@@ -18,7 +18,7 @@ dynatrace_extension/sdk/activation.py,sha256=goTbT1tD2kn8xfyXFdTy_cTZNcFPJpgbvQM
|
|
18
18
|
dynatrace_extension/sdk/callback.py,sha256=FJSkaBF895NZquUtpSj1I2vel2Rx-y-2da8mKX_pk4I,6307
|
19
19
|
dynatrace_extension/sdk/communication.py,sha256=gD4GOHOzWdRL_KrUWtC2s8-Jp8Csn5gjZl4mHO5Lk_4,17739
|
20
20
|
dynatrace_extension/sdk/event.py,sha256=J261imbFKpxfuAQ6Nfu3RRcsIQKKivy6fme1nww2g-8,388
|
21
|
-
dynatrace_extension/sdk/extension.py,sha256=
|
21
|
+
dynatrace_extension/sdk/extension.py,sha256=WvPGKt7td8np65NHIEnJ53mylGff1lhQtJM8xvgWCXA,42758
|
22
22
|
dynatrace_extension/sdk/helper.py,sha256=ZNrO9ao2hE3KQ934vAYD74k0fCr6QTG-_bAvbk9-hi8,6562
|
23
23
|
dynatrace_extension/sdk/metric.py,sha256=7VClzJCFJNDCxA-d69uTu1pdPtDZBTwq7fbafs_L6nQ,3690
|
24
24
|
dynatrace_extension/sdk/runtime.py,sha256=jyYsM1x-gMnW68eWq8IoZZZBarHgIcr_nVeGDDgpRDk,2802
|
@@ -27,8 +27,8 @@ dynatrace_extension/sdk/vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
27
27
|
dynatrace_extension/sdk/vendor/mureq/LICENSE,sha256=8AVcgZgiT_mvK1fOofXtRRr2f1dRXS_K21NuxQgP4VM,671
|
28
28
|
dynatrace_extension/sdk/vendor/mureq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
29
|
dynatrace_extension/sdk/vendor/mureq/mureq.py,sha256=znF4mvzk5L03CLNozRz8UpK-fMijmSkObDFwlbhwLUg,14656
|
30
|
-
dt_extensions_sdk-1.2.
|
31
|
-
dt_extensions_sdk-1.2.
|
32
|
-
dt_extensions_sdk-1.2.
|
33
|
-
dt_extensions_sdk-1.2.
|
34
|
-
dt_extensions_sdk-1.2.
|
30
|
+
dt_extensions_sdk-1.2.9.dist-info/METADATA,sha256=ZciL7FZ4sxdWUQ-uLhoeODZOxuRfv9zR8-2mXgJsZ-0,2685
|
31
|
+
dt_extensions_sdk-1.2.9.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
32
|
+
dt_extensions_sdk-1.2.9.dist-info/entry_points.txt,sha256=pweyOCgENGHjOlT6_kXYaBPOrE3p18K0UettqnNlnoE,55
|
33
|
+
dt_extensions_sdk-1.2.9.dist-info/licenses/LICENSE.txt,sha256=3Zihv0lOVYHNfDkJC-tUAU6euP9r2NexsDW4w-zqgVk,1078
|
34
|
+
dt_extensions_sdk-1.2.9.dist-info/RECORD,,
|
dynatrace_extension/__about__.py
CHANGED
@@ -151,7 +151,7 @@ class Extension:
|
|
151
151
|
_instance: ClassVar = None
|
152
152
|
schedule_decorators: ClassVar = []
|
153
153
|
|
154
|
-
def __new__(cls):
|
154
|
+
def __new__(cls, *args, **kwargs): # noqa: ARG003
|
155
155
|
if Extension._instance is None:
|
156
156
|
Extension._instance = super(__class__, cls).__new__(cls)
|
157
157
|
return Extension._instance
|
@@ -209,6 +209,14 @@ class Extension:
|
|
209
209
|
|
210
210
|
self._scheduler = sched.scheduler(time.time, time.sleep)
|
211
211
|
|
212
|
+
# Timestamps for scheduling of internal callbacks
|
213
|
+
self._next_internal_callbacks_timestamps: Dict[str, datetime] = {
|
214
|
+
"timediff": datetime.now() + TIME_DIFF_INTERVAL,
|
215
|
+
"heartbeat": datetime.now() + HEARTBEAT_INTERVAL,
|
216
|
+
"metrics": datetime.now() + METRIC_SENDING_INTERVAL,
|
217
|
+
"sfm_metrics": datetime.now() + SFM_METRIC_SENDING_INTERVAL,
|
218
|
+
}
|
219
|
+
|
212
220
|
# Executors for the callbacks and internal methods
|
213
221
|
self._callbacks_executor = ThreadPoolExecutor(max_workers=CALLBACKS_THREAD_POOL_SIZE)
|
214
222
|
self._internal_executor = ThreadPoolExecutor(max_workers=INTERNAL_THREAD_POOL_SIZE)
|
@@ -813,19 +821,23 @@ class Extension:
|
|
813
821
|
|
814
822
|
def _timediff_iteration(self):
|
815
823
|
self._internal_executor.submit(self._update_cluster_time_diff)
|
816
|
-
self.
|
824
|
+
next_timestamp = self._get_and_set_next_internal_callback_timestamp("timediff", TIME_DIFF_INTERVAL)
|
825
|
+
self._scheduler.enterabs(next_timestamp, 1, self._timediff_iteration)
|
817
826
|
|
818
827
|
def _heartbeat_iteration(self):
|
819
828
|
self._internal_executor.submit(self._heartbeat)
|
820
|
-
self.
|
829
|
+
next_timestamp = self._get_and_set_next_internal_callback_timestamp("heartbeat", HEARTBEAT_INTERVAL)
|
830
|
+
self._scheduler.enterabs(next_timestamp, 2, self._heartbeat_iteration)
|
821
831
|
|
822
832
|
def _metrics_iteration(self):
|
823
833
|
self._internal_executor.submit(self._send_metrics)
|
824
|
-
self.
|
834
|
+
next_timestamp = self._get_and_set_next_internal_callback_timestamp("metrics", METRIC_SENDING_INTERVAL)
|
835
|
+
self._scheduler.enterabs(next_timestamp, 1, self._metrics_iteration)
|
825
836
|
|
826
837
|
def _sfm_metrics_iteration(self):
|
827
838
|
self._internal_executor.submit(self._send_sfm_metrics)
|
828
|
-
self.
|
839
|
+
next_timestamp = self._get_and_set_next_internal_callback_timestamp("sfm_metrics", SFM_METRIC_SENDING_INTERVAL)
|
840
|
+
self._scheduler.enterabs(next_timestamp, 1, self._sfm_metrics_iteration)
|
829
841
|
|
830
842
|
def _send_metrics(self):
|
831
843
|
with self._metrics_lock:
|
@@ -1030,6 +1042,11 @@ class Extension:
|
|
1030
1042
|
def _send_dt_event(self, event: dict[str, str | int | dict[str, str]]):
|
1031
1043
|
self._client.send_dt_event(event)
|
1032
1044
|
|
1045
|
+
def _get_and_set_next_internal_callback_timestamp(self, callback_name: str, interval: timedelta):
|
1046
|
+
next_timestamp = self._next_internal_callbacks_timestamps[callback_name]
|
1047
|
+
self._next_internal_callbacks_timestamps[callback_name] += interval
|
1048
|
+
return next_timestamp.timestamp()
|
1049
|
+
|
1033
1050
|
def get_version(self) -> str:
|
1034
1051
|
"""Return the extension version."""
|
1035
1052
|
return self.activation_config.version
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.2.6.dist-info → dt_extensions_sdk-1.2.9.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|