Ongoing work on node table

Sync commit: Does not compile
This commit is contained in:
2025-09-30 10:06:19 +02:00
parent e58b0fa015
commit 35c6ab4a08
3 changed files with 26 additions and 11 deletions

View File

@@ -2,6 +2,7 @@
// All rights reserved. This file is part of cc-backend.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package api
import (
@@ -25,7 +26,6 @@ type Node struct {
GpusTotal int `json:"gpusTotal"`
}
// updateNodeStatesRequest model
type UpdateNodeStatesRequest struct {
Nodes []Node `json:"nodes"`
Cluster string `json:"cluster" example:"fritz"`

View File

@@ -1,16 +1,24 @@
-- sqlfluff:dialect:sqlite
--
CREATE TABLE "node" (
id INTEGER PRIMARY KEY,
time_stamp INTEGER NOT NULL,
hostname VARCHAR(255) NOT NULL,
cluster VARCHAR(255) NOT NULL,
subcluster VARCHAR(255) NOT NULL,
meta_data TEXT, -- JSON
UNIQUE (hostname, cluster)
);
CREATE TABLE "node_state" (
id INTEGER PRIMARY KEY,
time_stamp INTEGER NOT NULL,
jobs_running INTEGER DEFAULT 0 NOT NULL,
cpus_allocated INTEGER DEFAULT 0 NOT NULL,
cpus_total INTEGER DEFAULT 0 NOT NULL,
memory_allocated INTEGER DEFAULT 0 NOT NULL,
memory_total INTEGER DEFAULT 0 NOT NULL,
gpus_allocated INTEGER DEFAULT 0 NOT NULL,
gpus_total INTEGER DEFAULT 0 NOT NULL,
cpus_allocated INTEGER DEFAULT 0 NOT NULL,
memory_allocated INTEGER DEFAULT 0 NOT NULL,
gpus_allocated INTEGER DEFAULT 0 NOT NULL,
node_state VARCHAR(255) NOT NULL
CHECK (node_state IN (
'allocated', 'reserved', 'idle', 'mixed',
@@ -20,7 +28,8 @@ CREATE TABLE "node" (
CHECK (health_state IN (
'full', 'partial', 'failed'
)),
UNIQUE (hostname, cluster)
node_id INTEGER,
FOREIGN KEY (node_id) REFERENCES node (id)
);
-- Add Indices For New Node Table VARCHAR Fields

View File

@@ -143,12 +143,18 @@ func (r *NodeRepository) GetNode(id int64, withMeta bool) (*schema.Node, error)
return node, nil
}
// const NamedNodeInsert string = `
// INSERT INTO node (time_stamp, hostname, cluster, subcluster, node_state, health_state,
//
// cpus_allocated, cpus_total, memory_allocated, memory_total, gpus_allocated, gpus_total)
// VALUES (:time_stamp, :hostname, :cluster, :subcluster, :node_state, :health_state,
// :cpus_allocated, :cpus_total, :memory_allocated, :memory_total, :gpus_allocated, :gpus_total);`
const NamedNodeInsert string = `
INSERT INTO node (time_stamp, hostname, cluster, subcluster, node_state, health_state,
cpus_allocated, cpus_total, memory_allocated, memory_total, gpus_allocated, gpus_total)
VALUES (:time_stamp, :hostname, :cluster, :subcluster, :node_state, :health_state,
:cpus_allocated, :cpus_total, :memory_allocated, :memory_total, :gpus_allocated, :gpus_total);`
INSERT INTO node (hostname, cluster, subcluster)
VALUES (:hostname, :cluster, :subcluster);`
// AddNode adds a Node to the node table. This can be triggered by a node collector registration or
// from a nodestate update from the job scheduler.
func (r *NodeRepository) AddNode(node *schema.Node) (int64, error) {
var err error
@@ -177,7 +183,7 @@ func (r *NodeRepository) InsertNodeState(nodeState *schema.Node) error {
_, err = r.DB.NamedExec(NamedNodeInsert, nodeState)
if err != nil {
cclog.Errorf("Error while adding node '%v' to database", nodeState.Hostname)
cclog.Errorf("Error while insert node '%v' to database", nodeState.Hostname)
return err
}