Skip to content

Commit

Permalink
Load versions only once.
Browse files Browse the repository at this point in the history
Don't unmarshall the json file for every component.

Signed-off-by: David Calavera <dcalaverapalacio@twilio.com>
  • Loading branch information
David Calavera committed Aug 11, 2021
1 parent 828bacc commit 67cef91
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
21 changes: 15 additions & 6 deletions cmd/check_versions.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,16 @@ var getVersionsCmd = &cobra.Command{
return err
}

versions, err := loadKubernetesVersions()
if err != nil {
return err
}

// loop through services
for _, s := range svcs {
// walk through required versions and
// find the matching service
req, err := getRequiredVersion(kubeVersion, s.Name)
req, err := getRequiredVersion(versions, kubeVersion, s.Name)
if err != nil {
return err
}
Expand Down Expand Up @@ -121,11 +126,7 @@ func isOutOfDate(required, current string) (bool, error) {
return r.Compare(c) > 0, nil
}

func getRequiredVersion(kubernetesVersion string, serviceName string) (string, error) {
var versions KubernetesVersions
if err := json.Unmarshal(componentsConfig, &versions); err != nil {
return "", fmt.Errorf("unable to read components configuration: %w", err)
}
func getRequiredVersion(versions KubernetesVersions, kubernetesVersion string, serviceName string) (string, error) {
for _, e := range versions[kubernetesVersion] {
if e.Name == serviceName {
return e.Version, nil
Expand Down Expand Up @@ -177,3 +178,11 @@ func getAllServices(clientset *kubernetes.Clientset, namespaces []string) (Servi
}
return svcs, nil
}

func loadKubernetesVersions() (KubernetesVersions, error) {
var versions KubernetesVersions
if err := json.Unmarshal(componentsConfig, &versions); err != nil {
return nil, fmt.Errorf("unable to read components configuration: %w", err)
}
return versions, nil
}
7 changes: 6 additions & 1 deletion cmd/check_versions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,13 @@ func TestGetRequiredVersions(t *testing.T) {
},
}

versions, err := loadKubernetesVersions()
if err != nil {
t.Fatal(err)
}

for _, test := range cases {
actual, err := getRequiredVersion("v1.19", test.Name)
actual, err := getRequiredVersion(versions, "v1.19", test.Name)
if err != nil {
t.Fatal(err)
}
Expand Down

0 comments on commit 67cef91

Please sign in to comment.