Skip to content

Commit

Permalink
updated readme
Browse files Browse the repository at this point in the history
  • Loading branch information
ndenny committed Jun 4, 2024
1 parent fe27e9c commit 742e84f
Showing 1 changed file with 40 additions and 2 deletions.
42 changes: 40 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# bastion
Scripts that integrate RCAC Fortress, MS Teams, etc.
Scripts that integrate RCAC Fortress, MS Teams, etc. to provide a reliable and flexible backup system.

## Concepts
# Concepts

## Vaults
A vault is a storage pool and the necessary protocol to move objects in / out of the pool.
(RCAC's Fortress, for instance, can use HPSS, sftp, and Globus as protocols for file transfer.)

## Assets
Data assets can have concurrent presence in three different namespaces:
1. the host file system
2. the logical zone (kind of like a "location" when configuring a web server)
Expand All @@ -25,3 +31,35 @@ These objects are described using a BLONDE (BLOb Name and Description Encoded),
In the vault, a BLONDE can either be an anchor (full backup) or a differential.
References to assets are done by "badge" - which is a 40 bit chunk from a SHAKE128 hash of the asset's ARK (in CURIE format).
Time is also highly compressed using "Quantim"

## ARKs
Asset Resource Keys - a triple of (site, zone, path) where path is relative to the root of the zone.
ARKs are typically represented in CURIE syntax that has a form like "\[@{site}:{zone}/{path}\]".
For example, "\[@idifhub:LiDAR/QLX\_3DEP\_LiDAR\_US\_SOUTH\]"

## Quantim
"Quantim" is a textual representation of time that uses 8 ASCII characters to represent time to near minute resolution for the next 900+ years. Quantim timestamps follow the pattern "YYYDDDTT" where YYY is the three digit century and year, DDD is the current day of the year, and TT is the time of day encoded using base 36.

Since there are 1,296 2-digit base 36 numbers and 1,440 minutes per day, each TT represents 1.11 minutes (or 66.7 seconds).

# Commands
bastion is run via conda+python and can be run from an interactive shell, or (using "conda run ...") from a cron job. bastion has the following command set ...

* bastion backup site {site}
* bastion backup zone {ark}
* bastion backup asset {ark}
* bastion update site {site}
* bastion update zone {ark}
* bastion update asset {ark}
* bastion refresh keytab {vault}
* bastion restore zone {ark}
* bastion restore asset {ark}
* bastion restore site {site}
* bastion \[list|export\] zone assets {ark}
* bastion \[list|export\] site assets {ark}
* bastion \[list|export\] zones {site}
* bastion \[list|export\] sites
* bastion \[list|export\] anchors {ark}
* bastion \[list|export\] snaps {ark}


0 comments on commit 742e84f

Please sign in to comment.