Commit 7652f86c authored by Juan Batiz-Benet's avatar Juan Batiz-Benet

fixed a parsing bug on Version.CheckPeriod

And refactored a few names/comments
parent 16b53456
......@@ -120,16 +120,18 @@ func localNode(confdir string, online bool) (*core.IpfsNode, error) {
return nil, err
}
if cfg.Version.EligibleForUpdateCheck() {
if cfg.Version.ShouldCheckForUpdate() {
obsolete := updates.CheckForUpdates()
if obsolete != nil {
if cfg.Version.Check == config.CheckError {
return nil, obsolete
}
log.Warning(fmt.Sprintf("%v", obsolete)) // when "warn" version.check mode we just show warning message
// when "warn" version.check mode we just show warning message
log.Warning(fmt.Sprintf("%v", obsolete))
} else {
// update most recent check timestamp in config
cfg.RecordCurrentUpdateCheck(filename)
config.RecordUpdateCheck(cfg, filename)
}
}
......
......@@ -11,6 +11,8 @@ import (
u "github.com/jbenet/go-ipfs/util"
)
var log = u.Logger("config")
// Identity tracks the configuration of the local node's identity.
type Identity struct {
PeerID string
......
package config
import "time"
import (
"strconv"
"time"
)
// Version regulates checking if the most recent version is run
type Version struct {
Check string // "ignore" for do not check, "warn" and "error" for reacting when obsolete
Current string // ipfs version for which config was generated
UpdateCheckedTime time.Time // timestamp for the last time API endpoint was checked for updates
UpdateCheckPeriod time.Duration // time duration over which the update check will not be performed
// Current is the ipfs version for which config was generated
Current string
// Check signals how to react on updates:
// - "ignore" for not checking
// - "warn" for issuing a warning and proceeding
// - "error" for exiting with an error
Check string
// CheckDate is a timestamp for the last time API endpoint was checked for updates
CheckDate time.Time
// CheckPeriod is the time duration over which the update check will not be performed
// (Note: cannot use time.Duration because marshalling with json breaks it)
CheckPeriod string
}
// supported Version.Check values
const (
CheckError = "error" // value for Version.Check to raise error and exit if version is obsolete
CheckWarn = "warn" // value for Version.Check to show warning message if version is obsolete
CheckIgnore = "ignore" // value for Version.Check to not perform update check
// CheckError value for Version.Check to raise error and exit if version is obsolete
CheckError = "error"
// CheckWarn value for Version.Check to show warning message if version is obsolete
CheckWarn = "warn"
// CheckIgnore value for Version.Check to not perform update check
CheckIgnore = "ignore"
)
var defaultUpdateCheckPeriod = time.Hour * 48
// defaultCheckPeriod governs h
var defaultCheckPeriod = time.Hour * 48
// EligibleForUpdateCheck returns if update check API endpoint is needed for this specific runtime
func (v *Version) EligibleForUpdateCheck() bool {
if v.Check == CheckIgnore || v.UpdateCheckedTime.Add(v.UpdateCheckPeriod).After(time.Now()) {
func (v *Version) checkPeriodDuration() time.Duration {
d, err := strconv.Atoi(v.CheckPeriod)
if err != nil {
log.Error("config.Version.CheckPeriod parse error. Using default.")
return defaultCheckPeriod
}
return time.Duration(d)
}
// ShouldCheckForUpdate returns if update check API endpoint is needed for this specific runtime
func (v *Version) ShouldCheckForUpdate() bool {
period := v.checkPeriodDuration()
if v.Check == CheckIgnore || v.CheckDate.Add(period).After(time.Now()) {
return false
}
return true
}
// RecordCurrentUpdateCheck is called to record that update check was performed and showed that the running version is the most recent one
func (cfg *Config) RecordCurrentUpdateCheck(filename string) {
cfg.Version.UpdateCheckedTime = time.Now()
if cfg.Version.UpdateCheckPeriod == time.Duration(0) {
// UpdateCheckPeriod was not initialized for some reason (e.g. config file used is broken)
cfg.Version.UpdateCheckPeriod = defaultUpdateCheckPeriod
// RecordUpdateCheck is called to record that an update check was performed,
// showing that the running version is the most recent one.
func RecordUpdateCheck(cfg *Config, filename string) {
cfg.Version.CheckDate = time.Now()
if cfg.Version.CheckPeriod == "" {
// CheckPeriod was not initialized for some reason (e.g. config file broken)
cfg.Version.CheckPeriod = strconv.Itoa(int(defaultCheckPeriod))
}
WriteConfigFile(filename, cfg)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment