2022-11-10 07:35:38 +01:00
|
|
|
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
|
|
|
|
// All rights reserved.
|
|
|
|
// Use of this source code is governed by a MIT-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"flag"
|
|
|
|
"fmt"
|
|
|
|
"log"
|
2022-11-10 13:37:53 +01:00
|
|
|
"os"
|
|
|
|
|
|
|
|
"github.com/ClusterCockpit/cc-backend/pkg/schema"
|
|
|
|
"github.com/ClusterCockpit/cc-backend/pkg/units"
|
2022-11-10 07:35:38 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
var ar FsArchive
|
|
|
|
|
2023-02-28 09:33:55 +01:00
|
|
|
func deepCopyJobMeta(j *JobMeta) schema.JobMeta {
|
|
|
|
var jn schema.JobMeta
|
|
|
|
|
|
|
|
jn.StartTime = j
|
|
|
|
jn.BaseJob = j.BaseJob
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-11-10 13:37:53 +01:00
|
|
|
func deepCopyClusterConfig(co *Cluster) schema.Cluster {
|
|
|
|
var cn schema.Cluster
|
|
|
|
|
|
|
|
cn.Name = co.Name
|
|
|
|
cn.SubClusters = co.SubClusters
|
|
|
|
|
|
|
|
for _, mco := range co.MetricConfig {
|
|
|
|
var mcn schema.MetricConfig
|
|
|
|
mcn.Name = mco.Name
|
|
|
|
mcn.Scope = mco.Scope
|
|
|
|
mcn.Aggregation = mco.Aggregation
|
|
|
|
mcn.Timestep = mco.Timestep
|
|
|
|
mcn.Peak = mco.Peak
|
|
|
|
mcn.Normal = mco.Normal
|
|
|
|
mcn.Caution = mco.Caution
|
|
|
|
mcn.Alert = mco.Alert
|
|
|
|
mcn.Unit = units.ConvertUnitString(mco.Unit)
|
|
|
|
cn.MetricConfig = append(cn.MetricConfig, &mcn)
|
|
|
|
}
|
|
|
|
|
|
|
|
return cn
|
|
|
|
}
|
|
|
|
|
2022-11-10 07:35:38 +01:00
|
|
|
func main() {
|
|
|
|
var srcPath string
|
|
|
|
var dstPath string
|
|
|
|
|
|
|
|
flag.StringVar(&srcPath, "s", "./var/job-archive", "Specify the source job archive path. Default is ./var/job-archive")
|
|
|
|
flag.StringVar(&dstPath, "d", "./var/job-archive-new", "Specify the destination job archive path. Default is ./var/job-archive-new")
|
|
|
|
|
|
|
|
srcConfig := fmt.Sprintf("{\"path\": \"%s\"}", srcPath)
|
|
|
|
err := ar.Init(json.RawMessage(srcConfig))
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
2022-11-10 13:37:53 +01:00
|
|
|
err = initClusterConfig()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
// setup new job archive
|
|
|
|
err = os.Mkdir(dstPath, 0750)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, c := range Clusters {
|
|
|
|
path := fmt.Sprintf("%s/%s", dstPath, c.Name)
|
|
|
|
fmt.Println(path)
|
|
|
|
err = os.Mkdir(path, 0750)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
cn := deepCopyClusterConfig(c)
|
|
|
|
|
|
|
|
f, err := os.Create(fmt.Sprintf("%s/%s/cluster.json", dstPath, c.Name))
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
if err := EncodeCluster(f, &cn); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
if err := f.Close(); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2022-11-10 07:35:38 +01:00
|
|
|
}
|
2022-11-10 13:37:53 +01:00
|
|
|
|
2023-02-28 09:33:55 +01:00
|
|
|
for job := range ar.Iter() {
|
|
|
|
fmt.Printf("Job %d\n", job.JobID)
|
|
|
|
|
|
|
|
root := fmt.Sprintf("%s/%s/", dstPath, job.Cluster)
|
|
|
|
f, err := os.Create(getPath(job, root, "meta.json"))
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
jmn := deepCopyJobMeta(job)
|
|
|
|
}
|
2022-11-10 07:35:38 +01:00
|
|
|
}
|