Values map[string]VocabularyTagValue `json:"values"`
}
-// Cannot have a constant map in Go, so we have to use a function
+// Cannot have a constant map in Go, so we have to use a function.
+// If you are adding a new system property, it SHOULD start with `arv:`,
+// and Check will allow it. This map is for historical exceptions that
+// predate standardizing on this prefix.
func (v *Vocabulary) systemTagKeys() map[string]bool {
return map[string]bool{
- "type": true,
- "template_uuid": true,
- "groups": true,
- "username": true,
- "image_timestamp": true,
+ // Collection keys - set by arvados-cwl-runner
+ "container_request": true,
+ "container_uuid": true,
+ "type": true,
+ // Collection keys - set by arv-keepdocker (on the way out)
"docker-image-repo-tag": true,
- "filters": true,
- "container_request": true,
- "cwl_input": true,
- "cwl_output": true,
+ // Container request keys - set by arvados-cwl-runner
+ "cwl_input": true,
+ "cwl_output": true,
+ "template_uuid": true,
+ // Group keys
+ "filters": true,
+ // Link keys
+ "groups": true,
+ "image_timestamp": true,
+ "username": true,
}
}
}
for key, val := range data {
// Checks for key validity
- if v.reservedTagKeys[key] {
+ if strings.HasPrefix(key, "arv:") || v.reservedTagKeys[key] {
// Allow reserved keys to be used even if they are not defined in
// the vocabulary no matter its strictness.
continue