refactor: use viper unmarshal in config.GetConfig function (#13651)
## Description Closes: #13606 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [x] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [x] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [x] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [x] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable)
This commit is contained in:
parent
91ca57bcef
commit
e2b5cac403
@ -82,6 +82,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||
* [#13178](https://github.com/cosmos/cosmos-sdk/pull/13178) Add `cosmos.msg.v1.service` protobuf annotation to allow tooling to distinguish between Msg and Query services via reflection.
|
||||
* [#13236](https://github.com/cosmos/cosmos-sdk/pull/13236) Integrate Filter Logging
|
||||
* [#13528](https://github.com/cosmos/cosmos-sdk/pull/13528) Update `ValidateMemoDecorator` to only check memo against `MaxMemoCharacters` param when a memo is present.
|
||||
* [#13651](https://github.com/cosmos/cosmos-sdk/pull/13651) Update `server/config/config.GetConfig` function.
|
||||
|
||||
### State Machine Breaking
|
||||
|
||||
|
||||
@ -293,83 +293,11 @@ func DefaultConfig() *Config {
|
||||
|
||||
// GetConfig returns a fully parsed Config object.
|
||||
func GetConfig(v *viper.Viper) (Config, error) {
|
||||
globalLabelsRaw, ok := v.Get("telemetry.global-labels").([]interface{})
|
||||
if !ok {
|
||||
return Config{}, fmt.Errorf("failed to parse global-labels config")
|
||||
conf := DefaultConfig()
|
||||
if err := v.Unmarshal(conf); err != nil {
|
||||
return Config{}, fmt.Errorf("error extracting app config: %w", err)
|
||||
}
|
||||
|
||||
globalLabels := make([][]string, 0, len(globalLabelsRaw))
|
||||
for idx, glr := range globalLabelsRaw {
|
||||
labelsRaw, ok := glr.([]interface{})
|
||||
if !ok {
|
||||
return Config{}, fmt.Errorf("failed to parse global label number %d from config", idx)
|
||||
}
|
||||
if len(labelsRaw) == 2 {
|
||||
globalLabels = append(globalLabels, []string{labelsRaw[0].(string), labelsRaw[1].(string)})
|
||||
}
|
||||
}
|
||||
|
||||
return Config{
|
||||
BaseConfig: BaseConfig{
|
||||
MinGasPrices: v.GetString("minimum-gas-prices"),
|
||||
InterBlockCache: v.GetBool("inter-block-cache"),
|
||||
Pruning: v.GetString("pruning"),
|
||||
PruningKeepRecent: v.GetString("pruning-keep-recent"),
|
||||
PruningInterval: v.GetString("pruning-interval"),
|
||||
HaltHeight: v.GetUint64("halt-height"),
|
||||
HaltTime: v.GetUint64("halt-time"),
|
||||
IndexEvents: v.GetStringSlice("index-events"),
|
||||
MinRetainBlocks: v.GetUint64("min-retain-blocks"),
|
||||
IAVLCacheSize: v.GetUint64("iavl-cache-size"),
|
||||
IAVLDisableFastNode: v.GetBool("iavl-disable-fastnode"),
|
||||
AppDBBackend: v.GetString("app-db-backend"),
|
||||
},
|
||||
Telemetry: telemetry.Config{
|
||||
ServiceName: v.GetString("telemetry.service-name"),
|
||||
Enabled: v.GetBool("telemetry.enabled"),
|
||||
EnableHostname: v.GetBool("telemetry.enable-hostname"),
|
||||
EnableHostnameLabel: v.GetBool("telemetry.enable-hostname-label"),
|
||||
EnableServiceLabel: v.GetBool("telemetry.enable-service-label"),
|
||||
PrometheusRetentionTime: v.GetInt64("telemetry.prometheus-retention-time"),
|
||||
GlobalLabels: globalLabels,
|
||||
},
|
||||
API: APIConfig{
|
||||
Enable: v.GetBool("api.enable"),
|
||||
Swagger: v.GetBool("api.swagger"),
|
||||
Address: v.GetString("api.address"),
|
||||
MaxOpenConnections: v.GetUint("api.max-open-connections"),
|
||||
RPCReadTimeout: v.GetUint("api.rpc-read-timeout"),
|
||||
RPCWriteTimeout: v.GetUint("api.rpc-write-timeout"),
|
||||
RPCMaxBodyBytes: v.GetUint("api.rpc-max-body-bytes"),
|
||||
EnableUnsafeCORS: v.GetBool("api.enabled-unsafe-cors"),
|
||||
},
|
||||
Rosetta: RosettaConfig{
|
||||
Enable: v.GetBool("rosetta.enable"),
|
||||
Address: v.GetString("rosetta.address"),
|
||||
Blockchain: v.GetString("rosetta.blockchain"),
|
||||
Network: v.GetString("rosetta.network"),
|
||||
Retries: v.GetInt("rosetta.retries"),
|
||||
Offline: v.GetBool("rosetta.offline"),
|
||||
EnableFeeSuggestion: v.GetBool("rosetta.enable-fee-suggestion"),
|
||||
GasToSuggest: v.GetInt("rosetta.gas-to-suggest"),
|
||||
DenomToSuggest: v.GetString("rosetta.denom-to-suggest"),
|
||||
},
|
||||
GRPC: GRPCConfig{
|
||||
Enable: v.GetBool("grpc.enable"),
|
||||
Address: v.GetString("grpc.address"),
|
||||
MaxRecvMsgSize: v.GetInt("grpc.max-recv-msg-size"),
|
||||
MaxSendMsgSize: v.GetInt("grpc.max-send-msg-size"),
|
||||
},
|
||||
GRPCWeb: GRPCWebConfig{
|
||||
Enable: v.GetBool("grpc-web.enable"),
|
||||
Address: v.GetString("grpc-web.address"),
|
||||
EnableUnsafeCORS: v.GetBool("grpc-web.enable-unsafe-cors"),
|
||||
},
|
||||
StateSync: StateSyncConfig{
|
||||
SnapshotInterval: v.GetUint64("state-sync.snapshot-interval"),
|
||||
SnapshotKeepRecent: v.GetUint32("state-sync.snapshot-keep-recent"),
|
||||
},
|
||||
}, nil
|
||||
return *conf, nil
|
||||
}
|
||||
|
||||
// ValidateBasic returns an error if min-gas-prices field is empty in BaseConfig. Otherwise, it returns nil.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user