Continue rebranding effort #43
151 changed files with 513 additions and 583 deletions
|
@ -12,6 +12,7 @@ Changelog for FrostFS Node
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- `common.PrintVerbose` prints via `cobra.Command.Printf` (#1962)
|
- `common.PrintVerbose` prints via `cobra.Command.Printf` (#1962)
|
||||||
|
- Env prefix in configuration changed to `FROSTFS_*` (#43)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Big object removal with non-local parts (#1978)
|
- Big object removal with non-local parts (#1978)
|
||||||
|
@ -32,6 +33,7 @@ Changelog for FrostFS Node
|
||||||
- Minimum go version to v1.18
|
- Minimum go version to v1.18
|
||||||
|
|
||||||
### Updating from v0.35.0
|
### Updating from v0.35.0
|
||||||
|
You need to change configuration environment variables to `FROSTFS_*` if you use any.
|
||||||
|
|
||||||
## [0.35.0] - 2022-12-28 - Sindo (신도)
|
## [0.35.0] - 2022-12-28 - Sindo (신도)
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ $ git clone https://github.com/TrueCloudLab/frostfs-node
|
||||||
|
|
||||||
### Set up git remote as ``upstream``
|
### Set up git remote as ``upstream``
|
||||||
```sh
|
```sh
|
||||||
$ cd neofs-node
|
$ cd frostfs-node
|
||||||
$ git remote add upstream https://github.com/TrueCloudLab/frostfs-node
|
$ git remote add upstream https://github.com/TrueCloudLab/frostfs-node
|
||||||
$ git fetch upstream
|
$ git fetch upstream
|
||||||
$ git merge upstream/master
|
$ git merge upstream/master
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# How NeoFS CLI uses session mechanism of the NeoFS
|
# How FrostFS CLI uses session mechanism of the FrostFS
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
NeoFS sessions implement a mechanism for issuing a power of attorney by one
|
FrostFS sessions implement a mechanism for issuing a power of attorney by one
|
||||||
party to another. A trusted party can provide a so-called session token as
|
party to another. A trusted party can provide a so-called session token as
|
||||||
proof of the right to act on behalf of another member of the network. The
|
proof of the right to act on behalf of another member of the network. The
|
||||||
client of operations carried out with such a token will be the user who opened
|
client of operations carried out with such a token will be the user who opened
|
||||||
|
@ -15,7 +15,7 @@ attached session token is treated as performed by the original client.
|
||||||
|
|
||||||
## Types
|
## Types
|
||||||
|
|
||||||
NeoFS CLI supports two ways to execute operation within a session depending on
|
FrostFS CLI supports two ways to execute operation within a session depending on
|
||||||
whether the user of the command application is an original user (1) or a trusted
|
whether the user of the command application is an original user (1) or a trusted
|
||||||
one (2).
|
one (2).
|
||||||
|
|
||||||
|
|
|
@ -2,26 +2,26 @@
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
Extended headers are used for request/response. They may contain any user-defined headers
|
Extended headers are used for request/response. They may contain any
|
||||||
to be interpreted on application level.
|
user-defined headers to be interpreted on application level. Key name must be a
|
||||||
Key name must be a unique valid UTF-8 string. Value can't be empty. Requests or
|
unique valid UTF-8 string. Value can't be empty. Requests or Responses with
|
||||||
Responses with duplicated header names or headers with empty values are
|
duplicated header names or headers with empty values are considered invalid.
|
||||||
considered invalid.
|
|
||||||
|
|
||||||
## Existing headers
|
## Existing headers
|
||||||
|
|
||||||
There are some "well-known" headers starting with `__NEOFS__` prefix that
|
There are some "well-known" headers starting with `__FROSTFS__` prefix that
|
||||||
affect system behaviour:
|
affect system behaviour. For backward compatibility, the same set of
|
||||||
|
"well-known" headers may also use `__NEOFS__` prefix:
|
||||||
|
|
||||||
* `__NEOFS__NETMAP_EPOCH` - netmap epoch to use for object placement calculation. The `value` is string
|
* `__FROSTFS__NETMAP_EPOCH` - netmap epoch to use for object placement calculation. The `value` is string
|
||||||
encoded `uint64` in decimal presentation. If set to '0' or omitted, the
|
encoded `uint64` in decimal presentation. If set to '0' or omitted, the
|
||||||
current epoch only will be used.
|
current epoch only will be used.
|
||||||
* `__NEOFS__NETMAP_LOOKUP_DEPTH` - if object can't be found using current epoch's netmap, this header limits
|
* `__FROSTFS__NETMAP_LOOKUP_DEPTH` - if object can't be found using current epoch's netmap, this header limits
|
||||||
how many past epochs the node can look up through. Depth is applied to a current epoch or the value
|
how many past epochs the node can look up through. Depth is applied to a current epoch or the value
|
||||||
of `__NEOFS__NETMAP_EPOCH` attribute. The `value` is string encoded `uint64` in decimal presentation.
|
of `__FROSTFS__NETMAP_EPOCH` attribute. The `value` is string encoded `uint64` in decimal presentation.
|
||||||
If set to '0' or not set, only the current epoch is used.
|
If set to '0' or not set, only the current epoch is used.
|
||||||
|
|
||||||
## `neofs-cli` commands with `--xhdr`
|
## `frostfs-cli` commands with `--xhdr`
|
||||||
|
|
||||||
List of commands with support of extended headers:
|
List of commands with support of extended headers:
|
||||||
* `container list-objects`
|
* `container list-objects`
|
||||||
|
@ -30,5 +30,5 @@ List of commands with support of extended headers:
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
```shell
|
```shell
|
||||||
$ neofs-cli object put -r s01.neofs.devenv:8080 -w wallet.json --cid CID --file FILE --xhdr "__NEOFS__NETMAP_EPOCH=777"
|
$ frostfs-cli object put -r s01.frostfs.devenv:8080 -w wallet.json --cid CID --file FILE --xhdr "__FROSTFS__NETMAP_EPOCH=777"
|
||||||
```
|
```
|
||||||
|
|
|
@ -34,7 +34,7 @@ func (x BalanceOfRes) Balance() accounting.Decimal {
|
||||||
return x.cliRes.Amount()
|
return x.cliRes.Amount()
|
||||||
}
|
}
|
||||||
|
|
||||||
// BalanceOf requests the current balance of a NeoFS user.
|
// BalanceOf requests the current balance of a FrostFS user.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func BalanceOf(prm BalanceOfPrm) (res BalanceOfRes, err error) {
|
func BalanceOf(prm BalanceOfPrm) (res BalanceOfRes, err error) {
|
||||||
|
@ -59,7 +59,7 @@ func (x ListContainersRes) IDList() []cid.ID {
|
||||||
return x.cliRes.Containers()
|
return x.cliRes.Containers()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListContainers requests a list of NeoFS user's containers.
|
// ListContainers requests a list of FrostFS user's containers.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func ListContainers(prm ListContainersPrm) (res ListContainersRes, err error) {
|
func ListContainers(prm ListContainersPrm) (res ListContainersRes, err error) {
|
||||||
|
@ -84,7 +84,7 @@ func (x PutContainerRes) ID() cid.ID {
|
||||||
return x.cnr
|
return x.cnr
|
||||||
}
|
}
|
||||||
|
|
||||||
// PutContainer sends a request to save the container in NeoFS.
|
// PutContainer sends a request to save the container in FrostFS.
|
||||||
//
|
//
|
||||||
// Operation is asynchronous and not guaranteed even in the absence of errors.
|
// Operation is asynchronous and not guaranteed even in the absence of errors.
|
||||||
// The required time is also not predictable.
|
// The required time is also not predictable.
|
||||||
|
@ -122,7 +122,7 @@ func (x GetContainerRes) Container() containerSDK.Container {
|
||||||
return x.cliRes.Container()
|
return x.cliRes.Container()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetContainer reads a container from NeoFS by ID.
|
// GetContainer reads a container from FrostFS by ID.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func GetContainer(prm GetContainerPrm) (res GetContainerRes, err error) {
|
func GetContainer(prm GetContainerPrm) (res GetContainerRes, err error) {
|
||||||
|
@ -140,7 +140,7 @@ func IsACLExtendable(c *client.Client, cnr cid.ID) (bool, error) {
|
||||||
|
|
||||||
res, err := GetContainer(prm)
|
res, err := GetContainer(prm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("get container from the NeoFS: %w", err)
|
return false, fmt.Errorf("get container from the FrostFS: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return res.Container().BasicACL().Extendable(), nil
|
return res.Container().BasicACL().Extendable(), nil
|
||||||
|
@ -155,7 +155,7 @@ type DeleteContainerPrm struct {
|
||||||
// DeleteContainerRes groups the resulting values of DeleteContainer operation.
|
// DeleteContainerRes groups the resulting values of DeleteContainer operation.
|
||||||
type DeleteContainerRes struct{}
|
type DeleteContainerRes struct{}
|
||||||
|
|
||||||
// DeleteContainer sends a request to remove a container from NeoFS by ID.
|
// DeleteContainer sends a request to remove a container from FrostFS by ID.
|
||||||
//
|
//
|
||||||
// Operation is asynchronous and not guaranteed even in the absence of errors.
|
// Operation is asynchronous and not guaranteed even in the absence of errors.
|
||||||
// The required time is also not predictable.
|
// The required time is also not predictable.
|
||||||
|
@ -185,7 +185,7 @@ func (x EACLRes) EACL() eacl.Table {
|
||||||
return x.cliRes.Table()
|
return x.cliRes.Table()
|
||||||
}
|
}
|
||||||
|
|
||||||
// EACL reads eACL table from NeoFS by container ID.
|
// EACL reads eACL table from FrostFS by container ID.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func EACL(prm EACLPrm) (res EACLRes, err error) {
|
func EACL(prm EACLPrm) (res EACLRes, err error) {
|
||||||
|
@ -203,7 +203,7 @@ type SetEACLPrm struct {
|
||||||
// SetEACLRes groups the resulting values of SetEACL operation.
|
// SetEACLRes groups the resulting values of SetEACL operation.
|
||||||
type SetEACLRes struct{}
|
type SetEACLRes struct{}
|
||||||
|
|
||||||
// SetEACL requests to save an eACL table in NeoFS.
|
// SetEACL requests to save an eACL table in FrostFS.
|
||||||
//
|
//
|
||||||
// Operation is asynchronous and no guaranteed even in the absence of errors.
|
// Operation is asynchronous and no guaranteed even in the absence of errors.
|
||||||
// The required time is also not predictable.
|
// The required time is also not predictable.
|
||||||
|
@ -228,12 +228,12 @@ type NetworkInfoRes struct {
|
||||||
cliRes *client.ResNetworkInfo
|
cliRes *client.ResNetworkInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetworkInfo returns structured information about the NeoFS network.
|
// NetworkInfo returns structured information about the FrostFS network.
|
||||||
func (x NetworkInfoRes) NetworkInfo() netmap.NetworkInfo {
|
func (x NetworkInfoRes) NetworkInfo() netmap.NetworkInfo {
|
||||||
return x.cliRes.Info()
|
return x.cliRes.Info()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetworkInfo reads information about the NeoFS network.
|
// NetworkInfo reads information about the FrostFS network.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func NetworkInfo(prm NetworkInfoPrm) (res NetworkInfoRes, err error) {
|
func NetworkInfo(prm NetworkInfoPrm) (res NetworkInfoRes, err error) {
|
||||||
|
@ -258,12 +258,12 @@ func (x NodeInfoRes) NodeInfo() netmap.NodeInfo {
|
||||||
return x.cliRes.NodeInfo()
|
return x.cliRes.NodeInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
// LatestVersion returns the latest NeoFS API version in use.
|
// LatestVersion returns the latest FrostFS API version in use.
|
||||||
func (x NodeInfoRes) LatestVersion() version.Version {
|
func (x NodeInfoRes) LatestVersion() version.Version {
|
||||||
return x.cliRes.LatestVersion()
|
return x.cliRes.LatestVersion()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeInfo requests information about the remote server from NeoFS netmap.
|
// NodeInfo requests information about the remote server from FrostFS netmap.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func NodeInfo(prm NodeInfoPrm) (res NodeInfoRes, err error) {
|
func NodeInfo(prm NodeInfoPrm) (res NodeInfoRes, err error) {
|
||||||
|
@ -282,7 +282,7 @@ type NetMapSnapshotRes struct {
|
||||||
cliRes *client.ResNetMapSnapshot
|
cliRes *client.ResNetMapSnapshot
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetMap returns current local snapshot of the NeoFS network map.
|
// NetMap returns current local snapshot of the FrostFS network map.
|
||||||
func (x NetMapSnapshotRes) NetMap() netmap.NetMap {
|
func (x NetMapSnapshotRes) NetMap() netmap.NetMap {
|
||||||
return x.cliRes.NetMap()
|
return x.cliRes.NetMap()
|
||||||
}
|
}
|
||||||
|
@ -362,7 +362,7 @@ func (x PutObjectRes) ID() oid.ID {
|
||||||
return x.id
|
return x.id
|
||||||
}
|
}
|
||||||
|
|
||||||
// PutObject saves the object in NeoFS network.
|
// PutObject saves the object in FrostFS network.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func PutObject(prm PutObjectPrm) (*PutObjectRes, error) {
|
func PutObject(prm PutObjectPrm) (*PutObjectRes, error) {
|
||||||
|
@ -460,7 +460,7 @@ func (x DeleteObjectRes) Tombstone() oid.ID {
|
||||||
return x.tomb
|
return x.tomb
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteObject marks an object to be removed from NeoFS through tombstone placement.
|
// DeleteObject marks an object to be removed from FrostFS through tombstone placement.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func DeleteObject(prm DeleteObjectPrm) (*DeleteObjectRes, error) {
|
func DeleteObject(prm DeleteObjectPrm) (*DeleteObjectRes, error) {
|
||||||
|
@ -576,7 +576,7 @@ type HeadObjectPrm struct {
|
||||||
mainOnly bool
|
mainOnly bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMainOnlyFlag sets flag to get only main fields of an object header in terms of NeoFS API.
|
// SetMainOnlyFlag sets flag to get only main fields of an object header in terms of FrostFS API.
|
||||||
func (x *HeadObjectPrm) SetMainOnlyFlag(v bool) {
|
func (x *HeadObjectPrm) SetMainOnlyFlag(v bool) {
|
||||||
x.mainOnly = v
|
x.mainOnly = v
|
||||||
}
|
}
|
||||||
|
@ -812,7 +812,7 @@ func (x *PayloadRangePrm) SetRange(rng *object.Range) {
|
||||||
// PayloadRangeRes groups the resulting values of PayloadRange operation.
|
// PayloadRangeRes groups the resulting values of PayloadRange operation.
|
||||||
type PayloadRangeRes struct{}
|
type PayloadRangeRes struct{}
|
||||||
|
|
||||||
// PayloadRange reads object payload range from NeoFS and writes it to the specified writer.
|
// PayloadRange reads object payload range from FrostFS and writes it to the specified writer.
|
||||||
//
|
//
|
||||||
// Interrupts on any writer error.
|
// Interrupts on any writer error.
|
||||||
//
|
//
|
||||||
|
@ -872,7 +872,7 @@ func (s *SyncContainerPrm) SetContainer(c *containerSDK.Container) {
|
||||||
// operation.
|
// operation.
|
||||||
type SyncContainerRes struct{}
|
type SyncContainerRes struct{}
|
||||||
|
|
||||||
// SyncContainerSettings reads global network config from NeoFS and
|
// SyncContainerSettings reads global network config from FrostFS and
|
||||||
// syncs container settings with it.
|
// syncs container settings with it.
|
||||||
//
|
//
|
||||||
// Interrupts on any writer error.
|
// Interrupts on any writer error.
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
// Package internal provides functionality for NeoFS CLI application communication with NeoFS network.
|
// Package internal provides functionality for FrostFS CLI application
|
||||||
|
// communication with FrostFS network.
|
||||||
//
|
//
|
||||||
// The base client for accessing remote nodes via NeoFS API is a NeoFS SDK Go API client.
|
// The base client for accessing remote nodes via FrostFS API is a FrostFS SDK
|
||||||
// However, although it encapsulates a useful piece of business logic (e.g. the signature mechanism),
|
// Go API client. However, although it encapsulates a useful piece of business
|
||||||
// the NeoFS CLI application does not fully use the client's flexible interface.
|
// logic (e.g. the signature mechanism), the FrostFS CLI application does not
|
||||||
|
// fully use the client's flexible interface.
|
||||||
//
|
//
|
||||||
// In this regard, this package provides functions over base API client necessary for the application.
|
// In this regard, this package provides functions over base API client
|
||||||
// This allows you to concentrate the entire spectrum of the client's use in one place (this will be convenient
|
// necessary for the application. This allows you to concentrate the entire
|
||||||
// both when updating the base client and for evaluating the UX of SDK library). So it is expected that all
|
// spectrum of the client's use in one place (this will be convenient both when
|
||||||
// application packages will be limited to this package for the development of functionality requiring
|
// updating the base client and for evaluating the UX of SDK library). So it is
|
||||||
// NeoFS API communication.
|
// expected that all application packages will be limited to this package for
|
||||||
|
// the development of functionality requiring FrostFS API communication.
|
||||||
package internal
|
package internal
|
||||||
|
|
|
@ -16,7 +16,7 @@ type commonPrm struct {
|
||||||
cli *client.Client
|
cli *client.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetClient sets the base client for NeoFS API communication.
|
// SetClient sets the base client for FrostFS API communication.
|
||||||
func (x *commonPrm) SetClient(cli *client.Client) {
|
func (x *commonPrm) SetClient(cli *client.Client) {
|
||||||
x.cli = cli
|
x.cli = cli
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ func ReadBearerToken(cmd *cobra.Command, flagname string) *bearer.Token {
|
||||||
}
|
}
|
||||||
|
|
||||||
// BinaryOrJSON is an interface of entities which provide json.Unmarshaler
|
// BinaryOrJSON is an interface of entities which provide json.Unmarshaler
|
||||||
// and NeoFS binary decoder.
|
// and FrostFS binary decoder.
|
||||||
type BinaryOrJSON interface {
|
type BinaryOrJSON interface {
|
||||||
Unmarshal([]byte) error
|
Unmarshal([]byte) error
|
||||||
json.Unmarshaler
|
json.Unmarshaler
|
||||||
|
|
|
@ -8,8 +8,8 @@ import (
|
||||||
|
|
||||||
const SessionToken = "session"
|
const SessionToken = "session"
|
||||||
|
|
||||||
// InitSession registers SessionToken flag representing filepath to the token
|
// InitSession registers SessionToken flag representing file path to the token of
|
||||||
// of the session with the given name. Supports NeoFS-binary and JSON files.
|
// the session with the given name. Supports FrostFS-binary and JSON files.
|
||||||
func InitSession(cmd *cobra.Command, name string) {
|
func InitSession(cmd *cobra.Command, name string) {
|
||||||
cmd.Flags().String(
|
cmd.Flags().String(
|
||||||
SessionToken,
|
SessionToken,
|
||||||
|
|
|
@ -37,7 +37,7 @@ var netInfoCmd = &cobra.Command{
|
||||||
|
|
||||||
const format = " %s: %v\n"
|
const format = " %s: %v\n"
|
||||||
|
|
||||||
cmd.Println("NeoFS network configuration (system)")
|
cmd.Println("FrostFS network configuration (system)")
|
||||||
cmd.Printf(format, "Audit fee", netInfo.AuditFee())
|
cmd.Printf(format, "Audit fee", netInfo.AuditFee())
|
||||||
cmd.Printf(format, "Storage price", netInfo.StoragePrice())
|
cmd.Printf(format, "Storage price", netInfo.StoragePrice())
|
||||||
cmd.Printf(format, "Container fee", netInfo.ContainerFee())
|
cmd.Printf(format, "Container fee", netInfo.ContainerFee())
|
||||||
|
@ -50,7 +50,7 @@ var netInfoCmd = &cobra.Command{
|
||||||
cmd.Printf(format, "Homomorphic hashing disabled", netInfo.HomomorphicHashingDisabled())
|
cmd.Printf(format, "Homomorphic hashing disabled", netInfo.HomomorphicHashingDisabled())
|
||||||
cmd.Printf(format, "Maintenance mode allowed", netInfo.MaintenanceModeAllowed())
|
cmd.Printf(format, "Maintenance mode allowed", netInfo.MaintenanceModeAllowed())
|
||||||
|
|
||||||
cmd.Println("NeoFS network configuration (other)")
|
cmd.Println("FrostFS network configuration (other)")
|
||||||
netInfo.IterateRawNetworkParameters(func(name string, value []byte) {
|
netInfo.IterateRawNetworkParameters(func(name string, value []byte) {
|
||||||
cmd.Printf(format, name, hex.EncodeToString(value))
|
cmd.Printf(format, name, hex.EncodeToString(value))
|
||||||
})
|
})
|
||||||
|
|
|
@ -86,7 +86,7 @@ var objectLockCmd = &cobra.Command{
|
||||||
prm.SetHeader(obj)
|
prm.SetHeader(obj)
|
||||||
|
|
||||||
res, err := internalclient.PutObject(prm)
|
res, err := internalclient.PutObject(prm)
|
||||||
commonCmd.ExitOnErr(cmd, "Store lock object in NeoFS: %w", err)
|
commonCmd.ExitOnErr(cmd, "Store lock object in FrostFS: %w", err)
|
||||||
|
|
||||||
cmd.Printf("Lock object ID: %s\n", res.ID())
|
cmd.Printf("Lock object ID: %s\n", res.ID())
|
||||||
cmd.Println("Objects successfully locked.")
|
cmd.Println("Objects successfully locked.")
|
||||||
|
|
|
@ -274,7 +274,7 @@ func OpenSessionViaClient(cmd *cobra.Command, dst SessionPrm, cli *client.Client
|
||||||
|
|
||||||
var tok session.Object
|
var tok session.Object
|
||||||
|
|
||||||
const sessionLifetime = 10 // in NeoFS epochs
|
const sessionLifetime = 10 // in FrostFS epochs
|
||||||
|
|
||||||
common.PrintVerbose(cmd, "Opening remote session with the node...")
|
common.PrintVerbose(cmd, "Opening remote session with the node...")
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
envPrefix = "NEOFS_CLI"
|
envPrefix = "FROSTFS_CLI"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Global scope flags.
|
// Global scope flags.
|
||||||
|
|
|
@ -81,7 +81,7 @@ func createSession(cmd *cobra.Command, _ []string) {
|
||||||
commonCmd.ExitOnErr(cmd, "can't write token to file: %w", err)
|
commonCmd.ExitOnErr(cmd, "can't write token to file: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateSession opens a new communication with NeoFS storage node using client connection.
|
// CreateSession opens a new communication with FrostFS storage node using client connection.
|
||||||
// The session is expected to be maintained by the storage node during the given
|
// The session is expected to be maintained by the storage node during the given
|
||||||
// number of epochs.
|
// number of epochs.
|
||||||
//
|
//
|
||||||
|
|
|
@ -8,14 +8,14 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func newConfig(path string) (*viper.Viper, error) {
|
func newConfig(path string) (*viper.Viper, error) {
|
||||||
const innerRingPrefix = "neofs_ir"
|
const envPrefix = "FROSTFS_IR"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
v = viper.New()
|
v = viper.New()
|
||||||
)
|
)
|
||||||
|
|
||||||
v.SetEnvPrefix(innerRingPrefix)
|
v.SetEnvPrefix(envPrefix)
|
||||||
v.AutomaticEnv()
|
v.AutomaticEnv()
|
||||||
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||||||
|
|
||||||
|
|
|
@ -849,8 +849,8 @@ func (c *cfg) LocalNodeInfo() (*netmapV2.NodeInfo, error) {
|
||||||
return &res, nil
|
return &res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleLocalNodeInfo rewrites local node info from the NeoFS network map.
|
// handleLocalNodeInfo rewrites local node info from the FrostFS network map.
|
||||||
// Called with nil when storage node is outside the NeoFS network map
|
// Called with nil when storage node is outside the FrostFS network map
|
||||||
// (before entering the network and after leaving it).
|
// (before entering the network and after leaving it).
|
||||||
func (c *cfg) handleLocalNodeInfo(ni *netmap.NodeInfo) {
|
func (c *cfg) handleLocalNodeInfo(ni *netmap.NodeInfo) {
|
||||||
c.cfgNetmap.state.setNodeInfo(ni)
|
c.cfgNetmap.state.setNodeInfo(ni)
|
||||||
|
|
|
@ -9,10 +9,10 @@ import (
|
||||||
const (
|
const (
|
||||||
subsection = "apiclient"
|
subsection = "apiclient"
|
||||||
|
|
||||||
// DialTimeoutDefault is a default dial timeout of NeoFS API client connection.
|
// DialTimeoutDefault is a default dial timeout of FrostFS API client connection.
|
||||||
DialTimeoutDefault = 5 * time.Second
|
DialTimeoutDefault = 5 * time.Second
|
||||||
|
|
||||||
// StreamTimeoutDefault is a default timeout of NeoFS API streaming operation.
|
// StreamTimeoutDefault is a default timeout of FrostFS API streaming operation.
|
||||||
StreamTimeoutDefault = 15 * time.Second
|
StreamTimeoutDefault = 15 * time.Second
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
|
|
||||||
// EnvPrefix is a prefix of ENV variables related
|
// EnvPrefix is a prefix of ENV variables related
|
||||||
// to storage node configuration.
|
// to storage node configuration.
|
||||||
const EnvPrefix = "neofs"
|
const EnvPrefix = "FROSTFS"
|
||||||
|
|
||||||
// EnvSeparator is a section separator in ENV variables.
|
// EnvSeparator is a section separator in ENV variables.
|
||||||
const EnvSeparator = "_"
|
const EnvSeparator = "_"
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
|
|
||||||
func TestEnv(t *testing.T) {
|
func TestEnv(t *testing.T) {
|
||||||
require.Equal(t,
|
require.Equal(t,
|
||||||
"NEOFS_SECTION_PARAMETER",
|
"FROSTFS_SECTION_PARAMETER",
|
||||||
internal.Env("section", "parameter"),
|
internal.Env("section", "parameter"),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,8 +25,8 @@ func TestMorphSection(t *testing.T) {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
rpcs = []client.Endpoint{
|
rpcs = []client.Endpoint{
|
||||||
{"wss://rpc1.morph.fs.neo.org:40341/ws", 1},
|
{"wss://rpc1.morph.frostfs.info:40341/ws", 1},
|
||||||
{"wss://rpc2.morph.fs.neo.org:40341/ws", 2},
|
{"wss://rpc2.morph.frostfs.info:40341/ws", 2},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ func initControlService(c *cfg) {
|
||||||
c.cfgControlService.server = grpc.NewServer()
|
c.cfgControlService.server = grpc.NewServer()
|
||||||
|
|
||||||
c.onShutdown(func() {
|
c.onShutdown(func() {
|
||||||
stopGRPC("NeoFS Control API", c.cfgControlService.server, c.log)
|
stopGRPC("FrostFS Control API", c.cfgControlService.server, c.log)
|
||||||
})
|
})
|
||||||
|
|
||||||
control.RegisterControlServiceServer(c.cfgControlService.server, ctlSvc)
|
control.RegisterControlServiceServer(c.cfgControlService.server, ctlSvc)
|
||||||
|
|
|
@ -65,7 +65,7 @@ func initGRPC(c *cfg) {
|
||||||
srv := grpc.NewServer(serverOpts...)
|
srv := grpc.NewServer(serverOpts...)
|
||||||
|
|
||||||
c.onShutdown(func() {
|
c.onShutdown(func() {
|
||||||
stopGRPC("NeoFS Public API", srv, c.log)
|
stopGRPC("FrostFS Public API", srv, c.log)
|
||||||
})
|
})
|
||||||
|
|
||||||
c.cfgGRPC.servers = append(c.cfgGRPC.servers, srv)
|
c.cfgGRPC.servers = append(c.cfgGRPC.servers, srv)
|
||||||
|
|
|
@ -117,7 +117,7 @@ func initNotifications(c *cfg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
natsSvc := nats.New(
|
natsSvc := nats.New(
|
||||||
nats.WithConnectionName("NeoFS Storage Node: "+pubKey), // connection name is used in the server side logs
|
nats.WithConnectionName("FrostFS Storage Node: "+pubKey), // connection name is used in the server side logs
|
||||||
nats.WithTimeout(nodeconfig.Notification(c.appCfg).Timeout()),
|
nats.WithTimeout(nodeconfig.Notification(c.appCfg).Timeout()),
|
||||||
nats.WithClientCert(
|
nats.WithClientCert(
|
||||||
nodeconfig.Notification(c.appCfg).CertPath(),
|
nodeconfig.Notification(c.appCfg).CertPath(),
|
||||||
|
|
|
@ -15,7 +15,7 @@ type commonPrm struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetClient sets the base client for NeoFS API communication.
|
// SetClient sets the base client for FrostFS API communication.
|
||||||
//
|
//
|
||||||
// Required parameter.
|
// Required parameter.
|
||||||
func (x *commonPrm) SetClient(cli coreclient.Client) {
|
func (x *commonPrm) SetClient(cli coreclient.Client) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Package internal provides functionality for NeoFS Node Reputation system communication with NeoFS network.
|
// Package internal provides functionality for FrostFS Node Reputation system communication with FrostFS network.
|
||||||
// The base client for accessing remote nodes via NeoFS API is a NeoFS SDK Go API client.
|
// The base client for accessing remote nodes via FrostFS API is a FrostFS SDK Go API client.
|
||||||
// However, although it encapsulates a useful piece of business logic (e.g. the signature mechanism),
|
// However, although it encapsulates a useful piece of business logic (e.g. the signature mechanism),
|
||||||
// the Reputation service does not fully use the client's flexible interface.
|
// the Reputation service does not fully use the client's flexible interface.
|
||||||
//
|
//
|
||||||
|
@ -7,5 +7,5 @@
|
||||||
// This allows you to concentrate the entire spectrum of the client's use in one place (this will be convenient
|
// This allows you to concentrate the entire spectrum of the client's use in one place (this will be convenient
|
||||||
// both when updating the base client and for evaluating the UX of SDK library). So, it is expected that all
|
// both when updating the base client and for evaluating the UX of SDK library). So, it is expected that all
|
||||||
// Reputation service packages will be limited to this package for the development of functionality requiring
|
// Reputation service packages will be limited to this package for the development of functionality requiring
|
||||||
// NeoFS API communication.
|
// FrostFS API communication.
|
||||||
package internal
|
package internal
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Examples of correct configuration file structures
|
# Examples of correct configuration file structures
|
||||||
|
|
||||||
Here are files in all supported formats and with all possible configuration values
|
Here are files in all supported formats and with all possible configuration values
|
||||||
of NeoFS applications. See [node.yaml](node.yaml) for configuration notes.
|
of FrostFS applications. See [node.yaml](node.yaml) for configuration notes.
|
||||||
|
|
||||||
All parameters are correct, however, they are for informational purposes only.
|
All parameters are correct, however, they are for informational purposes only.
|
||||||
It is not recommended transferring these configs for real application launches.
|
It is not recommended transferring these configs for real application launches.
|
||||||
|
@ -19,4 +19,4 @@ It is not recommended transferring these configs for real application launches.
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
- Storage node: `node.env`
|
- Storage node: `node.env`
|
||||||
- Inner ring: `ir.env`
|
- Inner ring: `ir.env`
|
||||||
|
|
|
@ -1,98 +1,98 @@
|
||||||
NEOFS_IR_LOGGER_LEVEL=info
|
FROSTFS_IR_LOGGER_LEVEL=info
|
||||||
|
|
||||||
NEOFS_IR_WALLET_PATH=/path/to/wallet.json
|
FROSTFS_IR_WALLET_PATH=/path/to/wallet.json
|
||||||
NEOFS_IR_WALLET_ADDRESS=NUHtW3eM6a4mmFCgyyr4rj4wygsTKB88XX
|
FROSTFS_IR_WALLET_ADDRESS=NUHtW3eM6a4mmFCgyyr4rj4wygsTKB88XX
|
||||||
NEOFS_IR_WALLET_PASSWORD=secret
|
FROSTFS_IR_WALLET_PASSWORD=secret
|
||||||
|
|
||||||
NEOFS_IR_WITHOUT_MAINNET=false
|
FROSTFS_IR_WITHOUT_MAINNET=false
|
||||||
|
|
||||||
NEOFS_IR_MORPH_DIAL_TIMEOUT=5s
|
FROSTFS_IR_MORPH_DIAL_TIMEOUT=5s
|
||||||
NEOFS_IR_MORPH_ENDPOINT_CLIENT_0_ADDRESS="wss://sidechain1.fs.neo.org:30333/ws"
|
FROSTFS_IR_MORPH_ENDPOINT_CLIENT_0_ADDRESS="wss://sidechain1.fs.neo.org:30333/ws"
|
||||||
NEOFS_IR_MORPH_ENDPOINT_CLIENT_1_ADDRESS="wss://sidechain2.fs.neo.org:30333/ws"
|
FROSTFS_IR_MORPH_ENDPOINT_CLIENT_1_ADDRESS="wss://sidechain2.fs.neo.org:30333/ws"
|
||||||
NEOFS_IR_MORPH_VALIDATORS="0283120f4c8c1fc1d792af5063d2def9da5fddc90bc1384de7fcfdda33c3860170"
|
FROSTFS_IR_MORPH_VALIDATORS="0283120f4c8c1fc1d792af5063d2def9da5fddc90bc1384de7fcfdda33c3860170"
|
||||||
NEOFS_IR_MORPH_SWITCH_INTERVAL=2m
|
FROSTFS_IR_MORPH_SWITCH_INTERVAL=2m
|
||||||
|
|
||||||
NEOFS_IR_MAINNET_DIAL_TIMEOUT=5s
|
FROSTFS_IR_MAINNET_DIAL_TIMEOUT=5s
|
||||||
NEOFS_IR_MAINNET_ENDPOINT_CLIENT_0_ADDRESS="wss://mainchain1.fs.neo.org:30333/ws"
|
FROSTFS_IR_MAINNET_ENDPOINT_CLIENT_0_ADDRESS="wss://mainchain1.fs.neo.org:30333/ws"
|
||||||
NEOFS_IR_MAINNET_ENDPOINT_CLIENT_1_ADDRESS="wss://mainchain2.fs.neo.org:30333/ws"
|
FROSTFS_IR_MAINNET_ENDPOINT_CLIENT_1_ADDRESS="wss://mainchain2.fs.neo.org:30333/ws"
|
||||||
NEOFS_IR_MAINNET_SWITCH_INTERVAL=2m
|
FROSTFS_IR_MAINNET_SWITCH_INTERVAL=2m
|
||||||
|
|
||||||
NEOFS_IR_CONTROL_AUTHORIZED_KEYS="035839e45d472a3b7769a2a1bd7d54c4ccd4943c3b40f547870e83a8fcbfb3ce11 028f42cfcb74499d7b15b35d9bff260a1c8d27de4f446a627406a382d8961486d6"
|
FROSTFS_IR_CONTROL_AUTHORIZED_KEYS="035839e45d472a3b7769a2a1bd7d54c4ccd4943c3b40f547870e83a8fcbfb3ce11 028f42cfcb74499d7b15b35d9bff260a1c8d27de4f446a627406a382d8961486d6"
|
||||||
NEOFS_IR_CONTROL_GRPC_ENDPOINT=localhost:8090
|
FROSTFS_IR_CONTROL_GRPC_ENDPOINT=localhost:8090
|
||||||
|
|
||||||
NEOFS_IR_GOVERNANCE_DISABLE=false
|
FROSTFS_IR_GOVERNANCE_DISABLE=false
|
||||||
|
|
||||||
NEOFS_IR_NODE_PERSISTENT_STATE_PATH=.frostfs-ir-state
|
FROSTFS_IR_NODE_PERSISTENT_STATE_PATH=.frostfs-ir-state
|
||||||
|
|
||||||
NEOFS_IR_LOCODE_DB_PATH=/path/to/locode.db
|
FROSTFS_IR_LOCODE_DB_PATH=/path/to/locode.db
|
||||||
|
|
||||||
NEOFS_IR_FEE_MAIN_CHAIN=50000000
|
FROSTFS_IR_FEE_MAIN_CHAIN=50000000
|
||||||
NEOFS_IR_FEE_SIDE_CHAIN=200000000
|
FROSTFS_IR_FEE_SIDE_CHAIN=200000000
|
||||||
NEOFS_IR_FEE_NAMED_CONTAINER_REGISTER=2500000000
|
FROSTFS_IR_FEE_NAMED_CONTAINER_REGISTER=2500000000
|
||||||
|
|
||||||
NEOFS_IR_TIMERS_EMIT=240
|
FROSTFS_IR_TIMERS_EMIT=240
|
||||||
NEOFS_IR_TIMERS_STOP_ESTIMATION_MUL=1
|
FROSTFS_IR_TIMERS_STOP_ESTIMATION_MUL=1
|
||||||
NEOFS_IR_TIMERS_STOP_ESTIMATION_DIV=4
|
FROSTFS_IR_TIMERS_STOP_ESTIMATION_DIV=4
|
||||||
NEOFS_IR_TIMERS_COLLECT_BASIC_INCOME_MUL=1
|
FROSTFS_IR_TIMERS_COLLECT_BASIC_INCOME_MUL=1
|
||||||
NEOFS_IR_TIMERS_COLLECT_BASIC_INCOME_DIV=2
|
FROSTFS_IR_TIMERS_COLLECT_BASIC_INCOME_DIV=2
|
||||||
NEOFS_IR_TIMERS_DISTRIBUTE_BASIC_INCOME_MUL=3
|
FROSTFS_IR_TIMERS_DISTRIBUTE_BASIC_INCOME_MUL=3
|
||||||
NEOFS_IR_TIMERS_DISTRIBUTE_BASIC_INCOME_DIV=4
|
FROSTFS_IR_TIMERS_DISTRIBUTE_BASIC_INCOME_DIV=4
|
||||||
|
|
||||||
NEOFS_IR_EMIT_STORAGE_AMOUNT=800000000
|
FROSTFS_IR_EMIT_STORAGE_AMOUNT=800000000
|
||||||
NEOFS_IR_EMIT_MINT_VALUE=20000000
|
FROSTFS_IR_EMIT_MINT_VALUE=20000000
|
||||||
NEOFS_IR_EMIT_MINT_CACHE_SIZE=1000
|
FROSTFS_IR_EMIT_MINT_CACHE_SIZE=1000
|
||||||
NEOFS_IR_EMIT_MINT_CACHE_THRESHOLD=1
|
FROSTFS_IR_EMIT_MINT_CACHE_THRESHOLD=1
|
||||||
NEOFS_IR_EMIT_GAS_BALANCE_THRESHOLD=100000000000
|
FROSTFS_IR_EMIT_GAS_BALANCE_THRESHOLD=100000000000
|
||||||
|
|
||||||
NEOFS_IR_WORKERS_ALPHABET=10
|
FROSTFS_IR_WORKERS_ALPHABET=10
|
||||||
NEOFS_IR_WORKERS_BALANCE=10
|
FROSTFS_IR_WORKERS_BALANCE=10
|
||||||
NEOFS_IR_WORKERS_CONTAINER=10
|
FROSTFS_IR_WORKERS_CONTAINER=10
|
||||||
NEOFS_IR_WORKERS_NEOFS=10
|
FROSTFS_IR_WORKERS_NEOFS=10
|
||||||
NEOFS_IR_WORKERS_NETMAP=10
|
FROSTFS_IR_WORKERS_NETMAP=10
|
||||||
NEOFS_IR_WORKERS_REPUTATION=10
|
FROSTFS_IR_WORKERS_REPUTATION=10
|
||||||
NEOFS_IR_WORKERS_SUBNET=10
|
FROSTFS_IR_WORKERS_SUBNET=10
|
||||||
|
|
||||||
NEOFS_IR_AUDIT_TIMEOUT_GET=5s
|
FROSTFS_IR_AUDIT_TIMEOUT_GET=5s
|
||||||
NEOFS_IR_AUDIT_TIMEOUT_HEAD=5s
|
FROSTFS_IR_AUDIT_TIMEOUT_HEAD=5s
|
||||||
NEOFS_IR_AUDIT_TIMEOUT_RANGEHASH=5s
|
FROSTFS_IR_AUDIT_TIMEOUT_RANGEHASH=5s
|
||||||
NEOFS_IR_AUDIT_TIMEOUT_SEARCH=10s
|
FROSTFS_IR_AUDIT_TIMEOUT_SEARCH=10s
|
||||||
NEOFS_IR_AUDIT_TASK_EXEC_POOL_SIZE=10
|
FROSTFS_IR_AUDIT_TASK_EXEC_POOL_SIZE=10
|
||||||
NEOFS_IR_AUDIT_TASK_QUEUE_CAPACITY=100
|
FROSTFS_IR_AUDIT_TASK_QUEUE_CAPACITY=100
|
||||||
NEOFS_IR_AUDIT_PDP_PAIRS_POOL_SIZE=10
|
FROSTFS_IR_AUDIT_PDP_PAIRS_POOL_SIZE=10
|
||||||
NEOFS_IR_AUDIT_PDP_MAX_SLEEP_INTERVAL=5s
|
FROSTFS_IR_AUDIT_PDP_MAX_SLEEP_INTERVAL=5s
|
||||||
NEOFS_IR_AUDIT_POR_POOL_SIZE=10
|
FROSTFS_IR_AUDIT_POR_POOL_SIZE=10
|
||||||
|
|
||||||
NEOFS_IR_INDEXER_CACHE_TIMEOUT=15s
|
FROSTFS_IR_INDEXER_CACHE_TIMEOUT=15s
|
||||||
|
|
||||||
NEOFS_IR_NETMAP_CLEANER_ENABLED=true
|
FROSTFS_IR_NETMAP_CLEANER_ENABLED=true
|
||||||
NEOFS_IR_NETMAP_CLEANER_THRESHOLD=3
|
FROSTFS_IR_NETMAP_CLEANER_THRESHOLD=3
|
||||||
|
|
||||||
NEOFS_IR_CONTRACTS_NEOFS=ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62
|
FROSTFS_IR_CONTRACTS_NEOFS=ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62
|
||||||
NEOFS_IR_CONTRACTS_PROCESSING=597f5894867113a41e192801709c02497f611de8
|
FROSTFS_IR_CONTRACTS_PROCESSING=597f5894867113a41e192801709c02497f611de8
|
||||||
NEOFS_IR_CONTRACTS_AUDIT=219e37aed2180b87e7fe945dbf97d67125e8d73f
|
FROSTFS_IR_CONTRACTS_AUDIT=219e37aed2180b87e7fe945dbf97d67125e8d73f
|
||||||
NEOFS_IR_CONTRACTS_BALANCE=d2aa48d14b17b11bc4c68205027884a96706dd16
|
FROSTFS_IR_CONTRACTS_BALANCE=d2aa48d14b17b11bc4c68205027884a96706dd16
|
||||||
NEOFS_IR_CONTRACTS_CONTAINER=ed4a7a66fe3f9bfe50f214b49be8f215a3c886b6
|
FROSTFS_IR_CONTRACTS_CONTAINER=ed4a7a66fe3f9bfe50f214b49be8f215a3c886b6
|
||||||
NEOFS_IR_CONTRACTS_NEOFSID=9f5866decbc751a099e74c7c7bc89f609201755a
|
FROSTFS_IR_CONTRACTS_NEOFSID=9f5866decbc751a099e74c7c7bc89f609201755a
|
||||||
NEOFS_IR_CONTRACTS_NETMAP=83c600c81d47a1b1b7cf58eb49ae7ee7240dc742
|
FROSTFS_IR_CONTRACTS_NETMAP=83c600c81d47a1b1b7cf58eb49ae7ee7240dc742
|
||||||
NEOFS_IR_CONTRACTS_PROXY=abc8794bb40a21f2db5f21ae62741eb46c8cad1c
|
FROSTFS_IR_CONTRACTS_PROXY=abc8794bb40a21f2db5f21ae62741eb46c8cad1c
|
||||||
NEOFS_IR_CONTRACTS_REPUTATION=d793b842ff0c103fe89e385069e82a27602135ff
|
FROSTFS_IR_CONTRACTS_REPUTATION=d793b842ff0c103fe89e385069e82a27602135ff
|
||||||
NEOFS_IR_CONTRACTS_SUBNET=e9266864d3c562c6e17f2bb9cb1392aaa293d93a
|
FROSTFS_IR_CONTRACTS_SUBNET=e9266864d3c562c6e17f2bb9cb1392aaa293d93a
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_AMOUNT=7
|
FROSTFS_IR_CONTRACTS_ALPHABET_AMOUNT=7
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_AZ=c1d211fceeb4b1dc76b8e4054d11fdf887e418ea
|
FROSTFS_IR_CONTRACTS_ALPHABET_AZ=c1d211fceeb4b1dc76b8e4054d11fdf887e418ea
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_BUKY=e2ba789320899658b100f331bdebb74474757920
|
FROSTFS_IR_CONTRACTS_ALPHABET_BUKY=e2ba789320899658b100f331bdebb74474757920
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_VEDI=9623c11fd49aa18220458fbaae0396749c669e19
|
FROSTFS_IR_CONTRACTS_ALPHABET_VEDI=9623c11fd49aa18220458fbaae0396749c669e19
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_GLAGOLI=39617441b8e06c55e4fc3ce660be9101b6c1f866
|
FROSTFS_IR_CONTRACTS_ALPHABET_GLAGOLI=39617441b8e06c55e4fc3ce660be9101b6c1f866
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_DOBRO=e6122b65d45c8feeb04455d67814394c147ed4d1
|
FROSTFS_IR_CONTRACTS_ALPHABET_DOBRO=e6122b65d45c8feeb04455d67814394c147ed4d1
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_YEST=cdbca5cb5d48a4472923844d0e3ee6328cf86d38
|
FROSTFS_IR_CONTRACTS_ALPHABET_YEST=cdbca5cb5d48a4472923844d0e3ee6328cf86d38
|
||||||
NEOFS_IR_CONTRACTS_ALPHABET_ZHIVETE=f584699bc2ff457d339fb09f16217042c1a42101
|
FROSTFS_IR_CONTRACTS_ALPHABET_ZHIVETE=f584699bc2ff457d339fb09f16217042c1a42101
|
||||||
|
|
||||||
NEOFS_IR_PPROF_ENABLED=true
|
FROSTFS_IR_PPROF_ENABLED=true
|
||||||
NEOFS_IR_PPROF_ADDRESS=localhost:6060
|
FROSTFS_IR_PPROF_ADDRESS=localhost:6060
|
||||||
NEOFS_IR_PPROF_SHUTDOWN_TIMEOUT=30s
|
FROSTFS_IR_PPROF_SHUTDOWN_TIMEOUT=30s
|
||||||
|
|
||||||
NEOFS_IR_PROMETHEUS_ENABLED=true
|
FROSTFS_IR_PROMETHEUS_ENABLED=true
|
||||||
NEOFS_IR_PROMETHEUS_ADDRESS=localhost:9090
|
FROSTFS_IR_PROMETHEUS_ADDRESS=localhost:9090
|
||||||
NEOFS_IR_PROMETHEUS_SHUTDOWN_TIMEOUT=30s
|
FROSTFS_IR_PROMETHEUS_SHUTDOWN_TIMEOUT=30s
|
||||||
|
|
||||||
NEOFS_IR_SETTLEMENT_BASIC_INCOME_RATE=100
|
FROSTFS_IR_SETTLEMENT_BASIC_INCOME_RATE=100
|
||||||
NEOFS_IR_SETTLEMENT_AUDIT_FEE=100
|
FROSTFS_IR_SETTLEMENT_AUDIT_FEE=100
|
||||||
|
|
|
@ -69,7 +69,7 @@ emit:
|
||||||
mint:
|
mint:
|
||||||
value: 20000000 # Fixed8 value of sidechain GAS transferred to account that received a deposit from mainchain
|
value: 20000000 # Fixed8 value of sidechain GAS transferred to account that received a deposit from mainchain
|
||||||
cache_size: 1000 # LRU cache size of all deposit receivers to avoid double GAS emission
|
cache_size: 1000 # LRU cache size of all deposit receivers to avoid double GAS emission
|
||||||
threshold: 1 # Lifetime of records in LRU cache of all deposit receivers in NeoFS epochs
|
threshold: 1 # Lifetime of records in LRU cache of all deposit receivers in FrostFS epochs
|
||||||
gas:
|
gas:
|
||||||
balance_threshold: 100000000000 # Fixed8 value of inner ring wallet balance threshold when GAS emission for deposit receivers is disabled; disabled by default
|
balance_threshold: 100000000000 # Fixed8 value of inner ring wallet balance threshold when GAS emission for deposit receivers is disabled; disabled by default
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ indexer:
|
||||||
|
|
||||||
netmap_cleaner:
|
netmap_cleaner:
|
||||||
enabled: true # Enable voting for removing stale storage nodes from network map
|
enabled: true # Enable voting for removing stale storage nodes from network map
|
||||||
threshold: 3 # Number of NeoFS epoch without bootstrap request from storage node before it considered stale
|
threshold: 3 # Number of FrostFS epoch without bootstrap request from storage node before it considered stale
|
||||||
|
|
||||||
contracts:
|
contracts:
|
||||||
frostfs: ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62 # Address of FrostFS contract in mainchain; ignore if mainchain is disabled
|
frostfs: ee3dee6d05dc79c24a5b8f6985e10d68b7cacc62 # Address of FrostFS contract in mainchain; ignore if mainchain is disabled
|
||||||
|
|
|
@ -1,180 +1,180 @@
|
||||||
NEOFS_LOGGER_LEVEL=debug
|
FROSTFS_LOGGER_LEVEL=debug
|
||||||
|
|
||||||
NEOFS_PPROF_ENABLED=true
|
FROSTFS_PPROF_ENABLED=true
|
||||||
NEOFS_PPROF_ADDRESS=localhost:6060
|
FROSTFS_PPROF_ADDRESS=localhost:6060
|
||||||
NEOFS_PPROF_SHUTDOWN_TIMEOUT=15s
|
FROSTFS_PPROF_SHUTDOWN_TIMEOUT=15s
|
||||||
|
|
||||||
NEOFS_PROMETHEUS_ENABLED=true
|
FROSTFS_PROMETHEUS_ENABLED=true
|
||||||
NEOFS_PROMETHEUS_ADDRESS=localhost:9090
|
FROSTFS_PROMETHEUS_ADDRESS=localhost:9090
|
||||||
NEOFS_PROMETHEUS_SHUTDOWN_TIMEOUT=15s
|
FROSTFS_PROMETHEUS_SHUTDOWN_TIMEOUT=15s
|
||||||
|
|
||||||
# Node section
|
# Node section
|
||||||
NEOFS_NODE_KEY=./wallet.key
|
FROSTFS_NODE_KEY=./wallet.key
|
||||||
NEOFS_NODE_WALLET_PATH=./wallet.json
|
FROSTFS_NODE_WALLET_PATH=./wallet.json
|
||||||
NEOFS_NODE_WALLET_ADDRESS=NcpJzXcSDrh5CCizf4K9Ro6w4t59J5LKzz
|
FROSTFS_NODE_WALLET_ADDRESS=NcpJzXcSDrh5CCizf4K9Ro6w4t59J5LKzz
|
||||||
NEOFS_NODE_WALLET_PASSWORD=password
|
FROSTFS_NODE_WALLET_PASSWORD=password
|
||||||
NEOFS_NODE_ADDRESSES="s01.frostfs.devenv:8080 /dns4/s02.frostfs.devenv/tcp/8081 grpc://127.0.0.1:8082 grpcs://localhost:8083"
|
FROSTFS_NODE_ADDRESSES="s01.frostfs.devenv:8080 /dns4/s02.frostfs.devenv/tcp/8081 grpc://127.0.0.1:8082 grpcs://localhost:8083"
|
||||||
NEOFS_NODE_ATTRIBUTE_0=Price:11
|
FROSTFS_NODE_ATTRIBUTE_0=Price:11
|
||||||
NEOFS_NODE_ATTRIBUTE_1="UN-LOCODE:RU MSK"
|
FROSTFS_NODE_ATTRIBUTE_1="UN-LOCODE:RU MSK"
|
||||||
NEOFS_NODE_RELAY=true
|
FROSTFS_NODE_RELAY=true
|
||||||
NEOFS_NODE_PERSISTENT_SESSIONS_PATH=/sessions
|
FROSTFS_NODE_PERSISTENT_SESSIONS_PATH=/sessions
|
||||||
NEOFS_NODE_PERSISTENT_STATE_PATH=/state
|
FROSTFS_NODE_PERSISTENT_STATE_PATH=/state
|
||||||
NEOFS_NODE_SUBNET_EXIT_ZERO=true
|
FROSTFS_NODE_SUBNET_EXIT_ZERO=true
|
||||||
NEOFS_NODE_SUBNET_ENTRIES=123 456 789
|
FROSTFS_NODE_SUBNET_ENTRIES=123 456 789
|
||||||
NEOFS_NODE_NOTIFICATION_ENABLED=true
|
FROSTFS_NODE_NOTIFICATION_ENABLED=true
|
||||||
NEOFS_NODE_NOTIFICATION_ENDPOINT=tls://localhost:4222
|
FROSTFS_NODE_NOTIFICATION_ENDPOINT=tls://localhost:4222
|
||||||
NEOFS_NODE_NOTIFICATION_TIMEOUT=6s
|
FROSTFS_NODE_NOTIFICATION_TIMEOUT=6s
|
||||||
NEOFS_NODE_NOTIFICATION_DEFAULT_TOPIC=topic
|
FROSTFS_NODE_NOTIFICATION_DEFAULT_TOPIC=topic
|
||||||
NEOFS_NODE_NOTIFICATION_CERTIFICATE=/cert/path
|
FROSTFS_NODE_NOTIFICATION_CERTIFICATE=/cert/path
|
||||||
NEOFS_NODE_NOTIFICATION_KEY=/key/path
|
FROSTFS_NODE_NOTIFICATION_KEY=/key/path
|
||||||
NEOFS_NODE_NOTIFICATION_CA=/ca/path
|
FROSTFS_NODE_NOTIFICATION_CA=/ca/path
|
||||||
|
|
||||||
# Tree service section
|
# Tree service section
|
||||||
NEOFS_TREE_ENABLED=true
|
FROSTFS_TREE_ENABLED=true
|
||||||
NEOFS_TREE_CACHE_SIZE=15
|
FROSTFS_TREE_CACHE_SIZE=15
|
||||||
NEOFS_TREE_REPLICATION_CHANNEL_CAPACITY=32
|
FROSTFS_TREE_REPLICATION_CHANNEL_CAPACITY=32
|
||||||
NEOFS_TREE_REPLICATION_WORKER_COUNT=32
|
FROSTFS_TREE_REPLICATION_WORKER_COUNT=32
|
||||||
NEOFS_TREE_REPLICATION_TIMEOUT=5s
|
FROSTFS_TREE_REPLICATION_TIMEOUT=5s
|
||||||
NEOFS_TREE_SYNC_INTERVAL=1h
|
FROSTFS_TREE_SYNC_INTERVAL=1h
|
||||||
|
|
||||||
# gRPC section
|
# gRPC section
|
||||||
## 0 server
|
## 0 server
|
||||||
NEOFS_GRPC_0_ENDPOINT=s01.frostfs.devenv:8080
|
FROSTFS_GRPC_0_ENDPOINT=s01.frostfs.devenv:8080
|
||||||
### TLS config
|
### TLS config
|
||||||
NEOFS_GRPC_0_TLS_ENABLED=true
|
FROSTFS_GRPC_0_TLS_ENABLED=true
|
||||||
NEOFS_GRPC_0_TLS_CERTIFICATE=/path/to/cert
|
FROSTFS_GRPC_0_TLS_CERTIFICATE=/path/to/cert
|
||||||
NEOFS_GRPC_0_TLS_KEY=/path/to/key
|
FROSTFS_GRPC_0_TLS_KEY=/path/to/key
|
||||||
|
|
||||||
## 1 server
|
## 1 server
|
||||||
NEOFS_GRPC_1_ENDPOINT=s02.frostfs.devenv:8080
|
FROSTFS_GRPC_1_ENDPOINT=s02.frostfs.devenv:8080
|
||||||
### TLS config
|
### TLS config
|
||||||
NEOFS_GRPC_1_TLS_ENABLED=false
|
FROSTFS_GRPC_1_TLS_ENABLED=false
|
||||||
|
|
||||||
# Control service section
|
# Control service section
|
||||||
NEOFS_CONTROL_AUTHORIZED_KEYS="035839e45d472a3b7769a2a1bd7d54c4ccd4943c3b40f547870e83a8fcbfb3ce11 028f42cfcb74499d7b15b35d9bff260a1c8d27de4f446a627406a382d8961486d6"
|
FROSTFS_CONTROL_AUTHORIZED_KEYS="035839e45d472a3b7769a2a1bd7d54c4ccd4943c3b40f547870e83a8fcbfb3ce11 028f42cfcb74499d7b15b35d9bff260a1c8d27de4f446a627406a382d8961486d6"
|
||||||
NEOFS_CONTROL_GRPC_ENDPOINT=localhost:8090
|
FROSTFS_CONTROL_GRPC_ENDPOINT=localhost:8090
|
||||||
|
|
||||||
# Contracts section
|
# Contracts section
|
||||||
NEOFS_CONTRACTS_BALANCE=5263abba1abedbf79bb57f3e40b50b4425d2d6cd
|
FROSTFS_CONTRACTS_BALANCE=5263abba1abedbf79bb57f3e40b50b4425d2d6cd
|
||||||
NEOFS_CONTRACTS_CONTAINER=5d084790d7aa36cea7b53fe897380dab11d2cd3c
|
FROSTFS_CONTRACTS_CONTAINER=5d084790d7aa36cea7b53fe897380dab11d2cd3c
|
||||||
NEOFS_CONTRACTS_NETMAP=0cce9e948dca43a6b592efe59ddb4ecb89bdd9ca
|
FROSTFS_CONTRACTS_NETMAP=0cce9e948dca43a6b592efe59ddb4ecb89bdd9ca
|
||||||
NEOFS_CONTRACTS_REPUTATION=441995f631c1da2b133462b71859494a5cd45e90
|
FROSTFS_CONTRACTS_REPUTATION=441995f631c1da2b133462b71859494a5cd45e90
|
||||||
NEOFS_CONTRACTS_PROXY=ad7c6b55b737b696e5c82c85445040964a03e97f
|
FROSTFS_CONTRACTS_PROXY=ad7c6b55b737b696e5c82c85445040964a03e97f
|
||||||
|
|
||||||
# Morph chain section
|
# Morph chain section
|
||||||
NEOFS_MORPH_DIAL_TIMEOUT=30s
|
FROSTFS_MORPH_DIAL_TIMEOUT=30s
|
||||||
NEOFS_MORPH_CACHE_TTL=15s
|
FROSTFS_MORPH_CACHE_TTL=15s
|
||||||
NEOFS_MORPH_SWITCH_INTERVAL=3m
|
FROSTFS_MORPH_SWITCH_INTERVAL=3m
|
||||||
NEOFS_MORPH_RPC_ENDPOINT_0_ADDRESS="wss://rpc1.morph.fs.neo.org:40341/ws"
|
FROSTFS_MORPH_RPC_ENDPOINT_0_ADDRESS="wss://rpc1.morph.frostfs.info:40341/ws"
|
||||||
NEOFS_MORPH_RPC_ENDPOINT_0_PRIORITY=0
|
FROSTFS_MORPH_RPC_ENDPOINT_0_PRIORITY=0
|
||||||
NEOFS_MORPH_RPC_ENDPOINT_1_ADDRESS="wss://rpc2.morph.fs.neo.org:40341/ws"
|
FROSTFS_MORPH_RPC_ENDPOINT_1_ADDRESS="wss://rpc2.morph.frostfs.info:40341/ws"
|
||||||
NEOFS_MORPH_RPC_ENDPOINT_1_PRIORITY=2
|
FROSTFS_MORPH_RPC_ENDPOINT_1_PRIORITY=2
|
||||||
|
|
||||||
# API Client section
|
# API Client section
|
||||||
NEOFS_APICLIENT_DIAL_TIMEOUT=15s
|
FROSTFS_APICLIENT_DIAL_TIMEOUT=15s
|
||||||
NEOFS_APICLIENT_STREAM_TIMEOUT=20s
|
FROSTFS_APICLIENT_STREAM_TIMEOUT=20s
|
||||||
NEOFS_APICLIENT_RECONNECT_TIMEOUT=30s
|
FROSTFS_APICLIENT_RECONNECT_TIMEOUT=30s
|
||||||
NEOFS_APICLIENT_ALLOW_EXTERNAL=true
|
FROSTFS_APICLIENT_ALLOW_EXTERNAL=true
|
||||||
|
|
||||||
# Policer section
|
# Policer section
|
||||||
NEOFS_POLICER_HEAD_TIMEOUT=15s
|
FROSTFS_POLICER_HEAD_TIMEOUT=15s
|
||||||
|
|
||||||
# Replicator section
|
# Replicator section
|
||||||
NEOFS_REPLICATOR_PUT_TIMEOUT=15s
|
FROSTFS_REPLICATOR_PUT_TIMEOUT=15s
|
||||||
NEOFS_REPLICATOR_POOL_SIZE=10
|
FROSTFS_REPLICATOR_POOL_SIZE=10
|
||||||
|
|
||||||
# Object service section
|
# Object service section
|
||||||
NEOFS_OBJECT_PUT_POOL_SIZE_REMOTE=100
|
FROSTFS_OBJECT_PUT_POOL_SIZE_REMOTE=100
|
||||||
|
|
||||||
# Storage engine section
|
# Storage engine section
|
||||||
NEOFS_STORAGE_SHARD_POOL_SIZE=15
|
FROSTFS_STORAGE_SHARD_POOL_SIZE=15
|
||||||
NEOFS_STORAGE_SHARD_RO_ERROR_THRESHOLD=100
|
FROSTFS_STORAGE_SHARD_RO_ERROR_THRESHOLD=100
|
||||||
## 0 shard
|
## 0 shard
|
||||||
### Flag to refill Metabase from BlobStor
|
### Flag to refill Metabase from BlobStor
|
||||||
NEOFS_STORAGE_SHARD_0_RESYNC_METABASE=false
|
FROSTFS_STORAGE_SHARD_0_RESYNC_METABASE=false
|
||||||
### Flag to set shard mode
|
### Flag to set shard mode
|
||||||
NEOFS_STORAGE_SHARD_0_MODE=read-only
|
FROSTFS_STORAGE_SHARD_0_MODE=read-only
|
||||||
### Write cache config
|
### Write cache config
|
||||||
NEOFS_STORAGE_SHARD_0_WRITECACHE_ENABLED=false
|
FROSTFS_STORAGE_SHARD_0_WRITECACHE_ENABLED=false
|
||||||
NEOFS_STORAGE_SHARD_0_WRITECACHE_NO_SYNC=true
|
FROSTFS_STORAGE_SHARD_0_WRITECACHE_NO_SYNC=true
|
||||||
NEOFS_STORAGE_SHARD_0_WRITECACHE_PATH=tmp/0/cache
|
FROSTFS_STORAGE_SHARD_0_WRITECACHE_PATH=tmp/0/cache
|
||||||
NEOFS_STORAGE_SHARD_0_WRITECACHE_SMALL_OBJECT_SIZE=16384
|
FROSTFS_STORAGE_SHARD_0_WRITECACHE_SMALL_OBJECT_SIZE=16384
|
||||||
NEOFS_STORAGE_SHARD_0_WRITECACHE_MAX_OBJECT_SIZE=134217728
|
FROSTFS_STORAGE_SHARD_0_WRITECACHE_MAX_OBJECT_SIZE=134217728
|
||||||
NEOFS_STORAGE_SHARD_0_WRITECACHE_WORKERS_NUMBER=30
|
FROSTFS_STORAGE_SHARD_0_WRITECACHE_WORKERS_NUMBER=30
|
||||||
NEOFS_STORAGE_SHARD_0_WRITECACHE_CAPACITY=3221225472
|
FROSTFS_STORAGE_SHARD_0_WRITECACHE_CAPACITY=3221225472
|
||||||
### Metabase config
|
### Metabase config
|
||||||
NEOFS_STORAGE_SHARD_0_METABASE_PATH=tmp/0/meta
|
FROSTFS_STORAGE_SHARD_0_METABASE_PATH=tmp/0/meta
|
||||||
NEOFS_STORAGE_SHARD_0_METABASE_PERM=0644
|
FROSTFS_STORAGE_SHARD_0_METABASE_PERM=0644
|
||||||
NEOFS_STORAGE_SHARD_0_METABASE_MAX_BATCH_SIZE=100
|
FROSTFS_STORAGE_SHARD_0_METABASE_MAX_BATCH_SIZE=100
|
||||||
NEOFS_STORAGE_SHARD_0_METABASE_MAX_BATCH_DELAY=10ms
|
FROSTFS_STORAGE_SHARD_0_METABASE_MAX_BATCH_DELAY=10ms
|
||||||
### Blobstor config
|
### Blobstor config
|
||||||
NEOFS_STORAGE_SHARD_0_COMPRESS=true
|
FROSTFS_STORAGE_SHARD_0_COMPRESS=true
|
||||||
NEOFS_STORAGE_SHARD_0_COMPRESSION_EXCLUDE_CONTENT_TYPES="audio/* video/*"
|
FROSTFS_STORAGE_SHARD_0_COMPRESSION_EXCLUDE_CONTENT_TYPES="audio/* video/*"
|
||||||
NEOFS_STORAGE_SHARD_0_SMALL_OBJECT_SIZE=102400
|
FROSTFS_STORAGE_SHARD_0_SMALL_OBJECT_SIZE=102400
|
||||||
### Blobovnicza config
|
### Blobovnicza config
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_0_PATH=tmp/0/blob/blobovnicza
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_PATH=tmp/0/blob/blobovnicza
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_0_PERM=0644
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_PERM=0644
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_0_TYPE=blobovnicza
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_TYPE=blobovnicza
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_0_SIZE=4194304
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_SIZE=4194304
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_0_DEPTH=1
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_DEPTH=1
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_0_WIDTH=4
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_WIDTH=4
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_0_OPENED_CACHE_CAPACITY=50
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_OPENED_CACHE_CAPACITY=50
|
||||||
### FSTree config
|
### FSTree config
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_1_TYPE=fstree
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_1_TYPE=fstree
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_1_PATH=tmp/0/blob
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_1_PATH=tmp/0/blob
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_1_PERM=0644
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_1_PERM=0644
|
||||||
NEOFS_STORAGE_SHARD_0_BLOBSTOR_1_DEPTH=5
|
FROSTFS_STORAGE_SHARD_0_BLOBSTOR_1_DEPTH=5
|
||||||
### Pilorama config
|
### Pilorama config
|
||||||
NEOFS_STORAGE_SHARD_0_PILORAMA_PATH="tmp/0/blob/pilorama.db"
|
FROSTFS_STORAGE_SHARD_0_PILORAMA_PATH="tmp/0/blob/pilorama.db"
|
||||||
NEOFS_STORAGE_SHARD_0_PILORAMA_MAX_BATCH_DELAY=10ms
|
FROSTFS_STORAGE_SHARD_0_PILORAMA_MAX_BATCH_DELAY=10ms
|
||||||
NEOFS_STORAGE_SHARD_0_PILORAMA_MAX_BATCH_SIZE=200
|
FROSTFS_STORAGE_SHARD_0_PILORAMA_MAX_BATCH_SIZE=200
|
||||||
### GC config
|
### GC config
|
||||||
#### Limit of the single data remover's batching operation in number of objects
|
#### Limit of the single data remover's batching operation in number of objects
|
||||||
NEOFS_STORAGE_SHARD_0_GC_REMOVER_BATCH_SIZE=150
|
FROSTFS_STORAGE_SHARD_0_GC_REMOVER_BATCH_SIZE=150
|
||||||
#### Sleep interval between data remover tacts
|
#### Sleep interval between data remover tacts
|
||||||
NEOFS_STORAGE_SHARD_0_GC_REMOVER_SLEEP_INTERVAL=2m
|
FROSTFS_STORAGE_SHARD_0_GC_REMOVER_SLEEP_INTERVAL=2m
|
||||||
|
|
||||||
## 1 shard
|
## 1 shard
|
||||||
### Flag to refill Metabase from BlobStor
|
### Flag to refill Metabase from BlobStor
|
||||||
NEOFS_STORAGE_SHARD_1_RESYNC_METABASE=true
|
FROSTFS_STORAGE_SHARD_1_RESYNC_METABASE=true
|
||||||
### Flag to set shard mode
|
### Flag to set shard mode
|
||||||
NEOFS_STORAGE_SHARD_1_MODE=read-write
|
FROSTFS_STORAGE_SHARD_1_MODE=read-write
|
||||||
### Write cache config
|
### Write cache config
|
||||||
NEOFS_STORAGE_SHARD_1_WRITECACHE_ENABLED=true
|
FROSTFS_STORAGE_SHARD_1_WRITECACHE_ENABLED=true
|
||||||
NEOFS_STORAGE_SHARD_1_WRITECACHE_PATH=tmp/1/cache
|
FROSTFS_STORAGE_SHARD_1_WRITECACHE_PATH=tmp/1/cache
|
||||||
NEOFS_STORAGE_SHARD_1_WRITECACHE_SMALL_OBJECT_SIZE=16384
|
FROSTFS_STORAGE_SHARD_1_WRITECACHE_SMALL_OBJECT_SIZE=16384
|
||||||
NEOFS_STORAGE_SHARD_1_WRITECACHE_MAX_OBJECT_SIZE=134217728
|
FROSTFS_STORAGE_SHARD_1_WRITECACHE_MAX_OBJECT_SIZE=134217728
|
||||||
NEOFS_STORAGE_SHARD_1_WRITECACHE_WORKERS_NUMBER=30
|
FROSTFS_STORAGE_SHARD_1_WRITECACHE_WORKERS_NUMBER=30
|
||||||
NEOFS_STORAGE_SHARD_1_WRITECACHE_CAPACITY=4294967296
|
FROSTFS_STORAGE_SHARD_1_WRITECACHE_CAPACITY=4294967296
|
||||||
### Metabase config
|
### Metabase config
|
||||||
NEOFS_STORAGE_SHARD_1_METABASE_PATH=tmp/1/meta
|
FROSTFS_STORAGE_SHARD_1_METABASE_PATH=tmp/1/meta
|
||||||
NEOFS_STORAGE_SHARD_1_METABASE_PERM=0644
|
FROSTFS_STORAGE_SHARD_1_METABASE_PERM=0644
|
||||||
NEOFS_STORAGE_SHARD_1_METABASE_MAX_BATCH_SIZE=200
|
FROSTFS_STORAGE_SHARD_1_METABASE_MAX_BATCH_SIZE=200
|
||||||
NEOFS_STORAGE_SHARD_1_METABASE_MAX_BATCH_DELAY=20ms
|
FROSTFS_STORAGE_SHARD_1_METABASE_MAX_BATCH_DELAY=20ms
|
||||||
### Blobstor config
|
### Blobstor config
|
||||||
NEOFS_STORAGE_SHARD_1_COMPRESS=false
|
FROSTFS_STORAGE_SHARD_1_COMPRESS=false
|
||||||
NEOFS_STORAGE_SHARD_1_SMALL_OBJECT_SIZE=102400
|
FROSTFS_STORAGE_SHARD_1_SMALL_OBJECT_SIZE=102400
|
||||||
### Blobovnicza config
|
### Blobovnicza config
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_0_TYPE=blobovnicza
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_TYPE=blobovnicza
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_0_PATH=tmp/1/blob/blobovnicza
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_PATH=tmp/1/blob/blobovnicza
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_0_SIZE=4194304
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_SIZE=4194304
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_0_DEPTH=1
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_DEPTH=1
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_0_WIDTH=4
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_WIDTH=4
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_0_OPENED_CACHE_CAPACITY=50
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_OPENED_CACHE_CAPACITY=50
|
||||||
### FSTree config
|
### FSTree config
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_1_TYPE=fstree
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_1_TYPE=fstree
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_1_PATH=tmp/1/blob
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_1_PATH=tmp/1/blob
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_1_PERM=0644
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_1_PERM=0644
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_1_NO_SYNC=true
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_1_NO_SYNC=true
|
||||||
NEOFS_STORAGE_SHARD_1_BLOBSTOR_1_DEPTH=5
|
FROSTFS_STORAGE_SHARD_1_BLOBSTOR_1_DEPTH=5
|
||||||
### Pilorama config
|
### Pilorama config
|
||||||
NEOFS_STORAGE_SHARD_1_PILORAMA_PATH="tmp/1/blob/pilorama.db"
|
FROSTFS_STORAGE_SHARD_1_PILORAMA_PATH="tmp/1/blob/pilorama.db"
|
||||||
NEOFS_STORAGE_SHARD_1_PILORAMA_PERM=0644
|
FROSTFS_STORAGE_SHARD_1_PILORAMA_PERM=0644
|
||||||
NEOFS_STORAGE_SHARD_1_PILORAMA_NO_SYNC=true
|
FROSTFS_STORAGE_SHARD_1_PILORAMA_NO_SYNC=true
|
||||||
NEOFS_STORAGE_SHARD_1_PILORAMA_MAX_BATCH_DELAY=5ms
|
FROSTFS_STORAGE_SHARD_1_PILORAMA_MAX_BATCH_DELAY=5ms
|
||||||
NEOFS_STORAGE_SHARD_1_PILORAMA_MAX_BATCH_SIZE=100
|
FROSTFS_STORAGE_SHARD_1_PILORAMA_MAX_BATCH_SIZE=100
|
||||||
### GC config
|
### GC config
|
||||||
#### Limit of the single data remover's batching operation in number of objects
|
#### Limit of the single data remover's batching operation in number of objects
|
||||||
NEOFS_STORAGE_SHARD_1_GC_REMOVER_BATCH_SIZE=200
|
FROSTFS_STORAGE_SHARD_1_GC_REMOVER_BATCH_SIZE=200
|
||||||
#### Sleep interval between data remover tacts
|
#### Sleep interval between data remover tacts
|
||||||
NEOFS_STORAGE_SHARD_1_GC_REMOVER_SLEEP_INTERVAL=5m
|
FROSTFS_STORAGE_SHARD_1_GC_REMOVER_SLEEP_INTERVAL=5m
|
||||||
|
|
|
@ -105,11 +105,11 @@
|
||||||
"switch_interval": "3m",
|
"switch_interval": "3m",
|
||||||
"rpc_endpoint": [
|
"rpc_endpoint": [
|
||||||
{
|
{
|
||||||
"address": "wss://rpc1.morph.fs.neo.org:40341/ws",
|
"address": "wss://rpc1.morph.frostfs.info:40341/ws",
|
||||||
"priority": 0
|
"priority": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"address": "wss://rpc2.morph.fs.neo.org:40341/ws",
|
"address": "wss://rpc2.morph.frostfs.info:40341/ws",
|
||||||
"priority": 2
|
"priority": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -31,7 +31,7 @@ node:
|
||||||
path: /state # path to persistent state file of Storage node
|
path: /state # path to persistent state file of Storage node
|
||||||
subnet:
|
subnet:
|
||||||
exit_zero: true # toggle entrance to zero subnet (overrides corresponding attribute and occurrence in `entries`)
|
exit_zero: true # toggle entrance to zero subnet (overrides corresponding attribute and occurrence in `entries`)
|
||||||
entries: # list of IDs of subnets to enter in a text format of NeoFS API protocol (overrides corresponding attributes)
|
entries: # list of IDs of subnets to enter in a text format of FrostFS API protocol (overrides corresponding attributes)
|
||||||
- 123
|
- 123
|
||||||
- 456
|
- 456
|
||||||
- 789
|
- 789
|
||||||
|
@ -88,13 +88,13 @@ morph:
|
||||||
# Cached entities: containers, container lists, eACL tables.
|
# Cached entities: containers, container lists, eACL tables.
|
||||||
switch_interval: 3m # interval b/w RPC switch attempts if the node is connected not to the highest priority node
|
switch_interval: 3m # interval b/w RPC switch attempts if the node is connected not to the highest priority node
|
||||||
rpc_endpoint: # side chain NEO RPC endpoints; are shuffled and used one by one until the first success
|
rpc_endpoint: # side chain NEO RPC endpoints; are shuffled and used one by one until the first success
|
||||||
- address: wss://rpc1.morph.fs.neo.org:40341/ws
|
- address: wss://rpc1.morph.frostfs.info:40341/ws
|
||||||
priority: 0
|
priority: 0
|
||||||
- address: wss://rpc2.morph.fs.neo.org:40341/ws
|
- address: wss://rpc2.morph.frostfs.info:40341/ws
|
||||||
priority: 2
|
priority: 2
|
||||||
|
|
||||||
apiclient:
|
apiclient:
|
||||||
dial_timeout: 15s # timeout for NEOFS API client connection
|
dial_timeout: 15s # timeout for FrostFS API client connection
|
||||||
stream_timeout: 20s # timeout for individual operations in a streaming RPC
|
stream_timeout: 20s # timeout for individual operations in a streaming RPC
|
||||||
allow_external: true # allow to fallback to addresses in `ExternalAddr` attribute
|
allow_external: true # allow to fallback to addresses in `ExternalAddr` attribute
|
||||||
reconnect_timeout: 30s # time to wait before reconnecting to a failed node
|
reconnect_timeout: 30s # time to wait before reconnecting to a failed node
|
||||||
|
|
|
@ -7,7 +7,7 @@ node:
|
||||||
- <announced.address:port>
|
- <announced.address:port>
|
||||||
attribute_0: UN-LOCODE:<XX YYY>
|
attribute_0: UN-LOCODE:<XX YYY>
|
||||||
attribute_1: Price:100000
|
attribute_1: Price:100000
|
||||||
attribute_2: User-Agent:NeoFS\/0.27
|
attribute_2: User-Agent:FrostFS\/0.9999
|
||||||
|
|
||||||
grpc:
|
grpc:
|
||||||
num: 1
|
num: 1
|
||||||
|
@ -55,13 +55,13 @@ object:
|
||||||
|
|
||||||
morph:
|
morph:
|
||||||
rpc_endpoint:
|
rpc_endpoint:
|
||||||
- wss://rpc1.morph.fs.neo.org:40341/ws
|
- wss://rpc1.morph.frostfs.info:40341/ws
|
||||||
- wss://rpc2.morph.fs.neo.org:40341/ws
|
- wss://rpc2.morph.frostfs.info:40341/ws
|
||||||
- wss://rpc3.morph.fs.neo.org:40341/ws
|
- wss://rpc3.morph.frostfs.info:40341/ws
|
||||||
- wss://rpc4.morph.fs.neo.org:40341/ws
|
- wss://rpc4.morph.frostfs.info:40341/ws
|
||||||
- wss://rpc5.morph.fs.neo.org:40341/ws
|
- wss://rpc5.morph.frostfs.info:40341/ws
|
||||||
- wss://rpc6.morph.fs.neo.org:40341/ws
|
- wss://rpc6.morph.frostfs.info:40341/ws
|
||||||
- wss://rpc7.morph.fs.neo.org:40341/ws
|
- wss://rpc7.morph.frostfs.info:40341/ws
|
||||||
dial_timeout: 20s
|
dial_timeout: 20s
|
||||||
|
|
||||||
contracts:
|
contracts:
|
||||||
|
|
|
@ -3,13 +3,13 @@ logger:
|
||||||
|
|
||||||
morph:
|
morph:
|
||||||
rpc_endpoint:
|
rpc_endpoint:
|
||||||
- wss://rpc01.morph.testnet.fs.neo.org:51331/ws
|
- wss://rpc01.morph.testnet.frostfs.info:51331/ws
|
||||||
- wss://rpc02.morph.testnet.fs.neo.org:51331/ws
|
- wss://rpc02.morph.testnet.frostfs.info:51331/ws
|
||||||
- wss://rpc03.morph.testnet.fs.neo.org:51331/ws
|
- wss://rpc03.morph.testnet.frostfs.info:51331/ws
|
||||||
- wss://rpc04.morph.testnet.fs.neo.org:51331/ws
|
- wss://rpc04.morph.testnet.frostfs.info:51331/ws
|
||||||
- wss://rpc05.morph.testnet.fs.neo.org:51331/ws
|
- wss://rpc05.morph.testnet.frostfs.info:51331/ws
|
||||||
- wss://rpc06.morph.testnet.fs.neo.org:51331/ws
|
- wss://rpc06.morph.testnet.frostfs.info:51331/ws
|
||||||
- wss://rpc07.morph.testnet.fs.neo.org:51331/ws
|
- wss://rpc07.morph.testnet.frostfs.info:51331/ws
|
||||||
dial_timeout: 20s
|
dial_timeout: 20s
|
||||||
|
|
||||||
contracts:
|
contracts:
|
||||||
|
@ -21,7 +21,7 @@ contracts:
|
||||||
node:
|
node:
|
||||||
key: /node.key
|
key: /node.key
|
||||||
attribute_0: Deployed:SelfHosted
|
attribute_0: Deployed:SelfHosted
|
||||||
attribute_1: User-Agent:NeoFS\/0.27
|
attribute_1: User-Agent:FrostFS\/0.9999
|
||||||
|
|
||||||
prometheus:
|
prometheus:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
version: "2.4"
|
|
||||||
services:
|
|
||||||
storage01:
|
|
||||||
image: nspccdev/neofs-storage-testnet:0.27.7
|
|
||||||
container_name: frostfs-testnet
|
|
||||||
env_file: node_config.env
|
|
||||||
network_mode: host
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- frostfs_storage:/storage
|
|
||||||
- <NEOFS_NODE_KEY>:/node.key
|
|
||||||
stop_signal: SIGINT
|
|
||||||
|
|
||||||
vmagent:
|
|
||||||
image: victoriametrics/vmagent:v1.61.0
|
|
||||||
container_name: vmagent
|
|
||||||
depends_on:
|
|
||||||
- storage01
|
|
||||||
env_file: node_config.env
|
|
||||||
command:
|
|
||||||
- '-promscrape.config=/configs/prometheus.yml'
|
|
||||||
- '-remoteWrite.url=https://collector.fs.neo.org/api/v1/write'
|
|
||||||
network_mode: host
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- ./prometheus.yml:/configs/prometheus.yml
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
frostfs_storage:
|
|
|
@ -1,32 +0,0 @@
|
||||||
#
|
|
||||||
|
|
||||||
# Specify your public IP address or domain name with the open port
|
|
||||||
# in NODE_ADDRESSES and GRPC_0_ENDPOINT
|
|
||||||
# By default keep these addresses the same.
|
|
||||||
|
|
||||||
# This is used for the public announcement in the network map
|
|
||||||
#
|
|
||||||
#NEOFS_NODE_ADDRESSES=1.1.1.1:36512
|
|
||||||
NEOFS_NODE_ADDRESSES=
|
|
||||||
|
|
||||||
# This is used to open the connection listening socket(s) on your machine
|
|
||||||
#
|
|
||||||
#NEOFS_GRPC_0_ENDPOINT=1.1.1.1:36512
|
|
||||||
NEOFS_GRPC_0_ENDPOINT=
|
|
||||||
NEOFS_GRPC_NUM=1
|
|
||||||
|
|
||||||
# Specify control service endpoint for node administration.
|
|
||||||
# It must be different from connection port.
|
|
||||||
# Keep control service endpoint private with firewall rules or use localhost.
|
|
||||||
NEOFS_CONTROL_GRPC_ENDPOINT=localhost:30512
|
|
||||||
|
|
||||||
|
|
||||||
#https://unece.org/trade/cefact/unlocode-code-list-country-and-territory
|
|
||||||
# Find suitable LOCODE (from the link above) for your storage node.
|
|
||||||
#
|
|
||||||
#NEOFS_NODE_ATTRIBUTE_2=UN-LOCODE:<XX YYY>
|
|
||||||
#NEOFS_NODE_ATTRIBUTE_2=UN-LOCODE:RU LED
|
|
||||||
NEOFS_NODE_ATTRIBUTE_2=
|
|
||||||
|
|
||||||
|
|
||||||
NEOFS_NODE_ATTRIBUTE_3=Price:100000
|
|
|
@ -1,13 +0,0 @@
|
||||||
global:
|
|
||||||
scrape_interval: 15s
|
|
||||||
external_labels:
|
|
||||||
monitor: 'user_metrics'
|
|
||||||
|
|
||||||
scrape_configs:
|
|
||||||
- job_name: 'frostfs-node-user'
|
|
||||||
scrape_interval: 5s
|
|
||||||
static_configs:
|
|
||||||
- targets: ['localhost:9090']
|
|
||||||
relabel_configs:
|
|
||||||
- target_label: 'instance'
|
|
||||||
replacement: "%{NEOFS_NODE_ADDRESS}"
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -2,4 +2,4 @@ frostfs-node (0.0.1) stable; urgency=medium
|
||||||
|
|
||||||
* Initial package build
|
* Initial package build
|
||||||
|
|
||||||
-- NeoSPCC <tech@nspcc.ru> Tue, 25 Oct 2022 21:10:49 +0300
|
-- TrueCloudLab <tech@frostfs.info> Tue, 25 Oct 2022 21:10:49 +0300
|
||||||
|
|
24
debian/control
vendored
24
debian/control
vendored
|
@ -11,29 +11,29 @@ Vcs-Browser: https://github.com/TrueCloudLab/frostfs-node
|
||||||
Package: frostfs-storage
|
Package: frostfs-storage
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${misc:Depends}
|
Depends: ${misc:Depends}
|
||||||
Description: NeoFS Storage node
|
Description: FrostFS Storage node
|
||||||
NeoFS is a decentralized distributed object storage integrated with the NEO
|
FrostFS is a decentralized distributed object storage integrated with the NEO
|
||||||
Blockchain. NeoFS Nodes are organized in a peer-to-peer network that takes care
|
Blockchain. FrostFS Nodes are organized in a peer-to-peer network that takes care
|
||||||
of storing and distributing user's data. Any Neo user may participate in the
|
of storing and distributing user's data. Any Neo user may participate in the
|
||||||
network and get paid for providing storage resources to other users or store
|
network and get paid for providing storage resources to other users or store
|
||||||
their data in NeoFS and pay a competitive price for it.
|
their data in FrostFS and pay a competitive price for it.
|
||||||
|
|
||||||
Package: frostfs-ir
|
Package: frostfs-ir
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${misc:Depends}, frostfs-locode-db
|
Depends: ${misc:Depends}, frostfs-locode-db
|
||||||
Description: NeoFS InnerRing node
|
Description: FrostFS InnerRing node
|
||||||
NeoFS is a decentralized distributed object storage integrated with the NEO
|
FrostFS is a decentralized distributed object storage integrated with the NEO
|
||||||
Blockchain. NeoFS Nodes are organized in a peer-to-peer network that takes care
|
Blockchain. FrostFS Nodes are organized in a peer-to-peer network that takes care
|
||||||
of storing and distributing user's data. Any Neo user may participate in the
|
of storing and distributing user's data. Any Neo user may participate in the
|
||||||
network and get paid for providing storage resources to other users or store
|
network and get paid for providing storage resources to other users or store
|
||||||
their data in NeoFS and pay a competitive price for it.
|
their data in FrostFS and pay a competitive price for it.
|
||||||
|
|
||||||
Package: frostfs-cli
|
Package: frostfs-cli
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${misc:Depends}
|
Depends: ${misc:Depends}
|
||||||
Description: CLI tools for NeoFS
|
Description: CLI tools for FrostFS
|
||||||
NeoFS is a decentralized distributed object storage integrated with the NEO
|
FrostFS is a decentralized distributed object storage integrated with the NEO
|
||||||
Blockchain. NeoFS Nodes are organized in a peer-to-peer network that takes care
|
Blockchain. FrostFS Nodes are organized in a peer-to-peer network that takes care
|
||||||
of storing and distributing user's data. Any Neo user may participate in the
|
of storing and distributing user's data. Any Neo user may participate in the
|
||||||
network and get paid for providing storage resources to other users or store
|
network and get paid for providing storage resources to other users or store
|
||||||
their data in NeoFS and pay a competitive price for it.
|
their data in FrostFS and pay a competitive price for it.
|
||||||
|
|
5
debian/copyright
vendored
5
debian/copyright
vendored
|
@ -1,10 +1,11 @@
|
||||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Upstream-Name: frostfs-node
|
Upstream-Name: frostfs-node
|
||||||
Upstream-Contact: tech@nspcc.ru
|
Upstream-Contact: tech@frostfs.info
|
||||||
Source: https://github.com/TrueCloudLab/frostfs-node
|
Source: https://github.com/TrueCloudLab/frostfs-node
|
||||||
It will become real soon. It will become real soon.
|
|||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: 2018-2022 NeoSPCC (@nspcc-dev), contributors of frostfs-node project
|
Copyright: 2022-2023 TrueCloudLab (@TrueCloudLab), contributors of FrostFS project
|
||||||
|
2018-2022 NeoSPCC (@nspcc-dev), contributors of NeoFS project
|
||||||
(https://github.com/TrueCloudLab/frostfs-node/blob/master/CREDITS.md)
|
(https://github.com/TrueCloudLab/frostfs-node/blob/master/CREDITS.md)
|
||||||
|
|
||||||
License: GPL-3
|
License: GPL-3
|
||||||
|
|
2
debian/frostfs-ir.postinst
vendored
2
debian/frostfs-ir.postinst
vendored
|
@ -19,7 +19,7 @@ set -e
|
||||||
case "$1" in
|
case "$1" in
|
||||||
configure)
|
configure)
|
||||||
USERNAME=ir
|
USERNAME=ir
|
||||||
id -u frostfs-ir >/dev/null 2>&1 || useradd -s /usr/sbin/nologin -d /var/lib/frostfs/ir --system -M -U -c "NeoFS InnerRing node" frostfs-ir
|
id -u frostfs-ir >/dev/null 2>&1 || useradd -s /usr/sbin/nologin -d /var/lib/frostfs/ir --system -M -U -c "FrostFS InnerRing node" frostfs-ir
|
||||||
if ! dpkg-statoverride --list /etc/frostfs/$USERNAME >/dev/null; then
|
if ! dpkg-statoverride --list /etc/frostfs/$USERNAME >/dev/null; then
|
||||||
chown -f root:frostfs-$USERNAME /etc/frostfs/$USERNAME
|
chown -f root:frostfs-$USERNAME /etc/frostfs/$USERNAME
|
||||||
chmod -f 0750 /etc/frostfs/$USERNAME
|
chmod -f 0750 /etc/frostfs/$USERNAME
|
||||||
|
|
2
debian/frostfs-ir.service
vendored
2
debian/frostfs-ir.service
vendored
|
@ -1,5 +1,5 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=NeoFS InnerRing node
|
Description=FrostFS InnerRing node
|
||||||
Requires=network.target
|
Requires=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
|
2
debian/frostfs-storage.postinst
vendored
2
debian/frostfs-storage.postinst
vendored
|
@ -19,7 +19,7 @@ set -e
|
||||||
case "$1" in
|
case "$1" in
|
||||||
configure)
|
configure)
|
||||||
USERNAME=storage
|
USERNAME=storage
|
||||||
id -u frostfs-$USERNAME >/dev/null 2>&1 || useradd -s /usr/sbin/nologin -d /var/lib/frostfs/$USERNAME --system -M -U -c "NeoFS Storage node" frostfs-$USERNAME
|
id -u frostfs-$USERNAME >/dev/null 2>&1 || useradd -s /usr/sbin/nologin -d /var/lib/frostfs/$USERNAME --system -M -U -c "FrostFS Storage node" frostfs-$USERNAME
|
||||||
if ! dpkg-statoverride --list /etc/frostfs/$USERNAME >/dev/null; then
|
if ! dpkg-statoverride --list /etc/frostfs/$USERNAME >/dev/null; then
|
||||||
chown -f root:frostfs-$USERNAME /etc/frostfs/$USERNAME
|
chown -f root:frostfs-$USERNAME /etc/frostfs/$USERNAME
|
||||||
chmod -f 0750 /etc/frostfs/$USERNAME
|
chmod -f 0750 /etc/frostfs/$USERNAME
|
||||||
|
|
2
debian/frostfs-storage.service
vendored
2
debian/frostfs-storage.service
vendored
|
@ -1,5 +1,5 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=NeoFS Storage node
|
Description=FrostFS Storage node
|
||||||
Requires=network.target
|
Requires=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"github.com/TrueCloudLab/frostfs-sdk-go/client"
|
"github.com/TrueCloudLab/frostfs-sdk-go/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Client is an interface of NeoFS storage
|
// Client is an interface of FrostFS storage
|
||||||
// node's client.
|
// node's client.
|
||||||
type Client interface {
|
type Client interface {
|
||||||
ContainerAnnounceUsedSpace(context.Context, client.PrmAnnounceSpace) (*client.ResAnnounceSpace, error)
|
ContainerAnnounceUsedSpace(context.Context, client.PrmAnnounceSpace) (*client.ResAnnounceSpace, error)
|
||||||
|
@ -35,7 +35,7 @@ type MultiAddressClient interface {
|
||||||
RawForAddress(network.Address, func(cli *rawclient.Client) error) error
|
RawForAddress(network.Address, func(cli *rawclient.Client) error) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeInfo groups information about a NeoFS storage node needed for Client construction.
|
// NodeInfo groups information about a FrostFS storage node needed for Client construction.
|
||||||
type NodeInfo struct {
|
type NodeInfo struct {
|
||||||
addrGroup network.AddressGroup
|
addrGroup network.AddressGroup
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"github.com/TrueCloudLab/frostfs-sdk-go/session"
|
"github.com/TrueCloudLab/frostfs-sdk-go/session"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Container groups information about the NeoFS container stored in the NeoFS network.
|
// Container groups information about the FrostFS container stored in the FrostFS network.
|
||||||
type Container struct {
|
type Container struct {
|
||||||
// Container structure.
|
// Container structure.
|
||||||
Value container.Container
|
Value container.Container
|
||||||
|
@ -43,8 +43,8 @@ func IsErrNotFound(err error) bool {
|
||||||
return errors.As(err, new(apistatus.ContainerNotFound))
|
return errors.As(err, new(apistatus.ContainerNotFound))
|
||||||
}
|
}
|
||||||
|
|
||||||
// EACL groups information about the NeoFS container's extended ACL stored in
|
// EACL groups information about the FrostFS container's extended ACL stored in
|
||||||
// the NeoFS network.
|
// the FrostFS network.
|
||||||
type EACL struct {
|
type EACL struct {
|
||||||
// Extended ACL structure.
|
// Extended ACL structure.
|
||||||
Value *eacl.Table
|
Value *eacl.Table
|
||||||
|
|
|
@ -2,6 +2,6 @@ package netmap
|
||||||
|
|
||||||
// State groups the current system state parameters.
|
// State groups the current system state parameters.
|
||||||
type State interface {
|
type State interface {
|
||||||
// CurrentEpoch returns the number of the current NeoFS epoch.
|
// CurrentEpoch returns the number of the current FrostFS epoch.
|
||||||
CurrentEpoch() uint64
|
CurrentEpoch() uint64
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
oid "github.com/TrueCloudLab/frostfs-sdk-go/object/id"
|
oid "github.com/TrueCloudLab/frostfs-sdk-go/object/id"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AddressWithType groups object address with its NeoFS
|
// AddressWithType groups object address with its FrostFS
|
||||||
// object type.
|
// object type.
|
||||||
type AddressWithType struct {
|
type AddressWithType struct {
|
||||||
Address oid.Address
|
Address oid.Address
|
||||||
|
|
|
@ -169,7 +169,7 @@ func (v *FormatValidator) checkOwnerKey(id user.ID, key frostfsecdsa.PublicKey)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContentMeta describes NeoFS meta information that brings object's payload if the object
|
// ContentMeta describes FrostFS meta information that brings object's payload if the object
|
||||||
// is one of:
|
// is one of:
|
||||||
// - object.TypeTombstone;
|
// - object.TypeTombstone;
|
||||||
// - object.TypeStorageGroup;
|
// - object.TypeStorageGroup;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"github.com/TrueCloudLab/frostfs-sdk-go/version"
|
"github.com/TrueCloudLab/frostfs-sdk-go/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IsValid checks if Version is not earlier than the genesis version of the NeoFS.
|
// IsValid checks if Version is not earlier than the genesis version of the FrostFS.
|
||||||
func IsValid(v version.Version) bool {
|
func IsValid(v version.Version) bool {
|
||||||
const (
|
const (
|
||||||
startMajor = 2
|
startMajor = 2
|
||||||
|
|
|
@ -32,7 +32,7 @@ func (f FeeConfig) SideChainFee() fixedn.Fixed8 {
|
||||||
return f.sidechain
|
return f.sidechain
|
||||||
}
|
}
|
||||||
|
|
||||||
// NamedContainerRegistrationFee returns additional GAS fee for named container registration in NeoFS network.
|
// NamedContainerRegistrationFee returns additional GAS fee for named container registration in FrostFS network.
|
||||||
func (f FeeConfig) NamedContainerRegistrationFee() fixedn.Fixed8 {
|
func (f FeeConfig) NamedContainerRegistrationFee() fixedn.Fixed8 {
|
||||||
return f.registerNamedCnr
|
return f.registerNamedCnr
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,14 +16,14 @@ import (
|
||||||
oid "github.com/TrueCloudLab/frostfs-sdk-go/object/id"
|
oid "github.com/TrueCloudLab/frostfs-sdk-go/object/id"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Client represents NeoFS API client cut down to the needs of a purely IR application.
|
// Client represents FrostFS API client cut down to the needs of a purely IR application.
|
||||||
type Client struct {
|
type Client struct {
|
||||||
key *ecdsa.PrivateKey
|
key *ecdsa.PrivateKey
|
||||||
|
|
||||||
c clientcore.Client
|
c clientcore.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
// WrapBasicClient wraps a client.Client instance to use it for NeoFS API RPC.
|
// WrapBasicClient wraps a client.Client instance to use it for FrostFS API RPC.
|
||||||
func (x *Client) WrapBasicClient(c clientcore.Client) {
|
func (x *Client) WrapBasicClient(c clientcore.Client) {
|
||||||
x.c = c
|
x.c = c
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ func (x Client) HeadObject(prm HeadObjectPrm) (*HeadObjectRes, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("read object header from NeoFS: %w", err)
|
return nil, fmt.Errorf("read object header from FrostFS: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var hdr object.Object
|
var hdr object.Object
|
||||||
|
@ -225,7 +225,7 @@ func (x Client) HeadObject(prm HeadObjectPrm) (*HeadObjectRes, error) {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetObjectPayload reads an object by address from NeoFS via Client and returns its payload.
|
// GetObjectPayload reads an object by address from FrostFS via Client and returns its payload.
|
||||||
//
|
//
|
||||||
// Returns any error which prevented the operation from completing correctly in error return.
|
// Returns any error which prevented the operation from completing correctly in error return.
|
||||||
func GetObjectPayload(ctx context.Context, c Client, addr oid.Address) ([]byte, error) {
|
func GetObjectPayload(ctx context.Context, c Client, addr oid.Address) ([]byte, error) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Package frostfsapiclient provides functionality for IR application communication with NeoFS network.
|
// Package frostfsapiclient provides functionality for IR application communication with FrostFS network.
|
||||||
//
|
//
|
||||||
// The basic client for accessing remote nodes via NeoFS API is a NeoFS SDK Go API client.
|
// The basic client for accessing remote nodes via FrostFS API is a FrostFS SDK Go API client.
|
||||||
// However, although it encapsulates a useful piece of business logic (e.g. the signature mechanism),
|
// However, although it encapsulates a useful piece of business logic (e.g. the signature mechanism),
|
||||||
// the IR application does not fully use the client's flexible interface.
|
// the IR application does not fully use the client's flexible interface.
|
||||||
//
|
//
|
||||||
|
@ -8,5 +8,5 @@
|
||||||
// The type provides the minimum interface necessary for the application and also allows you to concentrate
|
// The type provides the minimum interface necessary for the application and also allows you to concentrate
|
||||||
// the entire spectrum of the client's use in one place (this will be convenient both when updating the base client
|
// the entire spectrum of the client's use in one place (this will be convenient both when updating the base client
|
||||||
// and for evaluating the UX of SDK library). So, it is expected that all application packages will be limited
|
// and for evaluating the UX of SDK library). So, it is expected that all application packages will be limited
|
||||||
// to this package for the development of functionality requiring NeoFS API communication.
|
// to this package for the development of functionality requiring FrostFS API communication.
|
||||||
package frostfsapiclient
|
package frostfsapiclient
|
||||||
|
|
|
@ -81,7 +81,7 @@ func New(p *Params) (*Processor, error) {
|
||||||
case p.ContainerClient == nil:
|
case p.ContainerClient == nil:
|
||||||
return nil, errors.New("ir/container: Container client is not set")
|
return nil, errors.New("ir/container: Container client is not set")
|
||||||
case p.FrostFSIDClient == nil:
|
case p.FrostFSIDClient == nil:
|
||||||
return nil, errors.New("ir/container: NeoFS ID client is not set")
|
return nil, errors.New("ir/container: FrostFS ID client is not set")
|
||||||
case p.NetworkState == nil:
|
case p.NetworkState == nil:
|
||||||
return nil, errors.New("ir/container: network state is not set")
|
return nil, errors.New("ir/container: network state is not set")
|
||||||
case p.SubnetClient == nil:
|
case p.SubnetClient == nil:
|
||||||
|
|
|
@ -123,7 +123,7 @@ func (gp *Processor) processAlphabetSync(txHash util.Uint256) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Update NeoFS contract in the mainnet.
|
// 4. Update FrostFS contract in the mainnet.
|
||||||
epoch := gp.epochState.EpochCounter()
|
epoch := gp.epochState.EpochCounter()
|
||||||
|
|
||||||
buf := make([]byte, 8)
|
buf := make([]byte, 8)
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Record is an interface of read-only
|
// Record is an interface of read-only
|
||||||
// NeoFS LOCODE database single entry.
|
// FrostFS LOCODE database single entry.
|
||||||
type Record interface {
|
type Record interface {
|
||||||
// Must return ISO 3166-1 alpha-2
|
// Must return ISO 3166-1 alpha-2
|
||||||
// country code.
|
// country code.
|
||||||
|
@ -47,7 +47,7 @@ type Record interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DB is an interface of read-only
|
// DB is an interface of read-only
|
||||||
// NeoFS LOCODE database.
|
// FrostFS LOCODE database.
|
||||||
type DB interface {
|
type DB interface {
|
||||||
// Must find the record that corresponds to
|
// Must find the record that corresponds to
|
||||||
// LOCODE and provides the Record interface.
|
// LOCODE and provides the Record interface.
|
||||||
|
|
|
@ -6,7 +6,7 @@ package locode
|
||||||
// Passing incorrect parameter values will result in constructor
|
// Passing incorrect parameter values will result in constructor
|
||||||
// failure (error or panic depending on the implementation).
|
// failure (error or panic depending on the implementation).
|
||||||
type Prm struct {
|
type Prm struct {
|
||||||
// NeoFS LOCODE database interface.
|
// FrostFS LOCODE database interface.
|
||||||
//
|
//
|
||||||
// Must not be nil.
|
// Must not be nil.
|
||||||
DB DB
|
DB DB
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// ErrMaintenanceModeDisallowed is returned when maintenance mode is disallowed.
|
// ErrMaintenanceModeDisallowed is returned when maintenance mode is disallowed.
|
||||||
var ErrMaintenanceModeDisallowed = errors.New("maintenance mode is disallowed")
|
var ErrMaintenanceModeDisallowed = errors.New("maintenance mode is disallowed")
|
||||||
|
|
||||||
// NetworkSettings encapsulates current settings of the NeoFS network and
|
// NetworkSettings encapsulates current settings of the FrostFS network and
|
||||||
// provides interface used for processing the network map candidates.
|
// provides interface used for processing the network map candidates.
|
||||||
type NetworkSettings interface {
|
type NetworkSettings interface {
|
||||||
// MaintenanceModeAllowed checks if maintenance state of the storage nodes
|
// MaintenanceModeAllowed checks if maintenance state of the storage nodes
|
||||||
|
@ -27,7 +27,7 @@ type NetworkSettings interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetMapCandidateValidator represents tool which checks state of nodes which
|
// NetMapCandidateValidator represents tool which checks state of nodes which
|
||||||
// are going to register in the NeoFS network (enter the network map).
|
// are going to register in the FrostFS network (enter the network map).
|
||||||
//
|
//
|
||||||
// NetMapCandidateValidator can be instantiated using built-in var declaration
|
// NetMapCandidateValidator can be instantiated using built-in var declaration
|
||||||
// and currently doesn't require any additional initialization.
|
// and currently doesn't require any additional initialization.
|
||||||
|
|
|
@ -29,7 +29,7 @@ type ResultStorage interface {
|
||||||
AuditResultsForEpoch(epoch uint64) ([]*audit.Result, error)
|
AuditResultsForEpoch(epoch uint64) ([]*audit.Result, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SGInfo groups the data about NeoFS storage group
|
// SGInfo groups the data about FrostFS storage group
|
||||||
// necessary for calculating audit fee.
|
// necessary for calculating audit fee.
|
||||||
type SGInfo interface {
|
type SGInfo interface {
|
||||||
// Must return sum size of the all group members.
|
// Must return sum size of the all group members.
|
||||||
|
|
|
@ -17,7 +17,7 @@ type NodeInfo interface {
|
||||||
PublicKey() []byte
|
PublicKey() []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerInfo groups the data about NeoFS container
|
// ContainerInfo groups the data about FrostFS container
|
||||||
// necessary for calculating audit fee.
|
// necessary for calculating audit fee.
|
||||||
type ContainerInfo interface {
|
type ContainerInfo interface {
|
||||||
// Must return identifier of the container owner.
|
// Must return identifier of the container owner.
|
||||||
|
@ -25,7 +25,7 @@ type ContainerInfo interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerStorage is an interface of
|
// ContainerStorage is an interface of
|
||||||
// storage of the NeoFS containers.
|
// storage of the FrostFS containers.
|
||||||
type ContainerStorage interface {
|
type ContainerStorage interface {
|
||||||
// Must return information about the container by ID.
|
// Must return information about the container by ID.
|
||||||
ContainerInfo(cid.ID) (ContainerInfo, error)
|
ContainerInfo(cid.ID) (ContainerInfo, error)
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"github.com/TrueCloudLab/frostfs-sdk-go/user"
|
"github.com/TrueCloudLab/frostfs-sdk-go/user"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Put represents a notification about NeoFS subnet creation.
|
// Put represents a notification about FrostFS subnet creation.
|
||||||
// Generated by a contract when intending to create a subnet.
|
// Generated by a contract when intending to create a subnet.
|
||||||
type Put interface {
|
type Put interface {
|
||||||
// Contains the ID of the subnet to be created.
|
// Contains the ID of the subnet to be created.
|
||||||
|
@ -56,7 +56,7 @@ func (x PutValidator) Assert(event Put) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// read creator's user ID in NeoFS system
|
// read creator's user ID in FrostFS system
|
||||||
var creator user.ID
|
var creator user.ID
|
||||||
if err = event.ReadCreator(&creator); err != nil {
|
if err = event.ReadCreator(&creator); err != nil {
|
||||||
return fmt.Errorf("read creator: %w", err)
|
return fmt.Errorf("read creator: %w", err)
|
||||||
|
|
|
@ -184,14 +184,14 @@ type putSubnetEvent struct {
|
||||||
ev subnetevents.Put
|
ev subnetevents.Put
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadID unmarshals the subnet ID from a binary NeoFS API protocol's format.
|
// ReadID unmarshals the subnet ID from a binary FrostFS API protocol's format.
|
||||||
func (x putSubnetEvent) ReadID(id *subnetid.ID) error {
|
func (x putSubnetEvent) ReadID(id *subnetid.ID) error {
|
||||||
return id.Unmarshal(x.ev.ID())
|
return id.Unmarshal(x.ev.ID())
|
||||||
}
|
}
|
||||||
|
|
||||||
var errMissingSubnetOwner = errors.New("missing subnet owner")
|
var errMissingSubnetOwner = errors.New("missing subnet owner")
|
||||||
|
|
||||||
// ReadCreator unmarshals the subnet creator from a binary NeoFS API protocol's format.
|
// ReadCreator unmarshals the subnet creator from a binary FrostFS API protocol's format.
|
||||||
// Returns an error if the byte array is empty.
|
// Returns an error if the byte array is empty.
|
||||||
func (x putSubnetEvent) ReadCreator(id *user.ID) error {
|
func (x putSubnetEvent) ReadCreator(id *user.ID) error {
|
||||||
data := x.ev.Owner()
|
data := x.ev.Owner()
|
||||||
|
@ -210,7 +210,7 @@ func (x putSubnetEvent) ReadCreator(id *user.ID) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadInfo unmarshal the subnet info from a binary NeoFS API protocol's format.
|
// ReadInfo unmarshal the subnet info from a binary FrostFS API protocol's format.
|
||||||
func (x putSubnetEvent) ReadInfo(info *subnet.Info) error {
|
func (x putSubnetEvent) ReadInfo(info *subnet.Info) error {
|
||||||
return info.Unmarshal(x.ev.Info())
|
return info.Unmarshal(x.ev.Info())
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Blobovnicza represents the implementation of NeoFS Blobovnicza.
|
// Blobovnicza represents the implementation of FrostFS Blobovnicza.
|
||||||
type Blobovnicza struct {
|
type Blobovnicza struct {
|
||||||
cfg
|
cfg
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ type SubStorage struct {
|
||||||
Policy func(*objectSDK.Object, []byte) bool
|
Policy func(*objectSDK.Object, []byte) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// BlobStor represents NeoFS local BLOB storage.
|
// BlobStor represents FrostFS local BLOB storage.
|
||||||
type BlobStor struct {
|
type BlobStor struct {
|
||||||
cfg
|
cfg
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StorageEngine represents NeoFS local storage engine.
|
// StorageEngine represents FrostFS local storage engine.
|
||||||
type StorageEngine struct {
|
type StorageEngine struct {
|
||||||
*cfg
|
*cfg
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ func (db *DB) Inhume(prm InhumePrm) (res InhumeRes, err error) {
|
||||||
bkt = graveyardBKT
|
bkt = graveyardBKT
|
||||||
tombKey := addressKey(*prm.tomb, make([]byte, addressKeySize))
|
tombKey := addressKey(*prm.tomb, make([]byte, addressKeySize))
|
||||||
|
|
||||||
// it is forbidden to have a tomb-on-tomb in NeoFS,
|
// it is forbidden to have a tomb-on-tomb in FrostFS,
|
||||||
// so graveyard keys must not be addresses of tombstones
|
// so graveyard keys must not be addresses of tombstones
|
||||||
data := bkt.Get(tombKey)
|
data := bkt.Get(tombKey)
|
||||||
if data != nil {
|
if data != nil {
|
||||||
|
|
|
@ -15,10 +15,10 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// TombstoneSource is an interface that checks
|
// TombstoneSource is an interface that checks
|
||||||
// tombstone status in the NeoFS network.
|
// tombstone status in the FrostFS network.
|
||||||
type TombstoneSource interface {
|
type TombstoneSource interface {
|
||||||
// IsTombstoneAvailable must return boolean value that means
|
// IsTombstoneAvailable must return boolean value that means
|
||||||
// provided tombstone's presence in the NeoFS network at the
|
// provided tombstone's presence in the FrostFS network at the
|
||||||
// time of the passed epoch.
|
// time of the passed epoch.
|
||||||
IsTombstoneAvailable(ctx context.Context, addr oid.Address, epoch uint64) bool
|
IsTombstoneAvailable(ctx context.Context, addr oid.Address, epoch uint64) bool
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ import (
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Shard represents single shard of NeoFS Local Storage Engine.
|
// Shard represents single shard of FrostFS Local Storage Engine.
|
||||||
type Shard struct {
|
type Shard struct {
|
||||||
*cfg
|
*cfg
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
|
|
||||||
// Client is a wrapper over StaticClient
|
// Client is a wrapper over StaticClient
|
||||||
// which makes calls with the names and arguments
|
// which makes calls with the names and arguments
|
||||||
// of the NeoFS Audit contract.
|
// of the FrostFS Audit contract.
|
||||||
//
|
//
|
||||||
// Working client must be created via constructor New.
|
// Working client must be created via constructor New.
|
||||||
// Using the Client that has been created with new(Client)
|
// Using the Client that has been created with new(Client)
|
||||||
|
|
|
@ -22,7 +22,7 @@ func (p *PutPrm) SetResult(result *auditAPI.Result) {
|
||||||
p.result = result
|
p.result = result
|
||||||
}
|
}
|
||||||
|
|
||||||
// PutAuditResult saves passed audit result structure in NeoFS system
|
// PutAuditResult saves passed audit result structure in FrostFS system
|
||||||
// through Audit contract call.
|
// through Audit contract call.
|
||||||
//
|
//
|
||||||
// Returns encountered error that caused the saving to interrupt.
|
// Returns encountered error that caused the saving to interrupt.
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
|
|
||||||
// Client is a wrapper over StaticClient
|
// Client is a wrapper over StaticClient
|
||||||
// which makes calls with the names and arguments
|
// which makes calls with the names and arguments
|
||||||
// of the NeoFS Balance contract.
|
// of the FrostFS Balance contract.
|
||||||
//
|
//
|
||||||
// Working client must be created via constructor New.
|
// Working client must be created via constructor New.
|
||||||
// Using the Client that has been created with new(Client)
|
// Using the Client that has been created with new(Client)
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
|
|
||||||
// Client is a wrapper over StaticClient
|
// Client is a wrapper over StaticClient
|
||||||
// which makes calls with the names and arguments
|
// which makes calls with the names and arguments
|
||||||
// of the NeoFS Container contract.
|
// of the FrostFS Container contract.
|
||||||
//
|
//
|
||||||
// Working client must be created via constructor New.
|
// Working client must be created via constructor New.
|
||||||
// Using the Client that has been created with new(Client)
|
// Using the Client that has been created with new(Client)
|
||||||
|
|
|
@ -52,7 +52,7 @@ func (d *DeletePrm) SetToken(token []byte) {
|
||||||
d.token = token
|
d.token = token
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete removes the container from NeoFS system
|
// Delete removes the container from FrostFS system
|
||||||
// through Container contract call.
|
// through Container contract call.
|
||||||
//
|
//
|
||||||
// Returns any error encountered that caused
|
// Returns any error encountered that caused
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
"github.com/TrueCloudLab/frostfs-sdk-go/session"
|
"github.com/TrueCloudLab/frostfs-sdk-go/session"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetEACL reads the extended ACL table from NeoFS system
|
// GetEACL reads the extended ACL table from FrostFS system
|
||||||
// through Container contract call.
|
// through Container contract call.
|
||||||
//
|
//
|
||||||
// Returns apistatus.EACLNotFound if eACL table is missing in the contract.
|
// Returns apistatus.EACLNotFound if eACL table is missing in the contract.
|
||||||
|
|
|
@ -72,7 +72,7 @@ func (p *PutEACLPrm) SetToken(token []byte) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// PutEACL saves binary eACL table with its session token, key and signature
|
// PutEACL saves binary eACL table with its session token, key and signature
|
||||||
// in NeoFS system through Container contract call.
|
// in FrostFS system through Container contract call.
|
||||||
//
|
//
|
||||||
// Returns any error encountered that caused the saving to interrupt.
|
// Returns any error encountered that caused the saving to interrupt.
|
||||||
func (c *Client) PutEACL(p PutEACLPrm) error {
|
func (c *Client) PutEACL(p PutEACLPrm) error {
|
||||||
|
|
|
@ -35,7 +35,7 @@ func Get(c *Client, cnr cid.ID) (*containercore.Container, error) {
|
||||||
return c.Get(binCnr)
|
return c.Get(binCnr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get reads the container from NeoFS system by binary identifier
|
// Get reads the container from FrostFS system by binary identifier
|
||||||
// through Container contract call.
|
// through Container contract call.
|
||||||
//
|
//
|
||||||
// If an empty slice is returned for the requested identifier,
|
// If an empty slice is returned for the requested identifier,
|
||||||
|
|
|
@ -9,10 +9,10 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// List returns a list of container identifiers belonging
|
// List returns a list of container identifiers belonging
|
||||||
// to the specified user of NeoFS system. The list is composed
|
// to the specified user of FrostFS system. The list is composed
|
||||||
// through Container contract call.
|
// through Container contract call.
|
||||||
//
|
//
|
||||||
// Returns the identifiers of all NeoFS containers if pointer
|
// Returns the identifiers of all FrostFS containers if pointer
|
||||||
// to user identifier is nil.
|
// to user identifier is nil.
|
||||||
func (c *Client) List(idUser *user.ID) ([]cid.ID, error) {
|
func (c *Client) List(idUser *user.ID) ([]cid.ID, error) {
|
||||||
var rawID []byte
|
var rawID []byte
|
||||||
|
|
|
@ -29,7 +29,7 @@ func (a2 *AnnounceLoadPrm) SetReporter(key []byte) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// AnnounceLoad saves container size estimation calculated by storage node
|
// AnnounceLoad saves container size estimation calculated by storage node
|
||||||
// with key in NeoFS system through Container contract call.
|
// with key in FrostFS system through Container contract call.
|
||||||
//
|
//
|
||||||
// Returns any error encountered that caused the saving to interrupt.
|
// Returns any error encountered that caused the saving to interrupt.
|
||||||
func (c *Client) AnnounceLoad(p AnnounceLoadPrm) error {
|
func (c *Client) AnnounceLoad(p AnnounceLoadPrm) error {
|
||||||
|
|
|
@ -89,7 +89,7 @@ func (p *PutPrm) SetZone(zone string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put saves binary container with its session token, key and signature
|
// Put saves binary container with its session token, key and signature
|
||||||
// in NeoFS system through Container contract call.
|
// in FrostFS system through Container contract call.
|
||||||
//
|
//
|
||||||
// Returns calculated container identifier and any error
|
// Returns calculated container identifier and any error
|
||||||
// encountered that caused the saving to interrupt.
|
// encountered that caused the saving to interrupt.
|
||||||
|
|
|
@ -19,7 +19,7 @@ func (x *commonBindArgs) SetOptionalPrm(op client.InvokePrmOptional) {
|
||||||
x.InvokePrmOptional = op
|
x.InvokePrmOptional = op
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetScriptHash sets script hash of the NeoFS account identifier.
|
// SetScriptHash sets script hash of the FrostFS account identifier.
|
||||||
func (x *commonBindArgs) SetScriptHash(v []byte) {
|
func (x *commonBindArgs) SetScriptHash(v []byte) {
|
||||||
x.scriptHash = v
|
x.scriptHash = v
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ type BindKeysPrm struct {
|
||||||
commonBindArgs
|
commonBindArgs
|
||||||
}
|
}
|
||||||
|
|
||||||
// BindKeys binds list of public keys from NeoFS account by script hash.
|
// BindKeys binds list of public keys from FrostFS account by script hash.
|
||||||
func (x *Client) BindKeys(p BindKeysPrm) error {
|
func (x *Client) BindKeys(p BindKeysPrm) error {
|
||||||
prm := client.InvokePrm{}
|
prm := client.InvokePrm{}
|
||||||
prm.SetMethod(bindKeysMethod)
|
prm.SetMethod(bindKeysMethod)
|
||||||
|
@ -55,7 +55,7 @@ type UnbindKeysPrm struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnbindKeys invokes the call of key unbinding method
|
// UnbindKeys invokes the call of key unbinding method
|
||||||
// of NeoFS contract.
|
// of FrostFS contract.
|
||||||
func (x *Client) UnbindKeys(args UnbindKeysPrm) error {
|
func (x *Client) UnbindKeys(args UnbindKeysPrm) error {
|
||||||
prm := client.InvokePrm{}
|
prm := client.InvokePrm{}
|
||||||
prm.SetMethod(unbindKeysMethod)
|
prm.SetMethod(unbindKeysMethod)
|
||||||
|
|
|
@ -36,7 +36,7 @@ func (c *ChequePrm) SetLock(lock util.Uint160) {
|
||||||
c.lock = lock
|
c.lock = lock
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cheque invokes `cheque` method of NeoFS contract.
|
// Cheque invokes `cheque` method of FrostFS contract.
|
||||||
func (x *Client) Cheque(p ChequePrm) error {
|
func (x *Client) Cheque(p ChequePrm) error {
|
||||||
prm := client.InvokePrm{}
|
prm := client.InvokePrm{}
|
||||||
prm.SetMethod(chequeMethod)
|
prm.SetMethod(chequeMethod)
|
||||||
|
|
|
@ -27,7 +27,7 @@ const (
|
||||||
chequeMethod = "cheque"
|
chequeMethod = "cheque"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewFromMorph wraps client to work with NeoFS contract.
|
// NewFromMorph wraps client to work with FrostFS contract.
|
||||||
func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8, opts ...Option) (*Client, error) {
|
func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8, opts ...Option) (*Client, error) {
|
||||||
o := defaultOpts()
|
o := defaultOpts()
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8,
|
||||||
|
|
||||||
sc, err := client.NewStatic(cli, contract, fee, ([]client.StaticClientOption)(*o)...)
|
sc, err := client.NewStatic(cli, contract, fee, ([]client.StaticClientOption)(*o)...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("could not create client of NeoFS contract: %w", err)
|
return nil, fmt.Errorf("could not create client of FrostFS contract: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Client{client: sc}, nil
|
return &Client{client: sc}, nil
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type CommonBindPrm struct {
|
type CommonBindPrm struct {
|
||||||
ownerID []byte // NeoFS account identifier
|
ownerID []byte // FrostFS account identifier
|
||||||
|
|
||||||
keys [][]byte // list of serialized public keys
|
keys [][]byte // list of serialized public keys
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ func (x *CommonBindPrm) SetOptionalPrm(prm client.InvokePrmOptional) {
|
||||||
x.InvokePrmOptional = prm
|
x.InvokePrmOptional = prm
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetOwnerID sets NeoFS account identifier.
|
// SetOwnerID sets FrostFS account identifier.
|
||||||
func (x *CommonBindPrm) SetOwnerID(v []byte) {
|
func (x *CommonBindPrm) SetOwnerID(v []byte) {
|
||||||
x.ownerID = v
|
x.ownerID = v
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ func (x *CommonBindPrm) SetKeys(v [][]byte) {
|
||||||
x.keys = v
|
x.keys = v
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddKeys adds a list of public keys to/from NeoFS account.
|
// AddKeys adds a list of public keys to/from FrostFS account.
|
||||||
func (x *Client) AddKeys(p CommonBindPrm) error {
|
func (x *Client) AddKeys(p CommonBindPrm) error {
|
||||||
prm := client.InvokePrm{}
|
prm := client.InvokePrm{}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ func (x *Client) AddKeys(p CommonBindPrm) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveKeys removes a list of public keys to/from NeoFS account.
|
// RemoveKeys removes a list of public keys to/from FrostFS account.
|
||||||
func (x *Client) RemoveKeys(args CommonBindPrm) error {
|
func (x *Client) RemoveKeys(args CommonBindPrm) error {
|
||||||
prm := client.InvokePrm{}
|
prm := client.InvokePrm{}
|
||||||
|
|
||||||
|
|
|
@ -10,14 +10,14 @@ import (
|
||||||
|
|
||||||
// Client is a wrapper over StaticClient
|
// Client is a wrapper over StaticClient
|
||||||
// which makes calls with the names and arguments
|
// which makes calls with the names and arguments
|
||||||
// of the NeoFS ID contract.
|
// of the FrostFS ID contract.
|
||||||
//
|
//
|
||||||
// Working client must be created via constructor New.
|
// Working client must be created via constructor New.
|
||||||
// Using the Client that has been created with new(Client)
|
// Using the Client that has been created with new(Client)
|
||||||
// expression (or just declaring a Client variable) is unsafe
|
// expression (or just declaring a Client variable) is unsafe
|
||||||
// and can lead to panic.
|
// and can lead to panic.
|
||||||
type Client struct {
|
type Client struct {
|
||||||
client *client.StaticClient // static NeoFS ID contract client
|
client *client.StaticClient // static FrostFS ID contract client
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -26,7 +26,7 @@ const (
|
||||||
removeKeysMethod = "removeKey"
|
removeKeysMethod = "removeKey"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewFromMorph wraps client to work with NeoFS ID contract.
|
// NewFromMorph wraps client to work with FrostFS ID contract.
|
||||||
func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8, opts ...Option) (*Client, error) {
|
func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8, opts ...Option) (*Client, error) {
|
||||||
o := defaultOpts()
|
o := defaultOpts()
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ func NewFromMorph(cli *client.Client, contract util.Uint160, fee fixedn.Fixed8,
|
||||||
|
|
||||||
sc, err := client.NewStatic(cli, contract, fee, ([]client.StaticClientOption)(*o)...)
|
sc, err := client.NewStatic(cli, contract, fee, ([]client.StaticClientOption)(*o)...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("could not create client of NeoFS ID contract: %w", err)
|
return nil, fmt.Errorf("could not create client of FrostFS ID contract: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Client{client: sc}, nil
|
return &Client{client: sc}, nil
|
||||||
|
|
|
@ -19,7 +19,7 @@ func (a *AccountKeysPrm) SetID(id user.ID) {
|
||||||
a.id = id
|
a.id = id
|
||||||
}
|
}
|
||||||
|
|
||||||
// AccountKeys requests public keys of NeoFS account from NeoFS ID contract.
|
// AccountKeys requests public keys of FrostFS account from FrostFS ID contract.
|
||||||
func (x *Client) AccountKeys(p AccountKeysPrm) (keys.PublicKeys, error) {
|
func (x *Client) AccountKeys(p AccountKeysPrm) (keys.PublicKeys, error) {
|
||||||
prm := client.TestInvokePrm{}
|
prm := client.TestInvokePrm{}
|
||||||
prm.SetMethod(keyListingMethod)
|
prm.SetMethod(keyListingMethod)
|
||||||
|
|
|
@ -19,7 +19,7 @@ func (a *AddPeerPrm) SetNodeInfo(nodeInfo netmap.NodeInfo) {
|
||||||
a.nodeInfo = nodeInfo
|
a.nodeInfo = nodeInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddPeer registers peer in NeoFS network through
|
// AddPeer registers peer in FrostFS network through
|
||||||
// Netmap contract call.
|
// Netmap contract call.
|
||||||
func (c *Client) AddPeer(p AddPeerPrm) error {
|
func (c *Client) AddPeer(p AddPeerPrm) error {
|
||||||
var method = addPeerMethod
|
var method = addPeerMethod
|
||||||
|
|
|
@ -13,7 +13,7 @@ type NodeInfo = netmap.NodeInfo
|
||||||
|
|
||||||
// Client is a wrapper over StaticClient
|
// Client is a wrapper over StaticClient
|
||||||
// which makes calls with the names and arguments
|
// which makes calls with the names and arguments
|
||||||
// of the NeoFS Netmap contract.
|
// of the FrostFS Netmap contract.
|
||||||
//
|
//
|
||||||
// Working client must be created via constructor New.
|
// Working client must be created via constructor New.
|
||||||
// Using the Client that has been created with new(Client)
|
// Using the Client that has been created with new(Client)
|
||||||
|
|
|
@ -58,7 +58,7 @@ func (c *Client) AuditFee() (uint64, error) {
|
||||||
return fee, nil
|
return fee, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// EpochDuration returns number of sidechain blocks per one NeoFS epoch.
|
// EpochDuration returns number of sidechain blocks per one FrostFS epoch.
|
||||||
func (c *Client) EpochDuration() (uint64, error) {
|
func (c *Client) EpochDuration() (uint64, error) {
|
||||||
epochDuration, err := c.readUInt64Config(epochDurationConfig)
|
epochDuration, err := c.readUInt64Config(epochDurationConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -132,7 +132,7 @@ func (c *Client) InnerRingCandidateFee() (uint64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithdrawFee returns global configuration value of fee paid by user to
|
// WithdrawFee returns global configuration value of fee paid by user to
|
||||||
// withdraw assets from NeoFS contract.
|
// withdraw assets from FrostFS contract.
|
||||||
func (c *Client) WithdrawFee() (uint64, error) {
|
func (c *Client) WithdrawFee() (uint64, error) {
|
||||||
fee, err := c.readUInt64Config(withdrawFeeConfig)
|
fee, err := c.readUInt64Config(withdrawFeeConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -143,7 +143,7 @@ func (c *Client) WithdrawFee() (uint64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// MaintenanceModeAllowed reads admission of "maintenance" state from the
|
// MaintenanceModeAllowed reads admission of "maintenance" state from the
|
||||||
// NeoFS network configuration stored in the Sidechain. The admission means
|
// FrostFS network configuration stored in the Sidechain. The admission means
|
||||||
// that storage nodes are allowed to switch their state to "maintenance".
|
// that storage nodes are allowed to switch their state to "maintenance".
|
||||||
//
|
//
|
||||||
// By default, maintenance state is disallowed.
|
// By default, maintenance state is disallowed.
|
||||||
|
@ -171,7 +171,7 @@ func (c *Client) readStringConfig(key string) (string, error) {
|
||||||
return v.(string), nil
|
return v.(string), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// reads boolean value by the given key from the NeoFS network configuration
|
// reads boolean value by the given key from the FrostFS network configuration
|
||||||
// stored in the Sidechain. Returns false if key is not presented.
|
// stored in the Sidechain. Returns false if key is not presented.
|
||||||
func (c *Client) readBoolConfig(key string) (bool, error) {
|
func (c *Client) readBoolConfig(key string) (bool, error) {
|
||||||
v, err := c.config([]byte(key), BoolAssert)
|
v, err := c.config([]byte(key), BoolAssert)
|
||||||
|
@ -221,8 +221,8 @@ func (c *Client) SetConfig(p SetConfigPrm) error {
|
||||||
return c.client.Invoke(prm)
|
return c.client.Invoke(prm)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RawNetworkParameter is a NeoFS network parameter which is transmitted but
|
// RawNetworkParameter is a FrostFS network parameter which is transmitted but
|
||||||
// not interpreted by the NeoFS API protocol.
|
// not interpreted by the FrostFS API protocol.
|
||||||
type RawNetworkParameter struct {
|
type RawNetworkParameter struct {
|
||||||
// Name of the parameter.
|
// Name of the parameter.
|
||||||
Name string
|
Name string
|
||||||
|
@ -231,8 +231,8 @@ type RawNetworkParameter struct {
|
||||||
Value []byte
|
Value []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetworkConfiguration represents NeoFS network configuration stored
|
// NetworkConfiguration represents FrostFS network configuration stored
|
||||||
// in the NeoFS Sidechain.
|
// in the FrostFS Sidechain.
|
||||||
type NetworkConfiguration struct {
|
type NetworkConfiguration struct {
|
||||||
MaxObjectSize uint64
|
MaxObjectSize uint64
|
||||||
|
|
||||||
|
@ -261,7 +261,7 @@ type NetworkConfiguration struct {
|
||||||
Raw []RawNetworkParameter
|
Raw []RawNetworkParameter
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadNetworkConfiguration reads NetworkConfiguration from the NeoFS Sidechain.
|
// ReadNetworkConfiguration reads NetworkConfiguration from the FrostFS Sidechain.
|
||||||
func (c *Client) ReadNetworkConfiguration() (NetworkConfiguration, error) {
|
func (c *Client) ReadNetworkConfiguration() (NetworkConfiguration, error) {
|
||||||
var res NetworkConfiguration
|
var res NetworkConfiguration
|
||||||
prm := client.TestInvokePrm{}
|
prm := client.TestInvokePrm{}
|
||||||
|
@ -356,7 +356,7 @@ func bytesToBool(val []byte) bool {
|
||||||
var ErrConfigNotFound = errors.New("config value not found")
|
var ErrConfigNotFound = errors.New("config value not found")
|
||||||
|
|
||||||
// config performs the test invoke of get config value
|
// config performs the test invoke of get config value
|
||||||
// method of NeoFS Netmap contract.
|
// method of FrostFS Netmap contract.
|
||||||
//
|
//
|
||||||
// Returns ErrConfigNotFound if config key is not found in the contract.
|
// Returns ErrConfigNotFound if config key is not found in the contract.
|
||||||
func (c *Client) config(key []byte, assert func(stackitem.Item) (interface{}, error)) (interface{}, error) {
|
func (c *Client) config(key []byte, assert func(stackitem.Item) (interface{}, error)) (interface{}, error) {
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"github.com/TrueCloudLab/frostfs-node/pkg/morph/client"
|
"github.com/TrueCloudLab/frostfs-node/pkg/morph/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Epoch receives number of current NeoFS epoch
|
// Epoch receives number of current FrostFS epoch
|
||||||
// through the Netmap contract call.
|
// through the Netmap contract call.
|
||||||
func (c *Client) Epoch() (uint64, error) {
|
func (c *Client) Epoch() (uint64, error) {
|
||||||
prm := client.TestInvokePrm{}
|
prm := client.TestInvokePrm{}
|
||||||
|
@ -30,7 +30,7 @@ func (c *Client) Epoch() (uint64, error) {
|
||||||
return uint64(num), nil
|
return uint64(num), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// LastEpochBlock receives block number of current NeoFS epoch
|
// LastEpochBlock receives block number of current FrostFS epoch
|
||||||
// through the Netmap contract call.
|
// through the Netmap contract call.
|
||||||
func (c *Client) LastEpochBlock() (uint32, error) {
|
func (c *Client) LastEpochBlock() (uint32, error) {
|
||||||
prm := client.TestInvokePrm{}
|
prm := client.TestInvokePrm{}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"github.com/TrueCloudLab/frostfs-node/pkg/morph/client"
|
"github.com/TrueCloudLab/frostfs-node/pkg/morph/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewEpoch updates NeoFS epoch number through
|
// NewEpoch updates FrostFS epoch number through
|
||||||
// Netmap contract call.
|
// Netmap contract call.
|
||||||
func (c *Client) NewEpoch(epoch uint64) error {
|
func (c *Client) NewEpoch(epoch uint64) error {
|
||||||
prm := client.InvokePrm{}
|
prm := client.InvokePrm{}
|
||||||
|
|
|
@ -36,7 +36,7 @@ const (
|
||||||
NNSReputationContractName = "reputation.frostfs"
|
NNSReputationContractName = "reputation.frostfs"
|
||||||
// NNSSubnetworkContractName is a name of the subnet contract in NNS.
|
// NNSSubnetworkContractName is a name of the subnet contract in NNS.
|
||||||
NNSSubnetworkContractName = "subnet.frostfs"
|
NNSSubnetworkContractName = "subnet.frostfs"
|
||||||
// NNSGroupKeyName is a name for the NeoFS group key record in NNS.
|
// NNSGroupKeyName is a name for the FrostFS group key record in NNS.
|
||||||
NNSGroupKeyName = "group.frostfs"
|
NNSGroupKeyName = "group.frostfs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@ func exists(c *rpcclient.WSClient, nnsHash util.Uint160, domain string) (bool, e
|
||||||
return !available, nil
|
return !available, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetGroupSignerScope makes the default signer scope include all NeoFS contracts.
|
// SetGroupSignerScope makes the default signer scope include all FrostFS contracts.
|
||||||
// Should be called for side-chain client only.
|
// Should be called for side-chain client only.
|
||||||
func (c *Client) SetGroupSignerScope() error {
|
func (c *Client) SetGroupSignerScope() error {
|
||||||
c.switchLock.RLock()
|
c.switchLock.RLock()
|
||||||
|
@ -213,7 +213,7 @@ func (c *Client) SetGroupSignerScope() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// contractGroupKey returns public key designating NeoFS contract group.
|
// contractGroupKey returns public key designating FrostFS contract group.
|
||||||
func (c *Client) contractGroupKey() (*keys.PublicKey, error) {
|
func (c *Client) contractGroupKey() (*keys.PublicKey, error) {
|
||||||
if gKey := c.cache.groupKey(); gKey != nil {
|
if gKey := c.cache.groupKey(); gKey != nil {
|
||||||
return gKey, nil
|
return gKey, nil
|
||||||
|
|
|
@ -569,7 +569,7 @@ func (c *Client) notaryCosigners(invokedByAlpha bool, ir []*keys.PublicKey, comm
|
||||||
|
|
||||||
multisigScript, err := sc.CreateMultiSigRedeemScript(m, ir)
|
multisigScript, err := sc.CreateMultiSigRedeemScript(m, ir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// wrap error as NeoFS-specific since the call is not related to any client
|
// wrap error as FrostFS-specific since the call is not related to any client
|
||||||
return nil, wrapFrostFSError(fmt.Errorf("can't create ir multisig redeem script: %w", err))
|
return nil, wrapFrostFSError(fmt.Errorf("can't create ir multisig redeem script: %w", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -703,7 +703,7 @@ func (c *Client) notaryMultisigAccount(ir []*keys.PublicKey, committee, invokedB
|
||||||
multisigAccount = wallet.NewAccountFromPrivateKey(c.acc.PrivateKey())
|
multisigAccount = wallet.NewAccountFromPrivateKey(c.acc.PrivateKey())
|
||||||
err := multisigAccount.ConvertMultisig(m, ir)
|
err := multisigAccount.ConvertMultisig(m, ir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// wrap error as NeoFS-specific since the call is not related to any client
|
// wrap error as FrostFS-specific since the call is not related to any client
|
||||||
return nil, wrapFrostFSError(fmt.Errorf("can't convert account to inner ring multisig wallet: %w", err))
|
return nil, wrapFrostFSError(fmt.Errorf("can't convert account to inner ring multisig wallet: %w", err))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -712,7 +712,7 @@ func (c *Client) notaryMultisigAccount(ir []*keys.PublicKey, committee, invokedB
|
||||||
// inner ring multiaddress witness
|
// inner ring multiaddress witness
|
||||||
multisigAccount, err = notary.FakeMultisigAccount(m, ir)
|
multisigAccount, err = notary.FakeMultisigAccount(m, ir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// wrap error as NeoFS-specific since the call is not related to any client
|
// wrap error as FrostFS-specific since the call is not related to any client
|
||||||
return nil, wrapFrostFSError(fmt.Errorf("can't make inner ring multisig wallet: %w", err))
|
return nil, wrapFrostFSError(fmt.Errorf("can't make inner ring multisig wallet: %w", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -766,7 +766,7 @@ func invocationParams(args ...interface{}) ([]sc.Parameter, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// sigCount returns the number of required signature.
|
// sigCount returns the number of required signature.
|
||||||
// For NeoFS Alphabet M is a 2/3+1 of it (like in dBFT).
|
// For FrostFS Alphabet M is a 2/3+1 of it (like in dBFT).
|
||||||
// If committee is true, returns M as N/2+1.
|
// If committee is true, returns M as N/2+1.
|
||||||
func sigCount(ir []*keys.PublicKey, committee bool) int {
|
func sigCount(ir []*keys.PublicKey, committee bool) int {
|
||||||
if committee {
|
if committee {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
|
|
||||||
// Client is a wrapper over StaticClient
|
// Client is a wrapper over StaticClient
|
||||||
// which makes calls with the names and arguments
|
// which makes calls with the names and arguments
|
||||||
// of the NeoFS reputation contract.
|
// of the FrostFS reputation contract.
|
||||||
//
|
//
|
||||||
// Working client must be created via constructor New.
|
// Working client must be created via constructor New.
|
||||||
// Using the Client that has been created with new(Client)
|
// Using the Client that has been created with new(Client)
|
||||||
|
|
|
@ -29,7 +29,7 @@ func (x *ManageAdminsPrm) SetClient() {
|
||||||
x.client = true
|
x.client = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetSubnet sets identifier of the subnet in a binary NeoFS API protocol format.
|
// SetSubnet sets identifier of the subnet in a binary FrostFS API protocol format.
|
||||||
func (x *ManageAdminsPrm) SetSubnet(id []byte) {
|
func (x *ManageAdminsPrm) SetSubnet(id []byte) {
|
||||||
x.subnet = id
|
x.subnet = id
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ func (x *ManageAdminsPrm) SetAdmin(key []byte) {
|
||||||
x.admin = key
|
x.admin = key
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetGroup sets identifier of the client group in a binary NeoFS API protocol format.
|
// SetGroup sets identifier of the client group in a binary FrostFS API protocol format.
|
||||||
// Makes sense only for client admins (see ManageAdminsPrm.SetClient).
|
// Makes sense only for client admins (see ManageAdminsPrm.SetClient).
|
||||||
func (x *ManageAdminsPrm) SetGroup(id []byte) {
|
func (x *ManageAdminsPrm) SetGroup(id []byte) {
|
||||||
x.group = id
|
x.group = id
|
||||||
|
@ -48,7 +48,7 @@ func (x *ManageAdminsPrm) SetGroup(id []byte) {
|
||||||
// ManageAdminsRes groups the resulting values of node administer methods of Subnet contract.
|
// ManageAdminsRes groups the resulting values of node administer methods of Subnet contract.
|
||||||
type ManageAdminsRes struct{}
|
type ManageAdminsRes struct{}
|
||||||
|
|
||||||
// ManageAdmins manages admin list of the NeoFS subnet through Subnet contract calls.
|
// ManageAdmins manages admin list of the FrostFS subnet through Subnet contract calls.
|
||||||
func (x Client) ManageAdmins(prm ManageAdminsPrm) (*ManageAdminsPrm, error) {
|
func (x Client) ManageAdmins(prm ManageAdminsPrm) (*ManageAdminsPrm, error) {
|
||||||
var method string
|
var method string
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ func (x *InitPrm) SetBaseClient(base *client.Client) {
|
||||||
x.base = base
|
x.base = base
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetContractAddress sets address of Subnet contract in NeoFS sidechain.
|
// SetContractAddress sets address of Subnet contract in FrostFS sidechain.
|
||||||
func (x *InitPrm) SetContractAddress(addr util.Uint160) {
|
func (x *InitPrm) SetContractAddress(addr util.Uint160) {
|
||||||
x.addr = addr
|
x.addr = addr
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,12 @@ type UserAllowedPrm struct {
|
||||||
args [2]interface{}
|
args [2]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetID sets identifier of the subnet in a binary NeoFS API protocol format.
|
// SetID sets identifier of the subnet in a binary FrostFS API protocol format.
|
||||||
func (x *UserAllowedPrm) SetID(id []byte) {
|
func (x *UserAllowedPrm) SetID(id []byte) {
|
||||||
x.args[0] = id
|
x.args[0] = id
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetClient sets owner ID of the client that is being checked in a binary NeoFS API protocol format.
|
// SetClient sets owner ID of the client that is being checked in a binary FrostFS API protocol format.
|
||||||
func (x *UserAllowedPrm) SetClient(id []byte) {
|
func (x *UserAllowedPrm) SetClient(id []byte) {
|
||||||
x.args[1] = id
|
x.args[1] = id
|
||||||
}
|
}
|
||||||
|
@ -72,17 +72,17 @@ func (x *ManageClientsPrm) SetRemove() {
|
||||||
x.rm = true
|
x.rm = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetSubnet sets identifier of the subnet in a binary NeoFS API protocol format.
|
// SetSubnet sets identifier of the subnet in a binary FrostFS API protocol format.
|
||||||
func (x *ManageClientsPrm) SetSubnet(id []byte) {
|
func (x *ManageClientsPrm) SetSubnet(id []byte) {
|
||||||
x.args[0] = id
|
x.args[0] = id
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetGroup sets identifier of the client group in a binary NeoFS API protocol format.
|
// SetGroup sets identifier of the client group in a binary FrostFS API protocol format.
|
||||||
func (x *ManageClientsPrm) SetGroup(id []byte) {
|
func (x *ManageClientsPrm) SetGroup(id []byte) {
|
||||||
x.args[1] = id
|
x.args[1] = id
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetClient sets client's user ID in a binary NeoFS API protocol format.
|
// SetClient sets client's user ID in a binary FrostFS API protocol format.
|
||||||
func (x *ManageClientsPrm) SetClient(id []byte) {
|
func (x *ManageClientsPrm) SetClient(id []byte) {
|
||||||
x.args[2] = id
|
x.args[2] = id
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ func (x *ManageClientsPrm) SetClient(id []byte) {
|
||||||
// ManageClientsRes groups the resulting values of client management methods of Subnet contract.
|
// ManageClientsRes groups the resulting values of client management methods of Subnet contract.
|
||||||
type ManageClientsRes struct{}
|
type ManageClientsRes struct{}
|
||||||
|
|
||||||
// ManageClients manages client list of the NeoFS subnet through Subnet contract calls.
|
// ManageClients manages client list of the FrostFS subnet through Subnet contract calls.
|
||||||
func (x Client) ManageClients(prm ManageClientsPrm) (*ManageClientsRes, error) {
|
func (x Client) ManageClients(prm ManageClientsPrm) (*ManageClientsRes, error) {
|
||||||
var method string
|
var method string
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ func (x *DeletePrm) SetTxHash(hash util.Uint256) {
|
||||||
x.cliPrm.SetHash(hash)
|
x.cliPrm.SetHash(hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetID sets identifier of the subnet to be removed in a binary NeoFS API protocol format.
|
// SetID sets identifier of the subnet to be removed in a binary FrostFS API protocol format.
|
||||||
func (x *DeletePrm) SetID(id []byte) {
|
func (x *DeletePrm) SetID(id []byte) {
|
||||||
x.args[0] = id
|
x.args[0] = id
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ type GetPrm struct {
|
||||||
args [1]interface{}
|
args [1]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetID sets identifier of the subnet to be read in a binary NeoFS API protocol format.
|
// SetID sets identifier of the subnet to be read in a binary FrostFS API protocol format.
|
||||||
func (x *GetPrm) SetID(id []byte) {
|
func (x *GetPrm) SetID(id []byte) {
|
||||||
x.args[0] = id
|
x.args[0] = id
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ type GetRes struct {
|
||||||
info []byte
|
info []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// Info returns information about the subnet in a binary format of NeoFS API protocol.
|
// Info returns information about the subnet in a binary format of FrostFS API protocol.
|
||||||
func (x GetRes) Info() []byte {
|
func (x GetRes) Info() []byte {
|
||||||
return x.info
|
return x.info
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ type NodeAllowedPrm struct {
|
||||||
args [2]interface{}
|
args [2]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetID sets identifier of the subnet of the node in a binary NeoFS API protocol format.
|
// SetID sets identifier of the subnet of the node in a binary FrostFS API protocol format.
|
||||||
func (x *NodeAllowedPrm) SetID(id []byte) {
|
func (x *NodeAllowedPrm) SetID(id []byte) {
|
||||||
x.args[0] = id
|
x.args[0] = id
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,17 +18,17 @@ func (x *PutPrm) SetTxHash(hash util.Uint256) {
|
||||||
x.cliPrm.SetHash(hash)
|
x.cliPrm.SetHash(hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetID sets identifier of the created subnet in a binary NeoFS API protocol format.
|
// SetID sets identifier of the created subnet in a binary FrostFS API protocol format.
|
||||||
func (x *PutPrm) SetID(id []byte) {
|
func (x *PutPrm) SetID(id []byte) {
|
||||||
x.args[0] = id
|
x.args[0] = id
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetOwner sets identifier of the subnet owner in a binary NeoFS API protocol format.
|
// SetOwner sets identifier of the subnet owner in a binary FrostFS API protocol format.
|
||||||
func (x *PutPrm) SetOwner(id []byte) {
|
func (x *PutPrm) SetOwner(id []byte) {
|
||||||
x.args[1] = id
|
x.args[1] = id
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetInfo sets information about the created subnet in a binary NeoFS API protocol format.
|
// SetInfo sets information about the created subnet in a binary FrostFS API protocol format.
|
||||||
func (x *PutPrm) SetInfo(id []byte) {
|
func (x *PutPrm) SetInfo(id []byte) {
|
||||||
x.args[2] = id
|
x.args[2] = id
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetEACL represents structure of notification about
|
// SetEACL represents structure of notification about
|
||||||
// modified eACL table coming from NeoFS Container contract.
|
// modified eACL table coming from FrostFS Container contract.
|
||||||
type SetEACL struct {
|
type SetEACL struct {
|
||||||
table []byte
|
table []byte
|
||||||
signature []byte
|
signature []byte
|
||||||
|
@ -25,7 +25,7 @@ type SetEACL struct {
|
||||||
// MorphEvent implements Neo:Morph Event interface.
|
// MorphEvent implements Neo:Morph Event interface.
|
||||||
func (SetEACL) MorphEvent() {}
|
func (SetEACL) MorphEvent() {}
|
||||||
|
|
||||||
// Table returns returns eACL table in a binary NeoFS API format.
|
// Table returns returns eACL table in a binary FrostFS API format.
|
||||||
func (x SetEACL) Table() []byte {
|
func (x SetEACL) Table() []byte {
|
||||||
return x.table
|
return x.table
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue
is it a real contact? i mean, is it possible to send smth via that contact?