-
Notifications
You must be signed in to change notification settings - Fork 185
/
framework.go
86 lines (72 loc) · 1.98 KB
/
framework.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
package framework
import (
"encoding/json"
"io/ioutil"
)
//Frameworks All frameworks supported and maintained by dlaas
type Frameworks struct {
Frameworks map[string]*DetailList
}
//DetailList list of versions for a framework
type DetailList struct {
Versions []*Details
}
//Details Specific details for a framework version
type Details struct {
Version string
External bool
Build string
PrevBuild string
}
func readFile(location string) ([]byte, error) {
fileData, err := ioutil.ReadFile(location)
if err != nil {
return []byte(""), err
}
return fileData, nil
}
//GetFrameworks returns the frameworks and their versions that are stored in the path to the learnerConfig
func GetFrameworks(learnerConfigPath string) (Frameworks, error) {
var frameworks Frameworks
fileData, err := readFile(learnerConfigPath)
if err != nil {
return frameworks, err
}
err = json.Unmarshal(fileData, &frameworks)
if err != nil {
return frameworks, err
}
return frameworks, nil
}
//GetImageBuildTagForFramework Returns the latest build tag for a specified framework and version
func GetImageBuildTagForFramework(fwName, fwVersion, learnerConfigPath string) string {
frameworks, err := GetFrameworks(learnerConfigPath)
if err != nil {
return ""
}
frameworkVersions := frameworks.Frameworks[fwName].Versions
for _, frameworkVersion := range frameworkVersions {
if frameworkVersion.Version == fwVersion {
return frameworkVersion.Build
}
}
return ""
}
//CheckIfFrameworkExists Checks if the specified framework exists
func CheckIfFrameworkExists(fwName, fwVersion, learnerConfigPath string) (bool, error) {
frameworks, err := GetFrameworks(learnerConfigPath)
if err != nil {
return false, err
}
frameworkType := frameworks.Frameworks[fwName]
if frameworkType == nil {
return false, nil
}
frameworkVersions := frameworkType.Versions
for _, frameworkVersion := range frameworkVersions {
if frameworkVersion.Version == fwVersion {
return true, nil
}
}
return false, nil
}