Django Nats NKEYS
NATS is an infrastructure platform for building message-based services.
This Django app integrates NAT's multi-tenant account paradigm with Django Organizations.
The NATS nsc tool is used to manage operator, account, and user JWTs.
Quick start
-
pip install django-nats-nkeys[drf] -
Add to your INSTALLED_APPS settings:
INSTALLED_APPS = [ ... "organizations", "django_extensions", "django_nats_nkey", ] -
Run
python manage.py migrateto create the NATS organizationals models -
Run
python manage.py nsc-init(optional) Initialize a new NATS operator. You are responsible for copying the generated.conffile to your NATS server. If you choose to use an existing operator, you are responsible for runningnsc pullas a pre-deployment step.
Contributor's Guide
-
Create a development environment (requires docker & docker-compose):
make docker-up make nsc-init -
Run tests and generate a coverage report:
make pytest -
Run
blacklinter:make lint
Settings
Basic Settings
NATS_NSC_DATA_DIR (default: "/var/lib/nats/nsc/stores" or $NSC_STORE environment var)
NATS_NSC_CONFIG_DIR(default: "/var/lib/nats/nsc/config" or $NSC_HOME environment var)
NATS_NSC_KEYSTORE_DIR (default: "/var/lib/nats/nsc/keys" or $NKEYS_PATH environment var)
NATS_SERVER_URI (default: "nats://nats:4222")
NATS_NKEYS_IMPORT_DIR (default: ".nats/", )
NATS_NKEYS_EXPORT_DIR (default: ".nats/")
NATS_NKEYS_OPERATOR_NAME (default: "DjangoOperator")
Retry Mode
NATS_NSC_RETRY_MODE (default "STRICT", allowed values: "STRICT" or "IDEMPOTENT")
In STRICT mode, django_nats_nkey.errors.NscConflict will be raised if nsc add ... command returns an "already exists" error. You are responsible for implementing a separate process to handle eventual consistency between Django models and nsc environment.
In IDEMPOTENT mode, conflict is logged at the WARNING level but no Exception is raised. In this mode, nsc add command may be retried many times and will be a no-op if resource already exists.
Organization Models
- Based on Django organizations
- An
Organizationrepresents anaccountin NATS multi-tenant account model - An
Apprepresents auserin NATS multi-tenant account model
NATS_ORGANIZATION_MODEL (default: "django_nats_nkeys.NatsOrganization")
- Must subclass
django_nats_nkeys.models.NatsOrganization
NATS_ORGANIZATION_OWNER_MODEL (default: "django_nats_nkeys.NatsOrganizationOwner")
- Must subclass
django_nats_nkey.models.NatsOrganizationOwner
NATS_ORGANIZATION_APP_MODEL (default: "django_nats_nkey.NatsOrganizationApp")
- Must subclass
django_nats_nkey.models.AbstractNatsApp
NATS_ORGANIZATION_USER_MODEL (default: "django_nats_nkeys.models.NatsOrganizationUser")
- Must subclass
django_nats_nkeys.models.NatsOrganizationUser
Robot/Automation Models
NATS_ROBOT_APP_MODEL (default: "django_nats_nkeys.NatsRobotApp")
NATS_ROBOT_ACCOUNT_MODEL (default: "django_nats_nkeys.NatsRobotAccount")
App Models
NATS_APP_MODELS (default: [ "django_nats_nkey.NatsOrganizationApp" , "django_nats_nkeys.NatsRobotApp" ])
Metadata
Release files for django-nats-nkeys 0.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django_nats_nkeys-0.10.1.tar.gz | 28.0 kB | Without provenance | Details for django_nats_nkeys-0.10.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_nats_nkeys-0.10.1-py3-none-any.whl | Python 3 | none | any | Details for django_nats_nkeys-0.10.1-py3-none-any.whl |
Total release size: 850.6 kB
Release files / django_nats_nkeys-0.10.1.tar.gz
| Download URL | django_nats_nkeys-0.10.1.tar.gz |
|---|---|
| Size | 28.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b4185b883556c71657b35fb718a4c12278aa308620188f4778743d3bdcfef75
|
|
BLAKE2b-256 checksum How to use checksums |
1927c21e25564020fdfc1efd69b02c372d2fbabdb5de589e465fca3dde075a0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Release files / django_nats_nkeys-0.10.1-py3-none-any.whl
| Download URL | django_nats_nkeys-0.10.1-py3-none-any.whl |
|---|---|
| Size | 822.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3be83a6d6afed91685d338c1a1e6abb57d3ec681d8c7b7c4ada288f78ec9bf89
|
|
BLAKE2b-256 checksum How to use checksums |
1aefee72720ec35747ae3301b6dff0831e71f6b45f43cca6359cfe7bddf26d88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Security for django-nats-nkeys 0.10.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.