frostfs-node/pkg/services/audit/report.go
Leonard Lyubich 3ec342b2c3 [#259] services/audit: Implement PDP check
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-12-25 16:49:27 +03:00

62 lines
1.4 KiB
Go

package audit
import (
"github.com/nspcc-dev/neofs-api-go/pkg/audit"
"github.com/nspcc-dev/neofs-api-go/pkg/container"
"github.com/nspcc-dev/neofs-api-go/pkg/object"
)
// Report tracks the progress of auditing container data.
type Report struct {
res *audit.Result
}
// Reporter is an interface of the entity that records
// the data audit report.
type Reporter interface {
WriteReport(r *Report) error
}
// NewReport creates and returns blank Report instance.
func NewReport(cid *container.ID) *Report {
rep := &Report{
res: audit.NewResult(),
}
rep.res.SetContainerID(cid)
return rep
}
// Result forms the structure of the data audit result.
func (r *Report) Result() *audit.Result {
return r.res
}
// Complete completes audit report.
func (r *Report) Complete() {
r.res.SetComplete(true)
}
// PassedPoR updates list of passed storage groups.
func (r *Report) PassedPoR(sg *object.ID) {
r.res.SetPassSG(append(r.res.PassSG(), sg))
}
// FailedPoR updates list of failed storage groups.
func (r *Report) FailedPoR(sg *object.ID) {
r.res.SetFailSG(append(r.res.FailSG(), sg))
}
// SetPlacementCounters sets counters of compliance with placement.
func (r *Report) SetPlacementCounters(hit, miss, fail uint32) {
r.res.SetHit(hit)
r.res.SetMiss(miss)
r.res.SetFail(fail)
}
// SetPDPResults sets lists of nodes according to their PDP results.
func (r *Report) SetPDPResults(passed, failed [][]byte) {
r.res.SetPassNodes(passed)
r.res.SetFailNodes(failed)
}