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 }