From ff63c00dec92ecef9e2227d8f7c7997d4be1ed82 Mon Sep 17 00:00:00 2001 From: Itxaka Date: Tue, 1 Jul 2025 10:41:14 +0200 Subject: [PATCH] Add registry flag to list-releases (#833) --- internal/agent/upgrade.go | 26 ++++++++------------------ main.go | 20 +++++++++++++++++--- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/internal/agent/upgrade.go b/internal/agent/upgrade.go index ebe1533..c63629c 100644 --- a/internal/agent/upgrade.go +++ b/internal/agent/upgrade.go @@ -35,10 +35,10 @@ func CurrentImage() (string, error) { return artifact.ContainerName(registryAndOrg) } -func ListAllReleases(includePrereleases bool) ([]string, error) { +func ListAllReleases(includePrereleases bool, registry string) ([]string, error) { var err error - tagList, err := allReleases() + tagList, err := allReleases(registry) if err != nil { return []string{}, err } @@ -50,10 +50,10 @@ func ListAllReleases(includePrereleases bool) ([]string, error) { return tagList.FullImages() } -func ListNewerReleases(includePrereleases bool) ([]string, error) { +func ListNewerReleases(includePrereleases bool, registry string) ([]string, error) { var err error - tagList, err := newerReleases() + tagList, err := newerReleases(registry) if err != nil { return []string{}, err } @@ -167,18 +167,13 @@ func getConfig(sourceImageURL string, dirs []string, upgradeEntry string, strict } -func allReleases() (versioneer.TagList, error) { +func allReleases(registry string) (versioneer.TagList, error) { artifact, err := versioneer.NewArtifactFromOSRelease() if err != nil { return versioneer.TagList{}, err } - registryAndOrg, err := utils.OSRelease("REGISTRY_AND_ORG") - if err != nil { - return versioneer.TagList{}, err - } - - tagList, err := artifact.TagList(registryAndOrg) + tagList, err := artifact.TagList(registry) if err != nil { return tagList, err } @@ -186,18 +181,13 @@ func allReleases() (versioneer.TagList, error) { return tagList.OtherAnyVersion().RSorted(), nil } -func newerReleases() (versioneer.TagList, error) { +func newerReleases(registry string) (versioneer.TagList, error) { artifact, err := versioneer.NewArtifactFromOSRelease() if err != nil { return versioneer.TagList{}, err } - registryAndOrg, err := utils.OSRelease("REGISTRY_AND_ORG") - if err != nil { - return versioneer.TagList{}, err - } - - tagList, err := artifact.TagList(registryAndOrg) + tagList, err := artifact.TagList(registry) if err != nil { return tagList, err } diff --git a/main.go b/main.go index 10f1237..95ba5c9 100644 --- a/main.go +++ b/main.go @@ -29,6 +29,7 @@ import ( "github.com/kairos-io/kairos-sdk/machine" "github.com/kairos-io/kairos-sdk/schema" "github.com/kairos-io/kairos-sdk/state" + sdkUtils "github.com/kairos-io/kairos-sdk/utils" "github.com/kairos-io/kairos-sdk/versioneer" "github.com/sanity-io/litter" "github.com/spf13/viper" @@ -82,7 +83,7 @@ as a value for the --source flag. You can also specify the upgrade image by setting "upgrade.system.uri" for the active image or "upgrade.recovery-system.uri" for the recovery image, in the cloud config. -To retrieve all the available versions, use "kairos upgrade list-releases" +To retrieve all the available versions, use "kairos upgrade list-releases". Use the --registry flag to specify a custom registry to retrieve the versions from, otherwise it will default to quay.io/kairos. $ kairos upgrade list-releases @@ -98,9 +99,22 @@ See https://kairos.io/docs/upgrade/manual/ for documentation. }, &cli.BoolFlag{Name: "pre", Usage: "Include pre-releases (rc, beta, alpha)"}, &cli.BoolFlag{Name: "all", Usage: "Include older releases"}, + &cli.StringFlag{Name: "registry", Usage: "Registry to retrieve the releases from. Defaults to quay.io/kairos.", Value: "quay.io/kairos"}, }, Name: "list-releases", Description: `List all available releases versions`, + Before: func(c *cli.Context) error { + // Check if the registry is set in the OS release and warn that its deprecated + registryAndOrg, err := sdkUtils.OSRelease("REGISTRY_AND_ORG") + if err == nil { + fmt.Println("Warning: The 'REGISTRY_AND_ORG' OS release variable is deprecated. Use the '--registry' flag instead.") + fmt.Println("Warning: Using the values from 'REGISTRY_AND_ORG' instead of the flag.") + _ = c.Set("registry", registryAndOrg) + + } + fmt.Println(fmt.Sprintf("Using registry: %s", c.String("registry"))) + return nil + }, Action: func(c *cli.Context) error { if utils.IsUki() { fmt.Println("You are running in \"trusted boot\" mode") @@ -132,13 +146,13 @@ See https://kairos.io/docs/upgrade/manual/ for documentation. if c.Bool("all") { fmt.Println("Available releases (all):") - tags, err = agent.ListAllReleases(c.Bool("pre")) + tags, err = agent.ListAllReleases(c.Bool("pre"), c.String("registry")) if err != nil { return err } } else { fmt.Println("Available releases with higher version:") - tags, err = agent.ListNewerReleases(c.Bool("pre")) + tags, err = agent.ListNewerReleases(c.Bool("pre"), c.String("registry")) if err != nil { return err }