satellite

package
v1.80.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 5, 2023 License: AGPL-3.0 Imports: 82 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API added in v0.23.0

type API struct {
	Log      *zap.Logger
	Identity *identity.FullIdentity
	DB       DB

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Dialer          rpc.Dialer
	Server          *server.Server
	ExternalAddress string

	Version struct {
		Chore   *checker.Chore
		Service *checker.Service
	}

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	Contact struct {
		Service  *contact.Service
		Endpoint *contact.Endpoint
	}

	Overlay struct {
		DB      overlay.DB
		Service *overlay.Service
	}

	Reputation struct {
		Service *reputation.Service
	}

	Orders struct {
		DB       orders.DB
		Endpoint *orders.Endpoint
		Service  *orders.Service
		Chore    *orders.Chore
	}

	Metainfo struct {
		Metabase      *metabase.DB
		PieceDeletion *piecedeletion.Service
		Endpoint      *metainfo.Endpoint
	}

	Userinfo struct {
		Endpoint *userinfo.Endpoint
	}

	Accounting struct {
		ProjectUsage *accounting.Service
	}

	LiveAccounting struct {
		Cache accounting.Cache
	}

	ProjectLimits struct {
		Cache *accounting.ProjectLimitCache
	}

	Mail struct {
		Service *mailservice.Service
	}

	Payments struct {
		Accounts       payments.Accounts
		DepositWallets payments.DepositWallets

		StorjscanService *storjscan.Service
		StorjscanClient  *storjscan.Client

		StripeService *stripe.Service
		StripeClient  stripe.Client
	}

	REST struct {
		Keys *restkeys.Service
	}

	Console struct {
		Listener   net.Listener
		Service    *console.Service
		Endpoint   *consoleweb.Server
		AuthTokens *consoleauth.Service
	}

	NodeStats struct {
		Endpoint *nodestats.Endpoint
	}

	OIDC struct {
		Service *oidc.Service
	}

	SNOPayouts struct {
		Endpoint *snopayouts.Endpoint
		Service  *snopayouts.Service
		DB       snopayouts.DB
	}

	GracefulExit struct {
		Endpoint *gracefulexit.Endpoint
	}

	Analytics struct {
		Service *analytics.Service
	}

	ABTesting struct {
		Service *abtesting.Service
	}

	Buckets struct {
		Service *buckets.Service
	}
}

API is the satellite API process.

architecture: Peer

func NewAPI added in v0.23.0

func NewAPI(log *zap.Logger, full *identity.FullIdentity, db DB,
	metabaseDB *metabase.DB, revocationDB extensions.RevocationDB,
	liveAccounting accounting.Cache, rollupsWriteCache *orders.RollupsWriteCache,
	config *Config, versionInfo version.Info, atomicLogLevel *zap.AtomicLevel) (*API, error)

NewAPI creates a new satellite API process.

func (*API) Addr added in v0.23.0

func (peer *API) Addr() string

Addr returns the public address.

func (*API) Close added in v0.23.0

func (peer *API) Close() error

Close closes all the resources.

func (*API) ID added in v0.23.0

func (peer *API) ID() storj.NodeID

ID returns the peer ID.

func (*API) PrivateAddr added in v0.23.0

func (peer *API) PrivateAddr() string

PrivateAddr returns the private address.

func (*API) Run added in v0.23.0

func (peer *API) Run(ctx context.Context) (err error)

Run runs satellite until it's either closed or it errors.

func (*API) URL added in v0.23.0

func (peer *API) URL() storj.NodeURL

URL returns the storj.NodeURL.

type Admin added in v0.33.2

type Admin struct {
	// core dependencies
	Log        *zap.Logger
	Identity   *identity.FullIdentity
	DB         DB
	MetabaseDB *metabase.DB

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	Version struct {
		Chore   *checker.Chore
		Service *checker.Service
	}

	Analytics struct {
		Service *analytics.Service
	}

	Payments struct {
		Accounts payments.Accounts
		Service  *stripe.Service
		Stripe   stripe.Client
	}

	Admin struct {
		Listener net.Listener
		Server   *admin.Server
	}

	Buckets struct {
		Service *buckets.Service
	}

	REST struct {
		Keys *restkeys.Service
	}

	FreezeAccounts struct {
		Service *console.AccountFreezeService
	}
}

Admin is the satellite core process that runs chores.

architecture: Peer

func NewAdmin added in v0.33.2

func NewAdmin(log *zap.Logger, full *identity.FullIdentity, db DB, metabaseDB *metabase.DB,
	versionInfo version.Info, config *Config, atomicLogLevel *zap.AtomicLevel) (*Admin, error)

NewAdmin creates a new satellite admin peer.

func (*Admin) Close added in v0.33.2

func (peer *Admin) Close() error

Close closes all the resources.

func (*Admin) ID added in v0.33.2

func (peer *Admin) ID() storj.NodeID

ID returns the peer ID.

func (*Admin) Run added in v0.33.2

func (peer *Admin) Run(ctx context.Context) (err error)

Run runs satellite until it's either closed or it errors.

type Auditor added in v1.70.1

type Auditor struct {
	Log      *zap.Logger
	Identity *identity.FullIdentity

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Dialer rpc.Dialer

	Version struct {
		Chore   *version_checker.Chore
		Service *version_checker.Service
	}

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	Mail       *mailservice.Service
	Overlay    *overlay.Service
	Reputation *reputation.Service
	Orders     struct {
		Service *orders.Service
	}

	Audit struct {
		Verifier       *audit.Verifier
		Reverifier     *audit.Reverifier
		VerifyQueue    audit.VerifyQueue
		ReverifyQueue  audit.ReverifyQueue
		Reporter       audit.Reporter
		Worker         *audit.Worker
		ReverifyWorker *audit.ReverifyWorker
	}
}

Auditor is the auditor process.

architecture: Peer

func NewAuditor added in v1.70.1

func NewAuditor(log *zap.Logger, full *identity.FullIdentity,
	metabaseDB *metabase.DB,
	revocationDB extensions.RevocationDB,
	verifyQueue audit.VerifyQueue,
	reverifyQueue audit.ReverifyQueue,
	overlayCache overlay.DB,
	nodeEvents nodeevents.DB,
	reputationdb reputation.DB,
	containmentDB audit.Containment,
	versionInfo version.Info, config *Config, atomicLogLevel *zap.AtomicLevel,
) (*Auditor, error)

NewAuditor creates a new auditor peer.

func (*Auditor) Close added in v1.70.1

func (peer *Auditor) Close() error

Close closes all the resources.

func (*Auditor) ID added in v1.70.1

func (peer *Auditor) ID() storj.NodeID

ID returns the peer ID.

func (*Auditor) Run added in v1.70.1

func (peer *Auditor) Run(ctx context.Context) (err error)

Run runs the auditor process until it's either closed or it errors.

type Config

type Config struct {
	Identity identity.Config
	Server   server.Config
	Debug    debug.Config

	Admin admin.Config

	Contact      contact.Config
	Overlay      overlay.Config
	OfflineNodes offlinenodes.Config
	NodeEvents   nodeevents.Config
	StrayNodes   straynodes.Config

	Metainfo metainfo.Config
	Orders   orders.Config

	Userinfo userinfo.Config

	Reputation reputation.Config

	Checker  checker.Config
	Repairer repairer.Config
	Audit    audit.Config

	GarbageCollection   sender.Config
	GarbageCollectionBF bloomfilter.Config

	RangedLoop rangedloop.Config

	ExpiredDeletion expireddeletion.Config
	ZombieDeletion  zombiedeletion.Config

	Tally            tally.Config
	Rollup           rollup.Config
	RollupArchive    rolluparchive.Config
	LiveAccounting   live.Config
	ProjectBWCleanup projectbwcleanup.Config

	Mail mailservice.Config

	Payments paymentsconfig.Config

	RESTKeys         restkeys.Config
	Console          consoleweb.Config
	ConsoleAuth      consoleauth.Config
	EmailReminders   emailreminders.Config
	ConsoleDBCleanup dbcleanup.Config

	AccountFreeze accountfreeze.Config

	Version version_checker.Config

	GracefulExit gracefulexit.Config

	Compensation compensation.Config

	ProjectLimit accounting.ProjectLimitConfig

	Analytics analytics.Config
}

Config is the global config satellite.

type Core added in v0.25.0

type Core struct {
	// core dependencies
	Log      *zap.Logger
	Identity *identity.FullIdentity
	DB       DB

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Dialer rpc.Dialer

	Version struct {
		Chore   *version_checker.Chore
		Service *version_checker.Service
	}

	Analytics struct {
		Service *analytics.Service
	}

	Mail struct {
		Service        *mailservice.Service
		EmailReminders *emailreminders.Chore
	}

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	// services and endpoints
	Overlay struct {
		DB                overlay.DB
		Service           *overlay.Service
		OfflineNodeEmails *offlinenodes.Chore
		DQStrayNodes      *straynodes.Chore
	}

	NodeEvents struct {
		DB       nodeevents.DB
		Notifier nodeevents.Notifier
		Chore    *nodeevents.Chore
	}

	Metainfo struct {
		Metabase *metabase.DB
	}

	Reputation struct {
		Service *reputation.Service
	}

	Audit struct {
		VerifyQueue          audit.VerifyQueue
		ReverifyQueue        audit.ReverifyQueue
		ContainmentSyncChore *audit.ContainmentSyncChore
	}

	ExpiredDeletion struct {
		Chore *expireddeletion.Chore
	}

	ZombieDeletion struct {
		Chore *zombiedeletion.Chore
	}

	Accounting struct {
		Tally                 *tally.Service
		Rollup                *rollup.Service
		RollupArchiveChore    *rolluparchive.Chore
		ProjectBWCleanupChore *projectbwcleanup.Chore
	}

	LiveAccounting struct {
		Cache accounting.Cache
	}

	Payments struct {
		AccountFreeze    *accountfreeze.Chore
		Accounts         payments.Accounts
		BillingChore     *billing.Chore
		StorjscanClient  *storjscan.Client
		StorjscanService *storjscan.Service
		StorjscanChore   *storjscan.Chore
	}

	ConsoleDBCleanup struct {
		Chore *dbcleanup.Chore
	}
}

Core is the satellite core process that runs chores.

architecture: Peer

func New

func New(log *zap.Logger, full *identity.FullIdentity, db DB,
	metabaseDB *metabase.DB, revocationDB extensions.RevocationDB,
	liveAccounting accounting.Cache, versionInfo version.Info, config *Config,
	atomicLogLevel *zap.AtomicLevel) (*Core, error)

New creates a new satellite.

func (*Core) Close added in v0.25.0

func (peer *Core) Close() error

Close closes all the resources.

func (*Core) ID added in v0.25.0

func (peer *Core) ID() storj.NodeID

ID returns the peer ID.

func (*Core) Run added in v0.25.0

func (peer *Core) Run(ctx context.Context) (err error)

Run runs satellite until it's either closed or it errors.

type DB

type DB interface {
	// MigrateToLatest initializes the database
	MigrateToLatest(ctx context.Context) error
	// CheckVersion checks the database is the correct version
	CheckVersion(ctx context.Context) error
	// Close closes the database
	Close() error

	// PeerIdentities returns a storage for peer identities
	PeerIdentities() overlay.PeerIdentities
	// OverlayCache returns database for caching overlay information
	OverlayCache() overlay.DB
	// NodeEvents returns a database for node event information
	NodeEvents() nodeevents.DB
	// Reputation returns database for audit reputation information
	Reputation() reputation.DB
	// Attribution returns database for partner keys information
	Attribution() attribution.DB
	// StoragenodeAccounting returns database for storing information about storagenode use
	StoragenodeAccounting() accounting.StoragenodeAccounting
	// ProjectAccounting returns database for storing information about project data use
	ProjectAccounting() accounting.ProjectAccounting
	// RepairQueue returns queue for segments that need repairing
	RepairQueue() queue.RepairQueue
	// VerifyQueue returns queue for segments chosen for verification
	VerifyQueue() audit.VerifyQueue
	// ReverifyQueue returns queue for pieces that need audit reverification
	ReverifyQueue() audit.ReverifyQueue
	// Console returns database for satellite console
	Console() console.DB
	// OIDC returns the database for OIDC resources.
	OIDC() oidc.DB
	// Orders returns database for orders
	Orders() orders.DB
	// Containment returns database for containment
	Containment() audit.Containment
	// Buckets returns the database to interact with buckets
	Buckets() buckets.DB
	// GracefulExit returns database for graceful exit
	GracefulExit() gracefulexit.DB
	// StripeCoinPayments returns stripecoinpayments database.
	StripeCoinPayments() stripe.DB
	// Billing returns storjscan transactions database.
	Billing() billing.TransactionsDB
	// Wallets returns storjscan wallets database.
	Wallets() storjscan.WalletsDB
	// SNOPayouts returns database for payouts.
	SNOPayouts() snopayouts.DB
	// Compensation tracks storage node compensation
	Compensation() compensation.DB
	// Revocation tracks revoked macaroons
	Revocation() revocation.DB
	// NodeAPIVersion tracks nodes observed api usage
	NodeAPIVersion() nodeapiversion.DB
	// StorjscanPayments stores payments retrieved from storjscan.
	StorjscanPayments() storjscan.PaymentsDB

	// Testing provides access to testing facilities. These should not be used in production code.
	Testing() TestingDB
}

DB is the master database for the satellite.

architecture: Master Database

type GarbageCollection added in v1.1.1

type GarbageCollection struct {
	Log      *zap.Logger
	Identity *identity.FullIdentity
	DB       DB

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Dialer rpc.Dialer

	Version struct {
		Chore   *version_checker.Chore
		Service *version_checker.Service
	}

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	Overlay struct {
		DB overlay.DB
	}

	GarbageCollection struct {
		Sender *sender.Service
	}
}

GarbageCollection is the satellite garbage collection process.

architecture: Peer

func NewGarbageCollection added in v1.1.1

func NewGarbageCollection(log *zap.Logger, full *identity.FullIdentity, db DB,
	metabaseDB *metabase.DB, revocationDB extensions.RevocationDB,
	versionInfo version.Info, config *Config, atomicLogLevel *zap.AtomicLevel) (*GarbageCollection, error)

NewGarbageCollection creates a new satellite garbage collection process.

func (*GarbageCollection) Close added in v1.1.1

func (peer *GarbageCollection) Close() error

Close closes all the resources.

func (*GarbageCollection) ID added in v1.1.1

func (peer *GarbageCollection) ID() storj.NodeID

ID returns the peer ID.

func (*GarbageCollection) Run added in v1.1.1

func (peer *GarbageCollection) Run(ctx context.Context) (err error)

Run runs satellite garbage collection until it's either closed or it errors.

type GarbageCollectionBF added in v1.63.1

type GarbageCollectionBF struct {
	Log *zap.Logger
	DB  DB

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	Overlay struct {
		DB overlay.DB
	}

	GarbageCollection struct {
		Config bloomfilter.Config
	}

	RangedLoop struct {
		Service *rangedloop.Service
	}
}

GarbageCollectionBF is the satellite garbage collection process which collects bloom filters.

architecture: Peer

func NewGarbageCollectionBF added in v1.63.1

func NewGarbageCollectionBF(log *zap.Logger, db DB, metabaseDB *metabase.DB, revocationDB extensions.RevocationDB,
	versionInfo version.Info, config *Config, atomicLogLevel *zap.AtomicLevel) (*GarbageCollectionBF, error)

NewGarbageCollectionBF creates a new satellite garbage collection peer which collects storage nodes bloom filters.

func (*GarbageCollectionBF) Close added in v1.63.1

func (peer *GarbageCollectionBF) Close() error

Close closes all the resources.

func (*GarbageCollectionBF) Run added in v1.63.1

func (peer *GarbageCollectionBF) Run(ctx context.Context) (err error)

Run runs satellite garbage collection until it's either closed or it errors.

type RangedLoop added in v1.68.1

type RangedLoop struct {
	Log *zap.Logger
	DB  DB

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Audit struct {
		Observer rangedloop.Observer
	}

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	Metrics struct {
		Observer rangedloop.Observer
	}

	Overlay struct {
		Service *overlay.Service
	}

	Repair struct {
		Observer *checker.Observer
	}

	GracefulExit struct {
		Observer rangedloop.Observer
	}

	Accounting struct {
		NodeTallyObserver *nodetally.Observer
	}

	RangedLoop struct {
		Service *rangedloop.Service
	}
}

RangedLoop is the satellite ranged loop process.

architecture: Peer

func NewRangedLoop added in v1.68.1

func NewRangedLoop(log *zap.Logger, db DB, metabaseDB *metabase.DB, config *Config, atomicLogLevel *zap.AtomicLevel) (_ *RangedLoop, err error)

NewRangedLoop creates a new satellite ranged loop process.

func (*RangedLoop) Close added in v1.68.1

func (peer *RangedLoop) Close() error

Close closes all the resources.

func (*RangedLoop) Run added in v1.68.1

func (peer *RangedLoop) Run(ctx context.Context) (err error)

Run runs satellite ranged loop until it's either closed or it errors.

type Repairer added in v0.25.0

type Repairer struct {
	Log      *zap.Logger
	Identity *identity.FullIdentity

	Servers  *lifecycle.Group
	Services *lifecycle.Group

	Dialer rpc.Dialer

	Version struct {
		Chore   *version_checker.Chore
		Service *version_checker.Service
	}

	Debug struct {
		Listener net.Listener
		Server   *debug.Server
	}

	Overlay    *overlay.Service
	Reputation *reputation.Service
	Orders     struct {
		Service *orders.Service
	}

	Audit struct {
		Reporter audit.Reporter
	}

	EcRepairer      *repairer.ECRepairer
	SegmentRepairer *repairer.SegmentRepairer
	Repairer        *repairer.Service
}

Repairer is the repairer process.

architecture: Peer

func NewRepairer added in v0.25.0

func NewRepairer(log *zap.Logger, full *identity.FullIdentity,
	metabaseDB *metabase.DB,
	revocationDB extensions.RevocationDB,
	repairQueue queue.RepairQueue,
	bucketsDB buckets.DB,
	overlayCache overlay.DB,
	nodeEvents nodeevents.DB,
	reputationdb reputation.DB,
	containmentDB audit.Containment,
	versionInfo version.Info, config *Config, atomicLogLevel *zap.AtomicLevel,
) (*Repairer, error)

NewRepairer creates a new repairer peer.

func (*Repairer) Close added in v0.25.0

func (peer *Repairer) Close() error

Close closes all the resources.

func (*Repairer) ID added in v0.25.0

func (peer *Repairer) ID() storj.NodeID

ID returns the peer ID.

func (*Repairer) Run added in v0.25.0

func (peer *Repairer) Run(ctx context.Context) (err error)

Run runs the repair process until it's either closed or it errors.

type TestingDB added in v1.73.4

type TestingDB interface {
	// RawDB returns the underlying database connection to the primary database.
	RawDB() tagsql.DB
	// Schema returns the full schema for the database.
	Schema() string
	// TestMigrateToLatest initializes the database for testplanet.
	TestMigrateToLatest(ctx context.Context) error
	// ProductionMigration returns the primary migration.
	ProductionMigration() *migrate.Migration
	// TestMigration returns the migration used for tests.
	TestMigration() *migrate.Migration
}

TestingDB defines access to database testing facilities.

Directories

Path Synopsis
live
Package live provides live accounting functionality.
Package live provides live accounting functionality.
Package admin implements administrative endpoints for satellite.
Package admin implements administrative endpoints for satellite.
ui
Package attribution implements value attribution from docs/design/value-attribution.md
Package attribution implements value attribution from docs/design/value-attribution.md
gc
Package gc contains the functions needed to run garbage collection.
Package gc contains the functions needed to run garbage collection.
bloomfilter
Package bloomfilter contains the functions needed to run part of garbage collection process.
Package bloomfilter contains the functions needed to run part of garbage collection process.
Package internalpb contains proto definitions for satellite internal tools.
Package internalpb contains proto definitions for satellite internal tools.
Package metabase implements storing objects and segements.
Package metabase implements storing objects and segements.
zombiedeletion
Package zombiedeletion contains the functions needed to run zombie objects deletion chore.
Package zombiedeletion contains the functions needed to run zombie objects deletion chore.
expireddeletion
Package expireddeletion contains the functions needed to run expired segment deletion
Package expireddeletion contains the functions needed to run expired segment deletion
piecedeletion
Package piecedeletion implements service for deleting pieces that combines concurrent requests.
Package piecedeletion implements service for deleting pieces that combines concurrent requests.
pointerverification
Package pointerverification implements verification of pointers.
Package pointerverification implements verification of pointers.
nodeselection
uploadselection
Package uploadselection implements node selection logic for uploads.
Package uploadselection implements node selection logic for uploads.
Package oidc provides all the elements needed to support OAuth and OpenID Connect workflows using Storj as an identity provider and resource server.
Package oidc provides all the elements needed to support OAuth and OpenID Connect workflows using Storj as an identity provider and resource server.
dbx

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL