Skip to content

Commit f4f99fe

Browse files
committed
Add grpcClientFactory to NewAuthorizerFromConfiguration
1 parent acfbdad commit f4f99fe

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

cmd/bb_storage/main.go

+18-13
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ func main() {
5757
configuration.ContentAddressableStorage,
5858
blobstore_configuration.NewCASBlobAccessCreator(
5959
grpcClientFactory,
60-
int(configuration.MaximumMessageSizeBytes)))
60+
int(configuration.MaximumMessageSizeBytes)),
61+
grpcClientFactory)
6162
if err != nil {
6263
return util.StatusWrap(err, "Failed to create Content Addressable Storage")
6364
}
@@ -76,7 +77,8 @@ func main() {
7677
blobstore_configuration.NewACBlobAccessCreator(
7778
contentAddressableStorageInfo,
7879
grpcClientFactory,
79-
int(configuration.MaximumMessageSizeBytes)))
80+
int(configuration.MaximumMessageSizeBytes)),
81+
grpcClientFactory)
8082
if err != nil {
8183
return util.StatusWrap(err, "Failed to create Action Cache")
8284
}
@@ -95,7 +97,8 @@ func main() {
9597
configuration.IndirectContentAddressableStorage,
9698
blobstore_configuration.NewICASBlobAccessCreator(
9799
grpcClientFactory,
98-
int(configuration.MaximumMessageSizeBytes)))
100+
int(configuration.MaximumMessageSizeBytes)),
101+
grpcClientFactory)
99102
if err != nil {
100103
return util.StatusWrap(err, "Failed to create Indirect Content Addressable Storage")
101104
}
@@ -110,7 +113,8 @@ func main() {
110113
configuration.InitialSizeClassCache,
111114
blobstore_configuration.NewISCCBlobAccessCreator(
112115
grpcClientFactory,
113-
int(configuration.MaximumMessageSizeBytes)))
116+
int(configuration.MaximumMessageSizeBytes)),
117+
grpcClientFactory)
114118
if err != nil {
115119
return util.StatusWrap(err, "Failed to create Initial Size Class Cache")
116120
}
@@ -125,7 +129,8 @@ func main() {
125129
configuration.FileSystemAccessCache,
126130
blobstore_configuration.NewFSACBlobAccessCreator(
127131
grpcClientFactory,
128-
int(configuration.MaximumMessageSizeBytes)))
132+
int(configuration.MaximumMessageSizeBytes)),
133+
grpcClientFactory)
129134
if err != nil {
130135
return util.StatusWrap(err, "Failed to create File System Access Cache")
131136
}
@@ -149,7 +154,7 @@ func main() {
149154
if err != nil {
150155
return err
151156
}
152-
executeAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.GetExecuteAuthorizer())
157+
executeAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.GetExecuteAuthorizer(), grpcClientFactory)
153158
if err != nil {
154159
return util.StatusWrap(err, "Failed to create execute authorizer")
155160
}
@@ -221,17 +226,17 @@ func main() {
221226
})
222227
}
223228

224-
func newNonScannableBlobAccess(dependenciesGroup program.Group, configuration *bb_storage.NonScannableBlobAccessConfiguration, creator blobstore_configuration.BlobAccessCreator) (blobstore_configuration.BlobAccessInfo, blobstore.BlobAccess, []auth.Authorizer, auth.Authorizer, error) {
229+
func newNonScannableBlobAccess(dependenciesGroup program.Group, configuration *bb_storage.NonScannableBlobAccessConfiguration, creator blobstore_configuration.BlobAccessCreator, grpcClientFactory bb_grpc.ClientFactory) (blobstore_configuration.BlobAccessInfo, blobstore.BlobAccess, []auth.Authorizer, auth.Authorizer, error) {
225230
info, err := blobstore_configuration.NewBlobAccessFromConfiguration(dependenciesGroup, configuration.Backend, creator)
226231
if err != nil {
227232
return blobstore_configuration.BlobAccessInfo{}, nil, nil, nil, err
228233
}
229234

230-
getAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.GetAuthorizer)
235+
getAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.GetAuthorizer, grpcClientFactory)
231236
if err != nil {
232237
return blobstore_configuration.BlobAccessInfo{}, nil, nil, nil, util.StatusWrap(err, "Failed to create Get() authorizer")
233238
}
234-
putAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.PutAuthorizer)
239+
putAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.PutAuthorizer, grpcClientFactory)
235240
if err != nil {
236241
return blobstore_configuration.BlobAccessInfo{}, nil, nil, nil, util.StatusWrap(err, "Failed to create Put() authorizer")
237242
}
@@ -243,21 +248,21 @@ func newNonScannableBlobAccess(dependenciesGroup program.Group, configuration *b
243248
nil
244249
}
245250

246-
func newScannableBlobAccess(dependenciesGroup program.Group, configuration *bb_storage.ScannableBlobAccessConfiguration, creator blobstore_configuration.BlobAccessCreator) (blobstore_configuration.BlobAccessInfo, blobstore.BlobAccess, []auth.Authorizer, error) {
251+
func newScannableBlobAccess(dependenciesGroup program.Group, configuration *bb_storage.ScannableBlobAccessConfiguration, creator blobstore_configuration.BlobAccessCreator, grpcClientFactory bb_grpc.ClientFactory) (blobstore_configuration.BlobAccessInfo, blobstore.BlobAccess, []auth.Authorizer, error) {
247252
info, err := blobstore_configuration.NewBlobAccessFromConfiguration(dependenciesGroup, configuration.Backend, creator)
248253
if err != nil {
249254
return blobstore_configuration.BlobAccessInfo{}, nil, nil, err
250255
}
251256

252-
getAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.GetAuthorizer)
257+
getAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.GetAuthorizer, grpcClientFactory)
253258
if err != nil {
254259
return blobstore_configuration.BlobAccessInfo{}, nil, nil, util.StatusWrap(err, "Failed to create Get() authorizer")
255260
}
256-
putAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.PutAuthorizer)
261+
putAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.PutAuthorizer, grpcClientFactory)
257262
if err != nil {
258263
return blobstore_configuration.BlobAccessInfo{}, nil, nil, util.StatusWrap(err, "Failed to create Put() authorizer")
259264
}
260-
findMissingAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.FindMissingAuthorizer)
265+
findMissingAuthorizer, err := auth_configuration.DefaultAuthorizerFactory.NewAuthorizerFromConfiguration(configuration.FindMissingAuthorizer, grpcClientFactory)
261266
if err != nil {
262267
return blobstore_configuration.BlobAccessInfo{}, nil, nil, util.StatusWrap(err, "Failed to create FindMissing() authorizer")
263268
}

pkg/auth/configuration/BUILD.bazel

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ go_library(
88
deps = [
99
"//pkg/auth",
1010
"//pkg/digest",
11+
"//pkg/grpc",
1112
"//pkg/proto/configuration/auth",
1213
"//pkg/util",
1314
"@com_github_jmespath_go_jmespath//:go-jmespath",

pkg/auth/configuration/authorizer_factory.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package configuration
33
import (
44
"github.com/buildbarn/bb-storage/pkg/auth"
55
"github.com/buildbarn/bb-storage/pkg/digest"
6+
"github.com/buildbarn/bb-storage/pkg/grpc"
67
pb "github.com/buildbarn/bb-storage/pkg/proto/configuration/auth"
78
"github.com/buildbarn/bb-storage/pkg/util"
89
"github.com/jmespath/go-jmespath"
@@ -17,7 +18,7 @@ import (
1718
type AuthorizerFactory interface {
1819
// NewAuthorizerFromConfiguration constructs an authorizer based on
1920
// options specified in a configuration message.
20-
NewAuthorizerFromConfiguration(configuration *pb.AuthorizerConfiguration) (auth.Authorizer, error)
21+
NewAuthorizerFromConfiguration(configuration *pb.AuthorizerConfiguration, grpcClientFactory grpc.ClientFactory) (auth.Authorizer, error)
2122
}
2223

2324
// DefaultAuthorizerFactory constructs deduplicated authorizers based on
@@ -30,7 +31,7 @@ type BaseAuthorizerFactory struct{}
3031

3132
// NewAuthorizerFromConfiguration constructs an authorizer based on
3233
// options specified in a configuration message.
33-
func (f BaseAuthorizerFactory) NewAuthorizerFromConfiguration(config *pb.AuthorizerConfiguration) (auth.Authorizer, error) {
34+
func (f BaseAuthorizerFactory) NewAuthorizerFromConfiguration(config *pb.AuthorizerConfiguration, grpcClientFactory grpc.ClientFactory) (auth.Authorizer, error) {
3435
if config == nil {
3536
return nil, status.Error(codes.InvalidArgument, "Authorizer configuration not specified")
3637
}
@@ -77,14 +78,14 @@ func NewDeduplicatingAuthorizerFactory(base AuthorizerFactory) AuthorizerFactory
7778
}
7879

7980
// NewAuthorizerFromConfiguration creates an Authorizer based on the passed configuration.
80-
func (af *deduplicatingAuthorizerFactory) NewAuthorizerFromConfiguration(config *pb.AuthorizerConfiguration) (auth.Authorizer, error) {
81+
func (af *deduplicatingAuthorizerFactory) NewAuthorizerFromConfiguration(config *pb.AuthorizerConfiguration, grpcClientFactory grpc.ClientFactory) (auth.Authorizer, error) {
8182
keyBytes, err := protojson.Marshal(config)
8283
key := string(keyBytes)
8384
if err != nil {
8485
return nil, err
8586
}
8687
if _, ok := af.known[key]; !ok {
87-
a, err := af.base.NewAuthorizerFromConfiguration(config)
88+
a, err := af.base.NewAuthorizerFromConfiguration(config, grpcClientFactory)
8889
if err != nil {
8990
return nil, err
9091
}

0 commit comments

Comments
 (0)