forked from coop-cloud/abra
NOT WORKING: WIP on adding server-wide logs functionality
This commit is contained in:
parent
236d0f5892
commit
ed859c0243
|
@ -112,6 +112,35 @@ func ValidateApp(c *cli.Context) config.App {
|
|||
return app
|
||||
}
|
||||
|
||||
// ValidateAppByName ensures the app is valid and takes an app name as an argument, not context.
|
||||
func ValidateAppByName(c *cli.Context, appName string) config.App {
|
||||
if AppName != "" {
|
||||
appName = AppName
|
||||
logrus.Debugf("programmatically setting app name to %s", appName)
|
||||
}
|
||||
|
||||
if appName == "" {
|
||||
ShowSubcommandHelpAndError(c, errors.New("no app provided"))
|
||||
}
|
||||
|
||||
app, err := app.Get(appName)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
if err := recipe.EnsureExists(app.Type); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
if err := ssh.EnsureHostKey(app.Server); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
logrus.Debugf("validated '%s' as app argument", appName)
|
||||
|
||||
return app
|
||||
}
|
||||
|
||||
// ValidateDomain ensures the domain name arg is valid.
|
||||
func ValidateDomain(c *cli.Context) (string, error) {
|
||||
domainName := c.Args().First()
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"coopcloud.tech/abra/cli/internal"
|
||||
"coopcloud.tech/abra/pkg/client"
|
||||
"coopcloud.tech/abra/pkg/config"
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
var Taillen string
|
||||
var TaillenFlag = &cli.StringFlag{
|
||||
Name: "tail",
|
||||
Aliases: []string{"t"},
|
||||
Value: "5",
|
||||
Destination: &Taillen,
|
||||
Usage: "change how many lines are shown",
|
||||
}
|
||||
|
||||
var serverLogsCommand = &cli.Command{
|
||||
Name: "logs",
|
||||
Aliases: []string{"l"},
|
||||
ArgsUsage: "<server>",
|
||||
Usage: "show logs from all apps from server",
|
||||
Flags: []cli.Flag{
|
||||
TaillenFlag,
|
||||
internal.StderrFlag,
|
||||
internal.StdoutFlag,
|
||||
internal.HealthcheckFlag,
|
||||
},
|
||||
Action: func(c *cli.Context) error {
|
||||
serverName, err := internal.ValidateServer(c)
|
||||
serviceName := ""
|
||||
if !internal.Stderr && !internal.Stdout && !internal.Healthcheck {
|
||||
internal.Stderr = true
|
||||
internal.Stdout = true
|
||||
internal.Healthcheck = true
|
||||
}
|
||||
|
||||
logrus.Debugf("flags parsed. --stderr: %t, --stdout: %t, --healthcheck: %t", internal.Stderr, internal.Stdout, internal.Healthcheck)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
appMap, err := config.LoadAppFiles(serverName)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
logOpts := types.ContainerLogsOptions{
|
||||
Details: false,
|
||||
Follow: false,
|
||||
ShowStderr: internal.Stderr,
|
||||
ShowStdout: internal.Stdout,
|
||||
Tail: Taillen,
|
||||
Timestamps: true,
|
||||
}
|
||||
|
||||
var appFiles []config.App
|
||||
for appname, _ := range appMap {
|
||||
app := internal.ValidateAppByName(c, appname)
|
||||
appFiles = append(appFiles, app)
|
||||
}
|
||||
for _, app := range appFiles {
|
||||
fmt.Println(app)
|
||||
logrus.Debugf("checking logs for: %s", app.Name)
|
||||
cl, err := client.New(app.Server)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
logrus.Debugf("tailing logs for all services")
|
||||
filters := filters.NewArgs()
|
||||
filters.Add("name", service)
|
||||
serviceOpts := types.ServiceListOptions{Filters: filters}
|
||||
services, err := cl.ServiceList(c.Context, serviceOpts)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
logs, err := cl.ServiceLogs(c.Context, services[0].ID, logOpts)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
logrus.Info(app.StackName())
|
||||
for {
|
||||
_, err = io.Copy(os.Stdout, logs)
|
||||
if err == io.EOF {
|
||||
break
|
||||
} else if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
}
|
||||
logs.Close()
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
|
@ -23,5 +23,6 @@ apps, see available flags on "server add" for more.
|
|||
serverAddCommand,
|
||||
serverListCommand,
|
||||
serverRemoveCommand,
|
||||
serverLogsCommand,
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue