# N2T Prefix Generation Workflow for generating the source of truth for N2T resolver operations. Interactions with N2T are through the web interface. The web folder layout is described at: https://github.com/CDLUC3/n2t-admin/blob/main/n2tops.md (don't look at the version in Kunze's repo - it is out of date) The web root `/` starts at `/apps/n2t/sv/cv2/apache2/htdocs` Code update procedure is: ``` cd $sv/build/eggnog n2t import n2t rollout n2t test ``` New NAANs are published via `pfx pfxsync` as described in the [`N2T Ops docs`](https://github.com/CDLUC3/n2t-admin/blob/main/n2tops.md#administration-applying-naan-registry-updates). Basically: ``` ssh remote pfx init scp ~/pfx_harvest remote scp $sv/apache2/$pfx_work/import remote:sv/cur/apache2/$pfx_work ssh remote pfx test_rollout_n2t_test ``` The files used in `pfx pfxsync` are in `$pfx_import` and `$pfx_harvest`. These are defined at around `pfx:2649`: ``` pfx_work=pfx pfx_import=$sv/apache2/$pfx_work/import pfx_build=$buildout_root/$pfx_work/build ``` and `pfx:361`: ``` pfx_harvest=~/pfx_harvest ``` That content is updated by submissions through the N2T "service interface" and through cron jobs. ``` # Fetch/import prefixes from EBI at 05:30 GMT, usually quarantined on a stg # instance and tested on dev to prevent mishaps in prd. # yyy are prefix backups being done? 30 21 * * 1-7 bash -lc "egg -q cfq prefix_import && pfx cron_hitrnt $MAILTO ids-n2t2-dev.n2t.net" ``` `egg cfq prefix_import`, "return config variable plus exit status", the config variable here being `prefix_import`. `pfx cron_hitrnt` --- The file `n2t:/e/n2t_full_prefixes.yaml` is identical to `/apps/n2t/sv/cv2/apache2/htdocs/prefixes.yaml` The file `/apps/n2t/sv/cv2/apache2/htdocs/prefixes.yaml` is generated by the [`pfx` command](https://github.com/jkunze/n2t-admin/blob/main/pfx). ```graphviz digraph prefixes { rankdir=LR; fontname="cousine" fontsize=10 node[fontname="cousine" fontsize=11 margin=0.15] subgraph cluster_maint { label="n2t.net/e/pub\nDownload to quarantine" naan_reg [label="naan_registry.txt"] shoulder_reg [label="shoulder_registry.txt"] master_shoulders [label="master_shoulders.txt"] lsregistry [label="lsregistry.yml"] naan_table [label="naan_table.txt"] } ebireg [label="ebireg.xml" color=gray fontcolor=gray] ebiregy[label="ebireg.yaml"] ebireg -> ebiregy [label="validate_ebi:973"]; ebiregy -> ebi [label="pfx_validate_prefixes:1155"] subgraph cluster_ebi{ label="registry.api.identifiers.org\n/resolutionApi\n/getResolverDataset" margin=40 ebinewreg [label="ebinewreg.json"] } subgraph cluster_newreg { margin=30 label="prefix.cc/popular/\nall.file.json" prefixcc [label="prefixcc.json"] } prefixes [label="prefixes.yaml"] naansa [label="naans.anvl"] shnaansha [label="shnaansh.anvl"] shouldersa [label="shoulders.anvl"] ebia [label="ebi.anvl"] pfxcomsa [label="pfxcoms.anvl"] ebi [label="ebi.yaml"] lsregistry -> pfxcomsa naan_reg -> naansa shoulder_reg -> shnaansha master_shoulders -> shouldersa pre_pub [label="pre_pub.yaml"] ebinewreg -> ebia; ebia -> pre_pub; naansa -> prefixes; shnaansha -> prefixes; shouldersa -> prefixes; ebia -> prefixes; pfxcomsa -> prefixes; prefixes -> n2t_prefixes; pre_pub -> cdl_ebi_prefixes; pfx_base [label="pfx_base.yaml"] pfx_base -> prefixes [label="pfx"] prefixes [label="prefixes.yaml"] cdl_ebi_prefixes [label="cdl_ebi_prefixes.yaml"] n2t_prefixes [label="n2t_prefixes.yaml"] n2t_full_prefixes [label="n2t_full_prefixes.yaml"] } ```