Skip to content

Commit 62d8145

Browse files
author
Jason Yellick
committed
FAB-10834 GetMetadataProvider to accept code bytes
This CR completes the work of removing the chaincode spec and chaincode deployment spec from the platforms.Platform interface. There is some outstanding work remaining to remove it entirely from the package which will follow this CR. Change-Id: Ib7d56d88267b72eb5de95ad382c8d59c581d2d55 Signed-off-by: Jason Yellick <jyellick@us.ibm.com>
1 parent 39a1a8c commit 62d8145

File tree

9 files changed

+36
-54
lines changed

9 files changed

+36
-54
lines changed

core/chaincode/platforms/car/platform.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,6 @@ func (carPlatform *Platform) GenerateDockerBuild(path string, code []byte, tw *t
8787
}
8888

8989
//GetMetadataProvider fetches metadata provider given deployment spec
90-
func (carPlatform *Platform) GetMetadataProvider(cds *pb.ChaincodeDeploymentSpec) platforms.MetadataProvider {
90+
func (carPlatform *Platform) GetMetadataProvider(code []byte) platforms.MetadataProvider {
9191
return &MetadataProvider{}
9292
}

core/chaincode/platforms/ccmetadata/targzmetadataprovider.go

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,18 @@ const (
2222
ccPackageStatedbDir = "META-INF/statedb/"
2323
)
2424

25-
type CodePackage interface {
26-
Bytes() []byte
27-
}
28-
2925
//TargzMetadataProvider provides Metadata from chaincode packaged in Targz format
3026
//(go, java and node platforms)
3127
type TargzMetadataProvider struct {
32-
DepSpec CodePackage
28+
Code []byte
3329
}
3430

3531
func (tgzProv *TargzMetadataProvider) getCode() ([]byte, error) {
36-
if tgzProv.DepSpec == nil {
37-
return nil, errors.New("nil chaincode deployment spec")
38-
}
39-
40-
if tgzProv.DepSpec.Bytes() == nil {
32+
if tgzProv.Code == nil {
4133
return nil, errors.New("nil code package")
4234
}
4335

44-
return tgzProv.DepSpec.Bytes(), nil
36+
return tgzProv.Code, nil
4537
}
4638

4739
// GetMetadataAsTarEntries extracts metata data from ChaincodeDeploymentSpec

core/chaincode/platforms/ccmetadata/targzmetadataprovider_test.go

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,14 @@ import (
1515
"time"
1616

1717
"github.com/stretchr/testify/assert"
18-
19-
pb "github.com/hyperledger/fabric/protos/peer"
2018
)
2119

2220
type tarEntry struct {
2321
name string
2422
content []byte
2523
}
2624

27-
func getCDS(ccname, path string, code []byte, entries []tarEntry) *pb.ChaincodeDeploymentSpec {
25+
func getCodePackage(code []byte, entries []tarEntry) []byte {
2826
codePackage := bytes.NewBuffer(nil)
2927
gw := gzip.NewWriter(codePackage)
3028
tw := tar.NewWriter(gw)
@@ -35,23 +33,13 @@ func getCDS(ccname, path string, code []byte, entries []tarEntry) *pb.ChaincodeD
3533
tw.Write(e.content)
3634
}
3735

38-
tw.WriteHeader(&tar.Header{Name: path, Size: int64(len(code)), ModTime: zeroTime, AccessTime: zeroTime, ChangeTime: zeroTime})
36+
tw.WriteHeader(&tar.Header{Name: "fake-path", Size: int64(len(code)), ModTime: zeroTime, AccessTime: zeroTime, ChangeTime: zeroTime})
3937
tw.Write(code)
4038

4139
tw.Close()
4240
gw.Close()
4341

44-
cds := &pb.ChaincodeDeploymentSpec{
45-
ChaincodeSpec: &pb.ChaincodeSpec{
46-
ChaincodeId: &pb.ChaincodeID{
47-
Name: ccname,
48-
Path: path,
49-
},
50-
},
51-
CodePackage: codePackage.Bytes(),
52-
}
53-
54-
return cds
42+
return codePackage.Bytes()
5543
}
5644

5745
func getNumEntries(tarbytes []byte) (int, error) {
@@ -82,17 +70,12 @@ func TestBadDepSpec(t *testing.T) {
8270
tp := TargzMetadataProvider{}
8371
_, err := tp.GetMetadataAsTarEntries()
8472
assert.NotNil(t, err)
85-
assert.Equal(t, err.Error(), "nil chaincode deployment spec")
86-
87-
tp.DepSpec = &pb.ChaincodeDeploymentSpec{}
88-
_, err = tp.GetMetadataAsTarEntries()
89-
assert.NotNil(t, err)
9073
assert.Equal(t, err.Error(), "nil code package")
9174
}
9275

9376
func TestNoMetadata(t *testing.T) {
9477
entries := []tarEntry{{"path/to/a/file", []byte("somdata")}}
95-
cds := getCDS("mycc", "/path/to/my/cc", []byte("cc code"), entries)
78+
cds := getCodePackage([]byte("cc code"), entries)
9679
tp := TargzMetadataProvider{cds}
9780
metadata, err := tp.GetMetadataAsTarEntries()
9881
assert.Nil(t, err)
@@ -104,7 +87,7 @@ func TestNoMetadata(t *testing.T) {
10487

10588
func TestMetadata(t *testing.T) {
10689
entries := []tarEntry{{"path/to/a/file", []byte("somdata")}, {ccPackageStatedbDir + "/m1", []byte("m1data")}, {ccPackageStatedbDir + "/m2", []byte("m2data")}}
107-
cds := getCDS("mycc", "/path/to/my/cc", []byte("cc code"), entries)
90+
cds := getCodePackage([]byte("cc code"), entries)
10891
tp := TargzMetadataProvider{cds}
10992
metadata, err := tp.GetMetadataAsTarEntries()
11093
assert.Nil(t, err)

core/chaincode/platforms/golang/platform.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,6 @@ func (goPlatform *Platform) GenerateDockerBuild(path string, code []byte, tw *ta
530530
}
531531

532532
//GetMetadataProvider fetches metadata provider given deployment spec
533-
func (goPlatform *Platform) GetMetadataProvider(cds *pb.ChaincodeDeploymentSpec) platforms.MetadataProvider {
534-
return &ccmetadata.TargzMetadataProvider{cds}
533+
func (goPlatform *Platform) GetMetadataProvider(code []byte) platforms.MetadataProvider {
534+
return &ccmetadata.TargzMetadataProvider{Code: code}
535535
}

core/chaincode/platforms/java/platform.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,6 @@ func (javaPlatform *Platform) GenerateDockerBuild(path string, code []byte, tw *
8383
}
8484

8585
//GetMetadataProvider fetches metadata provider given deployment spec
86-
func (javaPlatform *Platform) GetMetadataProvider(cds *pb.ChaincodeDeploymentSpec) platforms.MetadataProvider {
87-
return &ccmetadata.TargzMetadataProvider{cds}
86+
func (javaPlatform *Platform) GetMetadataProvider(code []byte) platforms.MetadataProvider {
87+
return &ccmetadata.TargzMetadataProvider{Code: code}
8888
}

core/chaincode/platforms/mock/platform.go

Lines changed: 14 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/chaincode/platforms/node/platform.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,6 @@ func (nodePlatform *Platform) GenerateDockerBuild(path string, code []byte, tw *
203203
}
204204

205205
//GetMetadataProvider fetches metadata provider given deployment spec
206-
func (nodePlatform *Platform) GetMetadataProvider(cds *pb.ChaincodeDeploymentSpec) platforms.MetadataProvider {
207-
return &ccmetadata.TargzMetadataProvider{cds}
206+
func (nodePlatform *Platform) GetMetadataProvider(code []byte) platforms.MetadataProvider {
207+
return &ccmetadata.TargzMetadataProvider{Code: code}
208208
}

core/chaincode/platforms/platforms.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ type Platform interface {
3838
GetDeploymentPayload(path string) ([]byte, error)
3939
GenerateDockerfile() (string, error)
4040
GenerateDockerBuild(path string, code []byte, tw *tar.Writer) error
41-
GetMetadataProvider(spec *pb.ChaincodeDeploymentSpec) MetadataProvider
41+
GetMetadataProvider(code []byte) MetadataProvider
4242
}
4343

4444
type PackageWriter interface {
@@ -93,7 +93,7 @@ func (r *Registry) GetMetadataProvider(spec *pb.ChaincodeDeploymentSpec) (Metada
9393
if !ok {
9494
return nil, fmt.Errorf("Unknown chaincodeType: %s", spec.ChaincodeSpec.Type)
9595
}
96-
return platform.GetMetadataProvider(spec), nil
96+
return platform.GetMetadataProvider(spec.Bytes()), nil
9797
}
9898

9999
func (r *Registry) GetDeploymentPayload(spec *pb.ChaincodeSpec) ([]byte, error) {

core/chaincode/platforms/platforms_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,15 @@ var _ = Describe("Platforms", func() {
8282

8383
Describe("GetMetadataProvider", func() {
8484
It("returns the result of the underlying platform", func() {
85-
spec := &pb.ChaincodeDeploymentSpec{ChaincodeSpec: &pb.ChaincodeSpec{Type: pb.ChaincodeSpec_GOLANG}}
85+
spec := &pb.ChaincodeDeploymentSpec{
86+
ChaincodeSpec: &pb.ChaincodeSpec{Type: pb.ChaincodeSpec_GOLANG},
87+
CodePackage: []byte("code-package"),
88+
}
8689
md, err := registry.GetMetadataProvider(spec)
8790
Expect(md).To(BeNil())
8891
Expect(err).NotTo(HaveOccurred())
8992
Expect(fakePlatform.GetMetadataProviderCallCount()).To(Equal(1))
90-
Expect(fakePlatform.GetMetadataProviderArgsForCall(0)).To(Equal(spec))
93+
Expect(fakePlatform.GetMetadataProviderArgsForCall(0)).To(Equal([]byte("code-package")))
9194
})
9295

9396
Context("when the platform is unknown", func() {

0 commit comments

Comments
 (0)