pcm-coordinator/adaptor/pcm_slurm/service/common/reservation.go

68 lines
2.4 KiB
Go

package slurmer
import "C"
import (
pbslurm "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/gen/idl"
"code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/service/tianhe"
"context"
"strings"
)
func (slurmStruct SlurmStruct) ListReservations(ctx context.Context, req *pbslurm.ListReservationsReq) (*pbslurm.ListReservationsResp, error) {
reservationList := tianhe.Get_all_reservation()
var resp = pbslurm.ListReservationsResp{}
for _, reservation := range reservationList.ReservationList {
reservationInfoResult := reservation
resp.ReservationList = append(resp.ReservationList, &reservationInfoResult)
}
return &resp, nil
}
func (slurmStruct SlurmStruct) GetReservation(ctx context.Context, req *pbslurm.GetReservationReq) (*pbslurm.GetReservationResp, error) {
ReservationList := tianhe.GetReservationsInfo()
resp := pbslurm.GetReservationResp{}
for _, reservation := range ReservationList.ReservationList {
reservationInfoResult := reservation
if strings.Contains(reservation.Name, req.ReservationName) {
resp.ReservationInfos = append(resp.ReservationInfos, &reservationInfoResult)
}
}
return &resp, nil
}
/*func (slurmStruct SlurmStruct) GetReservationByName(ctx context.Context, req *pbslurm.ReservationInfoMsgReq) (*pbslurm.ReservationInfoMsgResp, error) {
reservation := Get_reservation_info(req.ReservationName)
var resp = pbslurm.ReservationInfoMsgResp{}
for _, reservation := range reservation.Reservation_list {
reservationInfoResult := pbslurm.Reservation_Info{}
reservationInfoResult.Name = reservation.Name
/*nodeInfoResult.Boards = uint32(node.Boards)
nodeInfoResult.RealMemory = node.Real_memory
nodeInfoResult.Sockets = uint32(node.Sockets)
nodeInfoResult.Threads = uint32(node.Threads)*
resp.ReservationList = append(resp.ReservationList, &reservationInfoResult)
}
return &resp, nil
}
func Get_reservation_info(name string) ReserveInfoMsg {
go_reservation_buffer := Get_all_reservation()
//partitionList := list.New()
for i := range go_reservation_buffer.ReservationList {
//遍历nodeList集合
reservation := go_reservation_buffer.ReservationList[i]
fmt.Println("reservationName: " + reservation.Name)
//当集合中的名字等于传过来的值
if name == reservation.Name {
/*partitionList.PushFront(partition.Name)
partitionList.PushFront(partition.Nodes)*
} else {
}
//fmt.Println(partition.Node_inx)
}
return go_reservation_buffer
}*/