Details
-
Type:
RFC
-
Status: Implemented
-
Resolution: Done
-
Component/s: DM
-
Labels:None
-
Location:CLO
Description
Building upon RFC-95, this RFC nails down the specific format and policies governing shared datasets available in /datasets.
FORMAT
Discussions on format happened in RFC-95 and clo. This RFC will just summarize the conclusions and rely on those discussions (and those within the comments here) for explanation.
All data added to /datasets must adhere to the following format (caveats below):
(note: caps are tokens)
/datasets/<camera>/[REPO|RERUN|PREPROCESSED|SIM|RAW|CALIB] | /datasets/REFCATS
where
REPO = repo (butler root)
RERUN = REPO/rerun/PUBLIC | REPO/rerun/PRIVATE (processed results)
PUBLIC = <ticket>/PRIVATE
PRIVATE = private/<user> | ""
PREPROCESSED = preprocessed/<label>/ | preprocessed/<label>/<date>/ (ex. 'dr9')
SIM = <ticket>_<date>/ | <user>/<ticket>/
RAW = raw/<survey-name>/ (where actual files live)
CALIB = calib/default/ | calib/label/ (ex. master20161025)
REFCATS = refcats/<label> (ex astrometry_net_data, gaia_DR1_v1)
Some data resides within /datasets which does not adhere to this format; they are provided for general consumption though not as verification data. The following are currently exempted:
/datasets/all-sky
/datasets/all-sky-ASIVA
Immutability/Sharing
NCSA is working on a simple procedure for making the data both shared and safe. The process is TBD (reiterating on the design to emphasize simplicity). Essentially, it consists of applying default DAC permission sets and GPFS immutability. Until the self-service commands are available, it is sufficient to ask Greg Daues to lock down or unlock a repo. Illustration:
Steps to add to datasets
- (you) RFC if necessary per policy (below)
- (you) Ask for write access to a new rerun|new camera|ref cat| directory
- Directory created, write permissions given
- (you) populate and organize data (as per policy), ask to have it locked down
- sharing and immutability applied
Steps to modify/remove from datasets
- (you) RFC if necessary per policy (below)
- (you) Ask for write access to existing rerun|new camera|ref cat| directory
- write permissions given, immutability removed
- (you) reorganize, ask to have it locked down
- sharing and immutability reapplied (to parent directory, as applicable)
Policy
Formatting exists to make data sets easier to consume for the DM project at large. Policy exists to enforce the format and serves to inform whenever policy must change. I suggest the following policies which serve to both enforce and inform:
/datasets Format Changes - This should be obvious. Future needs will certainly require format changes. We must go through the RFC process to change the format.
/datasets additions/changes/deletions -
- Additions / modifications / deletions of any non-private data requires an RFC (strictly for input for naming convention, organization, etc)
- Additions / modifications /deletions of private data can be performed without a RFC
The RFC allows a gate to confirm that things are compliant and necessary. The RFC should include:
- description and reason for addition/change/deletion
- target top-level-directory for location of addition/change/deletion
- organization of data
- other necessary domain knowledge as identified by project members relating to the contents of the data
Regarding responsibilities on ingest or maintenance:
- Ticket creator is responsible for butler-ization of dataset (or delegation of responsibility)
- Responsibility for maintaining usable datasets is a DM-wide effort
All local non-private data governed by this RFC must reside within /datasets proper; symbolic links to local non-private data residing on alternate file systems are prohibited. This does not prohibit the use of remote URI's, when supported through the butler, that point to external public repos although this does require the RFC process for addition/deletion of the URI-repo. This is due to operational concerns including immutability, sharing permissions, developer change of positions / jobs, etc.
Caveats / Implementation Details for PRIVATE:
- private is created with the sticky bit to allow user managed contents
- private only contains symbolic links pointing out of datasets or contains sub directories containing symbolic links (for organization)
- no data resides in private/ or subdirectories
- no access or recovery is offered from private/ other than that provided by the target file system
- it is a user responsibility to make the private rerun repo shared, or not, and allow, or disallow, sub rerun directories from other users
- data retention in private is not guaranteed (points to scratch, points to home and user leaves, user erroneously deletes repo, etc)
- data in private is not immutable
- private/ entries do not require Jira tickets for creation/deletion/modification
Credits: Hsin-Fang Chiang Paul Price Jim Bosch Greg Daues
Attachments
Issue Links
- is triggered by
-
RFC-95 Verification datasets: filesystem organization and argument parser features
- Implemented
- is triggering
-
DM-8255 Error if CmdLineTask is given an empty rerun folder
- Done
- relates to
-
DM-8534 Provide policy in appropriate location
- Done
-
RFC-308 Remove /repo from paths to datasets
- Retired
-
RFC-262 Add ref_cats_htm to /datasets
- Implemented
-
RFC-372 Add HiTS 2014, 2015 DECam data to /datasets
- Implemented
-
DM-8121 /datasets/sdss/preprocessed/dr7/ (source: /datasets/stripe82/dr7)
- Done
- links to
- mentioned in
-
Page Loading...
Yes.
I'm not committed to "private". I will say that ephemeral is a side-effect of the implementation.
This is a
RFC-95ism. From the RFC:I would say it is no longer 'owned' by an individual. "public" status requires an announcement of its availability and a level of management around it to guarantee it remains available including an announcement of its removal. "public" datasets may have others depending upon its presence while private datasets provide no assurance.
You would need to create a ticket for every public repo creation / addition / modification / deletion. Recognize that this isn't to require my approval; it is for coordinating the naming scheme (if any), informing others of its availability, applying sharing and immutability features, etc. Also, NCSA is only providing the sharing / immutability management; you are responsible for the grunt work of populating and organizing the repo.
I have been wondering this as well. The question is really if the current tooling will allow this. I suspect it has something to do with butler repo configs. And what happens if you want to promote a private rerun that has dependent reruns?