Skip to content

Commit

Permalink
fix: RestPerf should not log "no instances" as error
Browse files Browse the repository at this point in the history
  • Loading branch information
cgrinds committed Oct 13, 2022
1 parent 8bcaac3 commit 1f05aae
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 11 deletions.
4 changes: 2 additions & 2 deletions cmd/collectors/rest/plugins/certificate/certificate.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func (my *Certificate) Run(data *matrix.Matrix) ([]*matrix.Matrix, error) {

// invoke private vserver cli rest and get admin vserver name
if adminVserver, err = my.GetAdminVserver(); err != nil {
if ontap.IsAPINotFound(err) {
if ontap.IsRestErr(err, ontap.APINotFound) {
my.Logger.Debug().Err(err).Msg("Failed to collect admin SVM")
} else {
my.Logger.Error().Err(err).Msg("Failed to collect admin SVM")
Expand All @@ -82,7 +82,7 @@ func (my *Certificate) Run(data *matrix.Matrix) ([]*matrix.Matrix, error) {

// invoke private ssl cli rest and get the admin SVM's serial number
if adminVserverSerial, err = my.GetSecuritySsl(adminVserver); err != nil {
if ontap.IsAPINotFound(err) {
if ontap.IsRestErr(err, ontap.APINotFound) {
my.Logger.Debug().Err(err).Msg("Failed to collect admin SVM's serial number")
} else {
my.Logger.Error().Msg("Failed to collect admin SVM's serial number")
Expand Down
2 changes: 1 addition & 1 deletion cmd/collectors/rest/plugins/svm/svm.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func (my *SVM) Run(data *matrix.Matrix) ([]*matrix.Matrix, error) {

// invoke nameservice-nsswitch-get-iter zapi and get nsswitch info
if my.nsswitchInfo, err = my.GetNSSwitchInfo(data); err != nil {
if errs.IsAPINotFound(err) {
if errs.IsRestErr(err, errs.APINotFound) {
my.Logger.Debug().Err(err).Msg("Failed to collect nsswitch info")
} else {
my.Logger.Warn().Err(err).Msg("Failed to collect nsswitch info")
Expand Down
2 changes: 1 addition & 1 deletion cmd/collectors/rest/plugins/volume/volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func (my *Volume) Run(data *matrix.Matrix) ([]*matrix.Matrix, error) {

// invoke disk rest and populate info in aggrsMap
if disks, err := my.getEncryptedDisks(); err != nil {
if errs.IsAPINotFound(err) {
if errs.IsRestErr(err, errs.APINotFound) {
my.Logger.Debug().Err(err).Msg("Failed to collect disk data")
} else {
my.Logger.Error().Err(err).Msg("Failed to collect disk data")
Expand Down
16 changes: 12 additions & 4 deletions cmd/collectors/restperf/restperf.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,7 @@ func (r *RestPerf) PollCounter() (map[string]*matrix.Matrix, error) {

records, err = rest.Fetch(r.Client, href)
if err != nil {
r.Logger.Error().Err(err).Str("href", href).Msg("Failed to fetch data")
return nil, err
return r.handleError(err, href)
}

firstRecord := records[0]
Expand Down Expand Up @@ -1074,8 +1073,7 @@ func (r *RestPerf) PollInstance() (map[string]*matrix.Matrix, error) {

records, err = rest.Fetch(r.Client, href)
if err != nil {
r.Logger.Error().Err(err).Str("href", href).Msg("Failed to fetch data")
return nil, err
return r.handleError(err, href)
}

if len(records) == 0 {
Expand Down Expand Up @@ -1150,6 +1148,16 @@ func (r *RestPerf) PollInstance() (map[string]*matrix.Matrix, error) {
return nil, err
}

func (r *RestPerf) handleError(err error, href string) (map[string]*matrix.Matrix, error) {
if errs.IsRestErr(err, errs.TableNotFound) {
// the table does not exist, log as info and return no instances so the task goes to stand-by
r.Logger.Info().Str("href", href).Msg(err.Error())
return nil, errs.New(errs.ErrNoInstance, err.Error())
}
r.Logger.Error().Err(err).Str("href", href).Msg("Failed to fetch data")
return nil, err
}

func isWorkloadObject(query string) bool {
_, ok := qosQueries[query]
return ok
Expand Down
7 changes: 4 additions & 3 deletions pkg/errs/ontap.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ type OntapRestCode struct {
}

var (
APINotFound = OntapRestCode{"API not found", 3}
APINotFound = OntapRestCode{"API not found", 3}
TableNotFound = OntapRestCode{"Table is not found", 8585320}
)

func IsAPINotFound(err error) bool {
func IsRestErr(err error, sentinel OntapRestCode) bool {
var restErr *RestError
if errors.As(err, &restErr) {
if restErr.Code == APINotFound.Code {
if restErr.Code == sentinel.Code {
return true
}
}
Expand Down

0 comments on commit 1f05aae

Please sign in to comment.