DAGMan inline submit descriptions declared independent of jobs
(This issue was previously gittrac #7847)
In #7352 we added the ability for DAGMan jobs to be described inline in a .dag file without requiring a separate submit file. As a result, you can now write an inline job description like in the following example:
While this is a nice convenience for users, it isn't that helpful at the moment because different jobs cannot share the same submit description. We want to add a new condor_dagman command, SUBMIT-DESCRIPTION, that allows submit descriptions to be defined independently of jobs and referenced by name. For example:
As an implementation detail, we'll make a new data structure in condor_dagman (probably a std::map) that maps description names to SubmitHash objects. Description names must be unique. If a submit description is defined as part of a JOB command, it gets the name of the job. If defined independently as a SUBMIT-DESCRIPTION, the user is expected to provide a name. Any naming collision will cause condor_dagman to abort at parse time with an error in the log.
Another implementation challenge is parsing: does a SUBMIT-DESCRIPTION need to be defined before a JOB can reference it? On the first pass, we'll expect these to be defined in order. Later, we should look into how we could pre-parse these descriptions so that order doesn't matter.