unistore: replace CDK backend with KV store backend (again) (#113184)
* Reapply "unistore: replace CDK backend with KV store backend"" (#113132)
This reverts commit 7127b2538c.
* enable cluster scope
This commit is contained in:
@@ -3,13 +3,11 @@
|
||||
package apistore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"gocloud.dev/blob/fileblob"
|
||||
"gocloud.dev/blob/memblob"
|
||||
badger "github.com/dgraph-io/badger/v4"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apiserver/pkg/registry/generic"
|
||||
@@ -53,18 +51,30 @@ func NewRESTOptionsGetterForClient(
|
||||
}
|
||||
|
||||
func NewRESTOptionsGetterMemory(originalStorageConfig storagebackend.Config, secrets secret.InlineSecureValueSupport) (*RESTOptionsGetter, error) {
|
||||
backend, err := resource.NewCDKBackend(context.Background(), resource.CDKBackendOptions{
|
||||
Bucket: memblob.OpenBucket(&memblob.Options{}),
|
||||
// Create BadgerDB with in-memory mode
|
||||
db, err := badger.Open(badger.DefaultOptions("").
|
||||
WithInMemory(true).
|
||||
WithLogger(nil))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
kv := resource.NewBadgerKV(db)
|
||||
backend, err := resource.NewKVStorageBackend(resource.KVBackendOptions{
|
||||
KvStore: kv,
|
||||
WithExperimentalClusterScope: true,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
server, err := resource.NewResourceServer(resource.ResourceServerOptions{
|
||||
Backend: backend,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return NewRESTOptionsGetterForClient(
|
||||
resource.NewLocalResourceClient(server),
|
||||
secrets,
|
||||
@@ -83,25 +93,27 @@ func NewRESTOptionsGetterForFileXX(path string,
|
||||
path = filepath.Join(os.TempDir(), "grafana-apiserver")
|
||||
}
|
||||
|
||||
bucket, err := fileblob.OpenBucket(filepath.Join(path, "resource"), &fileblob.Options{
|
||||
CreateDir: true,
|
||||
Metadata: fileblob.MetadataDontWrite, // skip
|
||||
})
|
||||
db, err := badger.Open(badger.DefaultOptions(filepath.Join(path, "badger")).
|
||||
WithLogger(nil))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
backend, err := resource.NewCDKBackend(context.Background(), resource.CDKBackendOptions{
|
||||
Bucket: bucket,
|
||||
|
||||
kv := resource.NewBadgerKV(db)
|
||||
backend, err := resource.NewKVStorageBackend(resource.KVBackendOptions{
|
||||
KvStore: kv,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
server, err := resource.NewResourceServer(resource.ResourceServerOptions{
|
||||
Backend: backend,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return NewRESTOptionsGetterForClient(
|
||||
resource.NewLocalResourceClient(server),
|
||||
nil, // secrets
|
||||
|
||||
@@ -8,15 +8,13 @@ package apistore_test
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
badger "github.com/dgraph-io/badger/v4"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gocloud.dev/blob/fileblob"
|
||||
"gocloud.dev/blob/memblob"
|
||||
"k8s.io/apimachinery/pkg/api/apitesting"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
@@ -105,24 +103,20 @@ func testSetup(t testing.TB, opts ...setupOption) (context.Context, storage.Inte
|
||||
Resource: "pods",
|
||||
}
|
||||
|
||||
bucket := memblob.OpenBucket(nil)
|
||||
if true {
|
||||
tmp, err := os.MkdirTemp("", "xxx-*")
|
||||
require.NoError(t, err)
|
||||
|
||||
bucket, err = fileblob.OpenBucket(tmp, &fileblob.Options{
|
||||
CreateDir: true,
|
||||
Metadata: fileblob.MetadataDontWrite, // skip
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
ctx := storagetesting.NewContext()
|
||||
|
||||
var server resource.ResourceServer
|
||||
switch setupOpts.storageType {
|
||||
case StorageTypeFile:
|
||||
backend, err := resource.NewCDKBackend(ctx, resource.CDKBackendOptions{
|
||||
Bucket: bucket,
|
||||
// Create in-memory BadgerDB for testing
|
||||
db, err := badger.Open(badger.DefaultOptions("").
|
||||
WithInMemory(true).
|
||||
WithLogger(nil))
|
||||
require.NoError(t, err)
|
||||
|
||||
kv := resource.NewBadgerKV(db)
|
||||
backend, err := resource.NewKVStorageBackend(resource.KVBackendOptions{
|
||||
KvStore: kv,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user