There are two main installations of NodeNorm that would be of interest to users who aren't system administrators for these tools:
- ITRB Production
- NodeNorm: https://nodenorm.transltr.io/docs
- NameRes: https://name-lookup.transltr.io/docs
- RENCI Development
-
Create a new Babel release (see README.md for information) and add it to
releases/releases.yaml, which records which NodeNorm and NameRes versions ship with which build. Every later step reads from that entry, and the next release uses it as its comparison baseline, so fill in the service versions as you deploy them below. -
Store the Babel outputs alongside other Babel releases on Hatteras.
-
Deploy a new NodeNorm instance
- Split the Babel outputs into smaller files to improve load times and put them on a public web server. The split sizes and the reason for splitting are documented in NodeNorm's loader documentation.
- Update the Translator-devops repo with the URL to these Babel output files.
- Create a Redis R3 External instance to store identifiers.
- Run the NodeNorm loader to load the Babel outputs into a Redis instance.
- Create a NodeNorm web server to share the data in a Redis instance.
-
Deploy a new NameRes instance (either locally or on Kubernetes)
- Create an empty Apache Solr instance.
- Load it with synonym information from Babel outputs.
- Write out a Solr backup and store it as a tarball.
- Copy the Solr backup to a publicly accessible URL.
- Update the Translator-devops repo with the new URL.
- Create a NameRes instance that will download the Solr backup and start the instance with it.
-
Use the Babel Validator to test this release and check how it performs compared to the previous release.
-
Write the release note. The build has already compared its own prefix counts against the previous release —
babel_outputs/reports/tables/prefix_comparison.mdand the two CSVs beside it, produced bysrc/reports/prefix_comparison.pyagainst the baseline pinned inconfig.yaml. This replaces the external Babel Validator Prefix Comparator, which had to have both reports uploaded to it by hand.releases/scripts/draft_release_notes.pyturns those reports, the three repositories' pull request lists, and the deployed services'/statusendpoints into a draft note. Run it once the build is up on Exp (step 3/4), which is what the/statusdefaults point at — the note is written while the release is on Exp and before it is promoted to Dev, because Exp is publicly reachable, so the note is what tells people they can test against it. The script warns if a service is still answering from the previous Babel version, which is what pointing either URL at Dev too early looks like. The full process is inreleases/README.md; archiving the prefix report and bumping the pins is inRunningBabel.md. -
Check with RENCI NodeNorm users before updating RENCI NodeNorm and NameRes instances
-
Update RENCI NodeNorm and NameRes instances.
-
Announce on Translator and RENCI channels and ask people to try it out.
-
Deploy to ITRB
- Use the bastion servers to delete all data from the ITRB CI Redis R3 server.
- Update the Translator-Devops repo and create a PR for the develop branch. Once merged, the new Babel outputs should be loaded into the ITRB CI Redis R3 server.
- Use the bastion servers to delete all data from the ITRB Test Redis R3 server.
- Ask ITRB to run the NodeNorm loader to populate the ITRB Test Redis R3 server.
- Announce upcoming downtime to NodeNorm Prod.
- Ask ITRB to take down NodeNorm Prod.
- Use the bastion servers to delete all data from the ITRB Prod Redis R3 server.
- Ask ITRB to run the NodeNorm loader to populate the ITRB Prod Redis R3 server.
- Ask ITRB to start the NodeNorm Prod instance.
-
Use the Babel Validator to test this release and check how it performs compared to the previous release. As a side-benefit, running these tests will warm up NameRes Solr's caches.