dt-extensions-sdk 1.2.1__py3-none-any.whl → 1.2.3__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.1.dist-info → dt_extensions_sdk-1.2.3.dist-info}/METADATA +1 -1
- {dt_extensions_sdk-1.2.1.dist-info → dt_extensions_sdk-1.2.3.dist-info}/RECORD +8 -8
- {dt_extensions_sdk-1.2.1.dist-info → dt_extensions_sdk-1.2.3.dist-info}/WHEEL +1 -1
- dynatrace_extension/__about__.py +1 -1
- dynatrace_extension/sdk/callback.py +13 -2
- dynatrace_extension/sdk/extension.py +7 -1
- {dt_extensions_sdk-1.2.1.dist-info → dt_extensions_sdk-1.2.3.dist-info}/entry_points.txt +0 -0
- {dt_extensions_sdk-1.2.1.dist-info → dt_extensions_sdk-1.2.3.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.3
|
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
|
@@ -1,4 +1,4 @@
|
|
1
|
-
dynatrace_extension/__about__.py,sha256=
|
1
|
+
dynatrace_extension/__about__.py,sha256=TLyHW1TFN8BFLjdtrH0-fQP5cpool1Nmic9L4C1gsy0,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
|
@@ -15,10 +15,10 @@ dynatrace_extension/cli/create/extension_template/extension_name/__init__.py.tem
|
|
15
15
|
dynatrace_extension/cli/create/extension_template/extension_name/__main__.py.template,sha256=Mr7kfekNfEBUapJh_xbySZD8jPyYDspZx3KAfnhdCUk,1258
|
16
16
|
dynatrace_extension/sdk/__init__.py,sha256=RsqQ1heGyCmSK3fhuEKAcxQIRCg4gEK0-eSkIehL5Nc,86
|
17
17
|
dynatrace_extension/sdk/activation.py,sha256=goTbT1tD2kn8xfyXFdTy_cTZNcFPJpgbvQM8HOzKECA,1480
|
18
|
-
dynatrace_extension/sdk/callback.py,sha256=
|
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=48MK9E4JhAxTFOabWDJ58uZqSmGNwTC62vL1RP_q_gM,41623
|
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.3.dist-info/METADATA,sha256=Bb83R0u5D4P42VsTWCgkBw8NP1LXhVj0oCaQdQS_9RA,2793
|
31
|
+
dt_extensions_sdk-1.2.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
32
|
+
dt_extensions_sdk-1.2.3.dist-info/entry_points.txt,sha256=pweyOCgENGHjOlT6_kXYaBPOrE3p18K0UettqnNlnoE,55
|
33
|
+
dt_extensions_sdk-1.2.3.dist-info/licenses/LICENSE.txt,sha256=3Zihv0lOVYHNfDkJC-tUAU6euP9r2NexsDW4w-zqgVk,1078
|
34
|
+
dt_extensions_sdk-1.2.3.dist-info/RECORD,,
|
dynatrace_extension/__about__.py
CHANGED
@@ -45,17 +45,18 @@ class WrappedCallback:
|
|
45
45
|
self.ok_count = 0 # counter per interval = 1 min by default
|
46
46
|
self.timeouts_count = 0 # counter per interval = 1 min by default
|
47
47
|
self.exception_count = 0 # counter per interval = 1 min by default
|
48
|
+
self.iterations = 0 # how many times we ran the callback iterator for this callback
|
48
49
|
|
49
50
|
def get_current_time_with_cluster_diff(self):
|
50
51
|
return datetime.now() + timedelta(milliseconds=self.cluster_time_diff)
|
51
52
|
|
52
53
|
def __call__(self):
|
53
54
|
self.logger.debug(f"Running scheduled callback {self}")
|
54
|
-
self.
|
55
|
+
if self.executions_total == 0:
|
56
|
+
self.start_timestamp = self.get_current_time_with_cluster_diff()
|
55
57
|
self.running = True
|
56
58
|
self.executions_total += 1
|
57
59
|
self.executions_per_interval += 1
|
58
|
-
self.next_run = datetime.now() + self.interval
|
59
60
|
start_time = timer()
|
60
61
|
failed = False
|
61
62
|
try:
|
@@ -132,3 +133,13 @@ class WrappedCallback:
|
|
132
133
|
self.duration_interval_total = 0
|
133
134
|
self.exception_count = 0
|
134
135
|
self.executions_per_interval = 0
|
136
|
+
|
137
|
+
def get_next_execution_timestamp(self) -> float:
|
138
|
+
"""
|
139
|
+
Get the timestamp for the next execution of the callback
|
140
|
+
This is done using execution total, the interval and the start timestamp
|
141
|
+
:return: datetime
|
142
|
+
"""
|
143
|
+
return (
|
144
|
+
self.start_timestamp + timedelta(seconds=self.interval.total_seconds() * (self.iterations or 1))
|
145
|
+
).timestamp()
|
@@ -342,6 +342,10 @@ class Extension:
|
|
342
342
|
if isinstance(interval, int):
|
343
343
|
interval = timedelta(seconds=interval)
|
344
344
|
|
345
|
+
if interval.total_seconds() < 1:
|
346
|
+
msg = f"Interval must be at least 1 second, got {interval.total_seconds()} seconds"
|
347
|
+
raise ValueError(msg)
|
348
|
+
|
345
349
|
callback = WrappedCallback(interval, callback, api_logger, args, activation_type=activation_type)
|
346
350
|
if self._is_fastcheck:
|
347
351
|
self._scheduled_callbacks_before_run.append(callback)
|
@@ -785,7 +789,9 @@ class Extension:
|
|
785
789
|
|
786
790
|
def _callback_iteration(self, callback: WrappedCallback):
|
787
791
|
self._callbacks_executor.submit(self._run_callback, callback)
|
788
|
-
|
792
|
+
callback.iterations += 1
|
793
|
+
next_timestamp = callback.get_next_execution_timestamp()
|
794
|
+
self._scheduler.enterabs(next_timestamp, 1, self._callback_iteration, (callback,))
|
789
795
|
|
790
796
|
def _start_extension_loop(self):
|
791
797
|
api_logger.debug(f"Starting main loop for monitoring configuration: '{self.monitoring_config_name}'")
|
File without changes
|
{dt_extensions_sdk-1.2.1.dist-info → dt_extensions_sdk-1.2.3.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|