From 299b6a69389f6bb154ca9c6d442388234038929b Mon Sep 17 00:00:00 2001 From: Anton Nikiforov Date: Tue, 11 Apr 2023 14:59:24 +0300 Subject: [PATCH] [#100] adm: Use netmap constants from pkg Signed-off-by: Anton Nikiforov --- .../internal/modules/morph/config.go | 29 ++++---- .../modules/morph/initialize_deploy.go | 38 ++++------ .../internal/modules/morph/netmap_util.go | 25 ++++--- pkg/morph/client/netmap/config.go | 74 +++++++++---------- 4 files changed, 78 insertions(+), 88 deletions(-) diff --git a/cmd/frostfs-adm/internal/modules/morph/config.go b/cmd/frostfs-adm/internal/modules/morph/config.go index 11e1bd4f..3a60e719 100644 --- a/cmd/frostfs-adm/internal/modules/morph/config.go +++ b/cmd/frostfs-adm/internal/modules/morph/config.go @@ -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) diff --git a/cmd/frostfs-adm/internal/modules/morph/initialize_deploy.go b/cmd/frostfs-adm/internal/modules/morph/initialize_deploy.go index 3446cd0b..9e473463 100644 --- a/cmd/frostfs-adm/internal/modules/morph/initialize_deploy.go +++ b/cmd/frostfs-adm/internal/modules/morph/initialize_deploy.go @@ -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, } ) diff --git a/cmd/frostfs-adm/internal/modules/morph/netmap_util.go b/cmd/frostfs-adm/internal/modules/morph/netmap_util.go index 2ba48b54..4b6de5bd 100644 --- a/cmd/frostfs-adm/internal/modules/morph/netmap_util.go +++ b/cmd/frostfs-adm/internal/modules/morph/netmap_util.go @@ -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 } diff --git a/pkg/morph/client/netmap/config.go b/pkg/morph/client/netmap/config.go index 6b721cdf..3011bd54 100644 --- a/pkg/morph/client/netmap/config.go +++ b/pkg/morph/client/netmap/config.go @@ -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) }