cellarspoon
abd094387f
The other approach wasn't working. Duplicating containers on restart. You'd end up with 2 containers per restart...
66 lines
1.8 KiB
Go
66 lines
1.8 KiB
Go
package app
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"coopcloud.tech/abra/cli/internal"
|
|
"coopcloud.tech/abra/pkg/autocomplete"
|
|
"coopcloud.tech/abra/pkg/client"
|
|
upstream "coopcloud.tech/abra/pkg/upstream/service"
|
|
stack "coopcloud.tech/abra/pkg/upstream/stack"
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var appRestartCommand = &cli.Command{
|
|
Name: "restart",
|
|
Usage: "Restart an app",
|
|
Aliases: []string{"re"},
|
|
ArgsUsage: "<service>",
|
|
Description: `This command restarts a service within a deployed app.`,
|
|
BashComplete: autocomplete.AppNameComplete,
|
|
Action: func(c *cli.Context) error {
|
|
app := internal.ValidateApp(c)
|
|
|
|
serviceNameShort := c.Args().Get(1)
|
|
if serviceNameShort == "" {
|
|
err := errors.New("missing service?")
|
|
internal.ShowSubcommandHelpAndError(c, err)
|
|
}
|
|
|
|
cl, err := client.New(app.Server)
|
|
if err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
|
|
serviceName := fmt.Sprintf("%s_%s", app.StackName(), serviceNameShort)
|
|
|
|
logrus.Debugf("attempting to scale %s to 0 (restart logic)", serviceName)
|
|
if err := upstream.RunServiceScale(c.Context, cl, serviceName, 0); err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
|
|
if err := stack.WaitOnService(c.Context, cl, serviceName, app.Name); err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
|
|
logrus.Debugf("%s has been scaled to 0 (restart logic)", serviceName)
|
|
|
|
logrus.Debugf("attempting to scale %s to 1 (restart logic)", serviceName)
|
|
if err := upstream.RunServiceScale(c.Context, cl, serviceName, 1); err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
|
|
if err := stack.WaitOnService(c.Context, cl, serviceName, app.Name); err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
|
|
logrus.Debugf("%s has been scaled to 1 (restart logic)", serviceName)
|
|
|
|
logrus.Infof("%s service successfully restarted", serviceNameShort)
|
|
|
|
return nil
|
|
},
|
|
}
|