From 5c6709478b1e4b2f522cfbf33de97519e99f63fa Mon Sep 17 00:00:00 2001
From: Kostiantyn Kalynovskyi <kkalynovskyi@mirantis.com>
Date: Wed, 9 Sep 2020 00:12:28 -0500
Subject: [PATCH] Switch phase commands to use refactored command objects

Change-Id: I1f9f1620d6e0d3ac836e0189f403b7f794818d53
Relates-To: #342
---
 cmd/phase/plan.go | 26 ++++----------------------
 cmd/phase/run.go  | 17 ++++++-----------
 2 files changed, 10 insertions(+), 33 deletions(-)

diff --git a/cmd/phase/plan.go b/cmd/phase/plan.go
index e695800e3..80c5b0783 100644
--- a/cmd/phase/plan.go
+++ b/cmd/phase/plan.go
@@ -15,13 +15,10 @@
 package phase
 
 import (
-	"fmt"
-
 	"github.com/spf13/cobra"
 
 	"opendev.org/airship/airshipctl/pkg/config"
 	"opendev.org/airship/airshipctl/pkg/phase"
-	"opendev.org/airship/airshipctl/pkg/util"
 )
 
 const (
@@ -34,30 +31,15 @@ are executed in parallel.
 
 // NewPlanCommand creates a command which prints available phases
 func NewPlanCommand(cfgFactory config.Factory) *cobra.Command {
+	p := &phase.PlanCommand{Factory: cfgFactory}
+
 	planCmd := &cobra.Command{
 		Use:   "plan",
 		Short: "List phases",
 		Long:  cmdLong[1:],
 		RunE: func(cmd *cobra.Command, args []string) error {
-			cfg, err := cfgFactory()
-			if err != nil {
-				return err
-			}
-			p := &phase.Cmd{Config: cfg}
-			phases, err := p.Plan()
-			if err != nil {
-				return err
-			}
-			tw := util.NewTabWriter(cmd.OutOrStdout())
-			defer tw.Flush()
-			fmt.Fprintf(tw, "GROUP\tPHASE\n")
-			for group, phaseList := range phases {
-				fmt.Fprintf(tw, "%s\t\n", group)
-				for _, phase := range phaseList {
-					fmt.Fprintf(tw, "\t%s\n", phase)
-				}
-			}
-			return nil
+			p.Writer = cmd.OutOrStdout()
+			return p.RunE()
 		},
 	}
 	return planCmd
diff --git a/cmd/phase/run.go b/cmd/phase/run.go
index 019224ff8..fdd2f4689 100644
--- a/cmd/phase/run.go
+++ b/cmd/phase/run.go
@@ -18,8 +18,6 @@ import (
 	"github.com/spf13/cobra"
 
 	"opendev.org/airship/airshipctl/pkg/config"
-	"opendev.org/airship/airshipctl/pkg/events"
-	"opendev.org/airship/airshipctl/pkg/k8s/utils"
 	"opendev.org/airship/airshipctl/pkg/phase"
 )
 
@@ -37,8 +35,9 @@ airshipctl phase run ephemeral-control-plane
 
 // NewRunCommand creates a command to run specific phase
 func NewRunCommand(cfgFactory config.Factory) *cobra.Command {
-	p := &phase.Cmd{
-		Processor: events.NewDefaultProcessor(utils.Streams()),
+	p := &phase.RunCommand{
+		Options: phase.RunFlags{},
+		Factory: cfgFactory,
 	}
 
 	runCmd := &cobra.Command{
@@ -48,17 +47,13 @@ func NewRunCommand(cfgFactory config.Factory) *cobra.Command {
 		Args:    cobra.ExactArgs(1),
 		Example: runExample,
 		RunE: func(cmd *cobra.Command, args []string) error {
-			cfg, err := cfgFactory()
-			if err != nil {
-				return err
-			}
-			p.Config = cfg
-			return p.Exec(args[0])
+			p.Options.PhaseID.Name = args[0]
+			return p.RunE()
 		},
 	}
 	flags := runCmd.Flags()
 	flags.BoolVar(
-		&p.DryRun,
+		&p.Options.DryRun,
 		"dry-run",
 		false,
 		"simulate phase execution")