github.com/verrazzano/verrazzano@v1.7.1/tools/psr/psrctl/cmd/stop/stop.go (about)

     1  // Copyright (c) 2022, 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package stop
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"github.com/spf13/cobra"
    10  	"github.com/verrazzano/verrazzano/tools/psr/psrctl/cmd/constants"
    11  	"github.com/verrazzano/verrazzano/tools/psr/psrctl/pkg/scenario"
    12  	cmdhelpers "github.com/verrazzano/verrazzano/tools/vz/cmd/helpers"
    13  	"github.com/verrazzano/verrazzano/tools/vz/pkg/helpers"
    14  )
    15  
    16  const (
    17  	CommandName = "stop"
    18  	helpShort   = "Stop a PSR scenario"
    19  	helpLong    = `The command 'stop' stops a PSR scenario`
    20  	helpExample = `psrctl stop -s ops-s1`
    21  )
    22  
    23  var scenarioID string
    24  var namespace string
    25  
    26  func NewCmdStop(vzHelper helpers.VZHelper) *cobra.Command {
    27  	cmd := cmdhelpers.NewCommand(vzHelper, CommandName, helpShort, helpLong)
    28  	cmd.RunE = func(cmd *cobra.Command, args []string) error {
    29  		return RunCmdStop(cmd, vzHelper)
    30  	}
    31  	cmd.Args = cobra.ExactArgs(0)
    32  	cmd.Example = helpExample
    33  
    34  	cmd.PersistentFlags().StringVarP(&scenarioID, constants.FlagScenario, constants.FlagsScenarioShort, "", constants.FlagScenarioHelp)
    35  	cmd.PersistentFlags().StringVarP(&namespace, constants.FlagNamespace, constants.FlagNamespaceShort, "default", constants.FlagNamespaceHelp)
    36  
    37  	return cmd
    38  }
    39  
    40  // RunCmdStop - Run the "psrctl Stop" command
    41  func RunCmdStop(cmd *cobra.Command, vzHelper helpers.VZHelper) error {
    42  	scenarioMan, err := scenario.NewManager(namespace)
    43  	if err != nil {
    44  		return fmt.Errorf("Failed to create scenario ScenarioMananger %v", err)
    45  	}
    46  
    47  	fmt.Fprintf(vzHelper.GetOutputStream(), "Stopping scenario %s\n", scenarioID)
    48  	err = scenarioMan.StopScenarioByID(scenarioID, vzHelper)
    49  	if err != nil {
    50  		// Cobra will display failure message
    51  		return fmt.Errorf("Failed to stop scenario %s/%s: %v", namespace, scenarioID, err)
    52  	}
    53  	fmt.Fprintf(vzHelper.GetOutputStream(), "Scenario %s successfully stopped\n", scenarioID)
    54  
    55  	return nil
    56  }