/
scheduler_parser.go
116 lines (88 loc) · 2.08 KB
/
scheduler_parser.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package provider
import (
"github.com/threefoldtech/tfgrid-sdk-go/grid-proxy/pkg/types"
)
func convertGBToBytes(gb uint64) *uint64 {
bytes := gb * 1024 * 1024 * 1024
return &bytes
}
func ref[T any](v T) *T {
return &v
}
func parseSchedulerInput(input SchedulerArgs) (types.NodeFilter, []uint64, []uint64) {
filter := types.NodeFilter{Status: ref(string("up"))}
var ssds []uint64
var hdds []uint64
for _, farmID := range input.FarmIDs {
filter.FarmIDs = append(filter.FarmIDs, uint64(farmID))
}
if input.MRU != 0 {
filter.FreeMRU = ref(uint64(input.MRU))
}
if input.HRU != 0 {
filter.FreeHRU = ref(uint64(input.HRU))
hdds = append(hdds, *convertGBToBytes(*filter.FreeHRU))
}
if input.SRU != 0 {
filter.FreeSRU = ref(uint64(input.SRU))
ssds = append(ssds, *convertGBToBytes(*filter.FreeSRU))
}
if input.FreeIPs != 0 {
filter.FreeIPs = ref(uint64(input.FreeIPs))
}
if input.NodeID != 0 {
filter.NodeID = ref(uint64(input.NodeID))
}
if input.TwinID != 0 {
filter.TwinID = ref(uint64(input.TwinID))
}
if input.IPv4 {
filter.IPv4 = &input.IPv4
}
if input.IPv6 {
filter.IPv6 = &input.IPv6
}
if input.Domain {
filter.Domain = &input.Domain
}
if input.Dedicated {
filter.Dedicated = &input.Dedicated
}
if input.Rentable {
filter.Rentable = &input.Rentable
}
if input.Rented {
filter.Rented = &input.Rented
}
if input.HasGPU {
filter.HasGPU = &input.HasGPU
}
if input.Rented {
filter.GpuAvailable = &input.GpuAvailable
}
if input.Country != "" {
filter.Country = &input.Country
}
if input.City != "" {
filter.City = &input.City
}
if input.FarmName != "" {
filter.FarmName = &input.FarmName
}
if input.CertificationType != "" {
filter.CertificationType = &input.CertificationType
}
if input.GpuDeviceID != "" {
filter.GpuDeviceID = &input.GpuDeviceID
}
if input.GpuDeviceName != "" {
filter.GpuDeviceName = &input.GpuDeviceName
}
if input.GpuVendorID != "" {
filter.GpuVendorID = &input.GpuVendorID
}
if input.GpuVendorName != "" {
filter.GpuVendorName = &input.GpuVendorName
}
return filter, ssds, hdds
}