Skip to content

Commit

Permalink
Merge pull request #71 from kairos-io/1548-upgrade-with-source-and-mi…
Browse files Browse the repository at this point in the history
…ssing-os-release-info

Remove validation of os-release attribute when source has been given for upgrades
  • Loading branch information
mauromorales authored Jun 30, 2023
2 parents 9dd1dbd + 62eee9f commit dee9d0b
Showing 1 changed file with 36 additions and 24 deletions.
60 changes: 36 additions & 24 deletions internal/agent/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"

"github.com/Masterminds/semver/v3"
events "github.com/kairos-io/kairos-sdk/bus"
"github.com/kairos-io/kairos-sdk/collector"
Expand Down Expand Up @@ -79,30 +80,14 @@ func Upgrade(
}
}

discoveredImage := ""
bus.Manager.Response(events.EventVersionImage, func(p *pluggable.Plugin, r *pluggable.EventResponse) {
discoveredImage = r.Data
})

_, err := bus.Manager.Publish(events.EventVersionImage, &events.VersionImagePayload{
Version: version,
})
if err != nil {
return err
}

registry, err := utils.OSRelease("IMAGE_REPO")
if err != nil {
fmt.Printf("Cant find IMAGE_REPO key under /etc/os-release\n")
return err
}

img := fmt.Sprintf("%s:%s", registry, version)
if discoveredImage != "" {
img = discoveredImage
}
if source != "" {
img = source
img := source
var err error
if img == "" {
img, err = determineUpgradeImage(version)
if err != nil {
fmt.Println(err.Error())
return err
}
}

if debug {
Expand Down Expand Up @@ -146,3 +131,30 @@ func Upgrade(

return upgradeAction.Run()
}

// determineUpgradeImage asks the provider plugin for an image or constructs
// it using version and data from /etc/os-release
func determineUpgradeImage(version string) (string, error) {
var img string
bus.Manager.Response(events.EventVersionImage, func(p *pluggable.Plugin, r *pluggable.EventResponse) {
img = r.Data
})

_, err := bus.Manager.Publish(events.EventVersionImage, &events.VersionImagePayload{
Version: version,
})
if err != nil {
return "", err
}

if img != "" {
return img, nil
}

registry, err := utils.OSRelease("IMAGE_REPO")
if err != nil {
return "", fmt.Errorf("can't find IMAGE_REPO key under /etc/os-release %w", err)
}

return fmt.Sprintf("%s:%s", registry, version), nil
}

0 comments on commit dee9d0b

Please sign in to comment.