Add import command line flag

This commit is contained in:
Lou Knauer
2022-02-24 11:54:36 +01:00
parent f304698823
commit 49fbfc23d4
5 changed files with 189 additions and 48 deletions

View File

@@ -208,39 +208,50 @@ func ArchiveJob(job *schema.Job, ctx context.Context) (*schema.JobMeta, error) {
return jobMeta, nil
}
dirPath, err := getPath(job, "", false)
dir, err := getPath(job, "", false)
if err != nil {
return nil, err
}
if err := os.MkdirAll(dirPath, 0777); err != nil {
return nil, err
}
f, err := os.Create(path.Join(dirPath, "meta.json"))
if err != nil {
return nil, err
}
defer f.Close()
writer := bufio.NewWriter(f)
if err := json.NewEncoder(writer).Encode(jobMeta); err != nil {
return nil, err
}
if err := writer.Flush(); err != nil {
return nil, err
}
f, err = os.Create(path.Join(dirPath, "data.json"))
if err != nil {
return nil, err
}
writer = bufio.NewWriter(f)
if err := json.NewEncoder(writer).Encode(jobData); err != nil {
return nil, err
}
if err := writer.Flush(); err != nil {
return nil, err
}
return jobMeta, f.Close()
return jobMeta, writeFiles(dir, jobMeta, &jobData)
}
func writeFiles(dir string, jobMeta *schema.JobMeta, jobData *schema.JobData) error {
if err := os.MkdirAll(dir, 0777); err != nil {
return err
}
f, err := os.Create(path.Join(dir, "meta.json"))
if err != nil {
return err
}
if err := json.NewEncoder(f).Encode(jobMeta); err != nil {
return err
}
if err := f.Close(); err != nil {
return err
}
f, err = os.Create(path.Join(dir, "data.json"))
if err != nil {
return err
}
if err := json.NewEncoder(f).Encode(jobData); err != nil {
return err
}
return f.Close()
}
// Used to import a non-running job into the job-archive.
func ImportJob(job *schema.JobMeta, jobData *schema.JobData) error {
dir, err := getPath(&schema.Job{
BaseJob: job.BaseJob,
StartTimeUnix: job.StartTime,
StartTime: time.Unix(job.StartTime, 0),
}, "", false)
if err != nil {
return err
}
return writeFiles(dir, job, jobData)
}