Files
kopia/cli/auto_upgrade.go
Jarek Kowalski 30ca3e2e6c Upgraded linter to 1.40.1 (#1072)
* tools: upgraded linter to 1.40.1

* lint: fixed nolintlint vionlations

* lint: disabled tagliatele linter

* lint: fixed remaining warnings
2021-05-15 12:12:34 -07:00

55 lines
1.4 KiB
Go

package cli
import (
"context"
"github.com/pkg/errors"
"github.com/kopia/kopia/repo"
"github.com/kopia/kopia/repo/maintenance"
)
func maybeAutoUpgradeRepository(ctx context.Context, r repo.Repository) error {
// only upgrade repository when it's directly connected, not via API.
dr, _ := r.(repo.DirectRepository)
if dr == nil {
return nil
}
has, err := maintenance.HasParams(ctx, r)
if err != nil {
return errors.Wrap(err, "error looking for maintenance parameters")
}
if has {
return nil
}
log(ctx).Debugf("Setting default maintenance parameters...")
// nolint:wrapcheck
return repo.DirectWriteSession(ctx, dr, repo.WriteSessionOptions{
Purpose: "setDefaultMaintenanceParameters",
}, func(w repo.DirectRepositoryWriter) error {
return setDefaultMaintenanceParameters(ctx, w)
})
}
func setDefaultMaintenanceParameters(ctx context.Context, rep repo.RepositoryWriter) error {
p := maintenance.DefaultParams()
p.Owner = rep.ClientOptions().UsernameAtHost()
if err := maintenance.SetParams(ctx, rep, &p); err != nil {
return errors.Wrap(err, "unable to set maintenance params")
}
log(ctx).Infof(`
NOTE: Kopia will perform quick maintenance of the repository automatically every %v
and full maintenance every %v when running as %v.
See https://kopia.io/docs/advanced/maintenance/ for more information.
`, p.QuickCycle.Interval, p.FullCycle.Interval, p.Owner)
return nil
}