Skip to content

Commit ca2360b

Browse files
author
Jason Yellick
committed
FAB-9803 Push PeerID and NetworkID into dc
Only the docker-controller needs the PeerID and NetworkID, but it is constantly passed as part of the arguments through the ccintf. This is unnecessary, and the docker controller instance should retain the value of these strings instead. This CR does that. Change-Id: I64ab1e1405dd646355e469dfda6ec880dc199f4a Signed-off-by: Jason Yellick <jyellick@us.ibm.com>
1 parent f789a76 commit ca2360b

12 files changed

+101
-89
lines changed

core/chaincode/chaincode_support.go

-2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ func NewChaincodeSupport(
6868
Processor: processor,
6969
CACert: caCert,
7070
PeerAddress: peerAddress,
71-
PeerID: config.PeerID,
72-
PeerNetworkID: config.PeerNetworkID,
7371
CommonEnv: []string{
7472
"CORE_CHAINCODE_LOGGING_LEVEL=" + config.LogLevel,
7573
"CORE_CHAINCODE_LOGGING_SHIM=" + config.ShimLogLevel,

core/chaincode/chaincode_support_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func initMockPeer(chainIDs ...string) (*ChaincodeSupport, error) {
182182
aclmgmt.GetACLProvider(),
183183
container.NewVMController(
184184
map[string]container.VMProvider{
185-
dockercontroller.ContainerType: dockercontroller.NewProvider(),
185+
dockercontroller.ContainerType: dockercontroller.NewProvider("", ""),
186186
inproccontroller.ContainerType: ipRegistry,
187187
},
188188
),

core/chaincode/config.go

-4
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ const (
2222
)
2323

2424
type Config struct {
25-
PeerNetworkID string
26-
PeerID string
2725
TLSEnabled bool
2826
Keepalive time.Duration
2927
ExecuteTimeout time.Duration
@@ -45,8 +43,6 @@ func (c *Config) load() {
4543
replacer := strings.NewReplacer(".", "_")
4644
viper.SetEnvKeyReplacer(replacer)
4745

48-
c.PeerNetworkID = viper.GetString("peer.networkId")
49-
c.PeerID = viper.GetString("peer.id")
5046
c.TLSEnabled = viper.GetBool("peer.tls.enabled")
5147

5248
c.Keepalive = toSeconds(viper.GetString("chaincode.keepalive"), 0)

core/chaincode/config_test.go

-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ func TestGlobalConfig(t *testing.T) {
3131
viper.Set("chaincode.logging.shim", "WARNING")
3232

3333
config := chaincode.GlobalConfig()
34-
assert.Equal(t, "test-peer-network-id", config.PeerNetworkID)
35-
assert.Equal(t, "test-peer-id", config.PeerID)
3634
assert.Equal(t, true, config.TLSEnabled)
3735
assert.Equal(t, 50*time.Second, config.Keepalive)
3836
assert.Equal(t, 20*time.Hour, config.ExecuteTimeout)

core/chaincode/container_runtime.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ type ContainerRuntime struct {
4444
CACert []byte
4545
CommonEnv []string
4646
PeerAddress string
47-
PeerID string
48-
PeerNetworkID string
4947
}
5048

5149
type platformBuilder struct {
@@ -65,7 +63,7 @@ func (c *ContainerRuntime) Start(ctxt context.Context, cccid *ccprovider.CCConte
6563
return err
6664
}
6765

68-
chaincodeLogger.Debugf("start container: %s(networkid:%s,peerid:%s)", cname, c.PeerNetworkID, c.PeerID)
66+
chaincodeLogger.Debugf("start container: %s(networkid:%s,peerid:%s)", cname)
6967
chaincodeLogger.Debugf("start container with args: %s", strings.Join(lc.Args, " "))
7068
chaincodeLogger.Debugf("start container with env:\n\t%s", strings.Join(lc.Envs, "\n\t"))
7169

@@ -77,8 +75,6 @@ func (c *ContainerRuntime) Start(ctxt context.Context, cccid *ccprovider.CCConte
7775
FilesToUpload: lc.Files,
7876
CCID: ccintf.CCID{
7977
ChaincodeSpec: cds.ChaincodeSpec,
80-
NetworkID: c.PeerNetworkID,
81-
PeerID: c.PeerID,
8278
Version: cccid.Version,
8379
},
8480
}
@@ -97,8 +93,6 @@ func (c *ContainerRuntime) Stop(ctxt context.Context, cccid *ccprovider.CCContex
9793
scr := container.StopContainerReq{
9894
CCID: ccintf.CCID{
9995
ChaincodeSpec: cds.ChaincodeSpec,
100-
NetworkID: c.PeerNetworkID,
101-
PeerID: c.PeerID,
10296
Version: cccid.Version,
10397
},
10498
Timeout: 0,

core/chaincode/container_runtime_test.go

+6-18
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,8 @@ func TestContainerRuntimeStart(t *testing.T) {
171171
for _, tc := range tests {
172172
fakeProcessor := &mock.Processor{}
173173
cr := &chaincode.ContainerRuntime{
174-
Processor: fakeProcessor,
175-
PeerAddress: "peer.example.com",
176-
PeerID: "peer-id",
177-
PeerNetworkID: "peer-network-id",
174+
Processor: fakeProcessor,
175+
PeerAddress: "peer.example.com",
178176
}
179177

180178
ccctx := ccprovider.NewCCContext("context-chain-id", "context-name", "context-version", "context-tx-id", false, nil, nil)
@@ -202,8 +200,6 @@ func TestContainerRuntimeStart(t *testing.T) {
202200
assert.Equal(t, startReq.CCID, ccintf.CCID{
203201
ChaincodeSpec: cds.ChaincodeSpec,
204202
Version: "context-version",
205-
NetworkID: "peer-network-id",
206-
PeerID: "peer-id",
207203
})
208204
}
209205
}
@@ -224,10 +220,8 @@ func TestContainerRuntimeStartErrors(t *testing.T) {
224220
fakeProcessor.ProcessReturns(tc.processErr)
225221

226222
cr := &chaincode.ContainerRuntime{
227-
Processor: fakeProcessor,
228-
PeerAddress: "peer.example.com",
229-
PeerID: "peer-id",
230-
PeerNetworkID: "peer-network-id",
223+
Processor: fakeProcessor,
224+
PeerAddress: "peer.example.com",
231225
}
232226

233227
ccctx := ccprovider.NewCCContext("context-chain-id", "context-name", "context-version", "context-tx-id", false, nil, nil)
@@ -254,9 +248,7 @@ func TestContainerRuntimeStop(t *testing.T) {
254248
for _, tc := range tests {
255249
fakeProcessor := &mock.Processor{}
256250
cr := &chaincode.ContainerRuntime{
257-
Processor: fakeProcessor,
258-
PeerID: "peer-id",
259-
PeerNetworkID: "peer-network-id",
251+
Processor: fakeProcessor,
260252
}
261253

262254
ccctx := ccprovider.NewCCContext("context-chain-id", "context-name", "context-version", "context-tx-id", false, nil, nil)
@@ -282,8 +274,6 @@ func TestContainerRuntimeStop(t *testing.T) {
282274
assert.Equal(t, stopReq.CCID, ccintf.CCID{
283275
ChaincodeSpec: cds.ChaincodeSpec,
284276
Version: "context-version",
285-
NetworkID: "peer-network-id",
286-
PeerID: "peer-id",
287277
})
288278
}
289279
}
@@ -302,9 +292,7 @@ func TestContainerRuntimeStopErrors(t *testing.T) {
302292
fakeProcessor.ProcessReturns(tc.processErr)
303293

304294
cr := &chaincode.ContainerRuntime{
305-
Processor: fakeProcessor,
306-
PeerID: "peer-id",
307-
PeerNetworkID: "peer-network-id",
295+
Processor: fakeProcessor,
308296
}
309297

310298
ccctx := ccprovider.NewCCContext("context-chain-id", "context-name", "context-version", "context-tx-id", false, nil, nil)

core/chaincode/exectransaction_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func initPeer(chainIDs ...string) (net.Listener, *ChaincodeSupport, func(), erro
131131
aclmgmt.GetACLProvider(),
132132
container.NewVMController(
133133
map[string]container.VMProvider{
134-
dockercontroller.ContainerType: dockercontroller.NewProvider(),
134+
dockercontroller.ContainerType: dockercontroller.NewProvider("", ""),
135135
inproccontroller.ContainerType: ipRegistry,
136136
},
137137
),

core/chaincode/systemchaincode_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func initSysCCTests() (*oldSysCCInfo, net.Listener, *ChaincodeSupport, error) {
136136
aclmgmt.GetACLProvider(),
137137
container.NewVMController(
138138
map[string]container.VMProvider{
139-
dockercontroller.ContainerType: dockercontroller.NewProvider(),
139+
dockercontroller.ContainerType: dockercontroller.NewProvider("", ""),
140140
inproccontroller.ContainerType: ipRegistry,
141141
},
142142
),

core/container/ccintf/ccintf.go

-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ func GetCCHandlerKey() string {
3535
//CCID encapsulates chaincode ID
3636
type CCID struct {
3737
ChaincodeSpec *pb.ChaincodeSpec
38-
NetworkID string
39-
PeerID string
4038
Version string
4139
}
4240

core/container/dockercontroller/dockercontroller.go

+25-24
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,7 @@
11
/*
2-
Copyright IBM Corp. 2016 All Rights Reserved.
2+
Copyright IBM Corp. All Rights Reserved.
33
4-
Licensed under the Apache License, Version 2.0 (the "License");
5-
you may not use this file except in compliance with the License.
6-
You may obtain a copy of the License at
7-
8-
http://www.apache.org/licenses/LICENSE-2.0
9-
10-
Unless required by applicable law or agreed to in writing, software
11-
distributed under the License is distributed on an "AS IS" BASIS,
12-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-
See the License for the specific language governing permissions and
14-
limitations under the License.
4+
SPDX-License-Identifier: Apache-2.0
155
*/
166

177
package dockercontroller
@@ -59,6 +49,8 @@ type getClient func() (dockerClient, error)
5949
type DockerVM struct {
6050
id string
6151
getClientFnc getClient
52+
PeerID string
53+
NetworkID string
6254
}
6355

6456
// dockerClient represents a docker client
@@ -90,21 +82,30 @@ type dockerClient interface {
9082
}
9183

9284
// Controller implements container.VMProvider
93-
type Provider struct{}
85+
type Provider struct {
86+
PeerID string
87+
NetworkID string
88+
}
9489

9590
// NewProvider creates a new instance of Provider
96-
func NewProvider() *Provider {
97-
return &Provider{}
91+
func NewProvider(peerID, networkID string) *Provider {
92+
return &Provider{
93+
PeerID: peerID,
94+
NetworkID: networkID,
95+
}
9896
}
9997

10098
// NewVM creates a new DockerVM instance
10199
func (p *Provider) NewVM() container.VM {
102-
return NewDockerVM()
100+
return NewDockerVM(p.PeerID, p.NetworkID)
103101
}
104102

105103
// NewDockerVM returns a new DockerVM instance
106-
func NewDockerVM() *DockerVM {
107-
vm := DockerVM{}
104+
func NewDockerVM(peerID, networkID string) *DockerVM {
105+
vm := DockerVM{
106+
PeerID: peerID,
107+
NetworkID: networkID,
108+
}
108109
vm.getClientFnc = getDockerClient
109110
return &vm
110111
}
@@ -479,12 +480,12 @@ func (vm *DockerVM) Destroy(ctxt context.Context, ccid ccintf.CCID, force bool,
479480
func (vm *DockerVM) GetVMName(ccid ccintf.CCID, format func(string) (string, error)) (string, error) {
480481
name := ccid.GetName()
481482

482-
if ccid.NetworkID != "" && ccid.PeerID != "" {
483-
name = fmt.Sprintf("%s-%s-%s", ccid.NetworkID, ccid.PeerID, name)
484-
} else if ccid.NetworkID != "" {
485-
name = fmt.Sprintf("%s-%s", ccid.NetworkID, name)
486-
} else if ccid.PeerID != "" {
487-
name = fmt.Sprintf("%s-%s", ccid.PeerID, name)
483+
if vm.NetworkID != "" && vm.PeerID != "" {
484+
name = fmt.Sprintf("%s-%s-%s", vm.NetworkID, vm.PeerID, name)
485+
} else if vm.NetworkID != "" {
486+
name = fmt.Sprintf("%s-%s", vm.NetworkID, name)
487+
} else if vm.PeerID != "" {
488+
name = fmt.Sprintf("%s-%s", vm.PeerID, name)
488489
}
489490

490491
if format != nil {

core/container/dockercontroller/dockercontroller_test.go

+62-26
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,7 @@
11
/*
2-
Copyright IBM Corp. 2016 All Rights Reserved.
2+
Copyright IBM Corp. All Rights Reserved.
33
4-
Licensed under the Apache License, Version 2.0 (the "License");
5-
you may not use this file except in compliance with the License.
6-
You may obtain a copy of the License at
7-
8-
http://www.apache.org/licenses/LICENSE-2.0
9-
10-
Unless required by applicable law or agreed to in writing, software
11-
distributed under the License is distributed on an "AS IS" BASIS,
12-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-
See the License for the specific language governing permissions and
14-
limitations under the License.
4+
SPDX-License-Identifier: Apache-2.0
155
*/
166

177
package dockercontroller
@@ -46,7 +36,7 @@ import (
4636
func TestRealPath(t *testing.T) {
4737
coreutil.SetupTestConfig()
4838
ctxt := context.Background()
49-
dc := NewDockerVM()
39+
dc := NewDockerVM("", "")
5040
ccid := ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "simple"}}}
5141
reader := getCodeChainBytesInMem()
5242

@@ -249,27 +239,73 @@ func Test_Destroy(t *testing.T) {
249239

250240
type testCase struct {
251241
name string
242+
vm *DockerVM
252243
ccid ccintf.CCID
253244
formatFunc func(string) (string, error)
254245
expectedOutput string
255246
}
256247

257248
func TestGetVMName(t *testing.T) {
258-
dvm := DockerVM{}
259-
var tc []testCase
260-
261-
tc = append(tc,
262-
testCase{"mycc", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "mycc"}}, NetworkID: "dev", PeerID: "peer0", Version: "1.0"}, formatImageName, fmt.Sprintf("%s-%s", "dev-peer0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("dev-peer0-mycc-1.0"))))},
263-
testCase{"mycc-nonetworkid", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "mycc"}}, PeerID: "peer1", Version: "1.0"}, formatImageName, fmt.Sprintf("%s-%s", "peer1-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("peer1-mycc-1.0"))))},
264-
testCase{"myCC-UCids", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, NetworkID: "Dev", PeerID: "Peer0", Version: "1.0"}, formatImageName, fmt.Sprintf("%s-%s", "dev-peer0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("Dev-Peer0-myCC-1.0"))))},
265-
testCase{"myCC-idsWithSpecialChars", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, NetworkID: "Dev$dev", PeerID: "Peer*0", Version: "1.0"}, formatImageName, fmt.Sprintf("%s-%s", "dev-dev-peer-0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("Dev$dev-Peer*0-myCC-1.0"))))},
266-
testCase{"mycc-nopeerid", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "mycc"}}, NetworkID: "dev", Version: "1.0"}, formatImageName, fmt.Sprintf("%s-%s", "dev-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("dev-mycc-1.0"))))},
267-
testCase{"myCC-LCids", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, NetworkID: "dev", PeerID: "peer0", Version: "1.0"}, formatImageName, fmt.Sprintf("%s-%s", "dev-peer0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("dev-peer0-myCC-1.0"))))},
268-
testCase{"myCC-preserveCase", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, NetworkID: "Dev", PeerID: "Peer0", Version: "1.0"}, nil, fmt.Sprintf("%s", "Dev-Peer0-myCC-1.0")},
269-
testCase{"invalidCharsFormatFunction", ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, NetworkID: "Dev", PeerID: "Peer0", Version: "1.0"}, formatInvalidChars, fmt.Sprintf("%s", "inv-lid-character--")})
249+
tc := []testCase{
250+
{
251+
name: "mycc",
252+
vm: &DockerVM{NetworkID: "dev", PeerID: "peer0"},
253+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "mycc"}}, Version: "1.0"},
254+
formatFunc: formatImageName,
255+
expectedOutput: fmt.Sprintf("%s-%s", "dev-peer0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("dev-peer0-mycc-1.0")))),
256+
},
257+
{
258+
name: "mycc-nonetworkid",
259+
vm: &DockerVM{PeerID: "peer1"},
260+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "mycc"}}, Version: "1.0"},
261+
formatFunc: formatImageName,
262+
expectedOutput: fmt.Sprintf("%s-%s", "peer1-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("peer1-mycc-1.0")))),
263+
},
264+
{
265+
name: "myCC-UCids",
266+
vm: &DockerVM{NetworkID: "Dev", PeerID: "Peer0"},
267+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, Version: "1.0"},
268+
formatFunc: formatImageName,
269+
expectedOutput: fmt.Sprintf("%s-%s", "dev-peer0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("Dev-Peer0-myCC-1.0")))),
270+
},
271+
{
272+
name: "myCC-idsWithSpecialChars",
273+
vm: &DockerVM{NetworkID: "Dev$dev", PeerID: "Peer*0"},
274+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, Version: "1.0"},
275+
formatFunc: formatImageName,
276+
expectedOutput: fmt.Sprintf("%s-%s", "dev-dev-peer-0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("Dev$dev-Peer*0-myCC-1.0")))),
277+
},
278+
{
279+
name: "mycc-nopeerid",
280+
vm: &DockerVM{NetworkID: "dev"},
281+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "mycc"}}, Version: "1.0"},
282+
formatFunc: formatImageName,
283+
expectedOutput: fmt.Sprintf("%s-%s", "dev-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("dev-mycc-1.0")))),
284+
},
285+
{
286+
name: "myCC-LCids",
287+
vm: &DockerVM{NetworkID: "dev", PeerID: "peer0"},
288+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, Version: "1.0"},
289+
formatFunc: formatImageName,
290+
expectedOutput: fmt.Sprintf("%s-%s", "dev-peer0-mycc-1.0", hex.EncodeToString(util.ComputeSHA256([]byte("dev-peer0-myCC-1.0")))),
291+
},
292+
{
293+
name: "myCC-preserveCase",
294+
vm: &DockerVM{NetworkID: "Dev", PeerID: "Peer0"},
295+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, Version: "1.0"},
296+
formatFunc: nil,
297+
expectedOutput: fmt.Sprintf("%s", "Dev-Peer0-myCC-1.0")},
298+
{
299+
name: "invalidCharsFormatFunction",
300+
vm: &DockerVM{NetworkID: "Dev", PeerID: "Peer0"},
301+
ccid: ccintf.CCID{ChaincodeSpec: &pb.ChaincodeSpec{ChaincodeId: &pb.ChaincodeID{Name: "myCC"}}, Version: "1.0"},
302+
formatFunc: formatInvalidChars,
303+
expectedOutput: fmt.Sprintf("%s", "inv-lid-character--"),
304+
},
305+
}
270306

271307
for _, test := range tc {
272-
name, err := dvm.GetVMName(test.ccid, test.formatFunc)
308+
name, err := test.vm.GetVMName(test.ccid, test.formatFunc)
273309
assert.Nil(t, err, "Expected nil error")
274310
assert.Equal(t, test.expectedOutput, name, "Unexpected output for test case name: %s", test.name)
275311
}

peer/node/start.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,10 @@ func registerChaincodeSupport(grpcServer *comm.GRPCServer, ccEndpoint string, ca
600600
&ccprovider.CCInfoFSImpl{},
601601
aclmgmt.GetACLProvider(),
602602
container.NewVMController(map[string]container.VMProvider{
603-
dockercontroller.ContainerType: dockercontroller.NewProvider(),
603+
dockercontroller.ContainerType: dockercontroller.NewProvider(
604+
viper.GetString("peer.id"),
605+
viper.GetString("peer.networkId"),
606+
),
604607
inproccontroller.ContainerType: ipRegistry,
605608
}),
606609
sccp,

0 commit comments

Comments
 (0)