mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
866dc94cea
* Add etcd snapshot and restore Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * fix error logs Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * goimports Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * fix flag describtion Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * Add disable snapshot and retention Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * use creation time for snapshot retention Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * unexport method, update var name Signed-off-by: Brian Downs <brian.downs@gmail.com> * adjust snapshot flags Signed-off-by: Brian Downs <brian.downs@gmail.com> * update var name, string concat Signed-off-by: Brian Downs <brian.downs@gmail.com> * revert previous change, create constants Signed-off-by: Brian Downs <brian.downs@gmail.com> * update Signed-off-by: Brian Downs <brian.downs@gmail.com> * updates Signed-off-by: Brian Downs <brian.downs@gmail.com> * type assertion error checking Signed-off-by: Brian Downs <brian.downs@gmail.com> * update Signed-off-by: Brian Downs <brian.downs@gmail.com> * update Signed-off-by: Brian Downs <brian.downs@gmail.com> * update Signed-off-by: Brian Downs <brian.downs@gmail.com> * pr remediation Signed-off-by: Brian Downs <brian.downs@gmail.com> * pr remediation Signed-off-by: Brian Downs <brian.downs@gmail.com> * pr remediation Signed-off-by: Brian Downs <brian.downs@gmail.com> * pr remediation Signed-off-by: Brian Downs <brian.downs@gmail.com> * pr remediation Signed-off-by: Brian Downs <brian.downs@gmail.com> * updates Signed-off-by: Brian Downs <brian.downs@gmail.com> * updates Signed-off-by: Brian Downs <brian.downs@gmail.com> * simplify logic, remove unneeded function Signed-off-by: Brian Downs <brian.downs@gmail.com> * update flags Signed-off-by: Brian Downs <brian.downs@gmail.com> * update flags Signed-off-by: Brian Downs <brian.downs@gmail.com> * add comment Signed-off-by: Brian Downs <brian.downs@gmail.com> * exit on restore completion, update flag names, move retention check Signed-off-by: Brian Downs <brian.downs@gmail.com> * exit on restore completion, update flag names, move retention check Signed-off-by: Brian Downs <brian.downs@gmail.com> * exit on restore completion, update flag names, move retention check Signed-off-by: Brian Downs <brian.downs@gmail.com> * update disable snapshots flag and field names Signed-off-by: Brian Downs <brian.downs@gmail.com> * move function Signed-off-by: Brian Downs <brian.downs@gmail.com> * update field names Signed-off-by: Brian Downs <brian.downs@gmail.com> * update var and field names Signed-off-by: Brian Downs <brian.downs@gmail.com> * update var and field names Signed-off-by: Brian Downs <brian.downs@gmail.com> * update defaultSnapshotIntervalMinutes to 12 like rke Signed-off-by: Brian Downs <brian.downs@gmail.com> * update directory perms Signed-off-by: Brian Downs <brian.downs@gmail.com> * update etc-snapshot-dir usage Signed-off-by: Brian Downs <brian.downs@gmail.com> * update interval to 12 hours Signed-off-by: Brian Downs <brian.downs@gmail.com> * fix usage typo Signed-off-by: Brian Downs <brian.downs@gmail.com> * add cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * add cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * add cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * wire in cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * wire in cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * wire in cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * wire in cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * wire in cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * wire in cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * wire in cron Signed-off-by: Brian Downs <brian.downs@gmail.com> * update deps target to work, add build/data target for creation, and generate Signed-off-by: Brian Downs <brian.downs@gmail.com> * remove dead make targets Signed-off-by: Brian Downs <brian.downs@gmail.com> * error handling, cluster reset functionality Signed-off-by: Brian Downs <brian.downs@gmail.com> * error handling, cluster reset functionality Signed-off-by: Brian Downs <brian.downs@gmail.com> * update Signed-off-by: Brian Downs <brian.downs@gmail.com> * remove intermediate dapper file Signed-off-by: Brian Downs <brian.downs@gmail.com> Co-authored-by: galal-hussein <hussein.galal.ahmed.11@gmail.com>
87 lines
2.5 KiB
Go
87 lines
2.5 KiB
Go
package cron
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// DefaultLogger is used by Cron if none is specified.
|
|
var DefaultLogger Logger = PrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags))
|
|
|
|
// DiscardLogger can be used by callers to discard all log messages.
|
|
var DiscardLogger Logger = PrintfLogger(log.New(ioutil.Discard, "", 0))
|
|
|
|
// Logger is the interface used in this package for logging, so that any backend
|
|
// can be plugged in. It is a subset of the github.com/go-logr/logr interface.
|
|
type Logger interface {
|
|
// Info logs routine messages about cron's operation.
|
|
Info(msg string, keysAndValues ...interface{})
|
|
// Error logs an error condition.
|
|
Error(err error, msg string, keysAndValues ...interface{})
|
|
}
|
|
|
|
// PrintfLogger wraps a Printf-based logger (such as the standard library "log")
|
|
// into an implementation of the Logger interface which logs errors only.
|
|
func PrintfLogger(l interface{ Printf(string, ...interface{}) }) Logger {
|
|
return printfLogger{l, false}
|
|
}
|
|
|
|
// VerbosePrintfLogger wraps a Printf-based logger (such as the standard library
|
|
// "log") into an implementation of the Logger interface which logs everything.
|
|
func VerbosePrintfLogger(l interface{ Printf(string, ...interface{}) }) Logger {
|
|
return printfLogger{l, true}
|
|
}
|
|
|
|
type printfLogger struct {
|
|
logger interface{ Printf(string, ...interface{}) }
|
|
logInfo bool
|
|
}
|
|
|
|
func (pl printfLogger) Info(msg string, keysAndValues ...interface{}) {
|
|
if pl.logInfo {
|
|
keysAndValues = formatTimes(keysAndValues)
|
|
pl.logger.Printf(
|
|
formatString(len(keysAndValues)),
|
|
append([]interface{}{msg}, keysAndValues...)...)
|
|
}
|
|
}
|
|
|
|
func (pl printfLogger) Error(err error, msg string, keysAndValues ...interface{}) {
|
|
keysAndValues = formatTimes(keysAndValues)
|
|
pl.logger.Printf(
|
|
formatString(len(keysAndValues)+2),
|
|
append([]interface{}{msg, "error", err}, keysAndValues...)...)
|
|
}
|
|
|
|
// formatString returns a logfmt-like format string for the number of
|
|
// key/values.
|
|
func formatString(numKeysAndValues int) string {
|
|
var sb strings.Builder
|
|
sb.WriteString("%s")
|
|
if numKeysAndValues > 0 {
|
|
sb.WriteString(", ")
|
|
}
|
|
for i := 0; i < numKeysAndValues/2; i++ {
|
|
if i > 0 {
|
|
sb.WriteString(", ")
|
|
}
|
|
sb.WriteString("%v=%v")
|
|
}
|
|
return sb.String()
|
|
}
|
|
|
|
// formatTimes formats any time.Time values as RFC3339.
|
|
func formatTimes(keysAndValues []interface{}) []interface{} {
|
|
var formattedArgs []interface{}
|
|
for _, arg := range keysAndValues {
|
|
if t, ok := arg.(time.Time); ok {
|
|
arg = t.Format(time.RFC3339)
|
|
}
|
|
formattedArgs = append(formattedArgs, arg)
|
|
}
|
|
return formattedArgs
|
|
}
|