Skip to content

Commit 67820e0

Browse files
unite multiple bind between ephemaral IDs and long-term IDs
Signed-off-by: [email protected] <[email protected]>
1 parent 892f844 commit 67820e0

File tree

19 files changed

+625
-427
lines changed

19 files changed

+625
-427
lines changed

docs/platform/view/db-driver.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ However, they all share one common interface such as the following:
4040
type BindingStore interface {
4141
GetLongTerm(ephemeral view.Identity) (view.Identity, error)
4242
HaveSameBinding(this, that view.Identity) (bool, error)
43-
PutBinding(ephemeral, longTerm view.Identity) error
43+
PutBindings(longTerm view.Identity, ephemeral ...view.Identity) error
4444
}
4545

4646
type AuditInfoStore interface {

platform/common/driver/kvs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type AuditInfoStore interface {
3030
type BindingStore interface {
3131
GetLongTerm(ctx context.Context, ephemeral view.Identity) (view.Identity, error)
3232
HaveSameBinding(ctx context.Context, this, that view.Identity) (bool, error)
33-
PutBinding(ctx context.Context, ephemeral, longTerm view.Identity) error
33+
PutBindings(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
3434
}
3535

3636
type MetadataStore[K any, M any] interface {

platform/fabric/core/generic/endpoint/resolver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (r *Resolver) GetIdentity() (view.Identity, error) {
3737
}
3838

3939
type Service interface {
40-
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
40+
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
4141
AddResolver(name string, domain string, addresses map[string]string, aliases []string, id []byte) (view.Identity, error)
4242
AddPublicKeyExtractor(extractor endpoint.PublicKeyExtractor) error
4343
}

platform/fabric/core/generic/msp/driver/driver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type SignerService interface {
3737
}
3838

3939
type BinderService interface {
40-
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
40+
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
4141
GetIdentity(label string, pkiID []byte) (view.Identity, error)
4242
}
4343

platform/fabric/sdk/dig/sdk_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright IBM Corp All Rights Reserved.
2+
Copyright IBM Corp. All Rights Reserved.
33
44
SPDX-License-Identifier: Apache-2.0
55
*/

platform/view/sdk/dig/support/endpoint/resolver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ type IdentityService interface {
5555
}
5656

5757
type Backend interface {
58-
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
58+
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
5959
AddResolver(name string, domain string, addresses map[string]string, aliases []string, id []byte) (view.Identity, error)
6060
}
6161

platform/view/services/endpoint/mock/binding_store.go

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

platform/view/services/endpoint/service.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,18 +146,20 @@ func (r *Service) GetResolver(ctx context.Context, id view.Identity) (*Resolver,
146146
return r.resolver(ctx, id)
147147
}
148148

149-
func (r *Service) Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error {
150-
if longTerm.Equal(ephemeral) {
151-
logger.DebugfContext(ctx, "cannot bind [%s] to [%s], they are the same", longTerm, ephemeral)
149+
func (r *Service) Bind(ctx context.Context, longTerm view.Identity, ephemeralIDs ...view.Identity) error {
150+
// filter out any identities equal to the longTerm identity
151+
var toBind []view.Identity
152+
for _, id := range ephemeralIDs {
153+
if !longTerm.Equal(id) {
154+
toBind = append(toBind, id)
155+
}
156+
}
157+
if len(toBind) == 0 {
152158
return nil
153159
}
154-
155-
logger.DebugfContext(ctx, "bind [%s] to [%s]", ephemeral, longTerm)
156-
157-
if err := r.bindingKVS.PutBinding(ctx, ephemeral, longTerm); err != nil {
158-
return errors.WithMessagef(err, "failed storing binding of [%s] to [%s]", ephemeral.UniqueID(), longTerm.UniqueID())
160+
if err := r.bindingKVS.PutBindings(ctx, longTerm, toBind...); err != nil {
161+
return errors.WithMessagef(err, "failed storing bindings")
159162
}
160-
161163
return nil
162164
}
163165

platform/view/services/endpoint/service_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ func (k mockKVS) GetLongTerm(ctx context.Context, ephemeral view.Identity) (view
2626
func (k mockKVS) HaveSameBinding(ctx context.Context, this, that view.Identity) (bool, error) {
2727
return false, nil
2828
}
29-
func (k mockKVS) PutBinding(ctx context.Context, ephemeral, longTerm view.Identity) error { return nil }
29+
func (k mockKVS) PutBindings(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error {
30+
return nil
31+
}
3032

3133
type mockExtractor struct{}
3234

@@ -58,7 +60,7 @@ func TestPKIResolveConcurrency(t *testing.T) {
5860
func TestGetIdentity(t *testing.T) {
5961
// setup
6062
bindingStore := &mock.BindingStore{}
61-
bindingStore.PutBindingReturns(nil)
63+
bindingStore.PutBindingsReturns(nil)
6264

6365
service, err := endpoint.NewService(bindingStore)
6466
require.NoError(t, err)
@@ -73,7 +75,7 @@ func TestGetIdentity(t *testing.T) {
7375
require.NoError(t, err)
7476
resolvers := service.Resolvers()
7577
assert.Len(t, resolvers, 1)
76-
assert.Equal(t, 0, bindingStore.PutBindingCallCount())
78+
assert.Equal(t, 0, bindingStore.PutBindingsCallCount())
7779

7880
_, err = service.AddResolver(
7981
"alice",
@@ -85,7 +87,7 @@ func TestGetIdentity(t *testing.T) {
8587
require.NoError(t, err)
8688
resolvers = service.Resolvers()
8789
assert.Len(t, resolvers, 1)
88-
assert.Equal(t, 1, bindingStore.PutBindingCallCount())
90+
assert.Equal(t, 1, bindingStore.PutBindingsCallCount())
8991

9092
err = service.AddPublicKeyExtractor(ext)
9193
require.NoError(t, err)

platform/view/services/id/mock/config_provider.go

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

0 commit comments

Comments
 (0)