...
1 package class
2
3 import (
4 "fmt"
5 "strings"
6
7 corev1 "k8s.io/api/core/v1"
8 )
9
10 const (
11
12 DeviceClassPrefix = "device-system.class.edge.ncr.com"
13
14 deviceClassFmt = "%s/%s"
15 )
16
17
18 var DefaultClass = FmtClassLabel("default")
19
20
21 func FmtClassLabel(name string) string {
22 return fmt.Sprintf(deviceClassFmt, DeviceClassPrefix, name)
23 }
24
25
26
27 func IsDeviceClass(className string) bool {
28 return strings.Contains(className, DeviceClassPrefix)
29 }
30
31
32 func BaseName(className string) (string, error) {
33 if !IsDeviceClass(className) {
34 return "", fmt.Errorf("%s is not a device class with prefix %s", className, DeviceClassPrefix)
35 }
36 classSplit := strings.Split(className, "/")
37 if len(classSplit) != 2 {
38 return "", fmt.Errorf("%s is an invalid class name", className)
39 }
40 return classSplit[1], nil
41 }
42
43
44
45 func FetchPodDeviceRequests(ctrs []corev1.Container) []string {
46 requests := []string{}
47 for _, ctr := range ctrs {
48 for reqName := range ctr.Resources.Requests {
49 if IsDeviceClass(reqName.String()) {
50 requests = append(requests, reqName.String())
51 }
52 }
53 }
54 return requests
55 }
56
View as plain text