pcapi/app/slurm/partition.py
2025-07-16 14:46:24 +08:00

91 lines
2.4 KiB
Python

from . import sshClient
import json
'''
创建队列
'''
def create_partition(dict):
command = "sudo scontrol create "
for key, value in dict.items():
command=command+key+"="+str(value)+" "
print(command)
return sshClient.exec_command(command)
'''
更新队列
'''
def update_partition(dict):
command = "sudo scontrol update "
for key, value in dict.items():
command=command+key+"="+str(value)+" "
return sshClient.exec_command(command)
'''
删除队列
'''
def delete_partition(dict):
command = "sudo scontrol delete "
for key, value in dict.items():
command = command + key + "=" + str(value) + " "
return sshClient.exec_command(command)
'''
查询队列详情
'''
def list_partition_detail(PartitionName):
command = "sudo scontrol show part "
if PartitionName is not None:
command = command + PartitionName + " "
return sshClient.exec_command(command)
'''
查询队列信息简略
'''
def list_partition_info(query):
command = "sudo sinfo "
return sshClient.exec_command(command)
'''
查询队列信息简略 带json
'''
def list_partition_detail_json(query):
command = "scontrol show part "
if query["partitionName"] is not None:
command=command+ " "+query["partitionName"]
result=sshClient.exec_command(command)
data_str = result["stdout"]
# 按空行分割字符串,得到每个节点的数据
partition_data = data_str.strip().split('\n\n')
# 初始化一个列表来存储所有节点的字典
partition_list = []
# 遍历每个节点的数据
for partition_data in partition_data:
# 初始化一个字典来存储当前节点的键值对
partition_dict = {}
# 按行分割当前节点的数据
lines = partition_data.strip().split('\n')
for line in lines:
# 按空格分割键值对
key_value_pairs = line.strip().split()
for pair in key_value_pairs:
pair_list= pair.split('=')
if len(pair_list)<2:
key=pair_list[0]
value=""
else:
key=pair_list[0]
value=pair_list[1]
# 将键和值添加到字典中
partition_dict[key] = value
# 将当前节点的字典添加到列表中
partition_list.append(partition_dict)
return partition_list