Feroze Mohideen 2 лет назад
Родитель
Сommit
3e4cd90e83
2 измененных файлов с 16 добавлено и 9 удалено
  1. 3 3
      api/server/handlers/porter_app/get_app_revision_status.go
  2. 13 6
      cli/cmd/v2/update.go

+ 3 - 3
api/server/handlers/porter_app/get_app_revision_status.go

@@ -28,8 +28,8 @@ func NewGetAppRevisionStatusHandler(
 	config *config.Config,
 	decoderValidator shared.RequestDecoderValidator,
 	writer shared.ResultWriter,
-) *GetAppRevisionHandler {
-	return &GetAppRevisionHandler{
+) *GetAppRevisionStatusHandler {
+	return &GetAppRevisionStatusHandler{
 		PorterHandlerReadWriter: handlers.NewDefaultPorterHandler(config, decoderValidator, writer),
 		KubernetesAgentGetter:   authz.NewOutOfClusterAgentGetter(config),
 	}
@@ -42,7 +42,7 @@ type GetAppRevisionStatusResponse struct {
 
 // GetAppRevisionStatusHandler returns the status of an app revision
 func (c *GetAppRevisionStatusHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-	ctx, span := telemetry.NewSpan(r.Context(), "serve-get-app-revision")
+	ctx, span := telemetry.NewSpan(r.Context(), "serve-get-app-revision-status")
 	defer span.End()
 
 	project, _ := r.Context().Value(types.ProjectScope).(*models.Project)

+ 13 - 6
cli/cmd/v2/update.go

@@ -202,8 +202,6 @@ func Update(ctx context.Context, inp UpdateInput) error {
 
 	now := time.Now().UTC()
 
-	var status *porter_app.GetAppRevisionStatusResponse
-
 	for {
 		if time.Since(now) > checkDeployTimeout {
 			return errors.New("timed out waiting for app to deploy")
@@ -218,6 +216,10 @@ func Update(ctx context.Context, inp UpdateInput) error {
 			return errors.New("unable to determine status of app revision")
 		}
 
+		if status.AppRevisionStatus.IsInTerminalStatus {
+			break
+		}
+
 		if status.AppRevisionStatus.PredeployStarted {
 			color.New(color.FgGreen).Printf("Waiting for predeploy to complete...\n") // nolint:errcheck,gosec
 		}
@@ -226,10 +228,6 @@ func Update(ctx context.Context, inp UpdateInput) error {
 			color.New(color.FgGreen).Printf("Waiting for deploy to complete...\n") // nolint:errcheck,gosec
 		}
 
-		if status.AppRevisionStatus.IsInTerminalStatus {
-			break
-		}
-
 		time.Sleep(checkDeployFrequency)
 	}
 
@@ -242,6 +240,15 @@ func Update(ctx context.Context, inp UpdateInput) error {
 		CommitSHA:     commitSHA,
 	})
 
+	status, err := client.GetRevisionStatus(ctx, cliConf.Project, cliConf.Cluster, appName, updateResp.AppRevisionId)
+	if err != nil {
+		return fmt.Errorf("error getting app revision status: %w", err)
+	}
+
+	if status == nil {
+		return errors.New("unable to determine status of app revision")
+	}
+
 	if status.AppRevisionStatus.InstallFailed {
 		return errors.New("app failed to deploy")
 	}