In case useful to others, below is how peeringdb-py is set up & upgraded 
at the SeattleIX.

Questions/improvements welcome.

Chris

---

INSTALL:

mkdir ~/peeringdb-py && cd ~/peeringdb-py

virtualenv --python=python3 pdbvenv

source pdbvenv/bin/activate

pip install --upgrade pip

pip install -U setuptools

pip install git+https://github.com/peeringdb/django-peeringdb.git

pip install git+https://github.com/peeringdb/peeringdb-py.git

pip install "django<3"

Write defaults: 
        peeringdb config set -n

# Adjust [HOME] below to be the home directory.
edit ~/.peeringdb/config.yaml
change: name: /home/[HOME]/peeringdb-py/peeringdb.sqlite3
change: api_key: '[Read-only Org/User API Key]'

peeringdb config show | sed 's/  api_key:.*/  api_key: CENSORED/g'      
        orm:
          backend: django_peeringdb
          database:
            engine: sqlite3
            host: ''
            name: /home/[HOME]/peeringdb-py/peeringdb.sqlite3
            password: ''
            port: 0
            user: ''
          migrate: true
          secret_key: ''
        sync:
          api_key: CENSORED
          only: []
          password: ''
          strip_tz: 1
          timeout: 0
          url: https://www.peeringdb.com/api
          user: ''

peeringdb --version     
        peeringdb 1.2.1.1

django-admin --version  
        2.2.28

pip freeze | grep django-peeringdb      
        django-peeringdb @ 
git+https://github.com/peeringdb/django-peeringdb.git@14eb990d6803e89f38027419349e14e1927b390f

time peeringdb sync     
        real    14m47.515s
        user    14m27.077s
        sys     0m1.939s

time peeringdb sync     
        real    0m3.110s
        user    0m1.074s
        sys     0m0.088s

edit ~/crontab
add: # Run hourly with a random 5 minute sleep at start, to reduce thundering 
herd load on PeeringDB servers
add: 00 * * * * sleep $[RANDOM\%300] ; cd /home/[HOME]/peeringdb-py ; touch 
peeringdb.sync.log ; date >> peeringdb.sync.log ; ./pdbvenv/bin/peeringdb sync 
>> peeringdb.sync.log 2>&1

crontab ~/crontab

crontab -l # confirm above setting of crontab

---

UPGRADE:

cd ~/peeringdb-py

tar cvzf pdbvenv.`date +\%Y\%m\%d\%H\%M\%S`.tgz pdbvenv # make a backup

source pdbvenv/bin/activate

pip install --upgrade pip

pip install -U setuptools

pip install git+https://github.com/peeringdb/django-peeringdb.git

pip install --upgrade git+https://github.com/peeringdb/peeringdb-py.git

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs 
-n1 pip install -U

pip install "django<3"

peeringdb --version     
        peeringdb 1.2.1.1

django-admin --version  
        2.2.28

pip freeze | grep django-peeringdb      
        django-peeringdb @ 
git+https://github.com/peeringdb/django-peeringdb.git@14eb990d6803e89f38027419349e14e1927b390f

time peeringdb sync     
        real    0m2.809s
        user    0m0.772s
        sys     0m0.045s

---

EXAMPLE USAGE:

cd ~/peeringdb-py

sqlite3 peeringdb.sqlite3 .schema # dump schema

sqlite3 -header peeringdb.sqlite3 "SELECT * FROM peeringdb_network_ixlan WHERE 
asn = 6456;" # show AS6456
id|status|created|updated|version|asn|ipaddr4|ipaddr6|is_rs_peer|notes|speed|ixlan_id|net_id|operational
1534|ok|2010-07-29 00:00:00|2020-10-09 
20:54:19|0|6456|206.81.80.10|2001:504:16::1938|1||20000|13|416|1
21681|ok|2015-02-06 00:00:00|2020-10-09 
20:54:20|0|6456|206.81.81.41|2001:504:16::297:0:1938|1||20000|13|416|1
28528|ok|2016-04-22 03:19:39|2020-10-09 
20:54:19|0|6456|206.81.82.10|2001:504:16:1::1938|1||20000|1285|416|1
28529|ok|2016-04-22 03:20:00|2020-10-09 
20:54:20|0|6456|206.81.83.41|2001:504:16:1:0:297:0:1938|1||20000|1285|416|1

---
_______________________________________________
Pdb-tech mailing list
Pdb-tech@lists.peeringdb.com
https://lists.peeringdb.com/cgi-bin/mailman/listinfo/pdb-tech

Reply via email to