dt-extensions-sdk 1.2.2__tar.gz → 1.2.3__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.
Files changed (83) hide show
  1. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/PKG-INFO +1 -1
  2. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/__about__.py +1 -1
  3. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/callback.py +11 -1
  4. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/extension.py +3 -1
  5. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/.github/workflows/gh-pages-docs.yml +0 -0
  6. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/.github/workflows/publish.yml +0 -0
  7. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/.gitignore +0 -0
  8. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/LICENSE.txt +0 -0
  9. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/README.md +0 -0
  10. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/dt-sdk-header.png +0 -0
  11. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/dt-sdk-logo.png +0 -0
  12. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/favicon.ico +0 -0
  13. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/img/migrate-01-new-extension.png +0 -0
  14. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/img/migrate-02-type.png +0 -0
  15. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/img/migrate-03-import.png +0 -0
  16. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/img/migrate-04-import-remote.png +0 -0
  17. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/img/migrate-05-activation.png +0 -0
  18. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/_static/img/migrate-06-activation-config.png +0 -0
  19. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/api/events/event_severity.rst +0 -0
  20. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/api/events/event_type.rst +0 -0
  21. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/api/events/index.rst +0 -0
  22. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/api/extension.rst +0 -0
  23. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/api/metrics/index.rst +0 -0
  24. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/api/metrics/metric.rst +0 -0
  25. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/api/metrics/metric_type.rst +0 -0
  26. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/assemble.rst +0 -0
  27. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/build.rst +0 -0
  28. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/create.rst +0 -0
  29. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/gencerts.rst +0 -0
  30. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/help.rst +0 -0
  31. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/run.rst +0 -0
  32. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/sign.rst +0 -0
  33. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/upload.rst +0 -0
  34. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/cli/wheel.rst +0 -0
  35. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/conf.py +0 -0
  36. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/guides/building.rst +0 -0
  37. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/guides/extension_structure.rst +0 -0
  38. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/guides/installation.rst +0 -0
  39. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/guides/migration.rst +0 -0
  40. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/index.rst +0 -0
  41. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/docs/requirements.txt +0 -0
  42. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/__init__.py +0 -0
  43. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/__init__.py +0 -0
  44. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/__init__.py +0 -0
  45. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/create.py +0 -0
  46. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/.gitignore.template +0 -0
  47. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/README.md.template +0 -0
  48. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/activation.json.template +0 -0
  49. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/extension/activationSchema.json.template +0 -0
  50. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/extension/extension.yaml.template +0 -0
  51. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/extension_name/__init__.py.template +0 -0
  52. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/extension_name/__main__.py.template +0 -0
  53. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/create/extension_template/setup.py.template +0 -0
  54. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/main.py +0 -0
  55. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/cli/schema.py +0 -0
  56. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/__init__.py +0 -0
  57. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/activation.py +0 -0
  58. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/communication.py +0 -0
  59. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/event.py +0 -0
  60. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/helper.py +0 -0
  61. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/metric.py +0 -0
  62. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/runtime.py +0 -0
  63. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/snapshot.py +0 -0
  64. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/vendor/__init__.py +0 -0
  65. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/vendor/mureq/LICENSE +0 -0
  66. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/vendor/mureq/__init__.py +0 -0
  67. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/dynatrace_extension/sdk/vendor/mureq/mureq.py +0 -0
  68. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/pyproject.toml +0 -0
  69. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/__init__.py +0 -0
  70. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/cli/__init__.py +0 -0
  71. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/cli/test_dt_sdk.py +0 -0
  72. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/cli/test_templates.py +0 -0
  73. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/cli/test_types.py +0 -0
  74. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/data/snapshot.json +0 -0
  75. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/__init__.py +0 -0
  76. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_activation.py +0 -0
  77. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_callback.py +0 -0
  78. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_communication.py +0 -0
  79. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_extension.py +0 -0
  80. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_metric.py +0 -0
  81. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_runtime_properties.py +0 -0
  82. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_snapshot.py +0 -0
  83. {dt_extensions_sdk-1.2.2 → dt_extensions_sdk-1.2.3}/tests/sdk/test_status.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dt-extensions-sdk
3
- Version: 1.2.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
@@ -2,4 +2,4 @@
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
- __version__ = "1.2.2"
5
+ __version__ = "1.2.3"
@@ -45,6 +45,7 @@ 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)
@@ -56,7 +57,6 @@ class WrappedCallback:
56
57
  self.running = True
57
58
  self.executions_total += 1
58
59
  self.executions_per_interval += 1
59
- self.next_run = datetime.now() + self.interval
60
60
  start_time = timer()
61
61
  failed = False
62
62
  try:
@@ -133,3 +133,13 @@ class WrappedCallback:
133
133
  self.duration_interval_total = 0
134
134
  self.exception_count = 0
135
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()
@@ -789,7 +789,9 @@ class Extension:
789
789
 
790
790
  def _callback_iteration(self, callback: WrappedCallback):
791
791
  self._callbacks_executor.submit(self._run_callback, callback)
792
- self._scheduler.enter(callback.interval.total_seconds(), 1, self._callback_iteration, (callback,))
792
+ callback.iterations += 1
793
+ next_timestamp = callback.get_next_execution_timestamp()
794
+ self._scheduler.enterabs(next_timestamp, 1, self._callback_iteration, (callback,))
793
795
 
794
796
  def _start_extension_loop(self):
795
797
  api_logger.debug(f"Starting main loop for monitoring configuration: '{self.monitoring_config_name}'")