forked from TrueCloudLab/frostfs-node
[#100] adm: Use netmap constants from pkg
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
parent
0c6aeaaf18
commit
299b6a6938
4 changed files with 78 additions and 88 deletions
|
@ -10,6 +10,7 @@ import (
|
|||
"strings"
|
||||
"text/tabwriter"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
||||
"github.com/nspcc-dev/neo-go/pkg/io"
|
||||
"github.com/nspcc-dev/neo-go/pkg/rpcclient/invoker"
|
||||
"github.com/nspcc-dev/neo-go/pkg/rpcclient/unwrap"
|
||||
|
@ -53,18 +54,18 @@ func dumpNetworkConfig(cmd *cobra.Command, _ []string) error {
|
|||
}
|
||||
for k, v := range m {
|
||||
switch k {
|
||||
case netmapAuditFeeKey, netmapBasicIncomeRateKey,
|
||||
netmapContainerFeeKey, netmapContainerAliasFeeKey,
|
||||
netmapEigenTrustIterationsKey,
|
||||
netmapEpochKey, netmapInnerRingCandidateFeeKey,
|
||||
netmapMaxObjectSizeKey, netmapWithdrawFeeKey:
|
||||
case netmap.AuditFeeConfig, netmap.BasicIncomeRateConfig,
|
||||
netmap.ContainerFeeConfig, netmap.ContainerAliasFeeConfig,
|
||||
netmap.EtIterationsConfig,
|
||||
netmap.EpochDurationConfig, netmap.IrCandidateFeeConfig,
|
||||
netmap.MaxObjectSizeConfig, netmap.WithdrawFeeConfig:
|
||||
nbuf := make([]byte, 8)
|
||||
copy(nbuf[:], v)
|
||||
n := binary.LittleEndian.Uint64(nbuf)
|
||||
_, _ = tw.Write([]byte(fmt.Sprintf("%s:\t%d (int)\n", k, n)))
|
||||
case netmapEigenTrustAlphaKey:
|
||||
case netmap.EtAlphaConfig:
|
||||
_, _ = tw.Write([]byte(fmt.Sprintf("%s:\t%s (str)\n", k, v)))
|
||||
case netmapHomomorphicHashDisabledKey, netmapMaintenanceAllowedKey:
|
||||
case netmap.HomomorphicHashingDisabledKey, netmap.MaintenanceModeAllowedConfig:
|
||||
if len(v) == 0 || len(v) > 1 {
|
||||
return invalidConfigValueErr(k)
|
||||
}
|
||||
|
@ -136,16 +137,16 @@ func parseConfigPair(kvStr string, force bool) (key string, val any, err error)
|
|||
valRaw := v
|
||||
|
||||
switch key {
|
||||
case netmapAuditFeeKey, netmapBasicIncomeRateKey,
|
||||
netmapContainerFeeKey, netmapContainerAliasFeeKey,
|
||||
netmapEigenTrustIterationsKey,
|
||||
netmapEpochKey, netmapInnerRingCandidateFeeKey,
|
||||
netmapMaxObjectSizeKey, netmapWithdrawFeeKey:
|
||||
case netmap.AuditFeeConfig, netmap.BasicIncomeRateConfig,
|
||||
netmap.ContainerFeeConfig, netmap.ContainerAliasFeeConfig,
|
||||
netmap.EtIterationsConfig,
|
||||
netmap.EpochDurationConfig, netmap.IrCandidateFeeConfig,
|
||||
netmap.MaxObjectSizeConfig, netmap.WithdrawFeeConfig:
|
||||
val, err = strconv.ParseInt(valRaw, 10, 64)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("could not parse %s's value '%s' as int: %w", key, valRaw, err)
|
||||
}
|
||||
case netmapEigenTrustAlphaKey:
|
||||
case netmap.EtAlphaConfig:
|
||||
// just check that it could
|
||||
// be parsed correctly
|
||||
_, err = strconv.ParseFloat(v, 64)
|
||||
|
@ -154,7 +155,7 @@ func parseConfigPair(kvStr string, force bool) (key string, val any, err error)
|
|||
}
|
||||
|
||||
val = valRaw
|
||||
case netmapHomomorphicHashDisabledKey, netmapMaintenanceAllowedKey:
|
||||
case netmap.HomomorphicHashingDisabledKey, netmap.MaintenanceModeAllowedConfig:
|
||||
val, err = strconv.ParseBool(valRaw)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("could not parse %s's value '%s' as bool: %w", key, valRaw, err)
|
||||
|
|
|
@ -16,6 +16,7 @@ import (
|
|||
"git.frostfs.info/TrueCloudLab/frostfs-contract/nns"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/innerring"
|
||||
morphClient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
||||
"github.com/nspcc-dev/neo-go/pkg/core/state"
|
||||
"github.com/nspcc-dev/neo-go/pkg/core/transaction"
|
||||
"github.com/nspcc-dev/neo-go/pkg/encoding/address"
|
||||
|
@ -51,19 +52,6 @@ const (
|
|||
)
|
||||
|
||||
const (
|
||||
netmapEpochKey = "EpochDuration"
|
||||
netmapMaxObjectSizeKey = "MaxObjectSize"
|
||||
netmapAuditFeeKey = "AuditFee"
|
||||
netmapContainerFeeKey = "ContainerFee"
|
||||
netmapContainerAliasFeeKey = "ContainerAliasFee"
|
||||
netmapEigenTrustIterationsKey = "EigenTrustIterations"
|
||||
netmapEigenTrustAlphaKey = "EigenTrustAlpha"
|
||||
netmapBasicIncomeRateKey = "BasicIncomeRate"
|
||||
netmapInnerRingCandidateFeeKey = "InnerRingCandidateFee"
|
||||
netmapWithdrawFeeKey = "WithdrawFee"
|
||||
netmapHomomorphicHashDisabledKey = "HomomorphicHashingDisabled"
|
||||
netmapMaintenanceAllowedKey = "MaintenanceModeAllowed"
|
||||
|
||||
defaultEigenTrustIterations = 4
|
||||
defaultEigenTrustAlpha = "0.1"
|
||||
)
|
||||
|
@ -88,18 +76,18 @@ var (
|
|||
}, contractList...)
|
||||
|
||||
netmapConfigKeys = []string{
|
||||
netmapEpochKey,
|
||||
netmapMaxObjectSizeKey,
|
||||
netmapAuditFeeKey,
|
||||
netmapContainerFeeKey,
|
||||
netmapContainerAliasFeeKey,
|
||||
netmapEigenTrustIterationsKey,
|
||||
netmapEigenTrustAlphaKey,
|
||||
netmapBasicIncomeRateKey,
|
||||
netmapInnerRingCandidateFeeKey,
|
||||
netmapWithdrawFeeKey,
|
||||
netmapHomomorphicHashDisabledKey,
|
||||
netmapMaintenanceAllowedKey,
|
||||
netmap.EpochDurationConfig,
|
||||
netmap.MaxObjectSizeConfig,
|
||||
netmap.AuditFeeConfig,
|
||||
netmap.ContainerFeeConfig,
|
||||
netmap.ContainerAliasFeeConfig,
|
||||
netmap.EtIterationsConfig,
|
||||
netmap.EtAlphaConfig,
|
||||
netmap.BasicIncomeRateConfig,
|
||||
netmap.IrCandidateFeeConfig,
|
||||
netmap.WithdrawFeeConfig,
|
||||
netmap.HomomorphicHashingDisabledKey,
|
||||
netmap.MaintenanceModeAllowedConfig,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -3,24 +3,25 @@ package morph
|
|||
import (
|
||||
"errors"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
||||
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
func getDefaultNetmapContractConfigMap() map[string]any {
|
||||
m := make(map[string]any)
|
||||
m[netmapEpochKey] = viper.GetInt64(epochDurationInitFlag)
|
||||
m[netmapMaxObjectSizeKey] = viper.GetInt64(maxObjectSizeInitFlag)
|
||||
m[netmapAuditFeeKey] = viper.GetInt64(auditFeeInitFlag)
|
||||
m[netmapContainerFeeKey] = viper.GetInt64(containerFeeInitFlag)
|
||||
m[netmapContainerAliasFeeKey] = viper.GetInt64(containerAliasFeeInitFlag)
|
||||
m[netmapEigenTrustIterationsKey] = int64(defaultEigenTrustIterations)
|
||||
m[netmapEigenTrustAlphaKey] = defaultEigenTrustAlpha
|
||||
m[netmapBasicIncomeRateKey] = viper.GetInt64(incomeRateInitFlag)
|
||||
m[netmapInnerRingCandidateFeeKey] = viper.GetInt64(candidateFeeInitFlag)
|
||||
m[netmapWithdrawFeeKey] = viper.GetInt64(withdrawFeeInitFlag)
|
||||
m[netmapHomomorphicHashDisabledKey] = viper.GetBool(homomorphicHashDisabledInitFlag)
|
||||
m[netmapMaintenanceAllowedKey] = viper.GetBool(maintenanceModeAllowedInitFlag)
|
||||
m[netmap.EpochDurationConfig] = viper.GetInt64(epochDurationInitFlag)
|
||||
m[netmap.MaxObjectSizeConfig] = viper.GetInt64(maxObjectSizeInitFlag)
|
||||
m[netmap.AuditFeeConfig] = viper.GetInt64(auditFeeInitFlag)
|
||||
m[netmap.ContainerFeeConfig] = viper.GetInt64(containerFeeInitFlag)
|
||||
m[netmap.ContainerAliasFeeConfig] = viper.GetInt64(containerAliasFeeInitFlag)
|
||||
m[netmap.EtIterationsConfig] = int64(defaultEigenTrustIterations)
|
||||
m[netmap.EtAlphaConfig] = defaultEigenTrustAlpha
|
||||
m[netmap.BasicIncomeRateConfig] = viper.GetInt64(incomeRateInitFlag)
|
||||
m[netmap.IrCandidateFeeConfig] = viper.GetInt64(candidateFeeInitFlag)
|
||||
m[netmap.WithdrawFeeConfig] = viper.GetInt64(withdrawFeeInitFlag)
|
||||
m[netmap.HomomorphicHashingDisabledKey] = viper.GetBool(homomorphicHashDisabledInitFlag)
|
||||
m[netmap.MaintenanceModeAllowedConfig] = viper.GetBool(maintenanceModeAllowedInitFlag)
|
||||
return m
|
||||
}
|
||||
|
||||
|
|
|
@ -11,24 +11,24 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
maxObjectSizeConfig = "MaxObjectSize"
|
||||
basicIncomeRateConfig = "BasicIncomeRate"
|
||||
auditFeeConfig = "AuditFee"
|
||||
epochDurationConfig = "EpochDuration"
|
||||
containerFeeConfig = "ContainerFee"
|
||||
containerAliasFeeConfig = "ContainerAliasFee"
|
||||
etIterationsConfig = "EigenTrustIterations"
|
||||
etAlphaConfig = "EigenTrustAlpha"
|
||||
irCandidateFeeConfig = "InnerRingCandidateFee"
|
||||
withdrawFeeConfig = "WithdrawFee"
|
||||
homomorphicHashingDisabledKey = "HomomorphicHashingDisabled"
|
||||
maintenanceModeAllowedConfig = "MaintenanceModeAllowed"
|
||||
MaxObjectSizeConfig = "MaxObjectSize"
|
||||
BasicIncomeRateConfig = "BasicIncomeRate"
|
||||
AuditFeeConfig = "AuditFee"
|
||||
EpochDurationConfig = "EpochDuration"
|
||||
ContainerFeeConfig = "ContainerFee"
|
||||
ContainerAliasFeeConfig = "ContainerAliasFee"
|
||||
EtIterationsConfig = "EigenTrustIterations"
|
||||
EtAlphaConfig = "EigenTrustAlpha"
|
||||
IrCandidateFeeConfig = "InnerRingCandidateFee"
|
||||
WithdrawFeeConfig = "WithdrawFee"
|
||||
HomomorphicHashingDisabledKey = "HomomorphicHashingDisabled"
|
||||
MaintenanceModeAllowedConfig = "MaintenanceModeAllowed"
|
||||
)
|
||||
|
||||
// MaxObjectSize receives max object size configuration
|
||||
// value through the Netmap contract call.
|
||||
func (c *Client) MaxObjectSize() (uint64, error) {
|
||||
objectSize, err := c.readUInt64Config(maxObjectSizeConfig)
|
||||
objectSize, err := c.readUInt64Config(MaxObjectSizeConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get epoch number: %w", c, err)
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ func (c *Client) MaxObjectSize() (uint64, error) {
|
|||
// BasicIncomeRate returns basic income rate configuration value from network
|
||||
// config in netmap contract.
|
||||
func (c *Client) BasicIncomeRate() (uint64, error) {
|
||||
rate, err := c.readUInt64Config(basicIncomeRateConfig)
|
||||
rate, err := c.readUInt64Config(BasicIncomeRateConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get basic income rate: %w", c, err)
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ func (c *Client) BasicIncomeRate() (uint64, error) {
|
|||
// AuditFee returns audit fee configuration value from network
|
||||
// config in netmap contract.
|
||||
func (c *Client) AuditFee() (uint64, error) {
|
||||
fee, err := c.readUInt64Config(auditFeeConfig)
|
||||
fee, err := c.readUInt64Config(AuditFeeConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get audit fee: %w", c, err)
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ func (c *Client) AuditFee() (uint64, error) {
|
|||
|
||||
// EpochDuration returns number of sidechain blocks per one FrostFS epoch.
|
||||
func (c *Client) EpochDuration() (uint64, error) {
|
||||
epochDuration, err := c.readUInt64Config(epochDurationConfig)
|
||||
epochDuration, err := c.readUInt64Config(EpochDurationConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get epoch duration: %w", c, err)
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ func (c *Client) EpochDuration() (uint64, error) {
|
|||
// ContainerFee returns fee paid by container owner to each alphabet node
|
||||
// for container registration.
|
||||
func (c *Client) ContainerFee() (uint64, error) {
|
||||
fee, err := c.readUInt64Config(containerFeeConfig)
|
||||
fee, err := c.readUInt64Config(ContainerFeeConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get container fee: %w", c, err)
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ func (c *Client) ContainerFee() (uint64, error) {
|
|||
// ContainerAliasFee returns additional fee paid by container owner to each
|
||||
// alphabet node for container nice name registration.
|
||||
func (c *Client) ContainerAliasFee() (uint64, error) {
|
||||
fee, err := c.readUInt64Config(containerAliasFeeConfig)
|
||||
fee, err := c.readUInt64Config(ContainerAliasFeeConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get container alias fee: %w", c, err)
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ func (c *Client) ContainerAliasFee() (uint64, error) {
|
|||
// EigenTrustIterations returns global configuration value of iteration cycles
|
||||
// for EigenTrust algorithm per epoch.
|
||||
func (c *Client) EigenTrustIterations() (uint64, error) {
|
||||
iterations, err := c.readUInt64Config(etIterationsConfig)
|
||||
iterations, err := c.readUInt64Config(EtIterationsConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get eigen trust iterations: %w", c, err)
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ func (c *Client) EigenTrustIterations() (uint64, error) {
|
|||
// EigenTrustAlpha returns global configuration value of alpha parameter.
|
||||
// It receives the alpha as a string and tries to convert it to float.
|
||||
func (c *Client) EigenTrustAlpha() (float64, error) {
|
||||
strAlpha, err := c.readStringConfig(etAlphaConfig)
|
||||
strAlpha, err := c.readStringConfig(EtAlphaConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get eigen trust alpha: %w", c, err)
|
||||
}
|
||||
|
@ -117,13 +117,13 @@ func (c *Client) EigenTrustAlpha() (float64, error) {
|
|||
//
|
||||
// Returns (false, nil) if config key is not found in the contract.
|
||||
func (c *Client) HomomorphicHashDisabled() (bool, error) {
|
||||
return c.readBoolConfig(homomorphicHashingDisabledKey)
|
||||
return c.readBoolConfig(HomomorphicHashingDisabledKey)
|
||||
}
|
||||
|
||||
// InnerRingCandidateFee returns global configuration value of fee paid by
|
||||
// node to be in inner ring candidates list.
|
||||
func (c *Client) InnerRingCandidateFee() (uint64, error) {
|
||||
fee, err := c.readUInt64Config(irCandidateFeeConfig)
|
||||
fee, err := c.readUInt64Config(IrCandidateFeeConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get inner ring candidate fee: %w", c, err)
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ func (c *Client) InnerRingCandidateFee() (uint64, error) {
|
|||
// WithdrawFee returns global configuration value of fee paid by user to
|
||||
// withdraw assets from FrostFS contract.
|
||||
func (c *Client) WithdrawFee() (uint64, error) {
|
||||
fee, err := c.readUInt64Config(withdrawFeeConfig)
|
||||
fee, err := c.readUInt64Config(WithdrawFeeConfig)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("(%T) could not get withdraw fee: %w", c, err)
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ func (c *Client) WithdrawFee() (uint64, error) {
|
|||
//
|
||||
// By default, maintenance state is disallowed.
|
||||
func (c *Client) MaintenanceModeAllowed() (bool, error) {
|
||||
return c.readBoolConfig(maintenanceModeAllowedConfig)
|
||||
return c.readBoolConfig(MaintenanceModeAllowedConfig)
|
||||
}
|
||||
|
||||
func (c *Client) readUInt64Config(key string) (uint64, error) {
|
||||
|
@ -299,32 +299,32 @@ func (c *Client) ReadNetworkConfiguration() (NetworkConfiguration, error) {
|
|||
Name: name,
|
||||
Value: value,
|
||||
})
|
||||
case maxObjectSizeConfig:
|
||||
case MaxObjectSizeConfig:
|
||||
res.MaxObjectSize = bytesToUint64(value)
|
||||
case basicIncomeRateConfig:
|
||||
case BasicIncomeRateConfig:
|
||||
res.StoragePrice = bytesToUint64(value)
|
||||
case auditFeeConfig:
|
||||
case AuditFeeConfig:
|
||||
res.AuditFee = bytesToUint64(value)
|
||||
case epochDurationConfig:
|
||||
case EpochDurationConfig:
|
||||
res.EpochDuration = bytesToUint64(value)
|
||||
case containerFeeConfig:
|
||||
case ContainerFeeConfig:
|
||||
res.ContainerFee = bytesToUint64(value)
|
||||
case containerAliasFeeConfig:
|
||||
case ContainerAliasFeeConfig:
|
||||
res.ContainerAliasFee = bytesToUint64(value)
|
||||
case etIterationsConfig:
|
||||
case EtIterationsConfig:
|
||||
res.EigenTrustIterations = bytesToUint64(value)
|
||||
case etAlphaConfig:
|
||||
case EtAlphaConfig:
|
||||
res.EigenTrustAlpha, err = strconv.ParseFloat(string(value), 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid prm %s: %v", etAlphaConfig, err)
|
||||
return fmt.Errorf("invalid prm %s: %v", EtAlphaConfig, err)
|
||||
}
|
||||
case irCandidateFeeConfig:
|
||||
case IrCandidateFeeConfig:
|
||||
res.IRCandidateFee = bytesToUint64(value)
|
||||
case withdrawFeeConfig:
|
||||
case WithdrawFeeConfig:
|
||||
res.WithdrawalFee = bytesToUint64(value)
|
||||
case homomorphicHashingDisabledKey:
|
||||
case HomomorphicHashingDisabledKey:
|
||||
res.HomomorphicHashingDisabled = bytesToBool(value)
|
||||
case maintenanceModeAllowedConfig:
|
||||
case MaintenanceModeAllowedConfig:
|
||||
res.MaintenanceModeAllowed = bytesToBool(value)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue