howler-api 3.0.0.dev363__tar.gz → 3.0.0.dev366__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.

Potentially problematic release.


This version of howler-api might be problematic. Click here for more details.

Files changed (197) hide show
  1. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/PKG-INFO +1 -1
  2. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/collection.py +20 -7
  3. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/reindex_data.py +5 -1
  4. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/pyproject.toml +1 -1
  5. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/README.md +0 -0
  6. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/__init__.py +0 -0
  7. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/__init__.py +0 -0
  8. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/add_label.py +0 -0
  9. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/add_to_bundle.py +0 -0
  10. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/change_field.py +0 -0
  11. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/demote.py +0 -0
  12. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/example_plugin.py +0 -0
  13. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/prioritization.py +0 -0
  14. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/promote.py +0 -0
  15. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/remove_from_bundle.py +0 -0
  16. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/remove_label.py +0 -0
  17. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/transition.py +0 -0
  18. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/__init__.py +0 -0
  19. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/base.py +0 -0
  20. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/socket.py +0 -0
  21. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/__init__.py +0 -0
  22. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/action.py +0 -0
  23. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/analytic.py +0 -0
  24. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/auth.py +0 -0
  25. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/clue.py +0 -0
  26. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/configs.py +0 -0
  27. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/dossier.py +0 -0
  28. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/help.py +0 -0
  29. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/hit.py +0 -0
  30. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/notebook.py +0 -0
  31. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/overview.py +0 -0
  32. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/search.py +0 -0
  33. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/template.py +0 -0
  34. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/tool.py +0 -0
  35. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/user.py +0 -0
  36. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/utils/__init__.py +0 -0
  37. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/utils/etag.py +0 -0
  38. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/view.py +0 -0
  39. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/app.py +0 -0
  40. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/README.md +0 -0
  41. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/__init__.py +0 -0
  42. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/classification.py +0 -0
  43. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/classification.yml +0 -0
  44. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/exceptions.py +0 -0
  45. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/loader.py +0 -0
  46. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/logging/__init__.py +0 -0
  47. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/logging/audit.py +0 -0
  48. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/logging/format.py +0 -0
  49. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/net.py +0 -0
  50. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/net_static.py +0 -0
  51. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/random_user.py +0 -0
  52. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/swagger.py +0 -0
  53. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/config.py +0 -0
  54. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/__init__.py +0 -0
  55. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/retention.py +0 -0
  56. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/rules.py +0 -0
  57. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/view_cleanup.py +0 -0
  58. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/README.md +0 -0
  59. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/__init__.py +0 -0
  60. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/bulk.py +0 -0
  61. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/constants.py +0 -0
  62. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/exceptions.py +0 -0
  63. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/howler_store.py +0 -0
  64. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/migrations/fix_process.py +0 -0
  65. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/operations.py +0 -0
  66. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/schemas.py +0 -0
  67. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/store.py +0 -0
  68. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/support/__init__.py +0 -0
  69. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/support/build.py +0 -0
  70. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/support/schemas.py +0 -0
  71. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/types.py +0 -0
  72. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/error.py +0 -0
  73. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/__init__.py +0 -0
  74. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/generate_mitre.py +0 -0
  75. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/generate_sigma_rules.py +0 -0
  76. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/generate_tlds.py +0 -0
  77. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/wipe_databases.py +0 -0
  78. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/gunicorn_config.py +0 -0
  79. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/healthz.py +0 -0
  80. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/__init__.py +0 -0
  81. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/azure.py +0 -0
  82. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/discover.py +0 -0
  83. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/hit.py +0 -0
  84. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/oauth.py +0 -0
  85. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/search.py +0 -0
  86. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/workflow.py +0 -0
  87. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/ws.py +0 -0
  88. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/README.md +0 -0
  89. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/__init__.py +0 -0
  90. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/base.py +0 -0
  91. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/charter.txt +0 -0
  92. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/helper.py +0 -0
  93. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/howler_enum.py +0 -0
  94. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/__init__.py +0 -0
  95. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/action.py +0 -0
  96. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/analytic.py +0 -0
  97. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/assemblyline.py +0 -0
  98. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/aws.py +0 -0
  99. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/azure.py +0 -0
  100. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/cbs.py +0 -0
  101. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/config.py +0 -0
  102. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/dossier.py +0 -0
  103. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/__init__.py +0 -0
  104. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/agent.py +0 -0
  105. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/autonomous_system.py +0 -0
  106. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/client.py +0 -0
  107. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/cloud.py +0 -0
  108. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/code_signature.py +0 -0
  109. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/container.py +0 -0
  110. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/dns.py +0 -0
  111. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/egress.py +0 -0
  112. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/elf.py +0 -0
  113. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/email.py +0 -0
  114. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/error.py +0 -0
  115. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/event.py +0 -0
  116. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/faas.py +0 -0
  117. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/file.py +0 -0
  118. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/geo.py +0 -0
  119. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/group.py +0 -0
  120. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/hash.py +0 -0
  121. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/host.py +0 -0
  122. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/http.py +0 -0
  123. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/ingress.py +0 -0
  124. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/interface.py +0 -0
  125. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/network.py +0 -0
  126. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/observer.py +0 -0
  127. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/organization.py +0 -0
  128. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/os.py +0 -0
  129. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/pe.py +0 -0
  130. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/process.py +0 -0
  131. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/registry.py +0 -0
  132. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/related.py +0 -0
  133. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/rule.py +0 -0
  134. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/server.py +0 -0
  135. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/threat.py +0 -0
  136. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/tls.py +0 -0
  137. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/url.py +0 -0
  138. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/user.py +0 -0
  139. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/user_agent.py +0 -0
  140. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/vulnerability.py +0 -0
  141. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/gcp.py +0 -0
  142. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/hit.py +0 -0
  143. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/howler_data.py +0 -0
  144. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/lead.py +0 -0
  145. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/localized_label.py +0 -0
  146. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/overview.py +0 -0
  147. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/pivot.py +0 -0
  148. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/template.py +0 -0
  149. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/user.py +0 -0
  150. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/view.py +0 -0
  151. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/random_data.py +0 -0
  152. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/randomizer.py +0 -0
  153. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/patched.py +0 -0
  154. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/plugins/__init__.py +0 -0
  155. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/plugins/config.py +0 -0
  156. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/__init__.py +0 -0
  157. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/README.md +0 -0
  158. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/__init__.py +0 -0
  159. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/counters.py +0 -0
  160. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/events.py +0 -0
  161. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/hash.py +0 -0
  162. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/lock.py +0 -0
  163. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/__init__.py +0 -0
  164. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/comms.py +0 -0
  165. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/multi.py +0 -0
  166. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/named.py +0 -0
  167. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/priority.py +0 -0
  168. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/set.py +0 -0
  169. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/user_quota_tracker.py +0 -0
  170. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/security/__init__.py +0 -0
  171. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/security/socket.py +0 -0
  172. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/security/utils.py +0 -0
  173. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/__init__.py +0 -0
  174. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/action_service.py +0 -0
  175. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/analytic_service.py +0 -0
  176. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/auth_service.py +0 -0
  177. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/config_service.py +0 -0
  178. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/dossier_service.py +0 -0
  179. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/event_service.py +0 -0
  180. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/hit_service.py +0 -0
  181. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/jwt_service.py +0 -0
  182. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/lucene_service.py +0 -0
  183. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/notebook_service.py +0 -0
  184. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/overview_service.py +0 -0
  185. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/template_service.py +0 -0
  186. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/user_service.py +0 -0
  187. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/__init__.py +0 -0
  188. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/annotations.py +0 -0
  189. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/chunk.py +0 -0
  190. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/dict_utils.py +0 -0
  191. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/isotime.py +0 -0
  192. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/list_utils.py +0 -0
  193. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/lucene.py +0 -0
  194. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/path.py +0 -0
  195. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/socket_utils.py +0 -0
  196. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/str_utils.py +0 -0
  197. {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/uid.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: howler-api
3
- Version: 3.0.0.dev363
3
+ Version: 3.0.0.dev366
4
4
  Summary: Howler - API server
5
5
  License: MIT
6
6
  Keywords: howler,alerting,gc,canada,cse-cst,cse,cst,cyber,cccs
@@ -418,8 +418,11 @@ class ESCollection(Generic[ModelType]):
418
418
  # - update_by_query
419
419
  # - delete_by_query
420
420
  # - reindex ...
421
+ attempt = 0
421
422
  res = None
422
423
  while res is None:
424
+ attempt = attempt + 1
425
+ logger.warning("Checking status of task %s (Attempt %s)", task["task"], attempt)
423
426
  try:
424
427
  res = self.with_retries(
425
428
  self.datastore.client.tasks.get,
@@ -435,9 +438,14 @@ class ESCollection(Generic[ModelType]):
435
438
  ]:
436
439
  pass
437
440
  else:
441
+ logger.exception("Unexpected error on task check")
438
442
  raise
439
443
 
440
- return res.get("response", res["task"]["status"])
444
+ result = res.get("response", res["task"]["status"])
445
+
446
+ logger.info("Task result:\n%s", str(result))
447
+
448
+ return result
441
449
 
442
450
  def _get_current_alias(self, index: str) -> typing.Optional[str]:
443
451
  if self.with_retries(self.datastore.client.indices.exists_alias, name=index):
@@ -679,6 +687,7 @@ class ESCollection(Generic[ModelType]):
679
687
 
680
688
  :return: Should return True of the commit was successful on all hosts
681
689
  """
690
+ logger.warning("Beginning Reindex")
682
691
  for index in self.index_list:
683
692
  new_name = f"{index}__reindex"
684
693
  index_data = None
@@ -689,6 +698,7 @@ class ESCollection(Generic[ModelType]):
689
698
  index_data = self.with_retries(self.datastore.client.indices.get, index=index)[index]
690
699
 
691
700
  # Create reindex target
701
+ logger.warning("Creating new index with name %s", new_name)
692
702
  self.with_retries(
693
703
  self.datastore.client.indices.create,
694
704
  index=new_name,
@@ -719,36 +729,39 @@ class ESCollection(Generic[ModelType]):
719
729
  else:
720
730
  alias_actions = [{"add": {"index": new_name, "alias": alias}}]
721
731
 
732
+ logger.warning("Updating alias %s", alias)
722
733
  self.with_retries(self.datastore.client.indices.update_aliases, actions=alias_actions)
723
734
 
724
735
  # Reindex data into target
736
+ logger.warning("Beginning reindex from %s to %s", index, new_name)
725
737
  r_task = self.with_retries(
726
738
  self.datastore.client.reindex,
727
739
  source={"index": index},
728
740
  dest={"index": new_name},
729
741
  wait_for_completion=False,
730
742
  )
743
+ logger.warning("Reindex taskId: %s", r_task["task"])
731
744
  self._get_task_results(r_task)
732
745
 
733
746
  if self.with_retries(self.datastore.client.indices.exists, index=new_name):
734
747
  if index_data is None:
735
748
  index_data = self.with_retries(self.datastore.client.indices.get, index=index)[index]
736
749
 
737
- # Commit reindexed data
750
+ logger.warning("Committing reindexed data in index %s", new_name)
738
751
  self.with_retries(self.datastore.client.indices.refresh, index=new_name)
739
752
  self.with_retries(self.datastore.client.indices.clear_cache, index=new_name)
740
753
 
741
- # Delete old index
754
+ logger.warning("Deleting old index %s", index)
742
755
  if self.with_retries(self.datastore.client.indices.exists, index=index):
743
756
  self.with_retries(self.datastore.client.indices.delete, index=index)
744
757
 
745
- # Block write to the index
758
+ logger.warning("Block write to index")
746
759
  self.with_retries(
747
760
  self.datastore.client.indices.put_settings,
748
761
  settings=write_block_settings,
749
762
  )
750
763
 
751
- # Rename reindexed index
764
+ logger.warning("Renaming reindexed index from %s to %s", new_name, index)
752
765
  try:
753
766
  self._safe_index_copy(
754
767
  self.datastore.client.indices.clone,
@@ -776,11 +789,11 @@ class ESCollection(Generic[ModelType]):
776
789
  actions=alias_actions,
777
790
  )
778
791
 
779
- # Delete the reindex target if it still exists
780
792
  if self.with_retries(self.datastore.client.indices.exists, index=new_name):
793
+ logger.warning("Deleting reindex target %s", new_name)
781
794
  self.with_retries(self.datastore.client.indices.delete, index=new_name)
782
795
  finally:
783
- # Unblock write to the index
796
+ logger.warning("Unblock write to the index")
784
797
  self.with_retries(
785
798
  self.datastore.client.indices.put_settings,
786
799
  settings=write_unblock_settings,
@@ -1,3 +1,4 @@
1
+ import json
1
2
  import sys
2
3
  import time
3
4
  from typing import Callable
@@ -45,7 +46,10 @@ if __name__ == "__main__":
45
46
  print("Invalid index provided, stopping.")
46
47
  sys.exit(1)
47
48
 
48
- print("You will be reindexing the following indexes:")
49
+ print("Index schema:")
50
+ print(json.dumps(ds.hit._get_index_mappings(), indent=2))
51
+
52
+ print("\nYou will be reindexing the following indexes:")
49
53
  print("\n".join(indexes[index_answer][0]))
50
54
 
51
55
  answer = input(("\nAre you sure you want to reindex these indexes? [yes/NO]\n"))
@@ -148,7 +148,7 @@ suppress-none-returning = true
148
148
  [tool.poetry]
149
149
  package-mode = true
150
150
  name = "howler-api"
151
- version = "3.0.0.dev363"
151
+ version = "3.0.0.dev366"
152
152
  description = "Howler - API server"
153
153
  authors = [
154
154
  "Canadian Centre for Cyber Security <howler@cyber.gc.ca>",