Skip to content

cemc-oper/hpc-model-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
Dec 22, 2023
Jan 28, 2019
Dec 22, 2023
Dec 22, 2023
Feb 4, 2019
Dec 22, 2023
Feb 6, 2019
Feb 7, 2019
Dec 22, 2023
Dec 22, 2023
Dec 22, 2023
Feb 4, 2019
Dec 22, 2023
Jan 29, 2019
Feb 3, 2019
Dec 22, 2023
Feb 7, 2019
Dec 22, 2023
Feb 8, 2019
Dec 22, 2023
Feb 7, 2019
Dec 22, 2023

Repository files navigation

hpc-model-go

A key-value model for HPC resources in CEMC/CMA. Including models for:

  • Slurm

Installation

Use go get to install the latest version.

go get github.com/cemc-oper/hpc-model-go

Getting Started

The following example uses hpc-model-go to extract job id and job owner from a squeue -o %all query.

Create category list:

categoryList := slurm.QueryCategoryList{
    QueryCategoryList: hpcmodel.QueryCategoryList{
        CategoryList: []*hpcmodel.QueryCategory{
            {
                ID:                      "sinfo.partition",
                DisplayName:             "Partition",
                Label:                   "PARTITION",
                PropertyClass:           "StringProperty",
                PropertyCreateArguments: []string{},
                RecordParserClass:       "TokenRecordParser",
            },
            {
                ID:                      "sinfo.avail",
                DisplayName:             "Avail",
                Label:                   "AVAIL",
                PropertyClass:           "StringProperty",
                PropertyCreateArguments: []string{},
                RecordParserClass:       "TokenRecordParser",
            },
            {
                ID:                      "sinfo.nodes",
                DisplayName:             "Nodes(A/I/O/T)",
                Label:                   "NODES(A/I/O/T)",
                PropertyClass:           "StringProperty",
                PropertyCreateArguments: []string{},
                RecordParserClass:       "TokenRecordParser",
            },
            {
                ID:                      "sinfo.cpus",
                DisplayName:             "CPUs(A/I/O/T)",
                Label:                   "CPUS(A/I/O/T)",
                PropertyClass:           "StringProperty",
                PropertyCreateArguments: []string{},
                RecordParserClass:       "TokenRecordParser",
            },
        },
    },
}

Get squeue -o %all output.

cmd := exec.Command("sinfo", params...)
//fmt.Println(cmd.Args)
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
    return nil, fmt.Errorf("command ran error: %v", err)
}
s := out.String()
lines := strings.Split(s, "\n")

Build model from category list.

model, err := slurm.BuildModel(lines, categoryList, " ")

model contains data of all categories.

Test

Use go test to run all tests.

License

Copyright Β© 2019-2023, developers at cemc-oper.

hpc-model-go is licensed under The MIT License.