mirror of
https://github.com/foomo/squadron.git
synced 2025-10-16 12:35:42 +00:00
feat: add simple status command
This commit is contained in:
parent
ec5c42fc0f
commit
e5525f8047
@ -41,7 +41,7 @@ func init() {
|
|||||||
rootCmd.PersistentFlags().BoolVarP(&flagVerbose, "verbose", "v", false, "show more output")
|
rootCmd.PersistentFlags().BoolVarP(&flagVerbose, "verbose", "v", false, "show more output")
|
||||||
rootCmd.PersistentFlags().StringSliceVarP(&flagFiles, "file", "f", []string{"squadron.yaml"}, "specify alternative squadron files")
|
rootCmd.PersistentFlags().StringSliceVarP(&flagFiles, "file", "f", []string{"squadron.yaml"}, "specify alternative squadron files")
|
||||||
|
|
||||||
rootCmd.AddCommand(upCmd, downCmd, buildCmd, pushCmd, listCmd, generateCmd, configCmd, versionCmd, completionCmd, templateCmd)
|
rootCmd.AddCommand(upCmd, downCmd, buildCmd, pushCmd, listCmd, generateCmd, statusCmd, configCmd, versionCmd, completionCmd, templateCmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Execute() {
|
func Execute() {
|
||||||
|
|||||||
52
cmd/actions/status.go
Normal file
52
cmd/actions/status.go
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
package actions
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
"github.com/foomo/squadron"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
statusCmd.Flags().StringVarP(&flagNamespace, "namespace", "n", "default", "specifies the namespace")
|
||||||
|
}
|
||||||
|
|
||||||
|
var statusCmd = &cobra.Command{
|
||||||
|
Use: "status [UNIT...]",
|
||||||
|
Short: "installs the squadron or given units",
|
||||||
|
Example: " squadron status frontend backend --namespace demo --build --push -- --dry-run",
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
return status(args, cwd, flagNamespace, flagFiles)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func status(args []string, cwd, namespace string, files []string) error {
|
||||||
|
sq := squadron.New(cwd, namespace, files)
|
||||||
|
|
||||||
|
if err := sq.MergeConfigFiles(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
args, helmArgs := parseExtraArgs(args)
|
||||||
|
|
||||||
|
unitsNames, err := parseUnitNames(args, sq.GetConfig().Units)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if unitsNames != nil {
|
||||||
|
if err := sq.FilterConfig(unitsNames); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := sq.RenderConfig(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
units, err := parseUnitArgs(args, sq.GetConfig().Units)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return sq.Status(units, helmArgs)
|
||||||
|
}
|
||||||
44
squadron.go
44
squadron.go
@ -171,9 +171,9 @@ func (sq *Squadron) Package() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sq *Squadron) Down(units map[string]Unit, helmArgs []string) error {
|
func (sq *Squadron) Down(units map[string]Unit, helmArgs []string) error {
|
||||||
stdErr := bytes.NewBuffer([]byte{})
|
|
||||||
if sq.c.Unite {
|
if sq.c.Unite {
|
||||||
logrus.Infof("running helm uninstall for: %s", sq.chartPath())
|
logrus.Infof("running helm uninstall for: %s", sq.chartPath())
|
||||||
|
stdErr := bytes.NewBuffer([]byte{})
|
||||||
if _, err := util.NewHelmCommand().Args("uninstall", sq.name).
|
if _, err := util.NewHelmCommand().Args("uninstall", sq.name).
|
||||||
Stderr(stdErr).
|
Stderr(stdErr).
|
||||||
Stdout(os.Stdout).
|
Stdout(os.Stdout).
|
||||||
@ -188,6 +188,7 @@ func (sq *Squadron) Down(units map[string]Unit, helmArgs []string) error {
|
|||||||
// todo use release prefix on install: squadron name or --name
|
// todo use release prefix on install: squadron name or --name
|
||||||
rName := fmt.Sprintf("%s-%s", sq.name, uName)
|
rName := fmt.Sprintf("%s-%s", sq.name, uName)
|
||||||
logrus.Infof("running helm uninstall for: %s", uName)
|
logrus.Infof("running helm uninstall for: %s", uName)
|
||||||
|
stdErr := bytes.NewBuffer([]byte{})
|
||||||
if _, err := util.NewHelmCommand().Args("uninstall", rName).
|
if _, err := util.NewHelmCommand().Args("uninstall", rName).
|
||||||
Stderr(stdErr).
|
Stderr(stdErr).
|
||||||
Stdout(os.Stdout).
|
Stdout(os.Stdout).
|
||||||
@ -241,6 +242,47 @@ func (sq *Squadron) Diff(units map[string]Unit, helmArgs []string) (string, erro
|
|||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sq *Squadron) Status(units map[string]Unit, helmArgs []string) error {
|
||||||
|
stdOut := bytes.NewBuffer([]byte{})
|
||||||
|
if sq.c.Unite {
|
||||||
|
stdOut.WriteString("==== " + sq.name + strings.Repeat("=", 20-len(sq.name)) + "\n")
|
||||||
|
logrus.Infof("running helm status for chart: %s", sq.chartPath())
|
||||||
|
stdErr := bytes.NewBuffer([]byte{})
|
||||||
|
if _, err := util.NewHelmCommand().Args("status", sq.name).
|
||||||
|
Stderr(stdErr).
|
||||||
|
Stdout(stdOut).
|
||||||
|
Args("--namespace", sq.namespace).
|
||||||
|
Args(helmArgs...).
|
||||||
|
Run(); err != nil &&
|
||||||
|
string(bytes.TrimSpace(stdErr.Bytes())) == "Error: release: not found" {
|
||||||
|
stdOut.WriteString("NAME: " + sq.name + "\n")
|
||||||
|
stdOut.WriteString("STATUS: not installed\n")
|
||||||
|
} else if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for uName := range units {
|
||||||
|
stdOut.WriteString("==== " + uName + " " + strings.Repeat("=", 60-len(uName)) + "\n")
|
||||||
|
// todo use release prefix on install: squadron name or --name
|
||||||
|
rName := fmt.Sprintf("%s-%s", sq.name, uName)
|
||||||
|
logrus.Infof("running helm status for %s", uName)
|
||||||
|
stdErr := bytes.NewBuffer([]byte{})
|
||||||
|
if _, err := util.NewHelmCommand().Args("status", rName).
|
||||||
|
Stderr(stdErr).
|
||||||
|
Stdout(stdOut).
|
||||||
|
Args("--namespace", sq.namespace).
|
||||||
|
Args(helmArgs...).Run(); err != nil &&
|
||||||
|
string(bytes.TrimSpace(stdErr.Bytes())) == "Error: release: not found" {
|
||||||
|
stdOut.WriteString("NAME: " + rName + "\n")
|
||||||
|
stdOut.WriteString("STATUS: not installed\n")
|
||||||
|
} else if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println(strings.ReplaceAll(stdOut.String(), "\\n", "\n"))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (sq *Squadron) Up(units map[string]Unit, helmArgs []string) error {
|
func (sq *Squadron) Up(units map[string]Unit, helmArgs []string) error {
|
||||||
if sq.c.Unite {
|
if sq.c.Unite {
|
||||||
logrus.Infof("running helm upgrade for chart: %s", sq.chartPath())
|
logrus.Infof("running helm upgrade for chart: %s", sq.chartPath())
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user