Skip to content

Commit c4fc6d0

Browse files
committed
feat: kine fully upgrade
Signed-off-by: yue9944882 <[email protected]>
1 parent 90c1cb3 commit c4fc6d0

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

pkg/builder/rest/rest.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,20 @@ func New(obj resource.Object) ResourceHandlerProvider {
3939
ObjectTyper: scheme,
4040
TableConvertor: rest.NewDefaultTableConvertor(gvr.GroupResource()),
4141
}
42-
return newStore(obj.New, obj.NewList, gvr, s, optsGetter, nil)
42+
return newStore(scheme, obj.New, obj.NewList, gvr, s, optsGetter, nil)
4343
}
4444
}
4545

4646
// NewWithStrategy returns a new etcd backed request handler using the provided Strategy.
4747
func NewWithStrategy(obj resource.Object, s Strategy) ResourceHandlerProvider {
4848
return func(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (rest.Storage, error) {
4949
gvr := obj.GetGroupVersionResource()
50-
return newStore(obj.New, obj.NewList, gvr, s, optsGetter, nil)
50+
return newStore(scheme, obj.New, obj.NewList, gvr, s, optsGetter, nil)
5151
}
5252
}
5353

5454
// StoreFn defines a function which modifies the Store before it is initialized.
55-
type StoreFn func(*genericregistry.Store, *generic.StoreOptions)
55+
type StoreFn func(*runtime.Scheme, *genericregistry.Store, *generic.StoreOptions)
5656

5757
// NewWithFn returns a new etcd backed request handler, applying the StoreFn to the Store.
5858
func NewWithFn(obj resource.Object, fn StoreFn) ResourceHandlerProvider {
@@ -63,13 +63,15 @@ func NewWithFn(obj resource.Object, fn StoreFn) ResourceHandlerProvider {
6363
ObjectTyper: scheme,
6464
TableConvertor: rest.NewDefaultTableConvertor(gvr.GroupResource()),
6565
}
66-
return newStore(obj.New, obj.NewList, gvr, s, optsGetter, fn)
66+
return newStore(scheme, obj.New, obj.NewList, gvr, s, optsGetter, fn)
6767
}
6868
}
6969

7070
// newStore returns a RESTStorage object that will work against API services.
7171
func newStore(
72-
single, list func() runtime.Object, gvr schema.GroupVersionResource,
72+
scheme *runtime.Scheme,
73+
single, list func() runtime.Object,
74+
gvr schema.GroupVersionResource,
7375
s Strategy, optsGetter generic.RESTOptionsGetter, fn StoreFn) (*genericregistry.Store, error) {
7476
store := &genericregistry.Store{
7577
NewFunc: single,
@@ -80,11 +82,12 @@ func newStore(
8082
CreateStrategy: s,
8183
UpdateStrategy: s,
8284
DeleteStrategy: s,
85+
StorageVersioner: gvr.GroupVersion(),
8386
}
8487

8588
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: GetAttrs}
8689
if fn != nil {
87-
fn(store, options)
90+
fn(scheme, store, options)
8891
}
8992
if err := store.CompleteWithOptions(options); err != nil {
9093
return nil, err

pkg/builder/rest/rest_subresource.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ func NewSubResourceWithStrategy(parent resource.Object, subResource resource.Sub
2929
fullResourceName := parent.GetGroupVersionResource().Resource + "/" + subResource.SubResourceName()
3030
gvr := parent.GetGroupVersionResource().GroupVersion().WithResource(fullResourceName)
3131
return newStore(
32+
scheme,
3233
parent.New,
3334
parent.NewList,
3435
gvr,

pkg/experimental/storage/mysql/kine.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ package mysql
44
import (
55
"context"
66
"fmt"
7+
"k8s.io/apimachinery/pkg/runtime"
8+
"k8s.io/apimachinery/pkg/runtime/serializer"
79
"time"
810

911
"github.com/k3s-io/kine/pkg/endpoint"
@@ -35,15 +37,19 @@ func NewMysqlStorageProvider(host string, port int32, username, password, databa
3537
port,
3638
database)
3739

38-
return func(s *genericregistry.Store, options *generic.StoreOptions) {
40+
return func(scheme *runtime.Scheme, s *genericregistry.Store, options *generic.StoreOptions) {
3941
options.RESTOptions = &kineProxiedRESTOptionsGetter{
40-
dsn: dsn,
42+
scheme: scheme,
43+
dsn: dsn,
44+
groupVersioner: s.StorageVersioner,
4145
}
4246
}
4347
}
4448

4549
type kineProxiedRESTOptionsGetter struct {
46-
dsn string
50+
scheme *runtime.Scheme
51+
dsn string
52+
groupVersioner runtime.GroupVersioner
4753
}
4854

4955
// GetRESTOptions implements RESTOptionsGetter interface.
@@ -54,18 +60,20 @@ func (g *kineProxiedRESTOptionsGetter) GetRESTOptions(resource schema.GroupResou
5460
if err != nil {
5561
return generic.RESTOptions{}, err
5662
}
63+
codec := serializer.NewCodecFactory(g.scheme).
64+
CodecForVersions(nil, nil, g.groupVersioner, g.groupVersioner)
5765
restOptions := generic.RESTOptions{
5866
ResourcePrefix: resource.String(),
5967
Decorator: genericregistry.StorageWithCacher(),
6068
EnableGarbageCollection: true,
6169
DeleteCollectionWorkers: 1,
6270
CountMetricPollPeriod: time.Minute,
6371
StorageObjectCountTracker: request.NewStorageObjectCountTracker(context.Background().Done()),
64-
6572
StorageConfig: &storagebackend.ConfigForResource{
6673
GroupResource: resource,
6774
Config: storagebackend.Config{
6875
Prefix: "/kine/",
76+
Codec: codec,
6977
Transport: storagebackend.TransportConfig{
7078
ServerList: etcdConfig.Endpoints,
7179
TrustedCAFile: etcdConfig.TLSConfig.CAFile,

0 commit comments

Comments
 (0)