Skip to content

Commit 40cfff3

Browse files
author
Jason Yellick
committed
[FAB-2155] Split orderer config local and genesis
https://jira.hyperledger.org/browse/FAB-2155 The orderer is currently capable of generating its genesis material based on configuration. This function is needed in the common components in order to deprecate the static templating that exists today. Change-Id: Ida60c158eabce3491b25350ee50d5863b5934820 Signed-off-by: Jason Yellick <jyellick@us.ibm.com>
1 parent f5ab160 commit 40cfff3

File tree

19 files changed

+227
-117
lines changed

19 files changed

+227
-117
lines changed

Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,12 @@ build/image/peer/payload: build/docker/bin/peer \
179179
build/genesis-sampleconfig.tar.bz2
180180
build/image/orderer/payload: build/docker/bin/orderer \
181181
build/msp-sampleconfig.tar.bz2 \
182-
orderer/orderer.yaml
182+
orderer/orderer.yaml \
183+
orderer/genesis.yaml
183184
build/image/testenv/payload: build/gotools.tar.bz2 \
184185
build/docker/bin/orderer \
185186
orderer/orderer.yaml \
187+
orderer/genesis.yaml \
186188
build/docker/bin/peer \
187189
peer/core.yaml \
188190
build/msp-sampleconfig.tar.bz2 \

images/orderer/Dockerfile.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ RUN mkdir -p /var/hyperledger/production /etc/hyperledger/fabric/orderer
44
COPY payload/orderer /usr/local/bin
55
ADD payload/msp-sampleconfig.tar.bz2 $ORDERER_CFG_PATH/../
66
COPY payload/orderer.yaml $ORDERER_CFG_PATH/
7+
COPY payload/genesis.yaml $ORDERER_CFG_PATH/
78
EXPOSE 7050
89
CMD orderer

images/testenv/Dockerfile.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ ADD payload/gotools.tar.bz2 /usr/local/bin/
1515

1616
# fabric configuration files
1717
COPY payload/orderer.yaml $ORDERER_CFG_PATH
18+
COPY payload/genesis.yaml $ORDERER_CFG_PATH
1819
COPY payload/core.yaml $PEER_CFG_PATH
1920
ADD payload/msp-sampleconfig.tar.bz2 $PEER_CFG_PATH
2021

orderer/common/bootstrap/provisional/provisional.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,22 @@ type bootstrapper struct {
6565
}
6666

6767
// New returns a new provisional bootstrap helper.
68-
func New(conf *config.TopLevel) Generator {
68+
func New(conf *config.GenesisTopLevel) Generator {
6969
bs := &bootstrapper{
7070
minimalGroups: []*cb.ConfigGroup{
7171
// Chain Config Types
7272
configtxchannel.DefaultHashingAlgorithm(),
7373
configtxchannel.DefaultBlockDataHashingStructure(),
74-
configtxchannel.TemplateOrdererAddresses([]string{fmt.Sprintf("%s:%d", conf.General.ListenAddress, conf.General.ListenPort)}),
74+
configtxchannel.TemplateOrdererAddresses(conf.Orderer.Addresses),
7575

7676
// Orderer Config Types
77-
configtxorderer.TemplateConsensusType(conf.Genesis.OrdererType),
77+
configtxorderer.TemplateConsensusType(conf.Orderer.OrdererType),
7878
configtxorderer.TemplateBatchSize(&ab.BatchSize{
79-
MaxMessageCount: conf.Genesis.BatchSize.MaxMessageCount,
80-
AbsoluteMaxBytes: conf.Genesis.BatchSize.AbsoluteMaxBytes,
81-
PreferredMaxBytes: conf.Genesis.BatchSize.PreferredMaxBytes,
79+
MaxMessageCount: conf.Orderer.BatchSize.MaxMessageCount,
80+
AbsoluteMaxBytes: conf.Orderer.BatchSize.AbsoluteMaxBytes,
81+
PreferredMaxBytes: conf.Orderer.BatchSize.PreferredMaxBytes,
8282
}),
83-
configtxorderer.TemplateBatchTimeout(conf.Genesis.BatchTimeout.String()),
83+
configtxorderer.TemplateBatchTimeout(conf.Orderer.BatchTimeout.String()),
8484
configtxorderer.TemplateIngressPolicyNames([]string{AcceptAllPolicyKey}),
8585
configtxorderer.TemplateEgressPolicyNames([]string{AcceptAllPolicyKey}),
8686

@@ -94,12 +94,12 @@ func New(conf *config.TopLevel) Generator {
9494
},
9595
}
9696

97-
switch conf.Genesis.OrdererType {
97+
switch conf.Orderer.OrdererType {
9898
case ConsensusTypeSolo, ConsensusTypeSbft:
9999
case ConsensusTypeKafka:
100-
bs.minimalGroups = append(bs.minimalGroups, configtxorderer.TemplateKafkaBrokers(conf.Kafka.Brokers))
100+
bs.minimalGroups = append(bs.minimalGroups, configtxorderer.TemplateKafkaBrokers(conf.Orderer.Kafka.Brokers))
101101
default:
102-
panic(fmt.Errorf("Wrong consenter type value given: %s", conf.Genesis.OrdererType))
102+
panic(fmt.Errorf("Wrong consenter type value given: %s", conf.Orderer.OrdererType))
103103
}
104104

105105
return bs

orderer/common/bootstrap/provisional/provisional_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ import (
2424
cb "github.com/hyperledger/fabric/protos/common"
2525
)
2626

27-
var confSolo, confKafka *config.TopLevel
28-
var testCases []*config.TopLevel
27+
var confSolo, confKafka *config.GenesisTopLevel
28+
var testCases []*config.GenesisTopLevel
2929

3030
func init() {
31-
confSolo = config.Load()
32-
confKafka = config.Load()
33-
confKafka.Genesis.OrdererType = ConsensusTypeKafka
34-
testCases = []*config.TopLevel{confSolo, confKafka}
31+
confSolo = config.LoadGenesis()
32+
confKafka = config.LoadGenesis()
33+
confKafka.Orderer.OrdererType = ConsensusTypeKafka
34+
testCases = []*config.GenesisTopLevel{confSolo, confKafka}
3535
}
3636

3737
func TestGenesisBlockHeader(t *testing.T) {
@@ -40,10 +40,10 @@ func TestGenesisBlockHeader(t *testing.T) {
4040
for _, tc := range testCases {
4141
genesisBlock := New(tc).GenesisBlock()
4242
if genesisBlock.Header.Number != expectedHeaderNumber {
43-
t.Fatalf("Case %s: Expected header number %d, got %d", tc.Genesis.OrdererType, expectedHeaderNumber, genesisBlock.Header.Number)
43+
t.Fatalf("Case %s: Expected header number %d, got %d", tc.Orderer.OrdererType, expectedHeaderNumber, genesisBlock.Header.Number)
4444
}
4545
if !bytes.Equal(genesisBlock.Header.PreviousHash, nil) {
46-
t.Fatalf("Case %s: Expected header previousHash to be nil, got %x", tc.Genesis.OrdererType, genesisBlock.Header.PreviousHash)
46+
t.Fatalf("Case %s: Expected header previousHash to be nil, got %x", tc.Orderer.OrdererType, genesisBlock.Header.PreviousHash)
4747
}
4848
}
4949
}

orderer/common/deliver/deliver_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const ledgerSize = 10
4444

4545
func init() {
4646
logging.SetLevel(logging.DEBUG, "")
47-
genesisBlock = provisional.New(config.Load()).GenesisBlock()
47+
genesisBlock = provisional.New(config.LoadGenesis()).GenesisBlock()
4848
}
4949

5050
type mockD struct {

orderer/genesis.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
################################################################################
3+
#
4+
# SECTION: Orderer
5+
#
6+
# - This section defines the values to encode into a config transaction or
7+
# genesis block for orderer related parameters
8+
#
9+
################################################################################
10+
Orderer:
11+
12+
# Orderer Type: The orderer implementation to start
13+
# Available types are "solo" and "kafka"
14+
OrdererType: solo
15+
16+
Addresses:
17+
- 127.0.0.1:7050
18+
19+
# Batch Timeout: The amount of time to wait before creating a batch
20+
BatchTimeout: 10s
21+
22+
# Batch Size: Controls the number of messages batched into a block
23+
BatchSize:
24+
25+
# Max Message Count: The maximum number of messages to permit in a batch
26+
MaxMessageCount: 10
27+
28+
# Absolute Max Bytes: The absolute maximum number of bytes allowed for
29+
# the serialized messages in a batch.
30+
AbsoluteMaxBytes: 99 MB
31+
32+
# Preferred Max Bytes: The preferred maximum number of bytes allowed for
33+
# the serialized messages in a batch. A message larger than the preferred
34+
# max bytes will result in a batch larger than preferred max bytes.
35+
PreferredMaxBytes: 512 KB
36+
37+
Kafka:
38+
# Brokers: A list of Kafka brokers to which the orderer connects
39+
# NOTE: Use IP:port notation
40+
Brokers:
41+
- 127.0.0.1:9092
42+

orderer/kafka/config_test.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,6 @@ var (
3838
)
3939

4040
var testConf = &config.TopLevel{
41-
General: config.General{
42-
LedgerType: "ram",
43-
QueueSize: 100,
44-
MaxWindowSize: 100,
45-
ListenAddress: "127.0.0.1",
46-
ListenPort: 7050,
47-
GenesisMethod: "provisional",
48-
},
4941
Kafka: config.Kafka{
5042
Brokers: []string{"127.0.0.1:9092"},
5143
Retry: config.Retry{
@@ -55,15 +47,6 @@ var testConf = &config.TopLevel{
5547
Verbose: false,
5648
Version: sarama.V0_9_0_1,
5749
},
58-
Genesis: config.Genesis{
59-
OrdererType: "kafka",
60-
BatchTimeout: 500 * time.Millisecond,
61-
BatchSize: config.BatchSize{
62-
MaxMessageCount: 100,
63-
AbsoluteMaxBytes: 10 * 1024 * 1024,
64-
PreferredMaxBytes: 512 * 1024,
65-
},
66-
},
6750
}
6851

6952
func testClose(t *testing.T, x Closeable) {

orderer/ledger/file/fileledger_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ var genesisBlock *cb.Block
3535

3636
func init() {
3737
logging.SetLevel(logging.DEBUG, "")
38-
genesisBlock = provisional.New(config.Load()).GenesisBlock()
38+
genesisBlock = provisional.New(config.LoadGenesis()).GenesisBlock()
3939
}
4040

4141
type testEnv struct {

orderer/ledger/fileledger_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
var genesisBlock *cb.Block
3131

3232
func init() {
33-
genesisBlock = provisional.New(config.Load()).GenesisBlock()
33+
genesisBlock = provisional.New(config.LoadGenesis()).GenesisBlock()
3434
testables = append(testables, &fileLedgerTestEnv{})
3535
}
3636

0 commit comments

Comments
 (0)