2019-12-27 22:03:03 +00:00
|
|
|
// Copyright (C) 2019 Storj Labs, Inc.
|
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
2019-12-30 19:42:10 +00:00
|
|
|
package downtime
|
2019-12-27 22:03:03 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"storj.io/common/storj"
|
|
|
|
)
|
|
|
|
|
|
|
|
// NodeOfflineTime represents a record in the nodes_offline_time table
|
|
|
|
type NodeOfflineTime struct {
|
|
|
|
NodeID storj.NodeID
|
|
|
|
TrackedAt time.Time
|
|
|
|
TimeOffline time.Duration
|
|
|
|
}
|
|
|
|
|
|
|
|
// DB implements basic operations for downtime tracking service
|
|
|
|
//
|
|
|
|
// architecture: Database
|
|
|
|
type DB interface {
|
|
|
|
// Add adds a record for a particular node ID with the amount of time it has been offline.
|
|
|
|
Add(ctx context.Context, nodeID storj.NodeID, trackedTime time.Time, timeOffline time.Duration) error
|
|
|
|
// GetOfflineTime gets the total amount of offline time for a node within a certain timeframe.
|
|
|
|
// "total offline time" is defined as the sum of all offline time windows that begin inside the provided time window.
|
|
|
|
// An offline time window that began before `begin` but that overlaps with the provided time window is not included.
|
|
|
|
// An offline time window that begins within the provided time window, but that extends beyond `end` is included.
|
|
|
|
GetOfflineTime(ctx context.Context, nodeID storj.NodeID, begin, end time.Time) (time.Duration, error)
|
|
|
|
}
|