67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package slurm
|
|
|
|
import (
|
|
"github.com/go-resty/resty/v2"
|
|
coreClient "gitlink.org.cn/JointCloud/pcm-coordinator/client"
|
|
"gitlink.org.cn/JointCloud/pcm-hpc/global"
|
|
"log"
|
|
"sync"
|
|
)
|
|
|
|
type resource struct {
|
|
sync.RWMutex
|
|
client *client
|
|
log log.Logger
|
|
}
|
|
|
|
func newResource(client *client, options *ClientOptions) (*resource, error) {
|
|
resource := &resource{
|
|
RWMutex: sync.RWMutex{},
|
|
client: nil,
|
|
log: log.Logger{},
|
|
}
|
|
return resource, nil
|
|
}
|
|
|
|
func (r *resource) GetResourceStats(options ClientOptions) (getResourceStatsResp GetResourceStatsResp) {
|
|
|
|
httpClient := resty.New().R()
|
|
var nodeResp NodeResp
|
|
httpClient.SetHeader("Content-Type", "application/json").
|
|
SetHeader("X-SLURM-USER-NAME", r.client.restUsername).
|
|
SetHeader("X-SLURM-USER-TOKEN", r.client.token).
|
|
SetResult(&nodeResp).
|
|
Get(r.client.url + "/slurm/" + r.client.clientVersion + "/nodes")
|
|
|
|
var coresRemaining int
|
|
var coresTotal int
|
|
var memRemaining int
|
|
var memTotal int
|
|
for _, node := range nodeResp.Nodes {
|
|
coresRemaining += node.IdleCpus
|
|
coresTotal += node.Cores
|
|
memRemaining += node.FreeMemory
|
|
memTotal += node.RealMemory
|
|
}
|
|
resourceStats := coreClient.ResourceStats{
|
|
Name: global.PCM_CONFIG.System.CoreServerUrl,
|
|
CpuCoreAvail: int64(coresRemaining),
|
|
CpuCoreTotal: int64(coresTotal),
|
|
MemAvail: float64(memRemaining),
|
|
MemTotal: float64(memTotal),
|
|
DiskAvail: 0,
|
|
DiskTotal: 0,
|
|
GpuAvail: 0,
|
|
CardsAvail: nil,
|
|
CpuCoreHours: 0,
|
|
Balance: 0,
|
|
}
|
|
|
|
getResourceStatsResp = GetResourceStatsResp{
|
|
Code: "200",
|
|
Msg: "success",
|
|
Data: resourceStats,
|
|
}
|
|
return getResourceStatsResp
|
|
}
|