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.
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/PKG-INFO +1 -1
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/collection.py +20 -7
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/reindex_data.py +5 -1
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/pyproject.toml +1 -1
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/README.md +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/add_label.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/change_field.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/demote.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/example_plugin.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/prioritization.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/promote.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/remove_label.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/actions/transition.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/base.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/socket.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/action.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/analytic.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/auth.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/clue.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/configs.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/dossier.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/help.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/hit.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/notebook.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/overview.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/search.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/template.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/tool.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/user.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/api/v1/view.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/app.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/README.md +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/classification.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/classification.yml +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/exceptions.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/loader.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/logging/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/logging/audit.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/logging/format.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/net.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/net_static.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/random_user.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/common/swagger.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/config.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/retention.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/rules.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/cronjobs/view_cleanup.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/README.md +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/bulk.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/constants.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/exceptions.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/howler_store.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/operations.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/schemas.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/store.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/support/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/support/build.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/support/schemas.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/types.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/error.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/generate_mitre.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/generate_tlds.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/external/wipe_databases.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/gunicorn_config.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/healthz.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/azure.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/discover.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/hit.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/oauth.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/search.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/workflow.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/helper/ws.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/README.md +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/base.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/charter.txt +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/helper.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/howler_enum.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/action.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/analytic.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/aws.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/azure.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/cbs.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/config.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/dossier.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/gcp.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/hit.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/howler_data.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/lead.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/localized_label.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/overview.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/pivot.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/template.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/user.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/view.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/random_data.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/randomizer.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/patched.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/plugins/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/plugins/config.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/README.md +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/events.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/set.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/security/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/security/socket.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/security/utils.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/action_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/analytic_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/auth_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/config_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/dossier_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/event_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/hit_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/jwt_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/lucene_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/notebook_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/overview_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/template_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/services/user_service.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/__init__.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/annotations.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/chunk.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/dict_utils.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/isotime.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/list_utils.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/lucene.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/path.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/socket_utils.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/str_utils.py +0 -0
- {howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/utils/uid.py +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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("
|
|
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.
|
|
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>",
|
|
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
|
|
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
|
|
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
|
{howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/datastore/migrations/fix_process.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
|
|
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
|
{howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/odm/models/ecs/autonomous_system.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
|
|
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
|
|
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
|
{howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-3.0.0.dev363 → howler_api-3.0.0.dev366}/howler/remote/datatypes/user_quota_tracker.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|