storj/storagenode/satellites/satellites.go

61 lines
1.9 KiB
Go
Raw Normal View History

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
package satellites
import (
"context"
"time"
"storj.io/storj/pkg/storj"
)
// Status refers to the state of the relationship with a satellites
type Status = int
const (
//Unexpected status should not be used for sanity checking
Unexpected Status = 0
//Normal status reflects a lack of graceful exit
Normal = 1
//Exiting reflects an active graceful exit
Exiting = 2
//ExitSucceeded reflects a graceful exit that succeeded
ExitSucceeded = 3
//ExitFailed reflects a graceful exit that failed
ExitFailed = 4
)
// ExitProgress contains the status of a graceful exit
type ExitProgress struct {
SatelliteID storj.NodeID
InitiatedAt *time.Time
FinishedAt *time.Time
StartingDiskUsage int64
BytesDeleted int64
CompletionReceipt []byte
}
// Satellite contains the satellite and status
type Satellite struct {
SatelliteID storj.NodeID
AddedAt time.Time
Status int32
}
// DB works with satellite database
//
// architecture: Database
type DB interface {
// GetSatellite retrieves that satellite by ID
GetSatellite(ctx context.Context, satelliteID storj.NodeID) (satellite Satellite, err error)
// InitiateGracefulExit updates the database to reflect the beginning of a graceful exit
InitiateGracefulExit(ctx context.Context, satelliteID storj.NodeID, intitiatedAt time.Time, startingDiskUsage int64) error
// UpdateGracefulExit increments the total bytes deleted during a graceful exit
UpdateGracefulExit(ctx context.Context, satelliteID storj.NodeID, bytesDeleted int64) error
// CompleteGracefulExit updates the database when a graceful exit is completed or failed
CompleteGracefulExit(ctx context.Context, satelliteID storj.NodeID, finishedAt time.Time, exitStatus Status, completionReceipt []byte) error
// ListGracefulExits lists all graceful exit records
ListGracefulExits(ctx context.Context) ([]ExitProgress, error)
}