Skip to content

Commit 4696e07

Browse files
add NopLicenseManager (#8945)
* add NopLicenseManager * add NopLicenseManager * not impl * license instance * review fixes * review fixes * review fixes * review fixes * review fixes * review fixes * review fixes * review fixes * review fixes * review fixes * review fixes * review fixes
1 parent 5472298 commit 4696e07

File tree

9 files changed

+71
-6
lines changed

9 files changed

+71
-6
lines changed

cmd/lakefs/cmd/run.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
authfactory "github.com/treeverse/lakefs/modules/auth/factory"
2222
authenticationfactory "github.com/treeverse/lakefs/modules/authentication/factory"
2323
blockfactory "github.com/treeverse/lakefs/modules/block/factory"
24+
licensefactory "github.com/treeverse/lakefs/modules/license/factory"
2425
"github.com/treeverse/lakefs/pkg/actions"
2526
"github.com/treeverse/lakefs/pkg/api"
2627
"github.com/treeverse/lakefs/pkg/auth"
@@ -97,6 +98,15 @@ var runCmd = &cobra.Command{
9798
logger.WithError(err).Fatal("Failure on schema validation")
9899
}
99100

101+
licenseManager, err := licensefactory.NewLicenseManager(cfg)
102+
if err != nil {
103+
logger.WithError(err).Fatal("Failed to create license manager")
104+
}
105+
err = licenseManager.ValidateLicense()
106+
if err != nil {
107+
logger.WithError(err).Fatal("License validation failed")
108+
}
109+
100110
migrator := kv.NewDatabaseMigrator(kvParams)
101111
multipartTracker := multipart.NewTracker(kvStore)
102112
actionsStore := actions.NewActionsKVStore(kvStore)
@@ -230,6 +240,7 @@ var runCmd = &cobra.Command{
230240
baseCfg.UISnippets(),
231241
upload.DefaultPathProvider,
232242
usageReporter,
243+
licenseManager,
233244
)
234245

235246
// init gateway server

go.work

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ use (
66
./modules/authentication/factory
77
./modules/block/factory
88
./modules/config/factory
9+
./modules/license/factory
910
./webui
1011
)

modules/license/factory/build.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package factory
2+
3+
import (
4+
"github.com/treeverse/lakefs/pkg/config"
5+
"github.com/treeverse/lakefs/pkg/license"
6+
)
7+
8+
func NewLicenseManager(_ config.Config) (license.Manager, error) {
9+
return &license.NopLicenseManager{}, nil
10+
}

modules/license/factory/go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/treeverse/lakefs/modules/license/factory
2+
3+
go 1.23.0

pkg/api/controller.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
"github.com/treeverse/lakefs/pkg/graveler"
4040
"github.com/treeverse/lakefs/pkg/httputil"
4141
"github.com/treeverse/lakefs/pkg/kv"
42+
"github.com/treeverse/lakefs/pkg/license"
4243
"github.com/treeverse/lakefs/pkg/logging"
4344
"github.com/treeverse/lakefs/pkg/permissions"
4445
"github.com/treeverse/lakefs/pkg/samplerepo"
@@ -107,11 +108,12 @@ type Controller struct {
107108
sessionStore sessions.Store
108109
PathProvider upload.PathProvider
109110
usageReporter stats.UsageReporterOperations
111+
licenseManager license.Manager
110112
}
111113

112114
var usageCounter = stats.NewUsageCounter()
113115

114-
func NewController(cfg config.Config, catalog *catalog.Catalog, authenticator auth.Authenticator, authService auth.Service, authenticationService authentication.Service, blockAdapter block.Adapter, metadataManager auth.MetadataManager, migrator Migrator, collector stats.Collector, actions actionsHandler, auditChecker AuditChecker, logger logging.Logger, sessionStore sessions.Store, pathProvider upload.PathProvider, usageReporter stats.UsageReporterOperations) *Controller {
116+
func NewController(cfg config.Config, catalog *catalog.Catalog, authenticator auth.Authenticator, authService auth.Service, authenticationService authentication.Service, blockAdapter block.Adapter, metadataManager auth.MetadataManager, migrator Migrator, collector stats.Collector, actions actionsHandler, auditChecker AuditChecker, logger logging.Logger, sessionStore sessions.Store, pathProvider upload.PathProvider, usageReporter stats.UsageReporterOperations, licenseManager license.Manager) *Controller {
115117
return &Controller{
116118
Config: cfg,
117119
Catalog: catalog,
@@ -128,6 +130,7 @@ func NewController(cfg config.Config, catalog *catalog.Catalog, authenticator au
128130
sessionStore: sessionStore,
129131
PathProvider: pathProvider,
130132
usageReporter: usageReporter,
133+
licenseManager: licenseManager,
131134
}
132135
}
133136

pkg/api/serve.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/treeverse/lakefs/pkg/catalog"
2222
"github.com/treeverse/lakefs/pkg/config"
2323
"github.com/treeverse/lakefs/pkg/httputil"
24+
"github.com/treeverse/lakefs/pkg/license"
2425
"github.com/treeverse/lakefs/pkg/logging"
2526
"github.com/treeverse/lakefs/pkg/stats"
2627
"github.com/treeverse/lakefs/pkg/upload"
@@ -32,7 +33,7 @@ const (
3233
extensionValidationExcludeBody = "x-validation-exclude-body"
3334
)
3435

35-
func Serve(cfg config.Config, catalog *catalog.Catalog, authenticator auth.Authenticator, authService auth.Service, authenticationService authentication.Service, blockAdapter block.Adapter, metadataManager auth.MetadataManager, migrator Migrator, collector stats.Collector, actions actionsHandler, auditChecker AuditChecker, logger logging.Logger, gatewayDomains []string, snippets []params.CodeSnippet, pathProvider upload.PathProvider, usageReporter stats.UsageReporterOperations) http.Handler {
36+
func Serve(cfg config.Config, catalog *catalog.Catalog, authenticator auth.Authenticator, authService auth.Service, authenticationService authentication.Service, blockAdapter block.Adapter, metadataManager auth.MetadataManager, migrator Migrator, collector stats.Collector, actions actionsHandler, auditChecker AuditChecker, logger logging.Logger, gatewayDomains []string, snippets []params.CodeSnippet, pathProvider upload.PathProvider, usageReporter stats.UsageReporterOperations, licenseManager license.Manager) http.Handler {
3637
logger.Info("initialize OpenAPI server")
3738
swagger, err := apigen.GetSwagger()
3839
if err != nil {
@@ -55,7 +56,7 @@ func Serve(cfg config.Config, catalog *catalog.Catalog, authenticator auth.Authe
5556
AuthMiddleware(logger, swagger, authenticator, authService, sessionStore, &oidcConfig, &cookieAuthConfig),
5657
MetricsMiddleware(swagger),
5758
)
58-
controller := NewController(cfg, catalog, authenticator, authService, authenticationService, blockAdapter, metadataManager, migrator, collector, actions, auditChecker, logger, sessionStore, pathProvider, usageReporter)
59+
controller := NewController(cfg, catalog, authenticator, authService, authenticationService, blockAdapter, metadataManager, migrator, collector, actions, auditChecker, logger, sessionStore, pathProvider, usageReporter, licenseManager)
5960
apigen.HandlerFromMuxWithBaseURL(controller, apiRouter, apiutil.BaseURL)
6061

6162
r.Mount("/_health", httputil.ServeHealth())

pkg/api/serve_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/deepmap/oapi-codegen/pkg/securityprovider"
1515
"github.com/spf13/viper"
1616
configfactory "github.com/treeverse/lakefs/modules/config/factory"
17+
licensefactory "github.com/treeverse/lakefs/modules/license/factory"
1718
"github.com/treeverse/lakefs/pkg/actions"
1819
"github.com/treeverse/lakefs/pkg/api"
1920
"github.com/treeverse/lakefs/pkg/api/apigen"
@@ -162,7 +163,8 @@ func setupHandler(t testing.TB) (http.Handler, *dependencies) {
162163
auditChecker := version.NewDefaultAuditChecker(baseCfg.Security.AuditCheckURL, "", nil)
163164

164165
authenticationService := authentication.NewDummyService()
165-
handler := api.Serve(cfg, c, authenticator, authService, authenticationService, c.BlockAdapter, meta, migrator, collector, actionsService, auditChecker, logging.ContextUnavailable(), nil, nil, upload.DefaultPathProvider, stats.DefaultUsageReporter)
166+
licenseManager, _ := licensefactory.NewLicenseManager(cfg)
167+
handler := api.Serve(cfg, c, authenticator, authService, authenticationService, c.BlockAdapter, meta, migrator, collector, actionsService, auditChecker, logging.ContextUnavailable(), nil, nil, upload.DefaultPathProvider, stats.DefaultUsageReporter, licenseManager)
166168

167169
// reset cloud metadata - faster setup, the cloud metadata maintain its own tests
168170
cloud.Reset()

pkg/license/license.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
Package license contains enterprise licensing functionality. For OSS version this is a minimal implementation
3+
*/
4+
package license
5+
6+
import (
7+
"errors"
8+
)
9+
10+
type Manager interface {
11+
ValidateLicense() error
12+
GetToken() (string, error)
13+
InstallationID() string
14+
}
15+
16+
var errNotImplemented = errors.New("not implemented")
17+
18+
// NopLicenseManager is a No-Operation implementation of license manager i.e. does not actually check license restrictions
19+
type NopLicenseManager struct {
20+
}
21+
22+
func (n *NopLicenseManager) ValidateLicense() error {
23+
return nil
24+
}
25+
26+
func (n *NopLicenseManager) GetToken() (string, error) {
27+
return "", errNotImplemented
28+
}
29+
30+
func (n *NopLicenseManager) InstallationID() string {
31+
return ""
32+
}

pkg/loadtest/local_load_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ package loadtest
22

33
import (
44
"context"
5-
configfactory "github.com/treeverse/lakefs/modules/config/factory"
65
"math"
76
"net/http/httptest"
87
"os"
98
"testing"
109
"time"
1110

1211
"github.com/spf13/viper"
12+
configfactory "github.com/treeverse/lakefs/modules/config/factory"
13+
licensefactory "github.com/treeverse/lakefs/modules/license/factory"
1314
"github.com/treeverse/lakefs/pkg/actions"
1415
"github.com/treeverse/lakefs/pkg/api"
1516
"github.com/treeverse/lakefs/pkg/auth"
@@ -87,7 +88,8 @@ func TestLocalLoad(t *testing.T) {
8788
})
8889
auditChecker := version.NewDefaultAuditChecker(baseCfg.Security.AuditCheckURL, "", nil)
8990
authenticationService := authentication.NewDummyService()
90-
handler := api.Serve(cfg, c, authenticator, authService, authenticationService, blockAdapter, meta, migrator, &stats.NullCollector{}, actionsService, auditChecker, logging.ContextUnavailable(), nil, nil, upload.DefaultPathProvider, stats.DefaultUsageReporter)
91+
licenseManager, _ := licensefactory.NewLicenseManager(cfg)
92+
handler := api.Serve(cfg, c, authenticator, authService, authenticationService, blockAdapter, meta, migrator, &stats.NullCollector{}, actionsService, auditChecker, logging.ContextUnavailable(), nil, nil, upload.DefaultPathProvider, stats.DefaultUsageReporter, licenseManager)
9193

9294
ts := httptest.NewServer(handler)
9395
defer ts.Close()

0 commit comments

Comments
 (0)