fsrepo

package
v0.32.0 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2024 License: Apache-2.0, MIT, Apache-2.0, + 1 more Imports: 29 Imported by: 62

Documentation

Overview

package fsrepo

TODO explain the package roadmap...

.ipfs/
├── client/
|   ├── client.lock          <------ protects client/ + signals its own pid
│   ├── ipfs-client.cpuprof
│   └── ipfs-client.memprof
├── config
├── daemon/
│   ├── daemon.lock          <------ protects daemon/ + signals its own address
│   ├── ipfs-daemon.cpuprof
│   └── ipfs-daemon.memprof
├── datastore/
├── repo.lock                <------ protects datastore/ and config
└── version

Index

Constants

View Source
const LockFile = "repo.lock"

LockFile is the filename of the repo lock, relative to config dir TODO rename repo lock and hide name.

Variables

View Source
var (
	ErrNoVersion     = errors.New("no version file found, please run 0-to-1 migration tool.\n" + migrationInstructions)
	ErrOldRepo       = errors.New("ipfs repo found in old '~/.go-ipfs' location, please run migration tool.\n" + migrationInstructions)
	ErrNeedMigration = errors.New("ipfs repo needs migration, please run migration tool.\n" + migrationInstructions)
)
View Source
var RepoVersion = 16

RepoVersion is the version number that we are currently expecting to see.

Functions

func APIAddr added in v0.3.8

func APIAddr(repoPath string) (ma.Multiaddr, error)

APIAddr returns the registered API addr, according to the api file in the fsrepo. This is a concurrent operation, meaning that any process may read this file. modifying this file, therefore, should use "mv" to replace the whole file and avoid interleaved read/writes.

func AddDatastoreConfigHandler added in v0.4.18

func AddDatastoreConfigHandler(name string, dsc ConfigFromMap) error

func BestKnownPath

func BestKnownPath() (string, error)

BestKnownPath returns the best known fsrepo path. If the ENV override is present, this function returns that value. Otherwise, it returns the default repo path.

func Init

func Init(repoPath string, conf *config.Config) error

Init initializes a new FSRepo at the given path with the provided config. TODO add support for custom datastores.

func IsInitialized

func IsInitialized(path string) bool

IsInitialized returns true if the repo is initialized at provided |path|.

func LockedByOtherProcess

func LockedByOtherProcess(repoPath string) (bool, error)

LockedByOtherProcess returns true if the FSRepo is locked by another process. If true, then the repo cannot be opened by this process.

func Open added in v0.3.2

func Open(repoPath string) (repo.Repo, error)

Open the FSRepo at path. Returns an error if the repo is not initialized.

func OpenWithUserConfig added in v0.14.0

func OpenWithUserConfig(repoPath string, userConfigFilePath string) (repo.Repo, error)

OpenWithUserConfig is the equivalent to the Open function above but with the option to set the configuration file path instead of using the default.

Types

type ConfigFromMap added in v0.4.11

type ConfigFromMap func(map[string]interface{}) (DatastoreConfig, error)

ConfigFromMap creates a new datastore config from a map.

type DatastoreConfig added in v0.4.11

type DatastoreConfig interface {
	// DiskSpec returns a minimal configuration of the datastore
	// represting what is stored on disk.  Run time values are
	// excluded.
	DiskSpec() DiskSpec

	// Create instantiate a new datastore from this config
	Create(path string) (repo.Datastore, error)
}

DatastoreConfig is an abstraction of a datastore config. A "spec" is first converted to a DatastoreConfig and then Create() is called to instantiate a new datastore.

func AnyDatastoreConfig added in v0.4.11

func AnyDatastoreConfig(params map[string]interface{}) (DatastoreConfig, error)

AnyDatastoreConfig returns a DatastoreConfig from a spec based on the "type" parameter.

func LogDatastoreConfig added in v0.4.11

func LogDatastoreConfig(params map[string]interface{}) (DatastoreConfig, error)

LogDatastoreConfig returns a log DatastoreConfig from a spec.

func MeasureDatastoreConfig added in v0.4.11

func MeasureDatastoreConfig(params map[string]interface{}) (DatastoreConfig, error)

MeasureDatastoreConfig returns a measure DatastoreConfig from a spec.

func MemDatastoreConfig added in v0.4.11

func MemDatastoreConfig(params map[string]interface{}) (DatastoreConfig, error)

MemDatastoreConfig returns a memory DatastoreConfig from a spec.

func MountDatastoreConfig added in v0.4.11

func MountDatastoreConfig(params map[string]interface{}) (DatastoreConfig, error)

MountDatastoreConfig returns a mount DatastoreConfig from a spec.

type DiskSpec added in v0.4.11

type DiskSpec map[string]interface{}

DiskSpec is a minimal representation of the characteristic values of the datastore. If two diskspecs are the same, the loader assumes that they refer to exactly the same datastore. If they differ at all, it is assumed they are completely different datastores and a migration will be performed. Runtime values such as cache options or concurrency options should not be added here.

func (DiskSpec) Bytes added in v0.4.11

func (spec DiskSpec) Bytes() []byte

Bytes returns a minimal JSON encoding of the DiskSpec.

func (DiskSpec) String added in v0.4.11

func (spec DiskSpec) String() string

String returns a minimal JSON encoding of the DiskSpec.

type FSRepo

type FSRepo struct {
	// contains filtered or unexported fields
}

FSRepo represents an IPFS FileSystem Repo. It is safe for use by multiple callers.

func (*FSRepo) BackupConfig added in v0.4.14

func (r *FSRepo) BackupConfig(prefix string) (string, error)

func (*FSRepo) Close

func (r *FSRepo) Close() error

Close closes the FSRepo, releasing held resources.

func (*FSRepo) Config

func (r *FSRepo) Config() (*config.Config, error)

Config the current config. This function DOES NOT copy the config. The caller MUST NOT modify it without first calling `Clone`.

Result when not Open is undefined. The method may panic if it pleases.

func (*FSRepo) Datastore

func (r *FSRepo) Datastore() repo.Datastore

Datastore returns a repo-owned datastore. If FSRepo is Closed, return value is undefined.

func (*FSRepo) FileManager added in v0.4.7

func (r *FSRepo) FileManager() *filestore.FileManager

func (*FSRepo) GetConfigKey

func (r *FSRepo) GetConfigKey(key string) (interface{}, error)

GetConfigKey retrieves only the value of a particular key.

func (*FSRepo) GetStorageUsage added in v0.3.10

func (r *FSRepo) GetStorageUsage(ctx context.Context) (uint64, error)

GetStorageUsage computes the storage space taken by the repo in bytes.

func (*FSRepo) Keystore added in v0.4.5

func (r *FSRepo) Keystore() keystore.Keystore

func (*FSRepo) Path added in v0.4.7

func (r *FSRepo) Path() string

func (*FSRepo) SetAPIAddr added in v0.3.8

func (r *FSRepo) SetAPIAddr(addr ma.Multiaddr) error

SetAPIAddr writes the API Addr to the /api file.

func (*FSRepo) SetConfig

func (r *FSRepo) SetConfig(updated *config.Config) error

SetConfig updates the FSRepo's config. The user must not modify the config object after calling this method. FIXME: There is an inherent contradiction with storing non-user-generated Go config.Config structures as user-generated JSON nested maps. This is evidenced by the issue of `omitempty` property of fields that aren't defined by the user and Go still needs to initialize them to its default (which is not reflected in the repo's config file, see https://github.com/ipfs/kubo/issues/8088 for more details). In general we should call this API with a JSON nested maps as argument (`map[string]interface{}`). Many calls to this function are forced to synthesize the config.Config struct from their available JSON map just to satisfy this (causing incompatibilities like the `omitempty` one above). We need to comb SetConfig calls and replace them when possible with a JSON map variant.

func (*FSRepo) SetConfigKey

func (r *FSRepo) SetConfigKey(key string, value interface{}) error

SetConfigKey writes the value of a particular key.

func (*FSRepo) SetGatewayAddr added in v0.15.0

func (r *FSRepo) SetGatewayAddr(addr net.Addr) error

SetGatewayAddr writes the Gateway Addr to the /gateway file.

func (*FSRepo) SwarmKey added in v0.4.7

func (r *FSRepo) SwarmKey() ([]byte, error)

func (*FSRepo) UserResourceOverrides added in v0.19.0

func (r *FSRepo) UserResourceOverrides() (rcmgr.PartialLimitConfig, error)

type NoRepoError added in v0.3.4

type NoRepoError struct {
	Path string
}

func (NoRepoError) Error added in v0.3.4

func (err NoRepoError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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