Skip to content

Commit a4de027

Browse files
authored
fix error parsing addressoverrides (#5399)
Signed-off-by: Fedor Partanskiy <fredprtnsk@gmail.com>
1 parent f0f9f3e commit a4de027

2 files changed

Lines changed: 35 additions & 1 deletion

File tree

core/deliverservice/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"time"
1414

1515
"github.com/hyperledger/fabric/common/deliverclient/orderers"
16+
"github.com/hyperledger/fabric/common/viperutil"
1617
"github.com/hyperledger/fabric/core/config"
1718
"github.com/hyperledger/fabric/internal/pkg/comm"
1819
"github.com/pkg/errors"
@@ -75,7 +76,7 @@ func GlobalConfig() *DeliverServiceConfig {
7576

7677
func LoadOverridesMap() (map[string]*orderers.Endpoint, error) {
7778
var overrides []AddressOverride
78-
err := viper.UnmarshalKey("peer.deliveryclient.addressOverrides", &overrides)
79+
err := viper.UnmarshalKey("peer.deliveryclient.addressOverrides", &overrides, viper.DecodeHook(viperutil.YamlStringToStructHook(overrides)))
7980
if err != nil {
8081
return nil, errors.WithMessage(err, "could not unmarshal peer.deliveryclient.addressOverrides")
8182
}

core/deliverservice/config_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import (
1010
"bytes"
1111
"os"
1212
"path/filepath"
13+
"strings"
1314
"testing"
1415
"time"
1516

1617
"github.com/hyperledger/fabric/core/deliverservice"
18+
"github.com/hyperledger/fabric/internal/peer/common"
1719
"github.com/hyperledger/fabric/internal/pkg/comm"
1820
"github.com/spf13/viper"
1921
"github.com/stretchr/testify/require"
@@ -168,6 +170,37 @@ func TestLoadOverridesMap(t *testing.T) {
168170
require.Equal(t, "addressTo2", ep2.Address)
169171
})
170172

173+
t.Run("GreenPath With Env", func(t *testing.T) {
174+
t.Setenv("CORE_PEER_DELIVERYCLIENT_ADDRESSOVERRIDES", "[{from: addressFrom1, to: addressTo1, caCertsFile: testdata/cert.pem}"+
175+
", {from: addressFrom2, to: addressTo2, caCertsFile: testdata/cert.pem}]")
176+
config := `
177+
peer:
178+
deliveryclient:
179+
addressOverrides:
180+
`
181+
182+
viper.Reset()
183+
184+
viper.SetEnvPrefix(common.CmdRoot)
185+
viper.AllowEmptyEnv(true)
186+
viper.AutomaticEnv()
187+
replacer := strings.NewReplacer(".", "_")
188+
viper.SetEnvKeyReplacer(replacer)
189+
190+
viper.SetConfigType("yaml")
191+
err := viper.ReadConfig(bytes.NewBuffer([]byte(config)))
192+
require.NoError(t, err)
193+
res, err := deliverservice.LoadOverridesMap()
194+
require.NoError(t, err)
195+
require.Len(t, res, 2)
196+
ep1, ok := res["addressFrom1"]
197+
require.True(t, ok)
198+
require.Equal(t, "addressTo1", ep1.Address)
199+
ep2, ok := res["addressFrom2"]
200+
require.True(t, ok)
201+
require.Equal(t, "addressTo2", ep2.Address)
202+
})
203+
171204
t.Run("MissingCAFiles", func(t *testing.T) {
172205
config := `
173206
peer:

0 commit comments

Comments
 (0)