synapse 2.169.0__tar.gz → 2.170.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.
Potentially problematic release.
This version of synapse might be problematic. Click here for more details.
- {synapse-2.169.0/synapse.egg-info → synapse-2.170.0}/PKG-INFO +1 -1
- {synapse-2.169.0 → synapse-2.170.0}/pyproject.toml +1 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse/cortex.py +88 -2
- {synapse-2.169.0 → synapse-2.170.0}/synapse/datamodel.py +5 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/ast.py +70 -12
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/cell.py +77 -7
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/layer.py +75 -6
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/node.py +7 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/snap.py +22 -4
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/storm.py +1 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/cortex.py +1 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/model.py +339 -40
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormtypes.py +58 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/types.py +35 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/version.py +2 -2
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/view.py +87 -14
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/files.py +40 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/inet.py +8 -4
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/infotech.py +355 -17
- synapse-2.170.0/synapse/tests/files/cpedata.json +525034 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_cortex.py +99 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_ast.py +66 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_cell.py +112 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_layer.py +52 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_scrape.py +72 -71
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_snap.py +16 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_storm.py +118 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_cortex.py +15 -0
- synapse-2.170.0/synapse/tests/test_lib_stormlib_model.py +829 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormtypes.py +135 -14
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_types.py +20 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_view.py +77 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_files.py +51 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_inet.py +63 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_infotech.py +187 -26
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/utils.py +12 -0
- {synapse-2.169.0 → synapse-2.170.0/synapse.egg-info}/PKG-INFO +1 -1
- {synapse-2.169.0 → synapse-2.170.0}/synapse.egg-info/SOURCES.txt +1 -0
- synapse-2.169.0/synapse/tests/test_lib_stormlib_model.py +0 -402
- {synapse-2.169.0 → synapse-2.170.0}/LICENSE +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/README.rst +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/setup.cfg +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/axon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/cells.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/cmds/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/cmds/boss.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/cmds/cortex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/cmds/hive.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/common.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/cryotank.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/daemon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/attack-flow/README.md +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/iana.tlds.mpk +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/README.md +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
- {synapse-2.169.0 → synapse-2.170.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.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
- {synapse-2.169.0 → synapse-2.170.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.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
- {synapse-2.169.0 → synapse-2.170.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.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
- {synapse-2.169.0 → synapse-2.170.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.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/exc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/glob.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/agenda.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/aha.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/autodoc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/base.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/boss.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/cache.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/certdir.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/chop.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/cli.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/cmd.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/cmdr.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/config.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/const.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/coro.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/crypto/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/crypto/coin.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/crypto/ecc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/crypto/passwd.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/crypto/rsa.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/crypto/tinfoil.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/datfile.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/dyndeps.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/encoding.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/gis.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/grammar.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/hashitem.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/hashset.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/health.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/hive.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/hiveauth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/httpapi.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/ingest.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/interval.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/jsonstor.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/jupyter.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/link.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/lmdbslab.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/modelrev.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/module.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/modules.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/msgpack.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/multislabseqn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/nexus.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/oauth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/output.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/parser.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/platforms/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/platforms/common.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/platforms/darwin.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/platforms/freebsd.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/platforms/linux.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/platforms/windows.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/queue.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/ratelimit.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/reflect.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/rstorm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/schemas.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/scope.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/scrape.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/share.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/slaboffs.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/slabseqn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/spooled.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/storm.lark +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/storm_format.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormctrl.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormhttp.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/aha.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/auth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/backup.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/basex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/cache.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/cell.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/compression.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/easyperm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/ethereum.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/gen.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/gis.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/graph.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/hashes.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/hex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/imap.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/infosec.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/ipv6.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/iters.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/json.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/log.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/macro.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/math.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/mime.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/modelext.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/notifications.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/oauth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/pack.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/project.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/random.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/scrape.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/smtp.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/spooled.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/stats.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/stix.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/storm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/vault.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/version.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/xml.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormlib/yaml.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormsvc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/stormwhois.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/structlog.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/task.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/thishost.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/thisplat.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/threads.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/time.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/trigger.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lib/urlhelp.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/cvss.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/iana.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/iso3166.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/macho.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/pe.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/phonenum.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/lookup/timezones.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/mindmeld.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/auth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/base.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/belief.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/biz.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/crypto.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/dns.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/economic.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/geopol.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/geospace.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/gov/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/gov/cn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/gov/intl.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/gov/us.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/language.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/material.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/media.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/orgs.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/person.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/planning.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/proj.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/risk.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/science.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/syn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/telco.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/models/transport.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/aha.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/axon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/cell.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/cortex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/cryotank.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/jsonstor.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/servers/stemcell.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/telepath.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/root.crt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/root.key +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/user.crt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/user.key +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stix_export/basic.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stix_export/custom0.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stix_export/risk0.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stix_import/apt1.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormcov/spin.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormmod/common +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/test.dat +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/files/testcore/cell.yaml +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/nopmod.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_axon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_cmds_boss.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_cmds_cortex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_cmds_hive.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_common.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_cryotank.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_daemon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_data.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_datamodel.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_exc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_glob.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_init.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_agenda.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_aha.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_autodoc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_base.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_boss.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_cache.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_certdir.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_chop.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_cli.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_config.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_const.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_coro.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_datfile.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_dyndeps.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_encoding.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_gis.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_grammar.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_hashitem.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_hashset.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_health.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_hive.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_hiveauth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_httpapi.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_interval.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_jsonstor.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_jupyter.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_link.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_modelrev.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_module.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_msgpack.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_nexus.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_node.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_output.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_queue.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_ratelimit.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_reflect.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_rstorm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_scope.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_slaboffs.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_slabseqn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_spooled.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_storm_format.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormhttp.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormsvc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_stormwhois.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_structlog.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_task.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_thishost.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_time.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_trigger.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_urlhelp.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lib_version.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lookup_iso3166.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_lookup_phonenum.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_mindmeld.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_auth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_base.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_belief.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_biz.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_crypto.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_dns.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_economic.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_geopol.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_geospace.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_gov_cn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_gov_intl.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_gov_us.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_language.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_material.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_media.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_orgs.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_person.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_planning.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_proj.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_risk.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_science.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_syn.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_telco.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_model_transport.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_servers_axon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_servers_cortex.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_servers_cryotank.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_servers_stemcell.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_servers_univ.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_telepath.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_aha.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_autodoc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_axon2axon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_backup.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_cellauth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_cryo_list.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_csvtool.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_docker_validate.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_easycert.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_feed.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_genpkg.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_guid.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_healthcheck.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_hiveload.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_hivesave.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_json2mpk.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_livebackup.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_modrole.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_moduser.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_pullfile.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_pushfile.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_reload.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_rstorm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_tools_storm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_utils.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_utils_getrefs.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tests/test_utils_stormcov.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/aha/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/aha/easycert.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/aha/enroll.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/aha/list.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/aha/provision/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/aha/provision/service.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/aha/provision/user.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/autodoc.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/axon2axon.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/backup.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/cellauth.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/cmdr.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/cryo/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/cryo/cat.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/cryo/list.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/csvtool.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/docker/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/docker/validate.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/easycert.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/feed.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/genpkg.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/guid.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/healthcheck.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/hive/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/hive/load.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/hive/save.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/json2mpk.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/livebackup.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/modrole.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/moduser.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/promote.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/pullfile.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/pushfile.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/reload.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/rstorm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/tools/storm.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/utils/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/utils/getrefs.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/utils/stormcov/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/utils/stormcov/plugin.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/cashaddress/LICENSE +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/cashaddress/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/cashaddress/base58.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/cashaddress/convert.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/cashaddress/crypto.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/utils.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/LICENSE +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/constants.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse.egg-info/dependency_links.txt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse.egg-info/requires.txt +0 -0
- {synapse-2.169.0 → synapse-2.170.0}/synapse.egg-info/top_level.txt +0 -0
|
@@ -3866,7 +3866,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
3866
3866
|
with open(idenpath, 'w') as fd:
|
|
3867
3867
|
fd.write(jsoniden)
|
|
3868
3868
|
|
|
3869
|
-
|
|
3869
|
+
# Disable sysctl checks for embedded jsonstor server
|
|
3870
|
+
conf = {'cell:guid': jsoniden, 'health:sysctl:checks': False}
|
|
3870
3871
|
self.jsonstor = await s_jsonstor.JsonStorCell.anit(path, conf=conf, parent=self)
|
|
3871
3872
|
|
|
3872
3873
|
self.onfini(self.jsonstor)
|
|
@@ -3943,7 +3944,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
3943
3944
|
turl = self.conf.get('axon')
|
|
3944
3945
|
if turl is None:
|
|
3945
3946
|
path = os.path.join(self.dirn, 'axon')
|
|
3946
|
-
|
|
3947
|
+
# Disable sysctl checks for embedded axon server
|
|
3948
|
+
conf = {'health:sysctl:checks': False}
|
|
3947
3949
|
|
|
3948
3950
|
proxyurl = self.conf.get('http:proxy')
|
|
3949
3951
|
if proxyurl is not None:
|
|
@@ -4494,6 +4496,87 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
4494
4496
|
await self.feedBeholder('view:add', pack, gates=[iden])
|
|
4495
4497
|
return pack
|
|
4496
4498
|
|
|
4499
|
+
async def delViewWithLayer(self, iden):
|
|
4500
|
+
'''
|
|
4501
|
+
Delete a Cortex View and its write Layer if not in use by other View stacks.
|
|
4502
|
+
|
|
4503
|
+
Note:
|
|
4504
|
+
Any children of the View will have their parent View updated to
|
|
4505
|
+
the deleted View's parent (if present). The deleted View's write Layer
|
|
4506
|
+
will also be removed from any child Views which contain it in their
|
|
4507
|
+
Layer stack. If the Layer is used in Views which are not children of
|
|
4508
|
+
the deleted View, the Layer will be preserved, otherwise it will be
|
|
4509
|
+
deleted as well.
|
|
4510
|
+
'''
|
|
4511
|
+
view = self.views.get(iden)
|
|
4512
|
+
if view is None:
|
|
4513
|
+
raise s_exc.NoSuchView(mesg=f'No such view {iden=}', iden=iden)
|
|
4514
|
+
|
|
4515
|
+
if view.info.get('protected'):
|
|
4516
|
+
mesg = f'Cannot delete view ({iden}) that has protected set.'
|
|
4517
|
+
raise s_exc.CantDelView(mesg=mesg)
|
|
4518
|
+
|
|
4519
|
+
layriden = view.layers[0].iden
|
|
4520
|
+
pareiden = None
|
|
4521
|
+
if view.parent is not None:
|
|
4522
|
+
pareiden = view.parent.iden
|
|
4523
|
+
|
|
4524
|
+
return await self._push('view:delwithlayer', iden, layriden, newparent=pareiden)
|
|
4525
|
+
|
|
4526
|
+
@s_nexus.Pusher.onPush('view:delwithlayer', passitem=True)
|
|
4527
|
+
async def _delViewWithLayer(self, viewiden, layriden, nexsitem, newparent=None):
|
|
4528
|
+
|
|
4529
|
+
if viewiden == self.view.iden:
|
|
4530
|
+
raise s_exc.SynErr(mesg='Cannot delete the main view')
|
|
4531
|
+
|
|
4532
|
+
if (view := self.views.get(viewiden)) is not None:
|
|
4533
|
+
|
|
4534
|
+
await self.hive.pop(('cortex', 'views', viewiden))
|
|
4535
|
+
await view.delete()
|
|
4536
|
+
|
|
4537
|
+
self._calcViewsByLayer()
|
|
4538
|
+
await self.feedBeholder('view:del', {'iden': viewiden}, gates=[viewiden])
|
|
4539
|
+
await self.auth.delAuthGate(viewiden)
|
|
4540
|
+
|
|
4541
|
+
if newparent is not None:
|
|
4542
|
+
newview = self.views.get(newparent)
|
|
4543
|
+
|
|
4544
|
+
layrinuse = False
|
|
4545
|
+
for view in self.viewsbylayer[layriden]:
|
|
4546
|
+
if not view.isForkOf(viewiden):
|
|
4547
|
+
layrinuse = True
|
|
4548
|
+
continue
|
|
4549
|
+
|
|
4550
|
+
view.layers = [lyr for lyr in view.layers if lyr.iden != layriden]
|
|
4551
|
+
await view.info.set('layers', [lyr.iden for lyr in view.layers])
|
|
4552
|
+
|
|
4553
|
+
if view.parent.iden == viewiden:
|
|
4554
|
+
if newparent is None:
|
|
4555
|
+
view.parent = None
|
|
4556
|
+
await view.info.pop('parent')
|
|
4557
|
+
else:
|
|
4558
|
+
view.parent = newview
|
|
4559
|
+
await view.info.set('parent', newparent)
|
|
4560
|
+
|
|
4561
|
+
if not layrinuse and (layr := self.layers.get(layriden)) is not None:
|
|
4562
|
+
del self.layers[layriden]
|
|
4563
|
+
|
|
4564
|
+
for pdef in layr.layrinfo.get('pushs', {}).values():
|
|
4565
|
+
await self.delActiveCoro(pdef.get('iden'))
|
|
4566
|
+
|
|
4567
|
+
for pdef in layr.layrinfo.get('pulls', {}).values():
|
|
4568
|
+
await self.delActiveCoro(pdef.get('iden'))
|
|
4569
|
+
|
|
4570
|
+
await self.feedBeholder('layer:del', {'iden': layriden}, gates=[layriden])
|
|
4571
|
+
await self.auth.delAuthGate(layriden)
|
|
4572
|
+
self.dynitems.pop(layriden)
|
|
4573
|
+
|
|
4574
|
+
await self.hive.pop(('cortex', 'layers', layriden))
|
|
4575
|
+
|
|
4576
|
+
await layr.delete()
|
|
4577
|
+
|
|
4578
|
+
layr.deloffs = nexsitem[0]
|
|
4579
|
+
|
|
4497
4580
|
async def delView(self, iden):
|
|
4498
4581
|
view = self.views.get(iden)
|
|
4499
4582
|
if view is None:
|
|
@@ -5156,12 +5239,15 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
5156
5239
|
|
|
5157
5240
|
return dmon
|
|
5158
5241
|
|
|
5242
|
+
@s_cell.from_leader
|
|
5159
5243
|
async def getStormDmon(self, iden):
|
|
5160
5244
|
return self.stormdmons.getDmonDef(iden)
|
|
5161
5245
|
|
|
5246
|
+
@s_cell.from_leader
|
|
5162
5247
|
async def getStormDmons(self):
|
|
5163
5248
|
return self.stormdmons.getDmonDefs()
|
|
5164
5249
|
|
|
5250
|
+
@s_cell.from_leader
|
|
5165
5251
|
async def getStormDmonLog(self, iden):
|
|
5166
5252
|
return self.stormdmons.getDmonRunlog(iden)
|
|
5167
5253
|
|
|
@@ -330,11 +330,16 @@ class Form:
|
|
|
330
330
|
'prop': [],
|
|
331
331
|
'ndef': [],
|
|
332
332
|
'array': [],
|
|
333
|
+
'ndefarray': [],
|
|
333
334
|
}
|
|
334
335
|
|
|
335
336
|
for name, prop in self.props.items():
|
|
336
337
|
|
|
337
338
|
if isinstance(prop.type, s_types.Array):
|
|
339
|
+
if isinstance(prop.type.arraytype, s_types.Ndef):
|
|
340
|
+
self.refsout['ndefarray'].append(name)
|
|
341
|
+
continue
|
|
342
|
+
|
|
338
343
|
typename = prop.type.arraytype.name
|
|
339
344
|
if self.modl.forms.get(typename) is not None:
|
|
340
345
|
self.refsout['array'].append((name, typename))
|
|
@@ -1943,6 +1943,12 @@ class PivotOut(PivotOper):
|
|
|
1943
1943
|
continue
|
|
1944
1944
|
|
|
1945
1945
|
if isinstance(prop.type, s_types.Array):
|
|
1946
|
+
if isinstance(prop.type.arraytype, s_types.Ndef):
|
|
1947
|
+
for item in valu:
|
|
1948
|
+
if (pivo := await runt.snap.getNodeByNdef(item)) is not None:
|
|
1949
|
+
yield pivo, path.fork(pivo)
|
|
1950
|
+
continue
|
|
1951
|
+
|
|
1946
1952
|
typename = prop.type.opts.get('type')
|
|
1947
1953
|
if runt.model.forms.get(typename) is not None:
|
|
1948
1954
|
for item in valu:
|
|
@@ -2177,13 +2183,13 @@ class FormPivot(PivotOper):
|
|
|
2177
2183
|
|
|
2178
2184
|
# plain old pivot...
|
|
2179
2185
|
async def pgenr(node, strict=True):
|
|
2180
|
-
|
|
2181
|
-
valu = node.ndef[1]
|
|
2182
|
-
|
|
2183
2186
|
if isarray:
|
|
2184
|
-
|
|
2187
|
+
if isinstance(prop.type.arraytype, s_types.Ndef):
|
|
2188
|
+
ngenr = runt.snap.nodesByPropArray(prop.full, '=', node.ndef)
|
|
2189
|
+
else:
|
|
2190
|
+
ngenr = runt.snap.nodesByPropArray(prop.full, '=', node.ndef[1])
|
|
2185
2191
|
else:
|
|
2186
|
-
ngenr = runt.snap.nodesByPropValu(prop.full, '=',
|
|
2192
|
+
ngenr = runt.snap.nodesByPropValu(prop.full, '=', node.ndef[1])
|
|
2187
2193
|
|
|
2188
2194
|
# TODO cache/bypass normalization in loop!
|
|
2189
2195
|
async for pivo in ngenr:
|
|
@@ -2266,6 +2272,16 @@ class FormPivot(PivotOper):
|
|
|
2266
2272
|
if pivo is not None:
|
|
2267
2273
|
yield pivo
|
|
2268
2274
|
|
|
2275
|
+
for refsname in refs.get('ndefarray'):
|
|
2276
|
+
|
|
2277
|
+
found = True
|
|
2278
|
+
|
|
2279
|
+
if (refsvalu := node.get(refsname)) is not None:
|
|
2280
|
+
for aval in refsvalu:
|
|
2281
|
+
if aval[0] == destform.name:
|
|
2282
|
+
if (pivo := await runt.snap.getNodeByNdef(aval)) is not None:
|
|
2283
|
+
yield pivo
|
|
2284
|
+
|
|
2269
2285
|
#########################################################################
|
|
2270
2286
|
# reverse "-> form" pivots (ie inet:fqdn -> inet:dns:a)
|
|
2271
2287
|
refs = destform.getRefsOut()
|
|
@@ -2303,6 +2319,14 @@ class FormPivot(PivotOper):
|
|
|
2303
2319
|
async for pivo in runt.snap.nodesByPropValu(refsprop.full, '=', node.ndef):
|
|
2304
2320
|
yield pivo
|
|
2305
2321
|
|
|
2322
|
+
for refsname in refs.get('ndefarray'):
|
|
2323
|
+
|
|
2324
|
+
found = True
|
|
2325
|
+
|
|
2326
|
+
refsprop = destform.props.get(refsname)
|
|
2327
|
+
async for pivo in runt.snap.nodesByPropArray(refsprop.full, '=', node.ndef):
|
|
2328
|
+
yield pivo
|
|
2329
|
+
|
|
2306
2330
|
if strict and not found:
|
|
2307
2331
|
mesg = f'No pivot found for {node.form.name} -> {destform.name}.'
|
|
2308
2332
|
raise self.addExcInfo(s_exc.NoSuchPivot(n1=node.form.name, n2=destform.name, mesg=mesg))
|
|
@@ -2389,6 +2413,12 @@ class PropPivotOut(PivotOper):
|
|
|
2389
2413
|
continue
|
|
2390
2414
|
|
|
2391
2415
|
if prop.type.isarray:
|
|
2416
|
+
if isinstance(prop.type.arraytype, s_types.Ndef):
|
|
2417
|
+
for item in valu:
|
|
2418
|
+
if (pivo := await runt.snap.getNodeByNdef(item)) is not None:
|
|
2419
|
+
yield pivo, path.fork(pivo)
|
|
2420
|
+
continue
|
|
2421
|
+
|
|
2392
2422
|
fname = prop.type.arraytype.name
|
|
2393
2423
|
if runt.model.forms.get(fname) is None:
|
|
2394
2424
|
if not warned:
|
|
@@ -2442,6 +2472,14 @@ class PropPivot(PivotOper):
|
|
|
2442
2472
|
|
|
2443
2473
|
# pivoting from an array prop to a non-array prop needs an extra loop
|
|
2444
2474
|
if srcprop.type.isarray and not prop.type.isarray:
|
|
2475
|
+
if isinstance(srcprop.type.arraytype, s_types.Ndef) and prop.isform:
|
|
2476
|
+
for aval in valu:
|
|
2477
|
+
if aval[0] != prop.form.name:
|
|
2478
|
+
continue
|
|
2479
|
+
|
|
2480
|
+
if (pivo := await runt.snap.getNodeByNdef(aval)) is not None:
|
|
2481
|
+
yield pivo
|
|
2482
|
+
return
|
|
2445
2483
|
|
|
2446
2484
|
for arrayval in valu:
|
|
2447
2485
|
async for pivo in runt.snap.nodesByPropValu(prop.full, '=', arrayval):
|
|
@@ -2449,6 +2487,18 @@ class PropPivot(PivotOper):
|
|
|
2449
2487
|
|
|
2450
2488
|
return
|
|
2451
2489
|
|
|
2490
|
+
if isinstance(srcprop.type, s_types.Ndef) and prop.isform:
|
|
2491
|
+
if valu[0] != prop.form.name:
|
|
2492
|
+
return
|
|
2493
|
+
|
|
2494
|
+
pivo = await runt.snap.getNodeByNdef(valu)
|
|
2495
|
+
if pivo is None:
|
|
2496
|
+
await runt.snap.warn(f'Missing node corresponding to ndef {valu}', log=False, ndef=valu)
|
|
2497
|
+
return
|
|
2498
|
+
yield pivo
|
|
2499
|
+
|
|
2500
|
+
return
|
|
2501
|
+
|
|
2452
2502
|
if prop.type.isarray and not srcprop.type.isarray:
|
|
2453
2503
|
genr = runt.snap.nodesByPropArray(prop.full, '=', valu)
|
|
2454
2504
|
else:
|
|
@@ -2463,7 +2513,6 @@ class PropPivot(PivotOper):
|
|
|
2463
2513
|
|
|
2464
2514
|
if isinstance(name, list) or (prop := runt.model.props.get(name)) is None:
|
|
2465
2515
|
|
|
2466
|
-
proplist = None
|
|
2467
2516
|
if isinstance(name, list):
|
|
2468
2517
|
proplist = name
|
|
2469
2518
|
else:
|
|
@@ -2485,7 +2534,7 @@ class PropPivot(PivotOper):
|
|
|
2485
2534
|
async for pivo in pgenr(node, srcprop, valu, strict=False):
|
|
2486
2535
|
yield pivo
|
|
2487
2536
|
|
|
2488
|
-
return
|
|
2537
|
+
return listpivot
|
|
2489
2538
|
|
|
2490
2539
|
return self.pivogenr(runt, prop)
|
|
2491
2540
|
|
|
@@ -2771,15 +2820,24 @@ class TagCond(Cond):
|
|
|
2771
2820
|
kid = self.kids[0]
|
|
2772
2821
|
|
|
2773
2822
|
if not isinstance(kid, TagMatch):
|
|
2774
|
-
# TODO: we might hint based on variable value
|
|
2775
2823
|
return []
|
|
2776
2824
|
|
|
2777
|
-
if
|
|
2825
|
+
if kid.hasglob():
|
|
2778
2826
|
return []
|
|
2779
2827
|
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2828
|
+
if kid.isconst:
|
|
2829
|
+
return (
|
|
2830
|
+
('tag', {'name': await kid.compute(None, None)}),
|
|
2831
|
+
)
|
|
2832
|
+
|
|
2833
|
+
if kid.isRuntSafe(runt):
|
|
2834
|
+
name = await kid.compute(runt, path)
|
|
2835
|
+
if name and '*' not in name:
|
|
2836
|
+
return (
|
|
2837
|
+
('tag', {'name': name}),
|
|
2838
|
+
)
|
|
2839
|
+
|
|
2840
|
+
return []
|
|
2783
2841
|
|
|
2784
2842
|
async def getCondEval(self, runt):
|
|
2785
2843
|
|
|
@@ -55,6 +55,7 @@ import synapse.lib.lmdbslab as s_lmdbslab
|
|
|
55
55
|
import synapse.lib.thisplat as s_thisplat
|
|
56
56
|
|
|
57
57
|
import synapse.lib.crypto.passwd as s_passwd
|
|
58
|
+
import synapse.lib.platforms.linux as s_linux
|
|
58
59
|
|
|
59
60
|
import synapse.tools.backup as s_t_backup
|
|
60
61
|
|
|
@@ -109,6 +110,25 @@ def adminapi(log=False):
|
|
|
109
110
|
|
|
110
111
|
return decrfunc
|
|
111
112
|
|
|
113
|
+
def from_leader(func):
|
|
114
|
+
'''
|
|
115
|
+
Decorator used to indicate that the decorated method must call up to the
|
|
116
|
+
leader to perform it's work.
|
|
117
|
+
|
|
118
|
+
This only works on Cell classes and subclasses. The decorated method name
|
|
119
|
+
MUST be the same as the telepath API name.
|
|
120
|
+
'''
|
|
121
|
+
@functools.wraps(func)
|
|
122
|
+
async def wrapper(self, *args, **kwargs):
|
|
123
|
+
if not self.isactive:
|
|
124
|
+
proxy = await self.nexsroot.client.proxy()
|
|
125
|
+
api = getattr(proxy, func.__name__)
|
|
126
|
+
return await api(*args, **kwargs)
|
|
127
|
+
|
|
128
|
+
return await func(self, *args, **kwargs)
|
|
129
|
+
|
|
130
|
+
return wrapper
|
|
131
|
+
|
|
112
132
|
async def _doIterBackup(path, chunksize=1024):
|
|
113
133
|
'''
|
|
114
134
|
Create tarball and stream bytes.
|
|
@@ -924,6 +944,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
924
944
|
'minimum': 0,
|
|
925
945
|
'maximum': 100,
|
|
926
946
|
},
|
|
947
|
+
'health:sysctl:checks': {
|
|
948
|
+
'default': True,
|
|
949
|
+
'description': 'Enable sysctl parameter checks and warn if values are not optimal.',
|
|
950
|
+
'type': 'boolean',
|
|
951
|
+
},
|
|
927
952
|
'aha:name': {
|
|
928
953
|
'description': 'The name of the cell service in the aha service registry.',
|
|
929
954
|
'type': 'string',
|
|
@@ -1049,6 +1074,12 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
1049
1074
|
VERSION = s_version.version
|
|
1050
1075
|
VERSTRING = s_version.verstring
|
|
1051
1076
|
|
|
1077
|
+
SYSCTL_VALS = {
|
|
1078
|
+
'vm.dirty_expire_centisecs': 20,
|
|
1079
|
+
'vm.dirty_writeback_centisecs': 20,
|
|
1080
|
+
}
|
|
1081
|
+
SYSCTL_CHECK_FREQ = 60.0
|
|
1082
|
+
|
|
1052
1083
|
async def __anit__(self, dirn, conf=None, readonly=False, parent=None):
|
|
1053
1084
|
|
|
1054
1085
|
# phase 1
|
|
@@ -1177,16 +1208,24 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
1177
1208
|
self.cellinfo = await node.dict()
|
|
1178
1209
|
self.onfini(node)
|
|
1179
1210
|
|
|
1180
|
-
|
|
1181
|
-
self.
|
|
1211
|
+
# Check the cell version didn't regress
|
|
1212
|
+
if (lastver := self.cellinfo.get('cell:version')) is not None and self.VERSION < lastver:
|
|
1213
|
+
mesg = f'Cell version regression ({self.getCellType()}) is not allowed! Stored version: {lastver}, current version: {self.VERSION}.'
|
|
1214
|
+
logger.error(mesg)
|
|
1215
|
+
raise s_exc.BadVersion(mesg=mesg, currver=self.VERSION, lastver=lastver)
|
|
1182
1216
|
|
|
1183
|
-
|
|
1184
|
-
|
|
1217
|
+
await self.cellinfo.set('cell:version', self.VERSION)
|
|
1218
|
+
|
|
1219
|
+
# Check the synapse version didn't regress
|
|
1220
|
+
if (lastver := self.cellinfo.get('synapse:version')) is not None and s_version.version < lastver:
|
|
1221
|
+
mesg = f'Synapse version regression ({self.getCellType()}) is not allowed! Stored version: {lastver}, current version: {s_version.version}.'
|
|
1222
|
+
logger.error(mesg)
|
|
1223
|
+
raise s_exc.BadVersion(mesg=mesg, currver=s_version.version, lastver=lastver)
|
|
1185
1224
|
|
|
1186
|
-
|
|
1225
|
+
await self.cellinfo.set('synapse:version', s_version.version)
|
|
1187
1226
|
|
|
1188
|
-
|
|
1189
|
-
|
|
1227
|
+
node = await self.hive.open(('cellvers',))
|
|
1228
|
+
self.cellvers = await node.dict(nexs=True)
|
|
1190
1229
|
|
|
1191
1230
|
self.auth = await self._initCellAuth()
|
|
1192
1231
|
|
|
@@ -1217,6 +1256,9 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
1217
1256
|
self._health_funcs = []
|
|
1218
1257
|
self.addHealthFunc(self._cellHealth)
|
|
1219
1258
|
|
|
1259
|
+
if self.conf.get('health:sysctl:checks'):
|
|
1260
|
+
self.schedCoro(self._runSysctlLoop())
|
|
1261
|
+
|
|
1220
1262
|
# initialize network backend infrastructure
|
|
1221
1263
|
await self._initAhaRegistry()
|
|
1222
1264
|
|
|
@@ -1420,6 +1462,30 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
1420
1462
|
|
|
1421
1463
|
await self._checkspace.timewait(timeout=self.FREE_SPACE_CHECK_FREQ)
|
|
1422
1464
|
|
|
1465
|
+
async def _runSysctlLoop(self):
|
|
1466
|
+
while not self.isfini:
|
|
1467
|
+
fixvals = []
|
|
1468
|
+
sysctls = s_linux.getSysctls()
|
|
1469
|
+
|
|
1470
|
+
for name, valu in self.SYSCTL_VALS.items():
|
|
1471
|
+
if (sysval := sysctls.get(name)) != valu:
|
|
1472
|
+
fixvals.append({'name': name, 'expected': valu, 'actual': sysval})
|
|
1473
|
+
|
|
1474
|
+
if not fixvals:
|
|
1475
|
+
# All sysctl parameters have been set to recommended values, no
|
|
1476
|
+
# need to keep checking.
|
|
1477
|
+
break
|
|
1478
|
+
|
|
1479
|
+
fixnames = [k['name'] for k in fixvals]
|
|
1480
|
+
mesg = f'Sysctl values different than expected: {", ".join(fixnames)}. '
|
|
1481
|
+
mesg += 'See https://synapse.docs.vertex.link/en/latest/synapse/devopsguide.html#performance-tuning '
|
|
1482
|
+
mesg += 'for information about these sysctl parameters.'
|
|
1483
|
+
|
|
1484
|
+
extra = await self.getLogExtra(sysctls=fixvals)
|
|
1485
|
+
logger.warning(mesg, extra=extra)
|
|
1486
|
+
|
|
1487
|
+
await asyncio.sleep(self.SYSCTL_CHECK_FREQ)
|
|
1488
|
+
|
|
1423
1489
|
def _getAhaAdmin(self):
|
|
1424
1490
|
name = self.conf.get('aha:admin')
|
|
1425
1491
|
if name is not None:
|
|
@@ -3724,6 +3790,10 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
3724
3790
|
logconf = s_common.setlogging(logger, defval=opts.log_level,
|
|
3725
3791
|
structlog=opts.structured_logging)
|
|
3726
3792
|
|
|
3793
|
+
logger.info(f'Starting {cls.getCellType()} version {cls.VERSTRING}, Synapse version: {s_version.verstring}',
|
|
3794
|
+
extra={'synapse': {'svc_type': cls.getCellType(), 'svc_version': cls.VERSTRING,
|
|
3795
|
+
'synapse_version': s_version.verstring}})
|
|
3796
|
+
|
|
3727
3797
|
await cls._initBootRestore(opts.dirn)
|
|
3728
3798
|
|
|
3729
3799
|
try:
|
|
@@ -107,6 +107,7 @@ reqValidLdef = s_config.getJsValidator({
|
|
|
107
107
|
})
|
|
108
108
|
|
|
109
109
|
WINDOW_MAXSIZE = 10_000
|
|
110
|
+
MIGR_COMMIT_SIZE = 1_000
|
|
110
111
|
|
|
111
112
|
class LayerApi(s_cell.CellApi):
|
|
112
113
|
|
|
@@ -2612,7 +2613,7 @@ class Layer(s_nexus.Pusher):
|
|
|
2612
2613
|
venc = lkey[32:]
|
|
2613
2614
|
|
|
2614
2615
|
putkeys.append((n1buid + n2buid, venc))
|
|
2615
|
-
if len(putkeys) >
|
|
2616
|
+
if len(putkeys) > MIGR_COMMIT_SIZE:
|
|
2616
2617
|
commit()
|
|
2617
2618
|
|
|
2618
2619
|
if len(putkeys):
|
|
@@ -2623,6 +2624,33 @@ class Layer(s_nexus.Pusher):
|
|
|
2623
2624
|
|
|
2624
2625
|
logger.warning(f'...complete!')
|
|
2625
2626
|
|
|
2627
|
+
async def _layrV10toV11(self):
|
|
2628
|
+
|
|
2629
|
+
logger.warning(f'Adding byform index to layer {self.iden}')
|
|
2630
|
+
|
|
2631
|
+
def commit():
|
|
2632
|
+
self.layrslab.putmulti(putkeys, db=self.byform)
|
|
2633
|
+
putkeys.clear()
|
|
2634
|
+
|
|
2635
|
+
putkeys = []
|
|
2636
|
+
async for buid, sode in self.getStorNodes():
|
|
2637
|
+
if not (form := sode.get('form')):
|
|
2638
|
+
continue
|
|
2639
|
+
|
|
2640
|
+
abrv = self.setPropAbrv(form, None)
|
|
2641
|
+
putkeys.append((abrv, buid))
|
|
2642
|
+
|
|
2643
|
+
if len(putkeys) > MIGR_COMMIT_SIZE:
|
|
2644
|
+
commit()
|
|
2645
|
+
|
|
2646
|
+
if putkeys:
|
|
2647
|
+
commit()
|
|
2648
|
+
|
|
2649
|
+
self.meta.set('version', 11)
|
|
2650
|
+
self.layrvers = 11
|
|
2651
|
+
|
|
2652
|
+
logger.warning('...complete!')
|
|
2653
|
+
|
|
2626
2654
|
async def _initSlabs(self, slabopts):
|
|
2627
2655
|
|
|
2628
2656
|
otherslabopts = {
|
|
@@ -2659,6 +2687,7 @@ class Layer(s_nexus.Pusher):
|
|
|
2659
2687
|
self.edgesn1n2 = self.layrslab.initdb('edgesn1n2', dupsort=True)
|
|
2660
2688
|
|
|
2661
2689
|
self.bytag = self.layrslab.initdb('bytag', dupsort=True)
|
|
2690
|
+
self.byform = self.layrslab.initdb('byform', dupsort=True)
|
|
2662
2691
|
self.byprop = self.layrslab.initdb('byprop', dupsort=True)
|
|
2663
2692
|
self.byarray = self.layrslab.initdb('byarray', dupsort=True)
|
|
2664
2693
|
self.bytagprop = self.layrslab.initdb('bytagprop', dupsort=True)
|
|
@@ -2684,7 +2713,7 @@ class Layer(s_nexus.Pusher):
|
|
|
2684
2713
|
await self._initSlabs(slabopts)
|
|
2685
2714
|
|
|
2686
2715
|
if self.fresh:
|
|
2687
|
-
self.meta.set('version',
|
|
2716
|
+
self.meta.set('version', 11)
|
|
2688
2717
|
|
|
2689
2718
|
self.layrslab.addResizeCallback(self.core.checkFreeSpace)
|
|
2690
2719
|
self.dataslab.addResizeCallback(self.core.checkFreeSpace)
|
|
@@ -2719,8 +2748,11 @@ class Layer(s_nexus.Pusher):
|
|
|
2719
2748
|
if self.layrvers < 10:
|
|
2720
2749
|
await self._layrV9toV10()
|
|
2721
2750
|
|
|
2722
|
-
if self.layrvers
|
|
2723
|
-
|
|
2751
|
+
if self.layrvers < 11:
|
|
2752
|
+
await self._layrV10toV11()
|
|
2753
|
+
|
|
2754
|
+
if self.layrvers != 11:
|
|
2755
|
+
mesg = f'Got layer version {self.layrvers}. Expected 11. Accidental downgrade?'
|
|
2724
2756
|
raise s_exc.BadStorageVersion(mesg=mesg)
|
|
2725
2757
|
|
|
2726
2758
|
async def getLayerSize(self):
|
|
@@ -3323,6 +3355,11 @@ class Layer(s_nexus.Pusher):
|
|
|
3323
3355
|
return
|
|
3324
3356
|
|
|
3325
3357
|
# no more refs in this layer. time to pop it...
|
|
3358
|
+
try:
|
|
3359
|
+
abrv = self.getPropAbrv(sode.get('form'), None)
|
|
3360
|
+
self.layrslab.delete(abrv, val=buid, db=self.byform)
|
|
3361
|
+
except s_exc.NoSuchAbrv:
|
|
3362
|
+
pass
|
|
3326
3363
|
self.dirty.pop(buid, None)
|
|
3327
3364
|
self.buidcache.pop(buid, None)
|
|
3328
3365
|
self.layrslab.delete(buid, db=self.bybuidv3)
|
|
@@ -3343,11 +3380,14 @@ class Layer(s_nexus.Pusher):
|
|
|
3343
3380
|
if sode.get('valu') == valt:
|
|
3344
3381
|
return ()
|
|
3345
3382
|
|
|
3383
|
+
abrv = self.setPropAbrv(form, None)
|
|
3384
|
+
|
|
3385
|
+
if sode.get('form') is None:
|
|
3386
|
+
self.layrslab.put(abrv, buid, db=self.byform)
|
|
3387
|
+
|
|
3346
3388
|
sode['valu'] = valt
|
|
3347
3389
|
self.setSodeDirty(buid, sode, form)
|
|
3348
3390
|
|
|
3349
|
-
abrv = self.setPropAbrv(form, None)
|
|
3350
|
-
|
|
3351
3391
|
if stortype & STOR_FLAG_ARRAY:
|
|
3352
3392
|
|
|
3353
3393
|
for indx in self.getStorIndx(stortype, valu):
|
|
@@ -3467,6 +3507,10 @@ class Layer(s_nexus.Pusher):
|
|
|
3467
3507
|
if univabrv is not None:
|
|
3468
3508
|
self.layrslab.delete(univabrv + oldi, buid, db=self.byprop)
|
|
3469
3509
|
|
|
3510
|
+
if sode.get('form') is None:
|
|
3511
|
+
formabrv = self.setPropAbrv(form, None)
|
|
3512
|
+
self.layrslab.put(formabrv, buid, db=self.byform)
|
|
3513
|
+
|
|
3470
3514
|
sode['props'][prop] = (valu, stortype)
|
|
3471
3515
|
self.setSodeDirty(buid, sode, form)
|
|
3472
3516
|
|
|
@@ -3561,6 +3605,9 @@ class Layer(s_nexus.Pusher):
|
|
|
3561
3605
|
if oldv == valu:
|
|
3562
3606
|
return ()
|
|
3563
3607
|
|
|
3608
|
+
if sode.get('form') is None:
|
|
3609
|
+
self.layrslab.put(formabrv, buid, db=self.byform)
|
|
3610
|
+
|
|
3564
3611
|
sode['tags'][tag] = valu
|
|
3565
3612
|
self.setSodeDirty(buid, sode, form)
|
|
3566
3613
|
|
|
@@ -3624,6 +3671,10 @@ class Layer(s_nexus.Pusher):
|
|
|
3624
3671
|
self.layrslab.delete(tp_abrv + oldi, buid, db=self.bytagprop)
|
|
3625
3672
|
self.layrslab.delete(ftp_abrv + oldi, buid, db=self.bytagprop)
|
|
3626
3673
|
|
|
3674
|
+
if sode.get('form') is None:
|
|
3675
|
+
formabrv = self.setPropAbrv(form, None)
|
|
3676
|
+
self.layrslab.put(formabrv, buid, db=self.byform)
|
|
3677
|
+
|
|
3627
3678
|
if tag not in sode['tagprops']:
|
|
3628
3679
|
sode['tagprops'][tag] = {}
|
|
3629
3680
|
sode['tagprops'][tag][prop] = (valu, stortype)
|
|
@@ -3682,6 +3733,8 @@ class Layer(s_nexus.Pusher):
|
|
|
3682
3733
|
# a bit of special case...
|
|
3683
3734
|
if sode.get('form') is None:
|
|
3684
3735
|
self.setSodeDirty(buid, sode, form)
|
|
3736
|
+
formabrv = self.setPropAbrv(form, None)
|
|
3737
|
+
self.layrslab.put(formabrv, buid, db=self.byform)
|
|
3685
3738
|
|
|
3686
3739
|
if oldb is not None:
|
|
3687
3740
|
oldv = s_msgpack.un(oldb)
|
|
@@ -3729,6 +3782,8 @@ class Layer(s_nexus.Pusher):
|
|
|
3729
3782
|
# a bit of special case...
|
|
3730
3783
|
if sode.get('form') is None:
|
|
3731
3784
|
self.setSodeDirty(buid, sode, form)
|
|
3785
|
+
formabrv = self.setPropAbrv(form, None)
|
|
3786
|
+
self.layrslab.put(formabrv, buid, db=self.byform)
|
|
3732
3787
|
|
|
3733
3788
|
self.layrslab.put(venc, buid + n2buid, db=self.byverb)
|
|
3734
3789
|
self.layrslab.put(n1key, n2buid, db=self.edgesn1)
|
|
@@ -4208,6 +4263,20 @@ class Layer(s_nexus.Pusher):
|
|
|
4208
4263
|
yield buid, s_msgpack.un(byts)
|
|
4209
4264
|
await asyncio.sleep(0)
|
|
4210
4265
|
|
|
4266
|
+
async def getStorNodesByForm(self, form):
|
|
4267
|
+
'''
|
|
4268
|
+
Yield (buid, sode) tuples for nodes of a given form with props/tags/tagprops/edges/nodedata in this layer.
|
|
4269
|
+
'''
|
|
4270
|
+
try:
|
|
4271
|
+
abrv = self.getPropAbrv(form, None)
|
|
4272
|
+
except s_exc.NoSuchAbrv:
|
|
4273
|
+
return
|
|
4274
|
+
|
|
4275
|
+
for _, buid in self.layrslab.scanByDups(abrv, db=self.byform):
|
|
4276
|
+
sode = await self.getStorNode(buid)
|
|
4277
|
+
yield buid, sode
|
|
4278
|
+
await asyncio.sleep(0)
|
|
4279
|
+
|
|
4211
4280
|
async def iterNodeEditLog(self, offs=0):
|
|
4212
4281
|
'''
|
|
4213
4282
|
Iterate the node edit log and yield (offs, edits, meta) tuples.
|
|
@@ -237,6 +237,13 @@ class Node:
|
|
|
237
237
|
for item in valu:
|
|
238
238
|
retn.append((name, (dest, item)))
|
|
239
239
|
|
|
240
|
+
for name in refs.get('ndefarray', ()):
|
|
241
|
+
if (valu := self.props.get(name)) is None:
|
|
242
|
+
continue
|
|
243
|
+
|
|
244
|
+
for item in valu:
|
|
245
|
+
retn.append((name, item))
|
|
246
|
+
|
|
240
247
|
return retn
|
|
241
248
|
|
|
242
249
|
async def set(self, name, valu, init=False):
|