taegis-sdk-python 1.6.0__tar.gz → 1.6.1__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.
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/PKG-INFO +2 -1
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/pyproject.toml +1 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/_version.py +1 -1
- taegis_sdk_python-1.6.1/taegis_sdk_python/middlewares/__init__.py +6 -0
- taegis_sdk_python-1.6.1/taegis_sdk_python/middlewares/logging/__init__.py +5 -0
- taegis_sdk_python-1.6.1/taegis_sdk_python/middlewares/logging/_default.py +31 -0
- taegis_sdk_python-1.6.1/taegis_sdk_python/middlewares/retry/__init__.py +5 -0
- taegis_sdk_python-1.6.1/taegis_sdk_python/middlewares/retry/_default.py +80 -0
- taegis_sdk_python-1.6.1/taegis_sdk_python/middlewares/utils.py +39 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/service_core.py +15 -7
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/__init__.py +8 -1
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/templates/_jinja2.py +5 -2
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/.gitignore +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/LICENSE +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/README.md +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/_consts.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/authentication.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/alerts/federated_search.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/alerts/search.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/cases/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/cases/federated_search.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/cases/search.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/events/search.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/investigations/federated_search.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/investigations/search.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/sharelinks/create.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/sharelinks/unfurl.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/config.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/errors.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/access_points/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/access_points/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/access_points/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/access_points/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts_history/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts_history/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts_history/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts_history/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts_history/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/contracted_endpoint/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/contracted_endpoint/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/contracted_endpoint/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/contracted_endpoint/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/contracted_endpoint/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/cql_metadata/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/cql_metadata/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/cql_metadata/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/cql_metadata/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/cql_metadata/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/datasources/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/datasources/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/datasources/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/datasources/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/datasources/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/detector_registry/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/entity_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/entity_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/entity_context/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/entity_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/entity_context/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/event_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/event_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/event_search/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/event_search/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/events/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/events/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/events/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/events/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/exports/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/exports/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/exports/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/exports/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/fast_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/fast_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/fast_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/fast_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/fast_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/file_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/file_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/file_info/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/file_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/file_info/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/ingest_stats/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/ingest_stats/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/ingest_stats/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/ingest_stats/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/ingest_stats/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations2/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations2/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/investigations2/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/isensor/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/isensor/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/isensor/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/isensor/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/isensor/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_context/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_context/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/multi_tenant_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/nl_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/nl_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/nl_search/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/nl_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/nl_search/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notebooks/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notebooks/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notifications/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notifications/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notifications/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/notifications/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/preferences/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/preferences/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/preferences/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/preferences/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/process_trees/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/process_trees/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/process_trees/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/process_trees/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/process_trees/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/queries/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/queries/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/queries/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/queries/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/queries/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/roadrunner/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/rules/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/rules/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/rules/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/rules/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/sharelinks/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/subjects/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/subjects/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/subjects/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/subjects/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/subjects/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants4/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants4/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants4/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants4/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/tenants4/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat_score/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat_score/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat_score/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat_score/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/threat_score/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trigger_action/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trigger_action/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trigger_action/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trigger_action/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trigger_action/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trip/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trip/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trip/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/trip/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/users/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/users/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/users/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/users/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/users/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/vdr/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/vdr/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/vdr/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/vdr/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/vdr/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/xdr_central_connector/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/xdr_central_connector/mutations.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/xdr_central_connector/queries.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/xdr_central_connector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/xdr_central_connector/types.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/templates/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/tokens.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/transport/__init__.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/transport/aiohttp_websockets.py +0 -0
- {taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taegis-sdk-python
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.1
|
|
4
4
|
Summary: Taegis Python SDK
|
|
5
5
|
Project-URL: Homepage, https://github.com/secureworks/taegis-sdk-python
|
|
6
6
|
Project-URL: Bug Reports, https://github.com/secureworks/taegis-sdk-python/issues
|
|
@@ -194,6 +194,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
194
194
|
Classifier: Programming Language :: Python :: 3.13
|
|
195
195
|
Requires-Python: >=3.9
|
|
196
196
|
Requires-Dist: aiohttp
|
|
197
|
+
Requires-Dist: backoff
|
|
197
198
|
Requires-Dist: dataclasses-json
|
|
198
199
|
Requires-Dist: filelock>=3.12.4
|
|
199
200
|
Requires-Dist: gql<4,>=3.5.0
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""Taegis SDK Logging Middlewares."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
|
|
5
|
+
from aiohttp import ClientHandlerType, ClientRequest, ClientResponse
|
|
6
|
+
|
|
7
|
+
from taegis_sdk_python.middlewares.utils import scrub_dict
|
|
8
|
+
|
|
9
|
+
log = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async def headers_logging_middleware(
|
|
13
|
+
req: ClientRequest, handler: ClientHandlerType
|
|
14
|
+
) -> ClientResponse:
|
|
15
|
+
"""Debug Log AIOHTTP Request and Response Headers. Remove access tokens from headers and values.
|
|
16
|
+
|
|
17
|
+
Parameters
|
|
18
|
+
----------
|
|
19
|
+
req : ClientRequest
|
|
20
|
+
handler : ClientHandlerType
|
|
21
|
+
|
|
22
|
+
Returns
|
|
23
|
+
-------
|
|
24
|
+
ClientResponse
|
|
25
|
+
"""
|
|
26
|
+
headers = scrub_dict(req.headers)
|
|
27
|
+
log.debug(f"Request Headers: {headers}")
|
|
28
|
+
resp = await handler(req)
|
|
29
|
+
headers = scrub_dict(resp.headers)
|
|
30
|
+
log.debug(f"Response Headers: {headers}")
|
|
31
|
+
return resp
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Taegis SDK Retry Middlewares."""
|
|
2
|
+
|
|
3
|
+
from http import HTTPStatus
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
import backoff
|
|
7
|
+
from aiohttp import ClientHandlerType, ClientRequest, ClientResponse
|
|
8
|
+
|
|
9
|
+
from taegis_sdk_python.config import get_config
|
|
10
|
+
|
|
11
|
+
SECTION = "backoff.retry"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def config_max_time() -> Optional[int]:
|
|
15
|
+
"""Provide Max Time elapsed for retry.
|
|
16
|
+
|
|
17
|
+
Returns
|
|
18
|
+
-------
|
|
19
|
+
int
|
|
20
|
+
Seconds.
|
|
21
|
+
"""
|
|
22
|
+
config = get_config()
|
|
23
|
+
|
|
24
|
+
return config.getint(SECTION, "max_time", fallback=10)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def config_max_tries() -> Optional[int]:
|
|
28
|
+
"""Provide Max Tries for retry.
|
|
29
|
+
|
|
30
|
+
Returns
|
|
31
|
+
-------
|
|
32
|
+
Optional[int]
|
|
33
|
+
Max tries.
|
|
34
|
+
"""
|
|
35
|
+
config = get_config()
|
|
36
|
+
|
|
37
|
+
return config.getint(SECTION, "max_tries", fallback=None)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@backoff.on_predicate(
|
|
41
|
+
backoff.runtime,
|
|
42
|
+
predicate=lambda r: r.status == HTTPStatus.TOO_MANY_REQUESTS,
|
|
43
|
+
value=lambda r: int(r.headers.get("Retry-After")),
|
|
44
|
+
max_time=config_max_time,
|
|
45
|
+
max_tries=config_max_tries,
|
|
46
|
+
)
|
|
47
|
+
@backoff.on_predicate(
|
|
48
|
+
backoff.expo,
|
|
49
|
+
lambda r: r.status
|
|
50
|
+
in (
|
|
51
|
+
HTTPStatus.REQUEST_TIMEOUT,
|
|
52
|
+
HTTPStatus.INTERNAL_SERVER_ERROR,
|
|
53
|
+
HTTPStatus.BAD_GATEWAY,
|
|
54
|
+
HTTPStatus.SERVICE_UNAVAILABLE,
|
|
55
|
+
HTTPStatus.GATEWAY_TIMEOUT,
|
|
56
|
+
),
|
|
57
|
+
max_time=config_max_time,
|
|
58
|
+
max_tries=config_max_tries,
|
|
59
|
+
)
|
|
60
|
+
async def retry_middleware(
|
|
61
|
+
req: ClientRequest, handler: ClientHandlerType
|
|
62
|
+
) -> ClientResponse:
|
|
63
|
+
"""Retry HTTP requests middleware.
|
|
64
|
+
|
|
65
|
+
Retry on exponential backoff for REQUEST_TIMEOUT (408), INTERNAL_SERVER_ERROR (500),
|
|
66
|
+
BAD_GATEWAY (502), SERVICE_UNAVAILABLE (503), GATEWAY_TIMEOUT (504).
|
|
67
|
+
|
|
68
|
+
If TOO_MANY_REQUESTS (429) is encounted, the value in the "Retry-After" header
|
|
69
|
+
will be used as the backoff timer.
|
|
70
|
+
|
|
71
|
+
Parameters
|
|
72
|
+
----------
|
|
73
|
+
req : ClientRequest
|
|
74
|
+
handler : ClientHandlerType
|
|
75
|
+
|
|
76
|
+
Returns
|
|
77
|
+
-------
|
|
78
|
+
ClientResponse
|
|
79
|
+
"""
|
|
80
|
+
return await handler(req)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Taegis SDK Python Middlewares Utilities."""
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import List
|
|
5
|
+
|
|
6
|
+
from taegis_sdk_python.config import get_config
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def get_access_tokens() -> List[str]:
|
|
10
|
+
"""Retrieve all cached access tokens."""
|
|
11
|
+
config = get_config()
|
|
12
|
+
|
|
13
|
+
tokens = []
|
|
14
|
+
for section in config.sections():
|
|
15
|
+
if token := config.get(section, "access_token", fallback=None):
|
|
16
|
+
tokens.append(token)
|
|
17
|
+
|
|
18
|
+
return tokens
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def scrub_dict(d: Mapping):
|
|
22
|
+
"""Remove sensitive data from dictionary keys and values."""
|
|
23
|
+
access_tokens = get_access_tokens()
|
|
24
|
+
|
|
25
|
+
if "authorization" in d:
|
|
26
|
+
token = d["Authorization"].replace("Bearer ")
|
|
27
|
+
access_tokens.append(token)
|
|
28
|
+
|
|
29
|
+
scrubbed = d.copy()
|
|
30
|
+
for k, v in d.items():
|
|
31
|
+
if isinstance(k, str):
|
|
32
|
+
for token in access_tokens:
|
|
33
|
+
k = k.replace(token, "<redacted>")
|
|
34
|
+
if isinstance(v, str):
|
|
35
|
+
for token in access_tokens:
|
|
36
|
+
v = v.replace(token, "<redacted>")
|
|
37
|
+
scrubbed[k] = v
|
|
38
|
+
|
|
39
|
+
return scrubbed
|
|
@@ -209,7 +209,10 @@ class ServiceCore:
|
|
|
209
209
|
@property
|
|
210
210
|
def sync_client(self) -> Client:
|
|
211
211
|
"""GraphQL Synchronous Transport with Client."""
|
|
212
|
-
client_session_args = {
|
|
212
|
+
client_session_args = {
|
|
213
|
+
"trust_env": self.service.trust_env,
|
|
214
|
+
"middlewares": self.service.middlewares,
|
|
215
|
+
}
|
|
213
216
|
|
|
214
217
|
transport = AIOHTTPTransport(
|
|
215
218
|
f"{self.sync_url}{self.gateway}",
|
|
@@ -246,7 +249,10 @@ class ServiceCore:
|
|
|
246
249
|
if self.service.tenant_id:
|
|
247
250
|
subprotocols.append(f"x-tenant-context-{self.service.tenant_id}")
|
|
248
251
|
|
|
249
|
-
client_session_args = {
|
|
252
|
+
client_session_args = {
|
|
253
|
+
"trust_env": self.service.trust_env,
|
|
254
|
+
"middlewares": self.service.middlewares,
|
|
255
|
+
}
|
|
250
256
|
|
|
251
257
|
transport = AIOHTTPWebsocketsTransport(
|
|
252
258
|
f"{self.wss_url}{self.gateway}",
|
|
@@ -483,11 +489,13 @@ class ServiceCore:
|
|
|
483
489
|
"""
|
|
484
490
|
extra_args = {}
|
|
485
491
|
if self.service.proxy:
|
|
486
|
-
extra_args
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
492
|
+
extra_args.update(
|
|
493
|
+
{
|
|
494
|
+
"proxy": self.service.proxy,
|
|
495
|
+
"proxy_auth": self.service.proxy_auth,
|
|
496
|
+
"proxy_headers": self.service.proxy_headers,
|
|
497
|
+
}
|
|
498
|
+
)
|
|
491
499
|
|
|
492
500
|
query = gql(query_string)
|
|
493
501
|
return await self.sync_client.execute_async(
|
|
@@ -84,7 +84,7 @@ log = logging.getLogger(__name__)
|
|
|
84
84
|
class GraphQLService:
|
|
85
85
|
"""Taegis GraphQL Service manager."""
|
|
86
86
|
|
|
87
|
-
def __init__(
|
|
87
|
+
def __init__( # pylint: disable=too-many-locals
|
|
88
88
|
self,
|
|
89
89
|
*,
|
|
90
90
|
environment: Optional[str] = None,
|
|
@@ -101,6 +101,7 @@ class GraphQLService:
|
|
|
101
101
|
execute_timeout: Optional[Union[int, float]] = 300,
|
|
102
102
|
max_message_size: int = 0,
|
|
103
103
|
use_universal_authentication: bool = False,
|
|
104
|
+
middlewares=None,
|
|
104
105
|
): # pylint: disable=too-many-statements
|
|
105
106
|
"""
|
|
106
107
|
GraphQLService
|
|
@@ -175,6 +176,7 @@ class GraphQLService:
|
|
|
175
176
|
|
|
176
177
|
self._execute_timeout = execute_timeout
|
|
177
178
|
self._max_message_size = max_message_size
|
|
179
|
+
self._middlewares = middlewares or ()
|
|
178
180
|
|
|
179
181
|
self._access_points = None
|
|
180
182
|
self._agent = None
|
|
@@ -424,6 +426,11 @@ class GraphQLService:
|
|
|
424
426
|
"""GraphQL Execute Timeout."""
|
|
425
427
|
return self._context_manager.get("execute_timeout", self._execute_timeout)
|
|
426
428
|
|
|
429
|
+
@property
|
|
430
|
+
def middlewares(self):
|
|
431
|
+
"""Transport Middleware handlers."""
|
|
432
|
+
return self._context_manager.get("middlewares", self._middlewares)
|
|
433
|
+
|
|
427
434
|
@property
|
|
428
435
|
def access_points(self):
|
|
429
436
|
"""Access Points Service Endpoint."""
|
|
@@ -24,13 +24,16 @@ def escape_value(value):
|
|
|
24
24
|
# Filters
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
def filter_or(value: List[str], field_name: str, operator: str = "="):
|
|
27
|
+
def filter_or(value: List[str], field_name: str = None, operator: str = "="):
|
|
28
28
|
"""Format values for Taegis QL OR statement."""
|
|
29
29
|
if not isinstance(value, list):
|
|
30
30
|
raise ValueError("Input is not list.")
|
|
31
31
|
|
|
32
32
|
return " OR ".join(
|
|
33
|
-
[
|
|
33
|
+
[
|
|
34
|
+
f"{field_name} {operator} {escape_value(item)}" if field_name else value
|
|
35
|
+
for item in value
|
|
36
|
+
]
|
|
34
37
|
)
|
|
35
38
|
|
|
36
39
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/alerts/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/alerts/search.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/cases/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/cases/search.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/events/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/events/search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/sharelinks/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/sharelinks/create.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/commons/sharelinks/unfurl.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/agent/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/alerts/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/assets2/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/audits/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/authz/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/byoti/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/clients/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/collector/types.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/__init__.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/mutations.py
RENAMED
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/comments/types.py
RENAMED
|
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
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/cql_metadata/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taegis_sdk_python-1.6.0 → taegis_sdk_python-1.6.1}/taegis_sdk_python/services/datasources/types.py
RENAMED
|
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
|