Skip to content

Commit

Permalink
add version to deploy to upstream upgrade cmd (#2396)
Browse files Browse the repository at this point in the history
  • Loading branch information
morningvera committed Dec 9, 2021
1 parent 747c4b2 commit 5cefbac
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 0 deletions.
4 changes: 4 additions & 0 deletions cmd/kots/cli/upstream-upgrade.go
Expand Up @@ -152,6 +152,10 @@ func logUpstreamUpgrade(log *logger.CLILogger, res *upstream.UpgradeResponse, ou
for _, r := range res.AvailableReleases {
log.ActionWithoutSpinner(fmt.Sprintf("Downloading available release: sequence %v, version %v", r.Sequence, r.Version))
}

if res.DeployingRelease != nil {
log.ActionWithoutSpinner(fmt.Sprintf("Deploying release: sequence %v, version %v", res.DeployingRelease.Sequence, res.DeployingRelease.Version))
}
}

return nil
Expand Down
5 changes: 5 additions & 0 deletions pkg/handlers/update.go
Expand Up @@ -26,6 +26,7 @@ type AppUpdateCheckResponse struct {
CurrentAppSequence int64 `json:"currentAppSequence"`
CurrentRelease AppUpdateRelease `json:"currentRelease"`
AvailableReleases []AppUpdateRelease `json:"availableReleases"`
DeployingRelease AppUpdateRelease `json:"deployingRelease"`
}

type AppUpdateRelease struct {
Expand Down Expand Up @@ -97,6 +98,10 @@ func (h *Handler) AppUpdateCheck(w http.ResponseWriter, r *http.Request) {
Version: ucr.CurrentRelease.Version,
},
AvailableReleases: availableReleases,
DeployingRelease: AppUpdateRelease{
Sequence: ucr.DeployingRelease.Sequence,
Version: ucr.DeployingRelease.Version,
},
}
}

Expand Down
45 changes: 45 additions & 0 deletions pkg/updatechecker/updatechecker.go
Expand Up @@ -158,6 +158,7 @@ type UpdateCheckResponse struct {
AvailableUpdates int64
CurrentRelease UpdateCheckRelease
AvailableReleases []UpdateCheckRelease
DeployingRelease UpdateCheckRelease
}

type UpdateCheckRelease struct {
Expand Down Expand Up @@ -265,6 +266,7 @@ func CheckForUpdates(opts CheckForUpdatesOpts) (*UpdateCheckResponse, error) {
Version: appVersions.CurrentVersion.VersionLabel,
},
AvailableReleases: availableReleases,
DeployingRelease: getVersionToDeploy(opts, d.ClusterID, availableReleases),
}

if len(updates) == 0 {
Expand Down Expand Up @@ -338,6 +340,49 @@ func ensureDesiredVersionIsDeployed(opts CheckForUpdatesOpts, clusterID string)
return nil
}

func getVersionToDeploy(opts CheckForUpdatesOpts, clusterID string, availableReleases []UpdateCheckRelease) UpdateCheckRelease {
appVersions, err := store.GetStore().GetAppVersions(opts.AppID, clusterID)
if err != nil {
return UpdateCheckRelease{}
}
if len(appVersions.AllVersions) == 0 {
return UpdateCheckRelease{}
}

// prepend updates
for _, u := range availableReleases {
appVersions.AllVersions = append([]*downstreamtypes.DownstreamVersion{{VersionLabel: u.Version, Sequence: u.Sequence}}, appVersions.AllVersions...)
}

if opts.DeployLatest && appVersions.AllVersions[0].Sequence != appVersions.CurrentVersion.Sequence {
return UpdateCheckRelease{
Sequence: appVersions.AllVersions[0].Sequence,
Version: appVersions.AllVersions[0].VersionLabel,
}
}

if opts.DeployVersionLabel != "" {
var versionToDeploy *downstreamtypes.DownstreamVersion
for _, v := range appVersions.AllVersions {
if v.VersionLabel == opts.DeployVersionLabel {
versionToDeploy = v
break
}
}

if versionToDeploy != nil && versionToDeploy.Sequence != appVersions.CurrentVersion.Sequence {
return UpdateCheckRelease{
Sequence: versionToDeploy.Sequence,
Version: versionToDeploy.VersionLabel,
}
}
}

// todo: get version to deploy for opts.AutoDeploy

return UpdateCheckRelease{}
}

func deployLatestVersion(opts CheckForUpdatesOpts, clusterID string) error {
appVersions, err := store.GetStore().GetAppVersions(opts.AppID, clusterID)
if err != nil {
Expand Down
4 changes: 4 additions & 0 deletions pkg/upstream/upgrade.go
Expand Up @@ -28,6 +28,7 @@ type UpgradeResponse struct {
AvailableUpdates int64 `json:"availableUpdates"`
CurrentRelease *UpgradeRelease `json:"currentRelease,omitempty"`
AvailableReleases []UpgradeRelease `json:"availableReleases,omitempty"`
DeployingRelease *UpgradeRelease `json:"deployingRelease,omitempty"`
Error string `json:"error,omitempty"`
}

Expand Down Expand Up @@ -219,6 +220,9 @@ func Upgrade(appSlug string, options UpgradeOptions) (*UpgradeResponse, error) {
if err := json.Unmarshal(b, &ur); err != nil {
return nil, errors.Wrap(err, "failed to parse response")
}
if ur.DeployingRelease.Version == "" {
ur.DeployingRelease = nil
}

log.FinishSpinner()

Expand Down

0 comments on commit 5cefbac

Please sign in to comment.