synapse 2.253.0__tar.gz → 2.255.0__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.
- {synapse-2.253.0/synapse.egg-info → synapse-2.255.0}/PKG-INFO +1 -1
- {synapse-2.253.0 → synapse-2.255.0}/pyproject.toml +1 -1
- {synapse-2.253.0 → synapse-2.255.0}/synapse/axon.py +71 -2
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/aha.py +15 -3
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/cell.py +5 -4
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/nexus.py +4 -1
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/model.py +297 -3
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/task.py +19 -9
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/version.py +2 -2
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/economic.py +15 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/inet.py +9 -3
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/infotech.py +4 -2
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/person.py +20 -10
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/risk.py +2 -1
- synapse-2.255.0/synapse/tests/files/certdir/cas/ca.crt +28 -0
- synapse-2.255.0/synapse/tests/files/certdir/cas/ca.key +51 -0
- synapse-2.255.0/synapse/tests/files/certdir/hosts/localhost.crt +29 -0
- synapse-2.255.0/synapse/tests/files/certdir/hosts/localhost.key +51 -0
- synapse-2.255.0/synapse/tests/files/certdir/users/root.crt +29 -0
- synapse-2.255.0/synapse/tests/files/certdir/users/root.key +51 -0
- synapse-2.255.0/synapse/tests/files/certdir/users/user.crt +29 -0
- synapse-2.255.0/synapse/tests/files/certdir/users/user.key +51 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_axon.py +129 -19
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_aha.py +67 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_cell.py +28 -2
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_nexus.py +24 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_model.py +493 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_task.py +33 -5
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_economic.py +26 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_inet.py +22 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_person.py +16 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_demote.py +60 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_shutdown.py +20 -4
- {synapse-2.253.0 → synapse-2.255.0/synapse.egg-info}/PKG-INFO +1 -1
- synapse-2.253.0/synapse/tests/files/certdir/cas/ca.crt +0 -17
- synapse-2.253.0/synapse/tests/files/certdir/cas/ca.key +0 -28
- synapse-2.253.0/synapse/tests/files/certdir/hosts/localhost.crt +0 -18
- synapse-2.253.0/synapse/tests/files/certdir/hosts/localhost.key +0 -28
- synapse-2.253.0/synapse/tests/files/certdir/users/root.crt +0 -24
- synapse-2.253.0/synapse/tests/files/certdir/users/root.key +0 -52
- synapse-2.253.0/synapse/tests/files/certdir/users/user.crt +0 -18
- synapse-2.253.0/synapse/tests/files/certdir/users/user.key +0 -28
- {synapse-2.253.0 → synapse-2.255.0}/LICENSE +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/README.rst +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/setup.cfg +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/cells.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/cmds/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/cmds/boss.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/cmds/cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/cmds/hive.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/common.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/cryotank.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/daemon.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/attack-flow/README.md +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/iana.tlds.mpk +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/iana.uris.mpk +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/README.md +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/json-schema.org/draft-07/schema +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/lark/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/lark/imap.lark +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/lark/storm.lark +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/data/skills/storm/SKILL.md +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/datamodel.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/exc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/glob.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/agenda.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/ast.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/auth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/autodoc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/base.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/boss.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/cache.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/certdir.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/chop.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/cli.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/cmd.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/cmdr.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/config.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/const.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/coro.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/coin.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/ecc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/jwk.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/passwd.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/rsa.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/tinfoil.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/crypto/utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/datfile.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/drive.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/dyndeps.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/encoding.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/gis.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/grammar.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/hashitem.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/hashset.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/health.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/hive.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/httpapi.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/ingest.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/interval.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/json.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/jsonstor.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/jsrpc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/layer.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/link.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/lmdbslab.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/logging.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/mcp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/modelrev.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/module.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/modules.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/msgpack.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/multislabseqn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/node.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/nodefuse.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/oauth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/output.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/parser.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/platforms/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/platforms/common.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/platforms/darwin.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/platforms/freebsd.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/platforms/linux.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/platforms/windows.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/process.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/processpool.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/queue.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/ratelimit.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/reflect.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/rstorm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/schemas.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/scope.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/scrape.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/share.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/slaboffs.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/slabseqn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/snap.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/spawner.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/spooled.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/storm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/storm_format.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormctrl.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormhttp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/aha.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/auth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/backup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/basex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/cache.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/cell.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/compression.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/cryptoutils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/easyperm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/ecc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/env.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/ethereum.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/gen.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/gis.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/graph.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/hashes.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/hex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/imap.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/index.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/infosec.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/ipv6.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/iters.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/json.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/jwt.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/log.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/macro.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/math.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/mime.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/modelext.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/notifications.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/oauth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/pack.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/pkg.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/project.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/quorum.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/random.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/rsa.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/scrape.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/smtp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/spooled.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/stats.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/stix.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/storm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/tabular.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/vault.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/version.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/xml.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormlib/yaml.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormsvc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormtypes.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/stormwhois.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/task.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/thishost.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/thisplat.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/threads.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/time.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/trigger.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/types.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/urlhelp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lib/view.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/cvss.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/iana.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/iso3166.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/macho.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/pe.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/phonenum.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/lookup/timezones.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/mindmeld.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/auth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/base.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/belief.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/biz.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/crypto.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/dns.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/doc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/entity.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/files.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/geopol.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/geospace.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/gov/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/gov/cn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/gov/intl.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/gov/us.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/language.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/material.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/math.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/media.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/orgs.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/planning.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/proj.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/science.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/syn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/telco.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/models/transport.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/aha.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/axon.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/cell.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/cryotank.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/jsonstor.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/servers/stemcell.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/telepath.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/cpedata.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stix_export/basic.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stix_export/custom0.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stix_export/risk0.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stix_import/apt1.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stix_import/scos.json +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/pipegen.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/spin.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormcov/teearg.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormmod/common +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/badendpoints.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/badinits.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/badvaultskeys.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/badvaultsschema.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/dotstorm_noevents/dotstorm.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/commands/dotstorm.bar.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/modules/dotstorm.foo.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/test.dat +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testcore/cell.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/docs/bar.rst +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/docs/foo.rst +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/docs/tables.rst +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/storm/commands/testcmd.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/storm/modules/apimod.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/storm/modules/testmod.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/storm/testcmd.storm +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/files/testpkg_build_docs/testpkg.yaml +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/nopmod.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_cmds_boss.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_cmds_cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_cmds_hive.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_common.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_cryotank.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_daemon.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_data.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_datamodel.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_exc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_glob.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_agenda.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_ast.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_auth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_autodoc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_base.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_boss.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_cache.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_certdir.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_chop.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_cli.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_config.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_const.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_coro.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_crypto_jwk.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_crypto_rsa.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_datfile.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_drive.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_dyndeps.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_encoding.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_gis.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_grammar.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_hashitem.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_hashset.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_health.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_hive.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_httpapi.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_interval.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_json.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_jsonstor.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_jsrpc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_layer.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_link.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_logging.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_mcp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_modelrev.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_module.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_msgpack.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_node.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_output.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_process.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_processpool.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_queue.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_ratelimit.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_reflect.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_rstorm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_scope.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_scrape.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_slaboffs.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_slabseqn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_snap.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_spawner.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_spooled.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_storm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_storm_format.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormctrl.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormhttp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_ecc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_index.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_jwt.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_pkg.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_quorum.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_rsa.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormsvc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormtypes.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_stormwhois.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_task.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_thishost.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_time.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_trigger.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_types.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_urlhelp.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_version.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lib_view.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lookup_iso3166.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_lookup_phonenum.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_mindmeld.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_auth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_base.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_belief.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_biz.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_crypto.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_dns.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_doc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_entity.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_files.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_geopol.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_geospace.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_gov_cn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_gov_intl.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_gov_us.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_infotech.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_language.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_material.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_math.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_media.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_orgs.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_planning.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_proj.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_risk.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_science.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_syn.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_telco.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_model_transport.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_servers_axon.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_servers_cortex.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_servers_cryotank.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_servers_stemcell.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_servers_univ.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_telepath.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_aha.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_axon_copy.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_axon_dump_load.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_axon_get.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_axon_put.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_cellauth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_cortex_csv.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_cortex_feed.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_cortex_layer.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_cryo_list.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_docker_validate.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_hiveload.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_hivesave.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_apikey.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_backup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_healthcheck.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_livebackup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_modrole.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_moduser.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_promote.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_reload.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_service_snapshot.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_storm_cli.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_storm_pkg_doc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_storm_pkg_gen.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_utils_autodoc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_utils_changelog.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_utils_easycert.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_utils_guid.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_utils_json2mpk.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_tools_utils_rstorm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_utils_getrefs.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/test_utils_stormcov.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tests/utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/clone.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/easycert.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/enroll.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/list.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/mirror.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/provision/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/provision/service.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/aha/provision/user.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/apikey.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/autodoc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/axon/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/axon/copy.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/axon/dump.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/axon/get.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/axon/load.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/axon/put.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/axon2axon.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/backup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cellauth.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/changelog.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cmdr.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cortex/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cortex/csv.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cortex/feed.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cortex/layer/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cortex/layer/dump.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cortex/layer/load.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cryo/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cryo/cat.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/cryo/list.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/csvtool.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/demote.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/docker/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/docker/validate.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/easycert.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/feed.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/genpkg.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/guid.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/healthcheck.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/hive/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/hive/load.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/hive/save.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/json2mpk.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/livebackup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/modrole.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/moduser.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/pkgs/gendocs.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/promote.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/pullfile.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/pushfile.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/reload.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/rstorm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/apikey.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/backup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/demote.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/healthcheck.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/livebackup.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/modrole.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/moduser.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/promote.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/reload.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/shutdown.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/service/snapshot.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/shutdown.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/snapshot.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/storm/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/storm/__main__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/storm/_cli.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/storm/pkg/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/storm/pkg/_pandoc_filter.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/storm/pkg/doc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/storm/pkg/gen.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/utils/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/utils/autodoc.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/utils/changelog.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/utils/easycert.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/utils/guid.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/utils/json2mpk.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/tools/utils/rstorm.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/utils/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/utils/getrefs.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/utils/stormcov/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/utils/stormcov/plugin.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cashaddress/LICENSE +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cashaddress/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cashaddress/base58.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cashaddress/convert.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cashaddress/crypto.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/LICENSE +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/http/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/http/cookies.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/json.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/test_http_cookies.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/cpython/lib/test/test_json.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/LICENSE +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/constants.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse.egg-info/SOURCES.txt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse.egg-info/dependency_links.txt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse.egg-info/requires.txt +0 -0
- {synapse-2.253.0 → synapse-2.255.0}/synapse.egg-info/top_level.txt +0 -0
|
@@ -918,12 +918,15 @@ class Axon(s_cell.Cell):
|
|
|
918
918
|
self.onfini(self.blobslab.fini)
|
|
919
919
|
|
|
920
920
|
if self.inaugural:
|
|
921
|
-
self._setStorVers(
|
|
921
|
+
self._setStorVers(2)
|
|
922
922
|
|
|
923
923
|
storvers = self._getStorVers()
|
|
924
924
|
if storvers < 1:
|
|
925
925
|
storvers = await self._setStorVers01()
|
|
926
926
|
|
|
927
|
+
if storvers < 2:
|
|
928
|
+
storvers = await self._setStorVers02()
|
|
929
|
+
|
|
927
930
|
async def _setStorVers01(self):
|
|
928
931
|
|
|
929
932
|
logger.warning('Updating Axon storage version (adding offset index). This may take a while.')
|
|
@@ -948,6 +951,69 @@ class Axon(s_cell.Cell):
|
|
|
948
951
|
|
|
949
952
|
return self._setStorVers(1)
|
|
950
953
|
|
|
954
|
+
async def _setStorVers02(self):
|
|
955
|
+
|
|
956
|
+
logger.warning('Updating Axon storage version (removing stale offset index entries). This may take a while.')
|
|
957
|
+
|
|
958
|
+
cursha = None
|
|
959
|
+
|
|
960
|
+
# deletes bump the outer scan and rewritten rows sort before its resume key
|
|
961
|
+
for lkey in self.blobslab.scanKeys(db=self.offsets):
|
|
962
|
+
|
|
963
|
+
await asyncio.sleep(0)
|
|
964
|
+
|
|
965
|
+
offssha = lkey[:32]
|
|
966
|
+
if offssha == cursha:
|
|
967
|
+
continue
|
|
968
|
+
|
|
969
|
+
if cursha is not None:
|
|
970
|
+
await self._fixBlobOffs(cursha)
|
|
971
|
+
|
|
972
|
+
cursha = offssha
|
|
973
|
+
|
|
974
|
+
if cursha is not None:
|
|
975
|
+
await self._fixBlobOffs(cursha)
|
|
976
|
+
|
|
977
|
+
return self._setStorVers(2)
|
|
978
|
+
|
|
979
|
+
async def _fixBlobOffs(self, sha256):
|
|
980
|
+
'''
|
|
981
|
+
Merge walk the offset rows expected from the blobs against the existing ones,
|
|
982
|
+
removing stale rows and putting missing or incorrect ones.
|
|
983
|
+
'''
|
|
984
|
+
def expected():
|
|
985
|
+
offs = 0
|
|
986
|
+
for lkey, byts in self.blobslab.scanByPref(sha256, db=self.blobs):
|
|
987
|
+
offs += len(byts)
|
|
988
|
+
yield sha256 + offs.to_bytes(8, 'big'), lkey[32:]
|
|
989
|
+
|
|
990
|
+
genr = expected()
|
|
991
|
+
item = next(genr, None)
|
|
992
|
+
|
|
993
|
+
# deletes bump the scan and puts only add keys before its current key
|
|
994
|
+
for lkey, lval in self.blobslab.scanByPref(sha256, db=self.offsets):
|
|
995
|
+
|
|
996
|
+
await asyncio.sleep(0)
|
|
997
|
+
|
|
998
|
+
while item is not None and item[0] < lkey:
|
|
999
|
+
self.blobslab.put(item[0], item[1], db=self.offsets)
|
|
1000
|
+
item = next(genr, None)
|
|
1001
|
+
await asyncio.sleep(0)
|
|
1002
|
+
|
|
1003
|
+
if item is None or lkey < item[0]:
|
|
1004
|
+
self.blobslab.delete(lkey, db=self.offsets)
|
|
1005
|
+
continue
|
|
1006
|
+
|
|
1007
|
+
if lval != item[1]:
|
|
1008
|
+
self.blobslab.put(lkey, item[1], db=self.offsets)
|
|
1009
|
+
|
|
1010
|
+
item = next(genr, None)
|
|
1011
|
+
|
|
1012
|
+
while item is not None:
|
|
1013
|
+
self.blobslab.put(item[0], item[1], db=self.offsets)
|
|
1014
|
+
item = next(genr, None)
|
|
1015
|
+
await asyncio.sleep(0)
|
|
1016
|
+
|
|
951
1017
|
def _getStorVers(self):
|
|
952
1018
|
byts = self.blobslab.get(b'version', db=self.metadata)
|
|
953
1019
|
if not byts:
|
|
@@ -1319,6 +1385,9 @@ class Axon(s_cell.Cell):
|
|
|
1319
1385
|
if first:
|
|
1320
1386
|
first = False
|
|
1321
1387
|
delt = boff - offs
|
|
1388
|
+
if delt == 0:
|
|
1389
|
+
continue
|
|
1390
|
+
|
|
1322
1391
|
yield byts[-delt:]
|
|
1323
1392
|
continue
|
|
1324
1393
|
|
|
@@ -1391,7 +1460,7 @@ class Axon(s_cell.Cell):
|
|
|
1391
1460
|
async def _delBlobByts(self, sha256):
|
|
1392
1461
|
|
|
1393
1462
|
# remove the offset indexes...
|
|
1394
|
-
for lkey in self.blobslab.scanKeysByPref(sha256, db=self.
|
|
1463
|
+
for lkey in self.blobslab.scanKeysByPref(sha256, db=self.offsets):
|
|
1395
1464
|
self.blobslab.delete(lkey, db=self.offsets)
|
|
1396
1465
|
await asyncio.sleep(0)
|
|
1397
1466
|
|
|
@@ -742,26 +742,38 @@ class AhaCell(s_cell.Cell):
|
|
|
742
742
|
async def getAhaSvcsByIden(self, iden, online=True, skiprun=None):
|
|
743
743
|
|
|
744
744
|
runs = set()
|
|
745
|
+
aliases = {}
|
|
745
746
|
async for svcdef in self.getAhaSvcs():
|
|
746
747
|
await asyncio.sleep(0)
|
|
747
748
|
|
|
749
|
+
svcinfo = svcdef['svcinfo']
|
|
750
|
+
|
|
748
751
|
# TODO services by iden indexes (SYN-8467)
|
|
749
|
-
if
|
|
752
|
+
if svcinfo.get('iden') != iden:
|
|
750
753
|
continue
|
|
751
754
|
|
|
752
|
-
if online and
|
|
755
|
+
if online and svcinfo.get('online') is None:
|
|
753
756
|
continue
|
|
754
757
|
|
|
755
|
-
svcrun =
|
|
758
|
+
svcrun = svcinfo.get('run')
|
|
756
759
|
if svcrun in runs:
|
|
757
760
|
continue
|
|
758
761
|
|
|
759
762
|
if skiprun == svcrun:
|
|
760
763
|
continue
|
|
761
764
|
|
|
765
|
+
# prefer the real service entry over the leader alias for a run
|
|
766
|
+
if svcdef.get('svcname') == svcinfo.get('leader'):
|
|
767
|
+
aliases.setdefault(svcrun, svcdef)
|
|
768
|
+
continue
|
|
769
|
+
|
|
762
770
|
runs.add(svcrun)
|
|
763
771
|
yield svcdef
|
|
764
772
|
|
|
773
|
+
for svcrun, svcdef in aliases.items():
|
|
774
|
+
if svcrun not in runs:
|
|
775
|
+
yield svcdef
|
|
776
|
+
|
|
765
777
|
def getAhaSvcUrl(self, svcdef, user='root'):
|
|
766
778
|
svcfull = svcdef.get('name')
|
|
767
779
|
svcnetw = svcdef.get('svcnetw')
|
|
@@ -1063,7 +1063,8 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
1063
1063
|
'type': 'string',
|
|
1064
1064
|
},
|
|
1065
1065
|
'aha:promotable': {
|
|
1066
|
-
'description': 'Set to false to
|
|
1066
|
+
'description': 'Set to false to exclude this service from automatic leader selection when the leader demotes, '
|
|
1067
|
+
'including during a graceful shutdown. It does not prevent an explicit promotion.',
|
|
1067
1068
|
'type': 'boolean',
|
|
1068
1069
|
'default': True,
|
|
1069
1070
|
},
|
|
@@ -2639,7 +2640,7 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
2639
2640
|
retn = []
|
|
2640
2641
|
async for svcdef in ahaproxy.getAhaSvcsByIden(self.iden, skiprun=self.runid):
|
|
2641
2642
|
|
|
2642
|
-
if not svcdef['svcinfo'].get('promotable'):
|
|
2643
|
+
if not svcdef['svcinfo'].get('promotable'):
|
|
2643
2644
|
continue
|
|
2644
2645
|
|
|
2645
2646
|
retn.append(svcdef)
|
|
@@ -2688,7 +2689,7 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
2688
2689
|
logger.warning('...no suitable services discovered. Aborting demotion.', extra=extra)
|
|
2689
2690
|
return False
|
|
2690
2691
|
|
|
2691
|
-
for svcindx, svcproxy in sorted(cands):
|
|
2692
|
+
for svcindx, svcproxy in sorted(cands, key=lambda c: c[0], reverse=True):
|
|
2692
2693
|
|
|
2693
2694
|
try:
|
|
2694
2695
|
await svcproxy.promote(graceful=True)
|
|
@@ -5011,7 +5012,7 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
5011
5012
|
# we can ignore the yielded aha names because we embed it in the task
|
|
5012
5013
|
async for (ahasvc, (ok, retn)) in self.callPeerGenr(todo, timeout=timeout):
|
|
5013
5014
|
|
|
5014
|
-
if not ok:
|
|
5015
|
+
if not ok:
|
|
5015
5016
|
logger.warning(f'getTasks() on {ahasvc} failed: {retn}')
|
|
5016
5017
|
continue
|
|
5017
5018
|
|
|
@@ -718,7 +718,10 @@ class NexsRoot(s_base.Base):
|
|
|
718
718
|
except Exception as e:
|
|
719
719
|
if respfutu is not None:
|
|
720
720
|
assert not respfutu.done()
|
|
721
|
-
|
|
721
|
+
|
|
722
|
+
# the head of the traceback is our own still running frame
|
|
723
|
+
# and the caller may clear the frames of the traceback it gets.
|
|
724
|
+
respfutu.set_exception(e.with_traceback(e.__traceback__.tb_next))
|
|
722
725
|
else: # pragma: no cover
|
|
723
726
|
logger.exception(e)
|
|
724
727
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
|
|
1
3
|
import synapse.exc as s_exc
|
|
2
4
|
import synapse.common as s_common
|
|
3
5
|
|
|
@@ -5,6 +7,7 @@ import synapse.lib.node as s_node
|
|
|
5
7
|
import synapse.lib.time as s_time
|
|
6
8
|
import synapse.lib.cache as s_cache
|
|
7
9
|
import synapse.lib.layer as s_layer
|
|
10
|
+
import synapse.lib.storm as s_storm
|
|
8
11
|
import synapse.lib.stormtypes as s_stormtypes
|
|
9
12
|
|
|
10
13
|
RISK_HASVULN_VULNPROPS = (
|
|
@@ -917,6 +920,61 @@ class LibModelMigration(s_stormtypes.Lib, MigrationEditorMixin):
|
|
|
917
920
|
{'name': 'dst', 'type': 'node', 'desc': 'The node to merge into (will be kept).', },
|
|
918
921
|
),
|
|
919
922
|
'returns': {'type': 'null', }}},
|
|
923
|
+
{'name': 'loop', 'desc': '''
|
|
924
|
+
Run a migration callback once for every view, and optionally for every layer which is
|
|
925
|
+
not the write layer of a view, in the Cortex.
|
|
926
|
+
|
|
927
|
+
Callbacks are embedded Storm queries (``${ ... }``) or query strings, rather than Storm
|
|
928
|
+
functions. Variables from the calling scope, including any captured by an embedded
|
|
929
|
+
query, are not available to them, and nodes are not passed in. Messages from
|
|
930
|
+
``$lib.print()``, ``$lib.warn()``, ``$lib.fire()`` and ``$lib.csv.emit()`` in a callback
|
|
931
|
+
are passed through to the caller.
|
|
932
|
+
|
|
933
|
+
- The ``onview`` callback runs in each view, and can use ``$lib.view.get()`` to access it.
|
|
934
|
+
- The optional ``onlayer`` callback runs in the calling view, with ``$layer`` set to the
|
|
935
|
+
iden of that layer, and can use ``$lib.layer.get($layer)`` to access it. It only runs
|
|
936
|
+
for layers which are not the write layer of a view, such as a layer which is only
|
|
937
|
+
lower in the layer stack of a view, or a layer in no view, since ``onview`` already
|
|
938
|
+
migrated each view's write layer.
|
|
939
|
+
|
|
940
|
+
Each pass runs ``onview`` for every view, with parent views before their children, then
|
|
941
|
+
``onlayer`` for every layer which is not the write layer of a view. A view or layer
|
|
942
|
+
created by a callback is picked up by a further pass, and passes repeat until one finds
|
|
943
|
+
nothing new. Each view and layer is visited at most once.
|
|
944
|
+
|
|
945
|
+
The loop does not fail because a view or layer changed underneath it. It emits a
|
|
946
|
+
warning naming the view or layer and continues with the next one when:
|
|
947
|
+
|
|
948
|
+
- A view or layer is deleted before its callback runs, or while its callback runs.
|
|
949
|
+
- A layer, or the write layer of a view, is read-only. These are skipped unless
|
|
950
|
+
``readonly`` is true, which is intended for migrations which only lift nodes.
|
|
951
|
+
- A layer, or the write layer of a view, becomes read-only while its callback runs.
|
|
952
|
+
|
|
953
|
+
Any other error raised by a callback is raised to the caller.
|
|
954
|
+
|
|
955
|
+
The caller must be a global admin.
|
|
956
|
+
|
|
957
|
+
Examples:
|
|
958
|
+
Replace a tag on nodes in every view and print each layer which is not the write
|
|
959
|
+
layer of a view::
|
|
960
|
+
|
|
961
|
+
$lib.model.migration.loop(
|
|
962
|
+
${ inet:fqdn#old.tag [ -#old.tag +#new.tag ] },
|
|
963
|
+
onlayer=${ $lib.print(`migrating layer {$layer}`) },
|
|
964
|
+
)
|
|
965
|
+
''',
|
|
966
|
+
'type': {'type': 'function', '_funcname': '_methLoop',
|
|
967
|
+
'args': (
|
|
968
|
+
{'name': 'onview', 'type': ['str', 'storm:query'],
|
|
969
|
+
'desc': 'A Storm query to run in each view.', },
|
|
970
|
+
{'name': 'onlayer', 'type': ['null', 'str', 'storm:query'], 'default': None,
|
|
971
|
+
'desc': 'A Storm query to run for each layer which is not the write layer of a view, '
|
|
972
|
+
'with ``$layer`` set to the layer iden.', },
|
|
973
|
+
{'name': 'readonly', 'type': 'boolean', 'default': False,
|
|
974
|
+
'desc': 'Include read-only layers, and views with a read-only write layer, '
|
|
975
|
+
'rather than skipping them with a warning.', },
|
|
976
|
+
),
|
|
977
|
+
'returns': {'type': 'null', }}},
|
|
920
978
|
)
|
|
921
979
|
_storm_lib_path = ('model', 'migration')
|
|
922
980
|
|
|
@@ -927,6 +985,7 @@ class LibModelMigration(s_stormtypes.Lib, MigrationEditorMixin):
|
|
|
927
985
|
'copyTags': self._methCopyTags,
|
|
928
986
|
'copyExtProps': self._methCopyExtProps,
|
|
929
987
|
'fuse': self._methFuse,
|
|
988
|
+
'loop': self._methLoop,
|
|
930
989
|
}
|
|
931
990
|
|
|
932
991
|
async def _methCopyData(self, src, dst, overwrite=False):
|
|
@@ -1027,6 +1086,147 @@ class LibModelMigration(s_stormtypes.Lib, MigrationEditorMixin):
|
|
|
1027
1086
|
mesg += ', '.join([f'{iden} ({errm})' for iden, errm in failed])
|
|
1028
1087
|
raise s_exc.SynErr(mesg=mesg, layers=[iden for iden, _ in failed])
|
|
1029
1088
|
|
|
1089
|
+
async def _methLoop(self, onview, onlayer=None, readonly=False):
|
|
1090
|
+
|
|
1091
|
+
self.runt.reqAdmin(mesg='$lib.model.migration.loop() requires global admin.')
|
|
1092
|
+
|
|
1093
|
+
if onview is None:
|
|
1094
|
+
raise s_exc.BadArg(mesg='$lib.model.migration.loop() requires an onview query.')
|
|
1095
|
+
|
|
1096
|
+
readonly = await s_stormtypes.tobool(readonly)
|
|
1097
|
+
|
|
1098
|
+
runt = self.runt
|
|
1099
|
+
core = runt.snap.core
|
|
1100
|
+
|
|
1101
|
+
async def getQuery(valu):
|
|
1102
|
+
|
|
1103
|
+
text = await s_stormtypes.tostr(valu, noneok=True)
|
|
1104
|
+
if text is None:
|
|
1105
|
+
return None
|
|
1106
|
+
|
|
1107
|
+
return await runt.getStormQuery(text)
|
|
1108
|
+
|
|
1109
|
+
async def runQuery(query, snap, opts=None):
|
|
1110
|
+
|
|
1111
|
+
# not a sub-runtime, so the caller's variables are not visible
|
|
1112
|
+
async with await s_storm.Runtime.anit(query, snap, user=runt.user, opts=opts) as subr:
|
|
1113
|
+
subr.debug = runt.debug
|
|
1114
|
+
subr.asroot = runt.asroot
|
|
1115
|
+
subr.readonly = runt.readonly
|
|
1116
|
+
|
|
1117
|
+
if subr.snap is not runt.snap:
|
|
1118
|
+
subr.snap._warnonce_keys = runt.snap._warnonce_keys
|
|
1119
|
+
for evnt in ('print', 'warn', 'storm:fire', 'csv:row'):
|
|
1120
|
+
await subr.enter_context(subr.snap.onWith(evnt, runt.snap.dist))
|
|
1121
|
+
|
|
1122
|
+
async for _ in subr.execute():
|
|
1123
|
+
await asyncio.sleep(0)
|
|
1124
|
+
|
|
1125
|
+
def getDesc(iden, name):
|
|
1126
|
+
if name is None:
|
|
1127
|
+
return iden
|
|
1128
|
+
|
|
1129
|
+
return f'{iden} ({name})'
|
|
1130
|
+
|
|
1131
|
+
def isWriteLayer(iden):
|
|
1132
|
+
if iden in wlyrs:
|
|
1133
|
+
return True
|
|
1134
|
+
|
|
1135
|
+
return any(view.layers[0].iden == iden for view in core.views.values())
|
|
1136
|
+
|
|
1137
|
+
viewq = await getQuery(onview)
|
|
1138
|
+
layrq = await getQuery(onlayer)
|
|
1139
|
+
|
|
1140
|
+
seen = set()
|
|
1141
|
+
wlyrs = set()
|
|
1142
|
+
|
|
1143
|
+
while True:
|
|
1144
|
+
|
|
1145
|
+
found = False
|
|
1146
|
+
|
|
1147
|
+
for vdef in await core.getViewDefs(deporder=True):
|
|
1148
|
+
|
|
1149
|
+
iden = vdef.get('iden')
|
|
1150
|
+
if iden in seen:
|
|
1151
|
+
continue
|
|
1152
|
+
|
|
1153
|
+
seen.add(iden)
|
|
1154
|
+
found = True
|
|
1155
|
+
|
|
1156
|
+
desc = getDesc(iden, vdef.get('name'))
|
|
1157
|
+
|
|
1158
|
+
view = core.views.get(iden)
|
|
1159
|
+
if view is None or view.isfini:
|
|
1160
|
+
await runt.warn(f'View {desc} was deleted before it could be migrated.')
|
|
1161
|
+
continue
|
|
1162
|
+
|
|
1163
|
+
wlyrs.add(view.layers[0].iden)
|
|
1164
|
+
|
|
1165
|
+
wasro = view.layers[0].readonly
|
|
1166
|
+
if wasro and not readonly:
|
|
1167
|
+
await runt.warn(f'View {desc} has a read-only write layer and was skipped.')
|
|
1168
|
+
continue
|
|
1169
|
+
|
|
1170
|
+
try:
|
|
1171
|
+
await runQuery(viewq, await view.snap(runt.user))
|
|
1172
|
+
|
|
1173
|
+
except s_exc.SynErr as e:
|
|
1174
|
+
|
|
1175
|
+
view = core.views.get(iden)
|
|
1176
|
+
if view is None or view.isfini:
|
|
1177
|
+
await runt.warn(f'View {desc} was deleted while being migrated.')
|
|
1178
|
+
continue
|
|
1179
|
+
|
|
1180
|
+
if isinstance(e, s_exc.IsReadOnly) and not wasro and view.layers[0].readonly:
|
|
1181
|
+
await runt.warn(f'View {desc} became read-only while being migrated.')
|
|
1182
|
+
continue
|
|
1183
|
+
|
|
1184
|
+
raise
|
|
1185
|
+
|
|
1186
|
+
if layrq is not None:
|
|
1187
|
+
|
|
1188
|
+
for layr in list(core.listLayers()):
|
|
1189
|
+
|
|
1190
|
+
iden = layr.iden
|
|
1191
|
+
if iden in seen or isWriteLayer(iden):
|
|
1192
|
+
continue
|
|
1193
|
+
|
|
1194
|
+
seen.add(iden)
|
|
1195
|
+
found = True
|
|
1196
|
+
|
|
1197
|
+
desc = getDesc(iden, layr.layrinfo.get('name'))
|
|
1198
|
+
|
|
1199
|
+
layr = core.layers.get(iden)
|
|
1200
|
+
if layr is None or layr.isfini:
|
|
1201
|
+
await runt.warn(f'Layer {desc} was deleted before it could be migrated.')
|
|
1202
|
+
continue
|
|
1203
|
+
|
|
1204
|
+
wasro = layr.readonly
|
|
1205
|
+
if wasro and not readonly:
|
|
1206
|
+
await runt.warn(f'Layer {desc} is read-only and was skipped.')
|
|
1207
|
+
continue
|
|
1208
|
+
|
|
1209
|
+
opts = {'vars': {'layer': iden}}
|
|
1210
|
+
|
|
1211
|
+
try:
|
|
1212
|
+
await runQuery(layrq, runt.snap, opts)
|
|
1213
|
+
|
|
1214
|
+
except s_exc.SynErr as e:
|
|
1215
|
+
|
|
1216
|
+
layr = core.layers.get(iden)
|
|
1217
|
+
if layr is None or layr.isfini:
|
|
1218
|
+
await runt.warn(f'Layer {desc} was deleted while being migrated.')
|
|
1219
|
+
continue
|
|
1220
|
+
|
|
1221
|
+
if isinstance(e, s_exc.IsReadOnly) and not wasro and layr.readonly:
|
|
1222
|
+
await runt.warn(f'Layer {desc} became read-only while being migrated.')
|
|
1223
|
+
continue
|
|
1224
|
+
|
|
1225
|
+
raise
|
|
1226
|
+
|
|
1227
|
+
if not found:
|
|
1228
|
+
break
|
|
1229
|
+
|
|
1030
1230
|
@s_stormtypes.registry.registerLib
|
|
1031
1231
|
class LibModelMigrations(s_stormtypes.Lib, MigrationEditorMixin):
|
|
1032
1232
|
'''
|
|
@@ -1085,11 +1285,47 @@ class LibModelMigrations(s_stormtypes.Lib, MigrationEditorMixin):
|
|
|
1085
1285
|
{'name': 'n', 'type': 'node', 'desc': 'The inet:sevice:message node to migrate.'},
|
|
1086
1286
|
),
|
|
1087
1287
|
'returns': {'type': 'null'}}},
|
|
1288
|
+
{'name': 'inetServiceInstanceToPlatform', 'desc': '''
|
|
1289
|
+
Create an inet:service:platform node from the provided inet:service:instance node.
|
|
1290
|
+
|
|
1291
|
+
Edits will be made in the current write layer.
|
|
1292
|
+
|
|
1293
|
+
The inet:service:platform node is created with the same guid as the
|
|
1294
|
+
inet:service:instance node and its :parent property is set to the
|
|
1295
|
+
:platform of the instance. If the :platform of the instance has the same
|
|
1296
|
+
guid as the instance, :parent is not set and a warning is emitted.
|
|
1297
|
+
The :owner and :app properties are stored in node data under the keys
|
|
1298
|
+
'migration:inet:service:instance:owner' and
|
|
1299
|
+
'migration:inet:service:instance:app'. Extended properties on the
|
|
1300
|
+
inet:service:instance node are not copied to the inet:service:platform node.
|
|
1301
|
+
|
|
1302
|
+
Tags, tag properties, edges, and node data will be copied
|
|
1303
|
+
to the inet:service:platform node. However, existing tag properties and
|
|
1304
|
+
node data will not be overwritten.
|
|
1305
|
+
|
|
1306
|
+
Nodes in the current view which reference the instance using a
|
|
1307
|
+
:instance or :service:instance property are updated to use the
|
|
1308
|
+
:platform or :service:platform property instead. If that property is
|
|
1309
|
+
already set to a platform other than the new platform or the :parent,
|
|
1310
|
+
the existing value is kept and the instance is stored in node data
|
|
1311
|
+
under the key 'migration:<form>:<prop>'. Extended properties are only
|
|
1312
|
+
updated if a matching inet:service:platform property exists.
|
|
1313
|
+
|
|
1314
|
+
The inet:service:instance node is not deleted and may be removed
|
|
1315
|
+
once the migration has been verified.
|
|
1316
|
+
''',
|
|
1317
|
+
'type': {'type': 'function', '_funcname': '_storm_query',
|
|
1318
|
+
'args': (
|
|
1319
|
+
{'name': 'n', 'type': 'node', 'desc': 'The inet:service:instance node to migrate.'},
|
|
1320
|
+
{'name': 'nodata', 'type': 'boolean', 'default': False,
|
|
1321
|
+
'desc': 'Do not copy nodedata to the inet:service:platform node.'},
|
|
1322
|
+
),
|
|
1323
|
+
'returns': {'type': 'node', 'desc': 'The inet:service:platform node.'}}},
|
|
1088
1324
|
|
|
1089
1325
|
)
|
|
1090
1326
|
_storm_lib_path = ('model', 'migration', 's')
|
|
1091
1327
|
_storm_query = '''
|
|
1092
|
-
function inetSslCertToTlsServerCert(n, nodata
|
|
1328
|
+
function inetSslCertToTlsServerCert(n, nodata=(false)) {
|
|
1093
1329
|
$form = $n.form()
|
|
1094
1330
|
if ($form != 'inet:ssl:cert') {
|
|
1095
1331
|
$mesg = `$lib.model.migration.s.inetSslCertToTlsServerCert() only accepts inet:ssl:cert nodes, not {$form}`
|
|
@@ -1117,10 +1353,10 @@ class LibModelMigrations(s_stormtypes.Lib, MigrationEditorMixin):
|
|
|
1117
1353
|
|
|
1118
1354
|
[ .seen ?= $n.props.".seen" ]
|
|
1119
1355
|
|
|
1120
|
-
$lib.model.migration.copyTags($n, $node, overwrite
|
|
1356
|
+
$lib.model.migration.copyTags($n, $node, overwrite=(false))
|
|
1121
1357
|
$lib.model.migration.copyEdges($n, $node)
|
|
1122
1358
|
if (not $nodata) {
|
|
1123
|
-
$lib.model.migration.copyData($n, $node, overwrite
|
|
1359
|
+
$lib.model.migration.copyData($n, $node, overwrite=(false))
|
|
1124
1360
|
}
|
|
1125
1361
|
|
|
1126
1362
|
return($node)
|
|
@@ -1147,6 +1383,64 @@ class LibModelMigrations(s_stormtypes.Lib, MigrationEditorMixin):
|
|
|
1147
1383
|
|
|
1148
1384
|
return()
|
|
1149
1385
|
}
|
|
1386
|
+
|
|
1387
|
+
function inetServiceInstanceToPlatform(n, nodata=(false)) {
|
|
1388
|
+
if (not $n.isform(inet:service:instance)) {
|
|
1389
|
+
$mesg = `$lib.model.migration.s.inetServiceInstanceToPlatform() only accepts inet:service:instance nodes, not {$n.form()}`
|
|
1390
|
+
$lib.raise(BadArg, $mesg)
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
$iden = $n.value()
|
|
1394
|
+
$parent = $n.props.platform
|
|
1395
|
+
|
|
1396
|
+
$plat = {[ inet:service:platform=$iden ]}
|
|
1397
|
+
|
|
1398
|
+
if ($parent = $iden) {
|
|
1399
|
+
$lib.warn(`The :platform of inet:service:instance={$iden} has the same guid as the instance, so :parent was not set on the inet:service:platform.`)
|
|
1400
|
+
} elif ($parent != null) {
|
|
1401
|
+
$plat.props.set(parent, $parent)
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
for $name in (id, url, name, desc, period, status, creator, tenant, ".seen") {
|
|
1405
|
+
$valu = $n.props.$name
|
|
1406
|
+
if ($valu != null) { $plat.props.set($name, $valu) }
|
|
1407
|
+
}
|
|
1408
|
+
|
|
1409
|
+
for $name in (owner, app) {
|
|
1410
|
+
$valu = $n.props.$name
|
|
1411
|
+
if ($valu != null) { $plat.data.set(`migration:inet:service:instance:{$name}`, $valu) }
|
|
1412
|
+
}
|
|
1413
|
+
|
|
1414
|
+
$lib.model.migration.copyTags($n, $plat, overwrite=(false))
|
|
1415
|
+
$lib.model.migration.copyEdges($n, $plat)
|
|
1416
|
+
if (not $nodata) {
|
|
1417
|
+
$lib.model.migration.copyData($n, $plat, overwrite=(false))
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1420
|
+
yield $n <- *
|
|
1421
|
+
|
|
1422
|
+
$refform = $node.form()
|
|
1423
|
+
for ($name, $valu) in $node.props {
|
|
1424
|
+
if ($valu != $iden) { continue }
|
|
1425
|
+
|
|
1426
|
+
if ($lib.model.prop(`{$refform}:{$name}`).type.name != 'inet:service:instance') { continue }
|
|
1427
|
+
|
|
1428
|
+
$pname = $lib.regex.replace('instance$', 'platform', $name)
|
|
1429
|
+
$pprop = $lib.model.prop(`{$refform}:{$pname}`)
|
|
1430
|
+
if ($pprop = null or $pprop.type.name != 'inet:service:platform') { continue }
|
|
1431
|
+
|
|
1432
|
+
$curv = $node.props.$pname
|
|
1433
|
+
if ($curv = null or $curv = $parent or $curv = $iden) {
|
|
1434
|
+
$node.props.set($pname, $iden)
|
|
1435
|
+
} else {
|
|
1436
|
+
$node.data.set(`migration:{$refform}:{$name}`, $valu)
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
$node.props.set($name, $lib.undef)
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
fini { return($plat) }
|
|
1443
|
+
}
|
|
1150
1444
|
'''
|
|
1151
1445
|
|
|
1152
1446
|
def getObjLocals(self):
|
|
@@ -11,10 +11,12 @@ stormcmds = [
|
|
|
11
11
|
'descr': 'List running tasks on the Cortex and any mirrors.',
|
|
12
12
|
'cmdargs': (
|
|
13
13
|
('--verbose', {'default': False, 'action': 'store_true', 'help': 'Enable verbose output.'}),
|
|
14
|
+
('--timeout', {'type': 'int', 'default': None,
|
|
15
|
+
'help': 'The timeout in seconds to wait for each peer to respond.'}),
|
|
14
16
|
),
|
|
15
17
|
'storm': '''
|
|
16
18
|
$tcnt = (0)
|
|
17
|
-
for $task in $lib.task.list() {
|
|
19
|
+
for $task in $lib.task.list(timeout=$cmdopts.timeout) {
|
|
18
20
|
$lib.print(`task iden: {$task.iden}`)
|
|
19
21
|
$lib.print(` name: {$task.name}`)
|
|
20
22
|
$lib.print(` user: {$task.username}`)
|
|
@@ -41,9 +43,11 @@ stormcmds = [
|
|
|
41
43
|
'descr': 'Kill a running task on the Cortex or a mirror.',
|
|
42
44
|
'cmdargs': (
|
|
43
45
|
('iden', {'help': 'Any prefix that matches exactly one valid task iden is accepted.'}),
|
|
46
|
+
('--timeout', {'type': 'int', 'default': None,
|
|
47
|
+
'help': 'The timeout in seconds to wait for each peer to respond.'}),
|
|
44
48
|
),
|
|
45
49
|
'storm': '''
|
|
46
|
-
$kild = $lib.task.kill($cmdopts.iden)
|
|
50
|
+
$kild = $lib.task.kill($cmdopts.iden, timeout=$cmdopts.timeout)
|
|
47
51
|
$lib.print("kill status: {kild}", kild=$kild)
|
|
48
52
|
''',
|
|
49
53
|
},
|
|
@@ -56,13 +60,17 @@ class LibTask(s_stormtypes.Lib):
|
|
|
56
60
|
'''
|
|
57
61
|
_storm_locals = (
|
|
58
62
|
{'name': 'list', 'desc': 'List tasks the current user can access on the Cortex and its mirrors.',
|
|
59
|
-
'type': {'type': 'function', '_funcname': '_methTaskList', 'args': (
|
|
63
|
+
'type': {'type': 'function', '_funcname': '_methTaskList', 'args': (
|
|
64
|
+
{'name': 'timeout', 'type': 'int', 'default': None,
|
|
65
|
+
'desc': 'The number of seconds to wait for each peer to respond.'},),
|
|
60
66
|
'returns': {'name': 'yields', 'type': 'dict', 'desc': 'Task definitions.'}}},
|
|
61
67
|
{'name': 'kill', 'desc': 'Stop a running task on the Cortex or a mirror.',
|
|
62
68
|
'type': {'type': 'function', '_funcname': '_methTaskKill', 'args': (
|
|
63
69
|
{'name': 'prefix', 'type': 'str',
|
|
64
70
|
'desc': 'The prefix of the task to stop. '
|
|
65
|
-
'Tasks will only be stopped if there is a single prefix match.'},
|
|
71
|
+
'Tasks will only be stopped if there is a single prefix match.'},
|
|
72
|
+
{'name': 'timeout', 'type': 'int', 'default': None,
|
|
73
|
+
'desc': 'The number of seconds to wait for each peer to respond.'},),
|
|
66
74
|
'returns': {'type': 'boolean', 'desc': 'True if the task was cancelled, False otherwise.'}}},
|
|
67
75
|
)
|
|
68
76
|
_storm_lib_path = ('task',)
|
|
@@ -82,25 +90,27 @@ class LibTask(s_stormtypes.Lib):
|
|
|
82
90
|
}
|
|
83
91
|
|
|
84
92
|
@s_stormtypes.stormfunc(readonly=True)
|
|
85
|
-
async def _methTaskList(self):
|
|
93
|
+
async def _methTaskList(self, timeout=None):
|
|
86
94
|
useriden = self.runt.user.iden
|
|
87
95
|
isallowed = self.runt.allowed(('task', 'get'))
|
|
96
|
+
timeout = await s_stormtypes.toint(timeout, noneok=True)
|
|
88
97
|
|
|
89
|
-
async for task in self.runt.snap.core.getTasks():
|
|
98
|
+
async for task in self.runt.snap.core.getTasks(timeout=timeout):
|
|
90
99
|
if isallowed or task['user'] == useriden:
|
|
91
100
|
yield task
|
|
92
101
|
|
|
93
|
-
async def _methTaskKill(self, prefix):
|
|
102
|
+
async def _methTaskKill(self, prefix, timeout=None):
|
|
94
103
|
useriden = self.runt.user.iden
|
|
95
104
|
isallowed = self.runt.allowed(('task', 'del'))
|
|
96
105
|
|
|
97
106
|
prefix = await s_stormtypes.tostr(prefix)
|
|
107
|
+
timeout = await s_stormtypes.toint(timeout, noneok=True)
|
|
98
108
|
if not prefix:
|
|
99
109
|
mesg = 'An empty task iden prefix is not allowed.'
|
|
100
110
|
raise s_exc.StormRuntimeError(mesg=mesg, iden=prefix)
|
|
101
111
|
|
|
102
112
|
iden = None
|
|
103
|
-
async for task in self.runt.snap.core.getTasks():
|
|
113
|
+
async for task in self.runt.snap.core.getTasks(timeout=timeout):
|
|
104
114
|
taskiden = task['iden']
|
|
105
115
|
if (isallowed or task['user'] == useriden) and taskiden.startswith(prefix):
|
|
106
116
|
if iden is None:
|
|
@@ -113,4 +123,4 @@ class LibTask(s_stormtypes.Lib):
|
|
|
113
123
|
mesg = 'Provided iden does not match any tasks.'
|
|
114
124
|
raise s_exc.StormRuntimeError(mesg=mesg, iden=prefix)
|
|
115
125
|
|
|
116
|
-
return await self.runt.snap.core.killTask(iden)
|
|
126
|
+
return await self.runt.snap.core.killTask(iden, timeout=timeout)
|
|
@@ -223,6 +223,6 @@ def reqVersion(valu, reqver,
|
|
|
223
223
|
##############################################################################
|
|
224
224
|
# The following are touched during the release process by bumpversion.
|
|
225
225
|
# Do not modify these directly.
|
|
226
|
-
version = (2,
|
|
226
|
+
version = (2, 255, 0)
|
|
227
227
|
verstring = '.'.join([str(x) for x in version])
|
|
228
|
-
commit = '
|
|
228
|
+
commit = '8918c39dde3b16ab2ba0f9c6331550cf7ff5e2c6'
|