mirror of
				https://github.com/ClusterCockpit/cc-backend
				synced 2025-10-30 23:45:06 +01:00 
			
		
		
		
	Ongoing work on node table
Sync commit: Does not compile
This commit is contained in:
		| @@ -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"` | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user