Update logging behavior

This commit is contained in:
Tom Wiesing 2022-12-01 12:42:04 +01:00
parent 3b78b06fff
commit 6f1ba24761
No known key found for this signature in database
28 changed files with 176 additions and 137 deletions

View file

@ -42,7 +42,7 @@ func (bk backup) Run(context wisski_distillery.Context) error {
if !bk.NoPrune {
defer logging.LogOperation(func() error {
return dis.Exporter().PruneExports(context.Context, context.Stderr)
}, context.Stderr, "Pruning old backups")
}, context.Stderr, context.Context, "Pruning old backups")
}
// do the handling

View file

@ -84,7 +84,7 @@ func (bs cBootstrap) Run(context wisski_distillery.Context) error {
}
{
logging.LogMessage(context.Stderr, "Creating root deployment directory")
logging.LogMessage(context.Stderr, context.Context, "Creating root deployment directory")
if err := env.MkdirAll(root, environment.DefaultDirPerm); err != nil {
return errBootstrapFailedToCreateDirectory.WithMessageF(root)
}
@ -109,7 +109,7 @@ func (bs cBootstrap) Run(context wisski_distillery.Context) error {
}
{
logging.LogMessage(context.Stderr, "Copying over wdcli executable")
logging.LogMessage(context.Stderr, context.Context, "Copying over wdcli executable")
exe, err := env.Executable()
if err != nil {
return errBoostrapFailedToCopyExe.WithMessageF(err)
@ -132,7 +132,7 @@ func (bs cBootstrap) Run(context wisski_distillery.Context) error {
defer env.Close()
return tpl.MarshalTo(env)
}, context.Stderr, "Installing configuration file"); err != nil {
}, context.Stderr, context.Context, "Installing configuration file"); err != nil {
return errBootstrapWriteConfig.WithMessageF(err)
}
@ -169,7 +169,7 @@ func (bs cBootstrap) Run(context wisski_distillery.Context) error {
}
return nil
}, context.Stderr, "Creating additional config files"); err != nil {
}, context.Stderr, context.Context, "Creating additional config files"); err != nil {
return errBootstrapCreateFile.WithMessageF(err)
}
}
@ -177,7 +177,7 @@ func (bs cBootstrap) Run(context wisski_distillery.Context) error {
}
// re-read the configuration and print it!
logging.LogMessage(context.Stderr, "Configuration is now complete")
logging.LogMessage(context.Stderr, context.Context, "Configuration is now complete")
f, err := env.Open(envPath)
if err != nil {
return errBootstrapOpenConfig.WithMessageF(err)
@ -191,7 +191,7 @@ func (bs cBootstrap) Run(context wisski_distillery.Context) error {
context.Println(cfg)
// Tell the user how to proceed
logging.LogMessage(context.Stderr, "Bootstrap is complete")
logging.LogMessage(context.Stderr, context.Context, "Bootstrap is complete")
context.Printf("Adjust the configuration file at %s\n", envPath)
context.Printf("Then make sure 'docker compose' is installed.\n")
context.Printf("Finally grab a GraphDB zipped source file and run:\n")

View file

@ -39,36 +39,36 @@ func (monday monday) AfterParse() error {
func (monday monday) Run(context wisski_distillery.Context) error {
if err := logging.LogOperation(func() error {
return context.Exec("backup")
}, context.Stderr, "Running backup"); err != nil {
}, context.Stderr, context.Context, "Running backup"); err != nil {
return err
}
if err := logging.LogOperation(func() error {
return context.Exec("system_update", monday.Positionals.GraphdbZip)
}, context.Stderr, "Running system_update"); err != nil {
}, context.Stderr, context.Context, "Running system_update"); err != nil {
return err
}
if err := logging.LogOperation(func() error {
return context.Exec("rebuild")
}, context.Stderr, "Running rebuild"); err != nil {
}, context.Stderr, context.Context, "Running rebuild"); err != nil {
return err
}
if err := logging.LogOperation(func() error {
return context.Exec("update_prefix_config")
}, context.Stderr, "Running update_prefix_config"); err != nil {
}, context.Stderr, context.Context, "Running update_prefix_config"); err != nil {
return err
}
if monday.UpdateInstances {
if err := logging.LogOperation(func() error {
return context.Exec("blind_update")
}, context.Stderr, "Running blind_update"); err != nil {
}, context.Stderr, context.Context, "Running blind_update"); err != nil {
return err
}
}
logging.LogMessage(context.Stderr, "Done, have a great week!")
logging.LogMessage(context.Stderr, context.Context, "Done, have a great week!")
return nil
}

View file

@ -44,7 +44,7 @@ func (p provision) Run(context wisski_distillery.Context) error {
slug := p.Positionals.Slug
// check that it doesn't already exist
logging.LogMessage(context.Stderr, "Provisioning new WissKI instance %s", slug)
logging.LogMessage(context.Stderr, context.Context, "Provisioning new WissKI instance %s", slug)
if exists, err := dis.Instances().Has(context.Context, slug); err != nil || exists {
return errProvisionAlreadyExists.WithMessageF(slug)
}
@ -56,7 +56,7 @@ func (p provision) Run(context wisski_distillery.Context) error {
}
// check that the base directory does not exist
logging.LogMessage(context.Stderr, "Checking that base directory %s does not exist", instance.FilesystemBase)
logging.LogMessage(context.Stderr, context.Context, "Checking that base directory %s does not exist", instance.FilesystemBase)
if fsx.IsDirectory(dis.Environment, instance.FilesystemBase) {
return errProvisionAlreadyExists.WithMessageF(slug)
}
@ -68,7 +68,7 @@ func (p provision) Run(context wisski_distillery.Context) error {
}
return nil
}, context.Stderr, "Updating bookkeeping database"); err != nil {
}, context.Stderr, context.Context, "Updating bookkeeping database"); err != nil {
return err
}
@ -76,7 +76,7 @@ func (p provision) Run(context wisski_distillery.Context) error {
if err := logging.LogOperation(func() error {
domain := instance.Domain()
for _, pc := range dis.Provisionable() {
logging.LogMessage(context.Stderr, "Provisioning %s resources", pc.Name())
logging.LogMessage(context.Stderr, context.Context, "Provisioning %s resources", pc.Name())
err := pc.Provision(context.Context, instance.Instance, domain)
if err != nil {
return err
@ -84,7 +84,7 @@ func (p provision) Run(context wisski_distillery.Context) error {
}
return nil
}, context.Stderr, "Provisioning instance-specific resources"); err != nil {
}, context.Stderr, context.Context, "Provisioning instance-specific resources"); err != nil {
return errProvisionGeneric.WithMessageF(slug, err)
}
@ -95,18 +95,18 @@ func (p provision) Run(context wisski_distillery.Context) error {
}
return nil
}, context.Stderr, "Running setup scripts"); err != nil {
}, context.Stderr, context.Context, "Running setup scripts"); err != nil {
return err
}
// start the container!
logging.LogMessage(context.Stderr, "Starting Container")
logging.LogMessage(context.Stderr, context.Context, "Starting Container")
if err := instance.Barrel().Stack().Up(context.Context, context.Stderr); err != nil {
return err
}
// and we're done!
logging.LogMessage(context.Stderr, "Instance has been provisioned")
logging.LogMessage(context.Stderr, context.Context, "Instance has been provisioned")
context.Printf("URL: %s\n", instance.URL().String())
context.Printf("Username: %s\n", instance.DrupalUsername)
context.Printf("Password: %s\n", instance.DrupalPassword)

View file

@ -58,7 +58,7 @@ func (p purge) Run(context wisski_distillery.Context) error {
}
// load the instance (first via bookkeeping, then via defaults)
logging.LogMessage(context.Stderr, "Checking bookkeeping table")
logging.LogMessage(context.Stderr, context.Context, "Checking bookkeeping table")
instance, err := dis.Instances().WissKI(context.Context, slug)
if err == instances.ErrWissKINotFound {
context.Println("Not found in bookkeeping table, assuming defaults")
@ -69,13 +69,13 @@ func (p purge) Run(context wisski_distillery.Context) error {
}
// remove docker stack
logging.LogMessage(context.Stderr, "Stopping and removing docker container")
logging.LogMessage(context.Stderr, context.Context, "Stopping and removing docker container")
if err := instance.Barrel().Stack().Down(context.Context, context.Stderr); err != nil {
context.EPrintln(err)
}
// remove the filesystem
logging.LogMessage(context.Stderr, "Removing from filesystem %s", instance.FilesystemBase)
logging.LogMessage(context.Stderr, context.Context, "Removing from filesystem %s", instance.FilesystemBase)
if err := dis.Still.Environment.RemoveAll(instance.FilesystemBase); err != nil {
context.EPrintln(err)
}
@ -84,7 +84,7 @@ func (p purge) Run(context wisski_distillery.Context) error {
if err := logging.LogOperation(func() error {
domain := instance.Domain()
for _, pc := range dis.Provisionable() {
logging.LogMessage(context.Stderr, "Purging %s resources", pc.Name())
logging.LogMessage(context.Stderr, context.Context, "Purging %s resources", pc.Name())
err := pc.Purge(context.Context, instance.Instance, domain)
if err != nil {
return err
@ -92,22 +92,22 @@ func (p purge) Run(context wisski_distillery.Context) error {
}
return nil
}, context.Stderr, "Purging instance-specific resources"); err != nil {
}, context.Stderr, context.Context, "Purging instance-specific resources"); err != nil {
return errPurgeGeneric.WithMessageF(slug, err)
}
// remove from bookkeeping
logging.LogMessage(context.Stderr, "Removing instance from bookkeeping")
logging.LogMessage(context.Stderr, context.Context, "Removing instance from bookkeeping")
if err := instance.Bookkeeping().Delete(context.Context); err != nil {
context.EPrintln(err)
}
// remove the filesystem
logging.LogMessage(context.Stderr, "Remove lock data")
logging.LogMessage(context.Stderr, context.Context, "Remove lock data")
if instance.Locker().TryUnlock(context.Context) {
context.EPrintln("instance was not locked")
}
logging.LogMessage(context.Stderr, "Instance %s has been purged", slug)
logging.LogMessage(context.Stderr, context.Context, "Instance %s has been purged", slug)
return nil
}

View file

@ -45,7 +45,7 @@ func (r reserve) Run(context wisski_distillery.Context) error {
slug := r.Positionals.Slug
// check that it doesn't already exist
logging.LogMessage(context.Stderr, "Reserving new WissKI instance %s", slug)
logging.LogMessage(context.Stderr, context.Context, "Reserving new WissKI instance %s", slug)
if exists, err := dis.Instances().Has(context.Context, slug); err != nil || exists {
return errProvisionAlreadyExists.WithMessageF(slug)
}
@ -57,7 +57,7 @@ func (r reserve) Run(context wisski_distillery.Context) error {
}
// check that the base directory does not exist
logging.LogMessage(context.Stderr, "Checking that base directory %s does not exist", instance.FilesystemBase)
logging.LogMessage(context.Stderr, context.Context, "Checking that base directory %s does not exist", instance.FilesystemBase)
if fsx.IsDirectory(dis.Environment, instance.FilesystemBase) {
return errProvisionAlreadyExists.WithMessageF(slug)
}
@ -67,19 +67,19 @@ func (r reserve) Run(context wisski_distillery.Context) error {
{
if err := logging.LogOperation(func() error {
return s.Install(context.Context, context.Stderr, component.InstallationContext{})
}, context.Stderr, "Installing docker stack"); err != nil {
}, context.Stderr, context.Context, "Installing docker stack"); err != nil {
return err
}
if err := logging.LogOperation(func() error {
return s.Update(context.Context, context.Stderr, true)
}, context.Stderr, "Updating docker stack"); err != nil {
}, context.Stderr, context.Context, "Updating docker stack"); err != nil {
return err
}
}
// and we're done!
logging.LogMessage(context.Stderr, "Instance has been reserved")
logging.LogMessage(context.Stderr, context.Context, "Instance has been reserved")
context.Printf("URL: %s\n", instance.URL().String())
return nil

View file

@ -53,7 +53,7 @@ func (sp systempause) Run(context wisski_distillery.Context) error {
}
func (sp systempause) start(context wisski_distillery.Context, dis *dis.Distillery) error {
logging.LogMessage(context.Stderr, "Starting Components")
logging.LogMessage(context.Stderr, context.Context, "Starting Components")
// find all the core stacks
if err := status.RunErrorGroup(context.Stderr, status.Group[component.Installable, error]{
@ -69,7 +69,7 @@ func (sp systempause) start(context wisski_distillery.Context, dis *dis.Distille
return err
}
logging.LogMessage(context.Stderr, "Starting Up WissKIs")
logging.LogMessage(context.Stderr, context.Context, "Starting Up WissKIs")
// find the instances
wissKIs, err := dis.Instances().All(context.Context)
@ -95,7 +95,7 @@ func (sp systempause) start(context wisski_distillery.Context, dis *dis.Distille
}
func (sp systempause) stop(context wisski_distillery.Context, dis *dis.Distillery) error {
logging.LogMessage(context.Stderr, "Shutting Down WissKIs")
logging.LogMessage(context.Stderr, context.Context, "Shutting Down WissKIs")
// find the instances
wissKIs, err := dis.Instances().All(context.Context)
@ -117,7 +117,7 @@ func (sp systempause) stop(context wisski_distillery.Context, dis *dis.Distiller
return err
}
logging.LogMessage(context.Stderr, "Shutting Down Components")
logging.LogMessage(context.Stderr, context.Context, "Shutting Down Components")
// find all the core stacks
if err := status.RunErrorGroup(context.Stderr, status.Group[component.Installable, error]{

View file

@ -66,7 +66,7 @@ func (si systemupdate) Run(context wisski_distillery.Context) error {
dis := context.Environment
// create all the other directories
logging.LogMessage(context.Stderr, "Ensuring distillery installation directories exist")
logging.LogMessage(context.Stderr, context.Context, "Ensuring distillery installation directories exist")
for _, d := range []string{
dis.Config.DeployRoot,
dis.Instances().Path(),
@ -81,7 +81,7 @@ func (si systemupdate) Run(context wisski_distillery.Context) error {
if si.InstallDocker {
// install system updates
logging.LogMessage(context.Stderr, "Updating Operating System Packages")
logging.LogMessage(context.Stderr, context.Context, "Updating Operating System Packages")
if err := si.mustExec(context, "", "apt-get", "update"); err != nil {
return err
}
@ -90,7 +90,7 @@ func (si systemupdate) Run(context wisski_distillery.Context) error {
}
// install docker
logging.LogMessage(context.Stderr, "Installing / Updating Docker")
logging.LogMessage(context.Stderr, context.Context, "Installing / Updating Docker")
if err := si.mustExec(context, "", "apt-get", "install", "curl"); err != nil {
return err
}
@ -100,19 +100,19 @@ func (si systemupdate) Run(context wisski_distillery.Context) error {
}
}
logging.LogMessage(context.Stderr, "Checking that 'docker' is installed")
logging.LogMessage(context.Stderr, context.Context, "Checking that 'docker' is installed")
if err := si.mustExec(context, "", "docker", "--version", dis.Config.DockerNetworkName); err != nil {
return err
}
logging.LogMessage(context.Stderr, "Checking that 'docker compose' is available")
logging.LogMessage(context.Stderr, context.Context, "Checking that 'docker compose' is available")
if err := si.mustExec(context, "", "docker", "compose", "version"); err != nil {
return err
}
// create the docker network
// TODO: Use docker API for this
logging.LogMessage(context.Stderr, "Updating Docker Configuration")
logging.LogMessage(context.Stderr, context.Context, "Updating Docker Configuration")
si.mustExec(context, "", "docker", "network", "create", dis.Config.DockerNetworkName)
// install and update the various stacks!
@ -155,7 +155,7 @@ func (si systemupdate) Run(context wisski_distillery.Context) error {
return ud.Update(context.Context, writer)
},
}, dis.Installable())
}, context.Stderr, "Performing Stack Updates"); err != nil {
}, context.Stderr, context.Context, "Performing Stack Updates"); err != nil {
return err
}
@ -169,17 +169,17 @@ func (si systemupdate) Run(context wisski_distillery.Context) error {
return nil
}
return item.Update(context.Context, context.Stderr)
}, context.Stderr, "Updating Component: %s", name); err != nil {
}, context.Stderr, context.Context, "Updating Component: %s", name); err != nil {
return errBootstrapComponent.WithMessageF(name, err)
}
}
return nil
}, context.Stderr, "Performing Component Updates"); err != nil {
}, context.Stderr, context.Context, "Performing Component Updates"); err != nil {
return err
}
// TODO: Register cronjob in /etc/cron.d!
logging.LogMessage(context.Stderr, "System has been updated")
logging.LogMessage(context.Stderr, context.Context, "System has been updated")
return nil
}

View file

@ -7,6 +7,7 @@ import (
wisski_distillery "github.com/FAU-CDI/wisski-distillery"
"github.com/FAU-CDI/wisski-distillery/internal/cli"
"github.com/FAU-CDI/wisski-distillery/internal/wisski"
"github.com/FAU-CDI/wisski-distillery/pkg/logging"
"github.com/tkw1536/goprogram/exit"
"github.com/tkw1536/goprogram/status"
@ -43,7 +44,7 @@ func (upc updateprefixconfig) Run(context wisski_distillery.Context) error {
}
return status.WriterGroup(context.Stderr, upc.Parallel, func(instance *wisski.WissKI, writer io.Writer) error {
fmt.Fprintln(writer, "reading prefixes")
logging.Progress(writer, context.Context, "reading prefixes")
err := instance.Prefixes().Update(context.Context)
if err != nil {
return errPrefixUpdateFailed.Wrap(err)