Skip to content

Update Lookup Tables #13

Update Lookup Tables

Update Lookup Tables #13

Workflow file for this run

name: Update Lookup Tables
on:
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: 'With build debug'
required: false
default: false
schedule:
# 05:35 every wednesday
- cron: '35 5 * * WED'
# push:
# branches:
# - master
jobs:
update_tables:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
fetch-depth: 0 # otherwise, there would be errors pushing refs to the destination repository.
- name: Install Perl dependencies
run: |
sudo apt install cpanminus
cpanm Text::CSV
- name: Download upstream content
run: |
curl -sL https://www.iana.org/assignments/enterprise-numbers.txt > ieee/SMI/enterprise-numbers.txt
curl -sL https://standards-oui.ieee.org/oui/oui.csv > ieee/MA/MA-L.csv
curl -sL https://standards-oui.ieee.org/oui28/mam.csv > ieee/MA/MA-M.csv
curl -sL https://standards-oui.ieee.org/oui36/oui36.csv > ieee/MA/MA-S.csv
- name: Build Enterprises Table
run: |
export TARGET="ieee/SMI/enterprise.sql"
echo 'DELETE FROM "enterprise";' > ${TARGET}.new
echo 'COPY "enterprise" ("enterprise_number", "organization") FROM STDIN;' >> ${TARGET}.new
cat ieee/SMI/enterprise-numbers.txt | ieee/SMI/smi-to-enterprise-table.pl >> ${TARGET}.new
echo '\.' >> ${TARGET}.new
mv ${TARGET}.new ${TARGET}
- name: Build Manufacturers Table
run: |
cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
export TARGET="ieee/MA/manufacturer.sql"
echo 'DELETE FROM "manufacturer";' > ${TARGET}.new
echo 'COPY "manufacturer" ("company", "abbrev", "base", "bits", "first", "last", "range") FROM STDIN;' >> ${TARGET}.new
{ cat ieee/MA/MA-L.csv; sed 1d ieee/MA/MA-M.csv; sed 1d ieee/MA/MA-S.csv; } | \
ieee/MA/ma-to-manufacturer-table.pl >> ${TARGET}.new
echo '\.' >> ${TARGET}.new
mv ${TARGET}.new ${TARGET}
- name: Download and Build Products Table
run: |
export TARGET="products/product.sql"
echo 'DELETE FROM "product";' > ${TARGET}.new
echo 'COPY "product" ("oid", "mib", "leaf", "descr") FROM STDIN;' >> ${TARGET}.new
curl -sL https://mibbrowser.online/mibdb_search.php?all=1 | \
grep JUNIPER-CHASSIS-DEFINES | \
grep -o 'mib=[^"]\+' | \
sed -e 's/mib=//' | \
grep -hi -E '(product|oid|JUNIPER-CHASSIS-DEFINES)' | \
while read mib; do \
curl -sL "https://mibbrowser.online/mibs_json/$mib.json" | \
products/pysmi-json-to-products-table.py >> ${TARGET}.new.oids; \
done
sort -t "\t" -k 1,1 ${TARGET}.new.oids | sort -t "\t" -k 1,1 -u >> ${TARGET}.new
rm ${TARGET}.new.oids
echo '\.' >> ${TARGET}.new
mv ${TARGET}.new ${TARGET}
- name: Combine complete SQL
run: |
cat ieee/OUI/oui.sql ieee/SMI/enterprise.sql ieee/MA/manufacturer.sql products/product.sql > netdisco-lookup.sql
- name: Commit files
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add --all
git diff --staged --quiet || git commit -m "Updated Products via Github Actions"
- name: Push changes
uses: ad-m/github-push-action@master
if: ${{ github.event_name == 'workflow_dispatch' && ! inputs.debug_enabled }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
## if: always() && github.event.inputs.debug_enabled
# if: always() && ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
## with:
## sudo: true