2019-07-09 17:50:48 +00:00
|
|
|
package repo
|
|
|
|
|
|
|
|
import (
|
2019-07-18 14:01:39 +00:00
|
|
|
"errors"
|
2020-06-01 16:37:10 +00:00
|
|
|
|
2019-07-09 17:50:48 +00:00
|
|
|
"github.com/ipfs/go-datastore"
|
|
|
|
"github.com/multiformats/go-multiaddr"
|
|
|
|
|
2020-07-08 18:35:55 +00:00
|
|
|
"github.com/filecoin-project/sector-storage/fsutil"
|
|
|
|
"github.com/filecoin-project/sector-storage/stores"
|
|
|
|
|
2019-10-18 04:47:41 +00:00
|
|
|
"github.com/filecoin-project/lotus/chain/types"
|
2019-07-09 17:50:48 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2019-07-18 14:01:39 +00:00
|
|
|
ErrNoAPIEndpoint = errors.New("API not running (no endpoint)")
|
2019-07-23 18:49:09 +00:00
|
|
|
ErrNoAPIToken = errors.New("API token not set")
|
2020-06-01 16:37:10 +00:00
|
|
|
ErrRepoAlreadyLocked = errors.New("repo is already locked (lotus daemon already running)")
|
2019-07-18 14:01:39 +00:00
|
|
|
ErrClosedRepo = errors.New("repo is no longer open")
|
2019-07-09 17:50:48 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type Repo interface {
|
|
|
|
// APIEndpoint returns multiaddress for communication with Lotus API
|
|
|
|
APIEndpoint() (multiaddr.Multiaddr, error)
|
|
|
|
|
2019-07-23 18:49:09 +00:00
|
|
|
// APIToken returns JWT API Token for use in operations that require auth
|
|
|
|
APIToken() ([]byte, error)
|
|
|
|
|
2019-07-09 17:50:48 +00:00
|
|
|
// Lock locks the repo for exclusive use.
|
2019-10-30 16:38:39 +00:00
|
|
|
Lock(RepoType) (LockedRepo, error)
|
2019-07-09 17:50:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type LockedRepo interface {
|
|
|
|
// Close closes repo and removes lock.
|
|
|
|
Close() error
|
|
|
|
|
|
|
|
// Returns datastore defined in this repo.
|
2019-07-10 15:38:35 +00:00
|
|
|
Datastore(namespace string) (datastore.Batching, error)
|
2020-07-06 23:39:30 +00:00
|
|
|
ListDatastores(namespace string) ([]int64, error)
|
2020-07-06 20:03:37 +00:00
|
|
|
DeleteDatastore(namespace string) error
|
2019-07-09 17:50:48 +00:00
|
|
|
|
|
|
|
// Returns config in this repo
|
2020-06-09 23:37:18 +00:00
|
|
|
Config() (interface{}, error)
|
2020-06-10 16:07:47 +00:00
|
|
|
SetConfig(func(interface{})) error
|
2019-07-09 17:50:48 +00:00
|
|
|
|
2020-03-27 20:08:06 +00:00
|
|
|
GetStorage() (stores.StorageConfig, error)
|
|
|
|
SetStorage(func(*stores.StorageConfig)) error
|
2020-07-08 15:23:27 +00:00
|
|
|
Stat(path string) (fsutil.FsStat, error)
|
|
|
|
DiskUsage(path string) (int64, error)
|
2020-03-03 22:19:22 +00:00
|
|
|
|
2019-07-09 18:20:42 +00:00
|
|
|
// SetAPIEndpoint sets the endpoint of the current API
|
|
|
|
// so it can be read by API clients
|
2019-07-09 17:50:48 +00:00
|
|
|
SetAPIEndpoint(multiaddr.Multiaddr) error
|
|
|
|
|
2019-07-23 18:49:09 +00:00
|
|
|
// SetAPIToken sets JWT API Token for CLI
|
|
|
|
SetAPIToken([]byte) error
|
|
|
|
|
2019-07-18 14:01:39 +00:00
|
|
|
// KeyStore returns store of private keys for Filecoin transactions
|
2019-07-18 14:57:49 +00:00
|
|
|
KeyStore() (types.KeyStore, error)
|
2019-07-12 09:59:18 +00:00
|
|
|
|
2019-11-30 23:17:50 +00:00
|
|
|
// Path returns absolute path of the repo
|
2019-07-12 09:59:18 +00:00
|
|
|
Path() string
|
2019-07-09 17:50:48 +00:00
|
|
|
}
|