Documentation ¶
Index ¶
- Variables
- type APIID
- type CidConfig
- func (c CidConfig) Validate() error
- func (c CidConfig) WithColdAddr(addr string) CidConfig
- func (c CidConfig) WithColdEnabled(enabled bool) CidConfig
- func (c CidConfig) WithColdFilCountryCodes(countryCodes []string) CidConfig
- func (c CidConfig) WithColdFilDealDuration(duration int64) CidConfig
- func (c CidConfig) WithColdFilExcludedMiners(miners []string) CidConfig
- func (c CidConfig) WithColdFilRenew(enabled bool, threshold int) CidConfig
- func (c CidConfig) WithColdFilRepFactor(repFactor int) CidConfig
- func (c CidConfig) WithColdFilTrustedMiners(miners []string) CidConfig
- func (c CidConfig) WithColdMaxPrice(maxPrice uint64) CidConfig
- func (c CidConfig) WithHotAllowUnfreeze(allow bool) CidConfig
- func (c CidConfig) WithHotEnabled(enabled bool) CidConfig
- func (c CidConfig) WithHotIpfsAddTimeout(seconds int) CidConfig
- func (c CidConfig) WithRepairable(enabled bool) CidConfig
- type CidInfo
- type CidLogger
- type CidLoggerCtxKey
- type ColdConfig
- type ColdInfo
- type ColdStorage
- type DealError
- type DefaultConfig
- type FilConfig
- type FilInfo
- type FilRenew
- type FilStorage
- type HotConfig
- type HotInfo
- type HotStorage
- type IpfsConfig
- type IpfsHotInfo
- type Job
- type JobID
- type JobStatus
- type LogEntry
- type MinerProposal
- type MinerSelector
- type MinerSelectorFilter
- type PaychDir
- type PaychInfo
- type PaychManager
- type WalletManager
Constants ¶
This section is empty.
Variables ¶
var ( // EmptyInstanceID represents an empty/invalid Instance ID. EmptyInstanceID = APIID("") )
var ( // EmptyJobID represents an empty JobID. EmptyJobID = JobID("") )
var JobStatusStr = map[JobStatus]string{ Unspecified: "Unspecified", Queued: "Queued", Executing: "Executing", Failed: "Failed", Canceled: "Canceled", Success: "Success", }
JobStatusStr maps JobStatus to describing string.
var PaychDirStr = map[PaychDir]string{ PaychDirUnspecified: "Unspecified", PaychDirInbound: "Inbound", PaychDirOutbound: "Outbound", }
PaychDirStr maps PaychDirs to describing string.
Functions ¶
This section is empty.
Types ¶
type APIID ¶
type APIID string
APIID is an identifier for a Api instance.
type CidConfig ¶
type CidConfig struct { // Cid is the Cid of the stored data. Cid cid.Cid // Hot has desired storing configuration in Hot Storage. Hot HotConfig // Cold has desired storing configuration in the Cold Storage. Cold ColdConfig // Repairable indicates if this cid config should be tracked // for auto-repair. Repairable bool }
CidConfig has a Cid desired storing configuration for a Cid in Hot and Cold storage.
func (CidConfig) WithColdAddr ¶
WithColdAddr specifies the wallet address that should be used for transactions.
func (CidConfig) WithColdEnabled ¶
WithColdEnabled allows to enable/disable Cold storage usage.
func (CidConfig) WithColdFilCountryCodes ¶
WithColdFilCountryCodes defines a list of allowed country codes to select miners for deals.
func (CidConfig) WithColdFilDealDuration ¶
WithColdFilDealDuration defines the duration used for deals for Filecoin storage.
func (CidConfig) WithColdFilExcludedMiners ¶
WithColdFilExcludedMiners defines a list of miner addresses which won't be selected for making deals, no matter if they comply to other filters in the configuration.
func (CidConfig) WithColdFilRenew ¶
WithColdFilRenew specifies if deals should be renewed before they expire with a particular threshold chain epochs.
func (CidConfig) WithColdFilRepFactor ¶
WithColdFilRepFactor defines the replication factor for Filecoin storage.
func (CidConfig) WithColdFilTrustedMiners ¶
WithColdFilTrustedMiners defines a list of trusted miners addresses which will be returned if available. If more miners reusults are needed, other filters will be applied as usual.
func (CidConfig) WithColdMaxPrice ¶
WithColdMaxPrice specifies the max price that should be considered for deal asks even when all other filers match.
func (CidConfig) WithHotAllowUnfreeze ¶
WithHotAllowUnfreeze allows the Scheduler to fetch data from the Cold Storage, if the Enabled flag of the Hot Storage switches from false->true.
func (CidConfig) WithHotEnabled ¶
WithHotEnabled allows to enable/disable Hot storage usage.
func (CidConfig) WithHotIpfsAddTimeout ¶
WithHotIpfsAddTimeout specifies a timeout for fetching data in Ipfs.
func (CidConfig) WithRepairable ¶
WithRepairable allows to enable/disable auto-repair.
type CidLogger ¶
type CidLogger interface { Log(context.Context, cid.Cid, string, ...interface{}) Watch(context.Context, chan<- LogEntry) error Get(context.Context, cid.Cid) ([]LogEntry, error) }
CidLogger saves log information about a Cid executions.
type CidLoggerCtxKey ¶
type CidLoggerCtxKey int
CidLoggerCtxKey is a type to use in ctx values for CidLogger.
const ( // CtxKeyJid is the key to store Jid metadata. CtxKeyJid CidLoggerCtxKey = iota )
type ColdConfig ¶
type ColdConfig struct { // Enabled indicates that data will be saved in Cold storage. // If is switched from false->true, it will consider the other attributes // as the desired state of the data in this Storage. Enabled bool // Filecoin describes the desired Filecoin configuration for a Cid in the // Filecoin network. Filecoin FilConfig }
ColdConfig is the desired state of a Cid in a cold layer.
type ColdInfo ¶
ColdInfo contains information about the current storage state of a Cid in the cold layer.
type ColdStorage ¶
type ColdStorage interface { // Store stores a Cid using the provided configuration and // account address. It returns a slice of accepted proposed deals, // a slice of rejected proposal deals, and the size of the data. Store(context.Context, cid.Cid, FilConfig) ([]cid.Cid, []DealError, uint64, error) // WaitForDeal blocks the provided Deal Proposal reach a // final state. If the deal finishes successfully it returns a FilStorage // result. If the deal finished with error, it returns a ffs.DealError // error result, so it should be considered in error handling. WaitForDeal(context.Context, cid.Cid, cid.Cid) (FilStorage, error) // Fetch fetches the cid data in the underlying storage. Fetch(context.Context, cid.Cid, string) error // EnsureRenewals executes renewal logic for a Cid under a particular // configuration. It returns a slice of deal errors happened during execution. EnsureRenewals(context.Context, cid.Cid, FilInfo, FilConfig) (FilInfo, []DealError, error) // IsFIlDealActive returns true if the proposal Cid is active on chain; // returns false otherwise. IsFilDealActive(context.Context, cid.Cid) (bool, error) }
ColdStorage is slow/cheap storage for Cid data. It has native support for Filecoin storage.
type DefaultConfig ¶
type DefaultConfig struct { Hot HotConfig Cold ColdConfig Repairable bool }
DefaultConfig contains a default storage configuration for an Api instance.
func (DefaultConfig) Validate ¶
func (dc DefaultConfig) Validate() error
Validate validates a default Cid configuration.
type FilConfig ¶
type FilConfig struct { // RepFactor indicates the desired amount of active deals // with different miners to store the data. While making deals // the other attributes of FilConfig are considered for miner selection. RepFactor int // DealMinDuration indicates the duration to be used when making new deals. DealMinDuration int64 // ExcludedMiners is a set of miner addresses won't be ever be selected // when making new deals, even if they comply to other filters. ExcludedMiners []string // TrustedMiners is a set of miner addresses which will be forcibly used // when making new deals. An empty/nil list disables this feature. TrustedMiners []string // CountryCodes indicates that new deals should select miners on specific // countries. CountryCodes []string // Renew indicates deal-renewal configuration. Renew FilRenew // Addr is the wallet address used to store the data in filecoin Addr string // MaxPrice is the maximum price that will be spent to store the data MaxPrice uint64 }
FilConfig is the desired state of a Cid in the Filecoin network.
type FilInfo ¶
type FilInfo struct { DataCid cid.Cid Size uint64 Proposals []FilStorage }
FilInfo contains information about the current storage state of a Cid in the Filecoin network.
type FilRenew ¶
type FilRenew struct { // Enabled indicates that deal-renewal is enabled for this Cid. Enabled bool // Threshold indicates how many epochs before expiring should trigger // deal renewal. e.g: 100 epoch before expiring. Threshold int }
FilRenew contains renew configuration for a Cid Cold Storage deals.
type FilStorage ¶
type FilStorage struct { ProposalCid cid.Cid Renewed bool Duration int64 ActivationEpoch int64 StartEpoch uint64 Miner string EpochPrice uint64 }
FilStorage contains Deal information of a storage in Filecoin.
type HotConfig ¶
type HotConfig struct { // Enable indicates if Cid data is stored. If true, it will consider // further configurations to execute actions. Enabled bool // AllowUnfreeze indicates that if data isn't available in the Hot Storage, // it's allowed to be feeded by Cold Storage if available. AllowUnfreeze bool // Ipfs contains configuration related to storing Cid data in a IPFS node. Ipfs IpfsConfig }
HotConfig is the desired storage of a Cid in a Hot Storage.
type HotInfo ¶
type HotInfo struct { Enabled bool Size int Ipfs IpfsHotInfo }
HotInfo contains information about the current storage state of a Cid in the hot layer.
type HotStorage ¶
type HotStorage interface { // Add adds io.Reader data ephemerally (not pinned). Add(context.Context, io.Reader) (cid.Cid, error) // Remove removes a stored Cid. Remove(context.Context, cid.Cid) error // Get retrieves a stored Cid data. Get(context.Context, cid.Cid) (io.Reader, error) // Store stores a Cid. If the data wasn't previously Added, // depending on the implementation it may use internal mechanisms // for pulling the data, e.g: IPFS network Store(context.Context, cid.Cid) (int, error) // Replace replaces a stored Cid with a new one. It's mostly // thought for mutating data doing this efficiently. Replace(context.Context, cid.Cid, cid.Cid) (int, error) // Put adds a raw block. Put(context.Context, blocks.Block) error // IsStore returns true if the Cid is stored, or false // otherwise. IsStored(context.Context, cid.Cid) (bool, error) }
HotStorage is a fast storage layer for Cid data.
type IpfsConfig ¶
type IpfsConfig struct { // AddTimeout is an upper bound on adding data to IPFS node from // the network before failing. AddTimeout int }
IpfsConfig is the desired storage of a Cid in IPFS.
func (*IpfsConfig) Validate ¶
func (ic *IpfsConfig) Validate() error
Validate validates an IpfsConfig.
type IpfsHotInfo ¶
IpfsHotInfo contains information about the current storage state of a Cid in an IPFS node.
type Job ¶
type Job struct { ID JobID APIID APIID Cid cid.Cid Status JobStatus ErrCause string DealErrors []DealError }
Job is a task executed by the Scheduler.
type JobStatus ¶
type JobStatus int
JobStatus is a type for Job statuses.
const ( // Unspecified indicates a default or empty value Unspecified JobStatus = iota // Queued indicates the Job is queued in the Scheduler. Queued // Executing indicates that the Job is currently being // executed. Executing // Failed indicates the Job failed, with job.ErrCause with // the error cause. Failed // Canceled indicates the Job was canceled from Queued, // and didn't reach execution. Canceled // Success indicates the Job was successfully executed. Success )
type MinerProposal ¶
MinerProposal contains a miners address and storage ask information to make a, most probably, successful deal.
type MinerSelector ¶
type MinerSelector interface { // GetMiners returns a specified amount of miners that satisfy // provided filters. GetMiners(int, MinerSelectorFilter) ([]MinerProposal, error) }
MinerSelector returns miner addresses and ask storage information using a desired strategy.
type MinerSelectorFilter ¶
type MinerSelectorFilter struct { // ExcludedMiners contains miner addresses that should not be considered in // returned results. An empty list means no exclusions. ExcludedMiners []string // TrustedMiners contains miner addresses that will be prioritized // if are available in the query result. If the number of expected // results exceeeds the number of trusted miners, the remaining amount // of results will be returned still applying the rest of the filters // and the MinerSelector sorting logic. TrustedMiners []string // CountryCodes contains long-ISO country names that should be // considered in selected miners. An empty list means no filtering. CountryCodes []string // MaxPrice is the max ask price to consider when selecting miner deals MaxPrice uint64 }
MinerSelectorFilter establishes filters that should be considered when returning miners.
type PaychManager ¶
type PaychManager interface { // List lists all payment channels involving the specified addresses. List(ctx context.Context, addrs ...string) ([]PaychInfo, error) // Create creates a new payment channel. Create(ctx context.Context, from string, to string, amount uint64) (PaychInfo, cid.Cid, error) // Redeem redeems a payment channel. Redeem(ctx context.Context, ch string) error }
PaychManager provides access to payment channels.
type WalletManager ¶
type WalletManager interface { // NewAddress creates a new address. NewAddress(context.Context, string) (string, error) // Balance returns the current balance for an address. Balance(context.Context, string) (uint64, error) // SendFil sends fil from one address to another. SendFil(context.Context, string, string, *big.Int) error }
WalletManager provides access to a Lotus wallet for a Lotus node.