mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
* stub in poetry for pipenv * re-add tester image * add pre-commit / formatting * fix ghactions * revert test data whitespace, exclude tests/data * revert ws * decruft, rm tox/pipenv * install dev packages for base image * add lgtm config to force to py3
97 lines
1.5 KiB
Markdown
97 lines
1.5 KiB
Markdown
|
|
# PeeringDB Server Development
|
|
|
|
## Models
|
|
|
|
Note: to add fk's to base models, you must add in both peeringdb.models. and in django_peeringdb.models concrete class
|
|
|
|
models.py
|
|
- make model
|
|
- add ref_tag_
|
|
|
|
serializers.py
|
|
- add serializer
|
|
|
|
peeringdb/rest.py
|
|
- make ViewSet
|
|
- register
|
|
|
|
## Modules
|
|
|
|
### RDAP
|
|
|
|
- Add output to parsing test
|
|
|
|
```sh
|
|
curl -L https://rdap.db.ripe.net/autnum/$ASN > tests/data/rdap/autnum/$ASN.input
|
|
```
|
|
|
|
or
|
|
```sh
|
|
scripts/rdap_getasn.sh
|
|
scripts/rdap_getent.sh
|
|
```
|
|
|
|
- Pretty print RDAP data
|
|
|
|
```sh
|
|
munge json:https://rdap.arin.net/registry/autnum/2914 yaml:
|
|
```
|
|
|
|
|
|
### Whois Server
|
|
|
|
- To locally test whois, setup `/etc/xinetd.d/pdb-whois` with similar:
|
|
|
|
```
|
|
service whois
|
|
{
|
|
disable = no
|
|
socket_type = stream
|
|
wait = no
|
|
user = $USER
|
|
|
|
passenv =
|
|
|
|
server = /home/$USER/srv/dev.peeringdb.com/peeringdb/in.whoisd
|
|
log_on_failure = HOST
|
|
}
|
|
|
|
```
|
|
|
|
- Deploy and test against local
|
|
|
|
```sh
|
|
facs peeringdb dev --src-dir=. ; whois -h 127.0.0.1 as63311
|
|
pytest -v -rxs --cov-report term-missing --cov=peeringdb_server/ --capture=sys tests/
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
All dependencies are now handled by poetry.
|
|
|
|
To update them, do `poetry lock` and test.
|
|
|
|
|
|
## Troubleshooting
|
|
|
|
### 404 on static files with runserver:
|
|
|
|
Make sure it's in debug mode
|
|
|
|
### api tests fail
|
|
|
|
You need to specify the test directory:
|
|
|
|
```sh
|
|
pytest tests/
|
|
```
|
|
|
|
### Can't see error because of warnings
|
|
|
|
Run pytest with `-p no:warnings`
|
|
|
|
### Run one specific test
|
|
|
|
Run pytest with `-k $test_name`
|