immucore/internal/cmd/commands.go
Itxaka c5e686883e Significantly drop logging
It was nice when things break all over but its much more stable now.
Lets add logging with head and with proper enrichment of the data being
sent

Signed-off-by: Itxaka <itxaka@spectrocloud.com>
2023-02-08 23:27:53 +01:00

96 lines
2.1 KiB
Go

package cmd
import (
"context"
"os"
"github.com/kairos-io/immucore/internal/utils"
"github.com/kairos-io/immucore/pkg/mount"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spectrocloud-labs/herd"
"github.com/urfave/cli/v2"
)
var Commands = []*cli.Command{
{
Name: "start",
Usage: "start",
UsageText: "starts",
Description: `
Sends a generic event payload with the configuration found in the scanned directories.
`,
Aliases: []string{},
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "dry-run",
EnvVars: []string{"IMMUCORE_DRY_RUN"},
Required: false,
},
},
Action: func(c *cli.Context) (err error) {
logLevel := zerolog.InfoLevel
debug := utils.ReadCMDLineArg("rd.immucore.debug")
if len(debug) > 0 {
logLevel = zerolog.DebugLevel
}
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}).With().Logger().Level(logLevel)
// If we boot from CD, we do nothing
cdBoot, err := utils.BootedFromCD()
if err != nil {
log.Logger.Err(err).Send()
return err
}
if cdBoot {
log.Info().Msg("Seems we booted from CD, doing nothing. Bye!")
return nil
}
img := utils.ReadCMDLineArg("cos-img/filename=")
log.Debug().Strs("TargetImage", img).Msg("Target image")
g := herd.DAG()
s := &mount.State{
Logger: log.Logger,
Rootdir: utils.GetRootDir(),
MountRoot: true,
TargetLabel: utils.BootStateToLabel(),
TargetImage: img[0],
IsRecovery: utils.IsRecovery(),
}
err = s.Register(g)
if err != nil {
s.Logger.Err(err)
return err
}
log.Info().Msg(s.WriteDAG(g))
if c.Bool("dry-run") {
return err
}
err = g.Run(context.Background())
log.Info().Msg(s.WriteDAG(g))
return err
},
},
}
func writeDag(d [][]herd.GraphEntry) {
for i, layer := range d {
log.Printf("%d.", (i + 1))
for _, op := range layer {
if op.Error != nil {
log.Printf(" <%s> (error: %s) (background: %t) (weak: %t)", op.Name, op.Error.Error(), op.Background, op.WeakDeps)
} else {
log.Printf(" <%s> (background: %t) (weak: %t)", op.Name, op.Background, op.WeakDeps)
}
}
log.Print("")
}
}