Skip to content

Commit

Permalink
add ut for cluster registry
Browse files Browse the repository at this point in the history
Signed-off-by: changzhen <[email protected]>
  • Loading branch information
XiShanYongYe-Chang committed Jan 28, 2023
1 parent c5afa2f commit e070ad7
Show file tree
Hide file tree
Showing 4 changed files with 368 additions and 38 deletions.
7 changes: 4 additions & 3 deletions cmd/aggregated-apiserver/app/options/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
netutils "k8s.io/utils/net"

"github.com/karmada-io/karmada/pkg/aggregatedapiserver"
clusterscheme "github.com/karmada-io/karmada/pkg/apis/cluster/scheme"
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
pkgfeatures "github.com/karmada-io/karmada/pkg/features"
clientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
Expand Down Expand Up @@ -54,7 +55,7 @@ func NewOptions() *Options {
o := &Options{
RecommendedOptions: genericoptions.NewRecommendedOptions(
defaultEtcdPathPrefix,
aggregatedapiserver.Codecs.LegacyCodec(clusterv1alpha1.SchemeGroupVersion)),
clusterscheme.Codecs.LegacyCodec(clusterv1alpha1.SchemeGroupVersion)),
}
o.RecommendedOptions.Etcd.StorageConfig.EncodeVersioner = runtime.NewMultiGroupVersioner(clusterv1alpha1.SchemeGroupVersion, schema.GroupKind{Group: clusterv1alpha1.GroupName})
return o
Expand Down Expand Up @@ -126,10 +127,10 @@ func (o *Options) Config() (*aggregatedapiserver.Config, error) {
}
o.RecommendedOptions.Features = &genericoptions.FeatureOptions{EnableProfiling: false}

serverConfig := genericapiserver.NewRecommendedConfig(aggregatedapiserver.Codecs)
serverConfig := genericapiserver.NewRecommendedConfig(clusterscheme.Codecs)
serverConfig.LongRunningFunc = customLongRunningRequestCheck(sets.NewString("watch", "proxy"),
sets.NewString("attach", "exec", "proxy", "log", "portforward"))
serverConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions, openapi.NewDefinitionNamer(aggregatedapiserver.Scheme))
serverConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions, openapi.NewDefinitionNamer(clusterscheme.Scheme))
serverConfig.OpenAPIConfig.Info.Title = "Karmada"
if err := o.RecommendedOptions.ApplyTo(serverConfig); err != nil {
return nil, err
Expand Down
38 changes: 3 additions & 35 deletions pkg/aggregatedapiserver/apiserver.go
Original file line number Diff line number Diff line change
@@ -1,49 +1,17 @@
package aggregatedapiserver

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/version"
"k8s.io/apiserver/pkg/registry/rest"
genericapiserver "k8s.io/apiserver/pkg/server"
"k8s.io/client-go/kubernetes"
"k8s.io/klog/v2"

clusterapis "github.com/karmada-io/karmada/pkg/apis/cluster"
clusterinstall "github.com/karmada-io/karmada/pkg/apis/cluster/install"
clusterscheme "github.com/karmada-io/karmada/pkg/apis/cluster/scheme"
clusterstorage "github.com/karmada-io/karmada/pkg/registry/cluster/storage"
)

var (
// Scheme defines methods for serializing and deserializing API objects.
Scheme = runtime.NewScheme()
// Codecs provides methods for retrieving codecs and serializers for specific
// versions and content types.
Codecs = serializer.NewCodecFactory(Scheme)
// ParameterCodec handles versioning of objects that are converted to query parameters.
ParameterCodec = runtime.NewParameterCodec(Scheme)
)

func init() {
clusterinstall.Install(Scheme)

// we need to add the options to empty v1
// TODO fix the server code to avoid this
metav1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})

// TODO: keep the generic API server from wanting this
unversioned := schema.GroupVersion{Group: "", Version: "v1"}
Scheme.AddUnversionedTypes(unversioned,
&metav1.Status{},
&metav1.APIVersions{},
&metav1.APIGroupList{},
&metav1.APIGroup{},
&metav1.APIResourceList{},
)
}

// ExtraConfig holds custom apiserver config
type ExtraConfig struct {
// Add custom config if necessary.
Expand Down Expand Up @@ -95,9 +63,9 @@ func (c completedConfig) New(kubeClient kubernetes.Interface) (*APIServer, error
GenericAPIServer: genericServer,
}

apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(clusterapis.GroupName, Scheme, ParameterCodec, Codecs)
apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(clusterapis.GroupName, clusterscheme.Scheme, clusterscheme.ParameterCodec, clusterscheme.Codecs)

clusterStorage, err := clusterstorage.NewStorage(Scheme, kubeClient, c.GenericConfig.RESTOptionsGetter)
clusterStorage, err := clusterstorage.NewStorage(clusterscheme.Scheme, kubeClient, c.GenericConfig.RESTOptionsGetter)
if err != nil {
klog.Errorf("Unable to create REST storage for a resource due to %v, will die", err)
return nil, err
Expand Down
38 changes: 38 additions & 0 deletions pkg/apis/cluster/scheme/regiser.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package scheme

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"

clusterinstall "github.com/karmada-io/karmada/pkg/apis/cluster/install"
)

var (
// Scheme defines methods for serializing and deserializing API objects.
Scheme = runtime.NewScheme()
// Codecs provides methods for retrieving codecs and serializers for specific
// versions and content types.
Codecs = serializer.NewCodecFactory(Scheme)
// ParameterCodec handles versioning of objects that are converted to query parameters.
ParameterCodec = runtime.NewParameterCodec(Scheme)
)

func init() {
clusterinstall.Install(Scheme)

// we need to add the options to empty v1
// TODO fix the server code to avoid this
metav1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})

// TODO: keep the generic API server from wanting this
unversioned := schema.GroupVersion{Group: "", Version: "v1"}
Scheme.AddUnversionedTypes(unversioned,
&metav1.Status{},
&metav1.APIVersions{},
&metav1.APIGroupList{},
&metav1.APIGroup{},
&metav1.APIResourceList{},
)
}
Loading

0 comments on commit e070ad7

Please sign in to comment.