From 9a6f6a8e2fc1374b40461a08d2ca68c71906d5b6 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 28 Mar 2023 14:39:42 -0400 Subject: [PATCH] tweaks, improvements, and minor fixes to limits infrastructure as a result of share limit testing (#276) --- controller/emailUi/model.go | 1 + controller/limits/agent.go | 19 ++++++++++--------- controller/limits/email.go | 4 +++- controller/limits/shareWarningAction.go | 14 ++++++++------ 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/controller/emailUi/model.go b/controller/emailUi/model.go index 8e30b336..829a8372 100644 --- a/controller/emailUi/model.go +++ b/controller/emailUi/model.go @@ -9,6 +9,7 @@ import ( type WarningEmail struct { EmailAddress string Detail string + Version string } func (we WarningEmail) MergeTemplate(filename string) (string, error) { diff --git a/controller/limits/agent.go b/controller/limits/agent.go index 3a8b9915..67e5632e 100644 --- a/controller/limits/agent.go +++ b/controller/limits/agent.go @@ -10,6 +10,7 @@ import ( "github.com/openziti/zrok/util" "github.com/pkg/errors" "github.com/sirupsen/logrus" + "reflect" "time" ) @@ -167,7 +168,7 @@ func (a *Agent) enforce(u *metrics.Usage) error { // run account limit actions for _, action := range a.acctLimitActions { if err := action.HandleAccount(acct, rxBytes, txBytes, a.cfg.Bandwidth.PerAccount, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := trx.Commit(); err != nil { @@ -204,7 +205,7 @@ func (a *Agent) enforce(u *metrics.Usage) error { // run account warning actions for _, action := range a.acctWarningActions { if err := action.HandleAccount(acct, rxBytes, txBytes, a.cfg.Bandwidth.PerAccount, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := trx.Commit(); err != nil { @@ -243,7 +244,7 @@ func (a *Agent) enforce(u *metrics.Usage) error { // run environment limit actions for _, action := range a.envLimitActions { if err := action.HandleEnvironment(env, rxBytes, txBytes, a.cfg.Bandwidth.PerEnvironment, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := trx.Commit(); err != nil { @@ -280,7 +281,7 @@ func (a *Agent) enforce(u *metrics.Usage) error { // run environment warning actions for _, action := range a.envWarningActions { if err := action.HandleEnvironment(env, rxBytes, txBytes, a.cfg.Bandwidth.PerEnvironment, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := trx.Commit(); err != nil { @@ -320,7 +321,7 @@ func (a *Agent) enforce(u *metrics.Usage) error { // run share limit actions for _, action := range a.shrLimitActions { if err := action.HandleShare(shr, rxBytes, txBytes, a.cfg.Bandwidth.PerShare, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := trx.Commit(); err != nil { @@ -358,7 +359,7 @@ func (a *Agent) enforce(u *metrics.Usage) error { // run share warning actions for _, action := range a.shrWarningActions { if err := action.HandleShare(shr, rxBytes, txBytes, a.cfg.Bandwidth.PerShare, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := trx.Commit(); err != nil { @@ -403,7 +404,7 @@ func (a *Agent) relax() error { // run relax actions for share for _, action := range a.shrRelaxActions { if err := action.HandleShare(shr, rxBytes, txBytes, a.cfg.Bandwidth.PerShare, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := a.str.DeleteShareLimitJournalForShare(shr.Id, trx); err == nil { @@ -435,7 +436,7 @@ func (a *Agent) relax() error { // run relax actions for environment for _, action := range a.envRelaxActions { if err := action.HandleEnvironment(env, rxBytes, txBytes, a.cfg.Bandwidth.PerEnvironment, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := a.str.DeleteEnvironmentLimitJournalForEnvironment(env.Id, trx); err == nil { @@ -467,7 +468,7 @@ func (a *Agent) relax() error { // run relax actions for account for _, action := range a.acctRelaxActions { if err := action.HandleAccount(acct, rxBytes, txBytes, a.cfg.Bandwidth.PerAccount, trx); err != nil { - return err + return errors.Wrapf(err, "%v", reflect.TypeOf(action).String()) } } if err := a.str.DeleteAccountLimitJournalForAccount(acct.Id, trx); err == nil { diff --git a/controller/limits/email.go b/controller/limits/email.go index 56680aff..ce60bc8e 100644 --- a/controller/limits/email.go +++ b/controller/limits/email.go @@ -1,6 +1,7 @@ package limits import ( + "github.com/openziti/zrok/build" "github.com/openziti/zrok/controller/emailUi" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -11,13 +12,14 @@ func sendLimitWarningEmail(cfg *emailUi.Config, emailTo string, limit *Bandwidth emailData := &emailUi.WarningEmail{ EmailAddress: emailTo, Detail: describeLimit(limit, rxBytes, txBytes), + Version: build.String(), } plainBody, err := emailData.MergeTemplate("limitWarning.gotext") if err != nil { return err } - htmlBody, err := emailData.MergeTemplate("resetPassword.gohtml") + htmlBody, err := emailData.MergeTemplate("limitWarning.gohtml") if err != nil { return err } diff --git a/controller/limits/shareWarningAction.go b/controller/limits/shareWarningAction.go index c8ca9e65..6514984a 100644 --- a/controller/limits/shareWarningAction.go +++ b/controller/limits/shareWarningAction.go @@ -27,13 +27,15 @@ func (a *shareWarningAction) HandleShare(shr *store.Share, rxBytes, txBytes int6 return err } - acct, err := a.str.GetAccount(env.Id, trx) - if err != nil { - return err - } + if env.AccountId != nil { + acct, err := a.str.GetAccount(*env.AccountId, trx) + if err != nil { + return err + } - if err := sendLimitWarningEmail(a.cfg, acct.Email, limit, rxBytes, txBytes); err != nil { - return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + if err := sendLimitWarningEmail(a.cfg, acct.Email, limit, rxBytes, txBytes); err != nil { + return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + } } return nil