howler-api 3.3.0.dev621__tar.gz → 3.3.0.dev649__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 (198) hide show
  1. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/PKG-INFO +1 -1
  2. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/view.py +1 -1
  3. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/collection.py +33 -22
  4. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/store.py +0 -4
  5. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/__init__.py +2 -2
  6. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/pyproject.toml +1 -1
  7. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/README.md +0 -0
  8. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/__init__.py +0 -0
  9. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/__init__.py +0 -0
  10. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/add_label.py +0 -0
  11. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/add_to_bundle.py +0 -0
  12. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/change_field.py +0 -0
  13. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/demote.py +0 -0
  14. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/example_plugin.py +0 -0
  15. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/prioritization.py +0 -0
  16. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/promote.py +0 -0
  17. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/remove_from_bundle.py +0 -0
  18. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/remove_label.py +0 -0
  19. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/actions/transition.py +0 -0
  20. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/__init__.py +0 -0
  21. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/base.py +0 -0
  22. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/socket.py +0 -0
  23. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/__init__.py +0 -0
  24. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/action.py +0 -0
  25. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/analytic.py +0 -0
  26. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/auth.py +0 -0
  27. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/clue.py +0 -0
  28. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/configs.py +0 -0
  29. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/dossier.py +0 -0
  30. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/help.py +0 -0
  31. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/hit.py +0 -0
  32. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/notebook.py +0 -0
  33. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/overview.py +0 -0
  34. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/search.py +0 -0
  35. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/template.py +0 -0
  36. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/tool.py +0 -0
  37. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/user.py +0 -0
  38. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/utils/__init__.py +0 -0
  39. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/api/v1/utils/etag.py +0 -0
  40. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/app.py +0 -0
  41. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/README.md +0 -0
  42. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/__init__.py +0 -0
  43. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/classification.py +0 -0
  44. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/classification.yml +0 -0
  45. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/exceptions.py +0 -0
  46. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/loader.py +0 -0
  47. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/logging/__init__.py +0 -0
  48. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/logging/audit.py +0 -0
  49. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/logging/format.py +0 -0
  50. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/net.py +0 -0
  51. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/net_static.py +0 -0
  52. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/random_user.py +0 -0
  53. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/common/swagger.py +0 -0
  54. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/config.py +0 -0
  55. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/cronjobs/__init__.py +0 -0
  56. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/cronjobs/retention.py +0 -0
  57. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/cronjobs/rules.py +0 -0
  58. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/cronjobs/view_cleanup.py +0 -0
  59. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/README.md +0 -0
  60. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/__init__.py +0 -0
  61. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/bulk.py +0 -0
  62. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/constants.py +0 -0
  63. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/exceptions.py +0 -0
  64. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/howler_store.py +0 -0
  65. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/migrations/fix_process.py +0 -0
  66. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/operations.py +0 -0
  67. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/schemas.py +0 -0
  68. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/support/__init__.py +0 -0
  69. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/support/build.py +0 -0
  70. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/support/schemas.py +0 -0
  71. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/datastore/types.py +0 -0
  72. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/error.py +0 -0
  73. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/external/__init__.py +0 -0
  74. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/external/generate_mitre.py +0 -0
  75. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/external/generate_sigma_rules.py +0 -0
  76. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/external/generate_tlds.py +0 -0
  77. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/external/reindex_data.py +0 -0
  78. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/external/wipe_databases.py +0 -0
  79. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/gunicorn_config.py +0 -0
  80. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/healthz.py +0 -0
  81. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/__init__.py +0 -0
  82. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/azure.py +0 -0
  83. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/discover.py +0 -0
  84. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/hit.py +0 -0
  85. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/oauth.py +0 -0
  86. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/search.py +0 -0
  87. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/workflow.py +0 -0
  88. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/helper/ws.py +0 -0
  89. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/README.md +0 -0
  90. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/__init__.py +0 -0
  91. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/base.py +0 -0
  92. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/charter.txt +0 -0
  93. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/helper.py +0 -0
  94. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/howler_enum.py +0 -0
  95. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/__init__.py +0 -0
  96. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/action.py +0 -0
  97. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/analytic.py +0 -0
  98. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/assemblyline.py +0 -0
  99. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/aws.py +0 -0
  100. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/azure.py +0 -0
  101. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/cbs.py +0 -0
  102. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/clue.py +0 -0
  103. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/config.py +0 -0
  104. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/dossier.py +0 -0
  105. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/__init__.py +0 -0
  106. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/agent.py +0 -0
  107. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/autonomous_system.py +0 -0
  108. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/client.py +0 -0
  109. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/cloud.py +0 -0
  110. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/code_signature.py +0 -0
  111. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/container.py +0 -0
  112. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/dns.py +0 -0
  113. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/egress.py +0 -0
  114. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/elf.py +0 -0
  115. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/email.py +0 -0
  116. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/error.py +0 -0
  117. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/event.py +0 -0
  118. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/faas.py +0 -0
  119. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/file.py +0 -0
  120. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/geo.py +0 -0
  121. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/group.py +0 -0
  122. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/hash.py +0 -0
  123. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/host.py +0 -0
  124. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/http.py +0 -0
  125. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/ingress.py +0 -0
  126. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/interface.py +0 -0
  127. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/network.py +0 -0
  128. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/observer.py +0 -0
  129. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/organization.py +0 -0
  130. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/os.py +0 -0
  131. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/pe.py +0 -0
  132. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/process.py +0 -0
  133. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/registry.py +0 -0
  134. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/related.py +0 -0
  135. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/rule.py +0 -0
  136. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/server.py +0 -0
  137. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/threat.py +0 -0
  138. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/tls.py +0 -0
  139. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/url.py +0 -0
  140. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/user.py +0 -0
  141. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/user_agent.py +0 -0
  142. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/ecs/vulnerability.py +0 -0
  143. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/gcp.py +0 -0
  144. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/hit.py +0 -0
  145. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/howler_data.py +0 -0
  146. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/lead.py +0 -0
  147. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/localized_label.py +0 -0
  148. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/overview.py +0 -0
  149. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/pivot.py +0 -0
  150. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/template.py +0 -0
  151. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/user.py +0 -0
  152. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/models/view.py +0 -0
  153. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/random_data.py +0 -0
  154. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/odm/randomizer.py +0 -0
  155. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/patched.py +0 -0
  156. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/plugins/__init__.py +0 -0
  157. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/plugins/config.py +0 -0
  158. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/__init__.py +0 -0
  159. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/README.md +0 -0
  160. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/counters.py +0 -0
  161. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/events.py +0 -0
  162. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/hash.py +0 -0
  163. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/lock.py +0 -0
  164. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/queues/__init__.py +0 -0
  165. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/queues/comms.py +0 -0
  166. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/queues/multi.py +0 -0
  167. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/queues/named.py +0 -0
  168. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/queues/priority.py +0 -0
  169. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/set.py +0 -0
  170. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/remote/datatypes/user_quota_tracker.py +0 -0
  171. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/security/__init__.py +0 -0
  172. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/security/socket.py +0 -0
  173. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/security/utils.py +0 -0
  174. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/__init__.py +0 -0
  175. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/action_service.py +0 -0
  176. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/analytic_service.py +0 -0
  177. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/auth_service.py +0 -0
  178. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/config_service.py +0 -0
  179. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/dossier_service.py +0 -0
  180. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/event_service.py +0 -0
  181. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/hit_service.py +0 -0
  182. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/jwt_service.py +0 -0
  183. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/lucene_service.py +0 -0
  184. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/notebook_service.py +0 -0
  185. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/overview_service.py +0 -0
  186. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/template_service.py +0 -0
  187. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/services/user_service.py +0 -0
  188. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/__init__.py +0 -0
  189. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/annotations.py +0 -0
  190. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/chunk.py +0 -0
  191. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/dict_utils.py +0 -0
  192. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/isotime.py +0 -0
  193. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/list_utils.py +0 -0
  194. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/lucene.py +0 -0
  195. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/path.py +0 -0
  196. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/socket_utils.py +0 -0
  197. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/str_utils.py +0 -0
  198. {howler_api-3.3.0.dev621 → howler_api-3.3.0.dev649}/howler/utils/uid.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: howler-api
3
- Version: 3.3.0.dev621
3
+ Version: 3.3.0.dev649
4
4
  Summary: Howler - API server
5
5
  License: MIT
6
6
  Keywords: howler,alerting,gc,canada,cse-cst,cse,cst,cyber,cccs
@@ -261,7 +261,7 @@ def remove_as_favourite(view_id: str, **kwargs):
261
261
  """Remove a view from a list of the user's favourites
262
262
 
263
263
  Variables:
264
- id => The id of the view to remove as a favourite
264
+ view_id => The id of the view to remove as a favourite
265
265
 
266
266
  Optional Arguments:
267
267
  None
@@ -270,14 +270,17 @@ class ESCollection(Generic[ModelType]):
270
270
  if index is None:
271
271
  index = self.index_name
272
272
 
273
+ client = self.datastore.client
274
+ if request_timeout is not None:
275
+ client = client.options(request_timeout=request_timeout)
276
+
273
277
  # initial search
274
278
  resp = self.with_retries(
275
- self.datastore.client.search,
279
+ client.search,
276
280
  index=index,
277
281
  query=query,
278
282
  scroll=scroll,
279
283
  size=size,
280
- request_timeout=request_timeout,
281
284
  sort=sort,
282
285
  _source=source,
283
286
  )
@@ -305,16 +308,18 @@ class ESCollection(Generic[ModelType]):
305
308
 
306
309
  finally:
307
310
  if scroll_id:
308
- resp = self.with_retries(
309
- self.datastore.client.clear_scroll,
310
- scroll_id=[scroll_id],
311
- ignore=(404,),
312
- )
313
- if not resp.get("succeeded", False):
314
- logger.warning(
315
- f"Could not clear scroll ID {scroll_id}, there is potential "
316
- "memory leak in you Elastic cluster..."
311
+ try:
312
+ resp = self.with_retries(
313
+ self.datastore.client.clear_scroll,
314
+ scroll_id=[scroll_id],
317
315
  )
316
+ if not resp.get("succeeded", False):
317
+ logger.warning(
318
+ f"Could not clear scroll ID {scroll_id}, there is potential "
319
+ "memory leak in your Elastic cluster..."
320
+ )
321
+ except elasticsearch.exceptions.NotFoundError:
322
+ pass
318
323
 
319
324
  def with_retries(self, func, *args, raise_conflicts=False, **kwargs):
320
325
  """This function performs the passed function with the given args and kwargs and reconnect if it fails
@@ -470,7 +475,9 @@ class ESCollection(Generic[ModelType]):
470
475
  raise
471
476
 
472
477
  def _safe_index_copy(self, copy_function, src, target, settings=None, min_status="yellow"):
473
- ret = copy_function(index=src, target=target, settings=settings, request_timeout=60)
478
+ options_client = self.datastore.client.options(request_timeout=60)
479
+ timed_function = getattr(options_client.indices, copy_function.__name__)
480
+ ret = timed_function(index=src, target=target, settings=settings)
474
481
  if not ret["acknowledged"]:
475
482
  raise DataStoreException(f"Failed to create index {target} from {src}.")
476
483
 
@@ -1658,19 +1665,23 @@ class ESCollection(Generic[ModelType]):
1658
1665
 
1659
1666
  # Check if the scroll is finished and close it
1660
1667
  if deep_paging_id is not None and new_deep_paging_id is None:
1661
- self.with_retries(
1662
- self.datastore.client.clear_scroll,
1663
- scroll_id=[deep_paging_id],
1664
- ignore=(404,),
1665
- )
1668
+ try:
1669
+ self.with_retries(
1670
+ self.datastore.client.clear_scroll,
1671
+ scroll_id=[deep_paging_id],
1672
+ )
1673
+ except elasticsearch.exceptions.NotFoundError:
1674
+ pass
1666
1675
 
1667
1676
  # Check if we can tell from inspection that we have finished the scroll
1668
1677
  if new_deep_paging_id is not None and len(ret_data["items"]) < ret_data["rows"]:
1669
- self.with_retries(
1670
- self.datastore.client.clear_scroll,
1671
- scroll_id=[new_deep_paging_id],
1672
- ignore=(404,),
1673
- )
1678
+ try:
1679
+ self.with_retries(
1680
+ self.datastore.client.clear_scroll,
1681
+ scroll_id=[new_deep_paging_id],
1682
+ )
1683
+ except elasticsearch.exceptions.NotFoundError:
1684
+ pass
1674
1685
  new_deep_paging_id = None
1675
1686
 
1676
1687
  if new_deep_paging_id is not None:
@@ -9,7 +9,6 @@ from typing import Any, Optional, cast
9
9
  from urllib.parse import urlparse
10
10
 
11
11
  import elasticsearch
12
- import elasticsearch.client
13
12
 
14
13
  from howler.common.logging.format import HWL_DATE_FORMAT, HWL_LOG_FORMAT
15
14
  from howler.datastore.collection import ESCollection
@@ -138,7 +137,6 @@ class ESStore(object):
138
137
  max_retries=0,
139
138
  request_timeout=TRANSPORT_TIMEOUT,
140
139
  )
141
- self.eql = elasticsearch.client.EqlClient(self.client)
142
140
  self.archive_access = archive_access
143
141
  self.url_path = "elastic"
144
142
 
@@ -215,14 +213,12 @@ class ESStore(object):
215
213
  max_retries=0,
216
214
  request_timeout=TRANSPORT_TIMEOUT,
217
215
  )
218
- self.eql = elasticsearch.client.EqlClient(self.client)
219
216
 
220
217
  def close(self):
221
218
  self._closed = True
222
219
  # Flatten the client object so that attempts to access without reconnecting errors hard
223
220
  # But 'cast' it so that mypy and other linters don't think that its normal for client to be None
224
221
  self.client = cast(elasticsearch.Elasticsearch, None)
225
- self.eql = cast(elasticsearch.client.EqlClient, None)
226
222
 
227
223
  def get_hosts(self, safe=False):
228
224
  if not safe:
@@ -3,7 +3,7 @@
3
3
  import json
4
4
  import logging
5
5
  import time
6
- from datetime import datetime
6
+ from datetime import datetime, timezone
7
7
  from pathlib import Path
8
8
 
9
9
  import redis
@@ -29,7 +29,7 @@ pool: dict[tuple[str, str, bool], redis.BlockingConnectionPool] = {}
29
29
 
30
30
 
31
31
  def now_as_iso():
32
- s = datetime.utcfromtimestamp(time.time()).isoformat()
32
+ s = datetime.now(timezone.utc).replace(tzinfo=None).isoformat()
33
33
  return f"{s}Z"
34
34
 
35
35
 
@@ -152,7 +152,7 @@ suppress-none-returning = true
152
152
  [tool.poetry]
153
153
  package-mode = true
154
154
  name = "howler-api"
155
- version = "3.3.0.dev621"
155
+ version = "3.3.0.dev649"
156
156
  description = "Howler - API server"
157
157
  authors = [
158
158
  "Canadian Centre for Cyber Security <howler@cyber.gc.ca>",