mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
remove unused gc code
This commit is contained in:
parent
b87105aebd
commit
4be6328126
@ -103,7 +103,6 @@ pkg/controller/deployment/util
|
|||||||
pkg/controller/disruption
|
pkg/controller/disruption
|
||||||
pkg/controller/endpoint
|
pkg/controller/endpoint
|
||||||
pkg/controller/garbagecollector
|
pkg/controller/garbagecollector
|
||||||
pkg/controller/garbagecollector/metaonly
|
|
||||||
pkg/controller/job
|
pkg/controller/job
|
||||||
pkg/controller/namespace
|
pkg/controller/namespace
|
||||||
pkg/controller/namespace/deletion
|
pkg/controller/namespace/deletion
|
||||||
|
@ -3,38 +3,18 @@ package(default_visibility = ["//visibility:public"])
|
|||||||
load(
|
load(
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
"@io_bazel_rules_go//go:def.bzl",
|
||||||
"go_library",
|
"go_library",
|
||||||
"go_test",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"metaonly.go",
|
|
||||||
"types.go",
|
"types.go",
|
||||||
"zz_generated.deepcopy.go",
|
"zz_generated.deepcopy.go",
|
||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly",
|
importpath = "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_test",
|
|
||||||
srcs = ["metaonly_test.go"],
|
|
||||||
embed = [":go_default_library"],
|
|
||||||
deps = [
|
|
||||||
"//pkg/apis/core/install:go_default_library",
|
|
||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2016 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package metaonly
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
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/kubernetes/pkg/api/legacyscheme"
|
|
||||||
)
|
|
||||||
|
|
||||||
type metaOnlyJSONScheme struct{}
|
|
||||||
|
|
||||||
// This function can be extended to mapping different gvk to different MetadataOnlyObject,
|
|
||||||
// which embedded with different version of ObjectMeta. Currently the system
|
|
||||||
// only supports metav1.ObjectMeta.
|
|
||||||
func gvkToMetadataOnlyObject(gvk schema.GroupVersionKind) runtime.Object {
|
|
||||||
if strings.HasSuffix(gvk.Kind, "List") {
|
|
||||||
return &MetadataOnlyObjectList{}
|
|
||||||
} else {
|
|
||||||
return &MetadataOnlyObject{}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMetadataCodecFactory() serializer.CodecFactory {
|
|
||||||
// populating another scheme from legacyscheme.Scheme, registering every kind with
|
|
||||||
// MetadataOnlyObject (or MetadataOnlyObjectList).
|
|
||||||
scheme := runtime.NewScheme()
|
|
||||||
allTypes := legacyscheme.Scheme.AllKnownTypes()
|
|
||||||
for kind := range allTypes {
|
|
||||||
if kind.Version == runtime.APIVersionInternal {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if kind == metav1.Unversioned.WithKind("Status") {
|
|
||||||
// this is added below as unversioned
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
metaOnlyObject := gvkToMetadataOnlyObject(kind)
|
|
||||||
scheme.AddKnownTypeWithName(kind, metaOnlyObject)
|
|
||||||
}
|
|
||||||
scheme.AddUnversionedTypes(metav1.Unversioned, &metav1.Status{})
|
|
||||||
return serializer.NewCodecFactory(scheme)
|
|
||||||
}
|
|
||||||
|
|
||||||
// String converts a MetadataOnlyObject to a human-readable string.
|
|
||||||
func (metaOnly MetadataOnlyObject) String() string {
|
|
||||||
return fmt.Sprintf("%s/%s, name: %s, DeletionTimestamp:%v", metaOnly.TypeMeta.APIVersion, metaOnly.TypeMeta.Kind, metaOnly.ObjectMeta.Name, metaOnly.ObjectMeta.DeletionTimestamp)
|
|
||||||
}
|
|
@ -1,164 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2016 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package metaonly
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
|
||||||
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/kubernetes/pkg/apis/core/install"
|
|
||||||
)
|
|
||||||
|
|
||||||
func getPod() *v1.Pod {
|
|
||||||
return &v1.Pod{
|
|
||||||
TypeMeta: metav1.TypeMeta{
|
|
||||||
Kind: "Pod",
|
|
||||||
APIVersion: "v1",
|
|
||||||
},
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "pod",
|
|
||||||
OwnerReferences: []metav1.OwnerReference{
|
|
||||||
{UID: "1234"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.PodSpec{
|
|
||||||
Containers: []v1.Container{
|
|
||||||
{
|
|
||||||
Name: "fake-name",
|
|
||||||
Image: "fakeimage",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func getPodJson(t *testing.T) []byte {
|
|
||||||
data, err := json.Marshal(getPod())
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
|
|
||||||
func getPodListJson(t *testing.T) []byte {
|
|
||||||
data, err := json.Marshal(&v1.PodList{
|
|
||||||
TypeMeta: metav1.TypeMeta{
|
|
||||||
Kind: "PodList",
|
|
||||||
APIVersion: "v1",
|
|
||||||
},
|
|
||||||
Items: []v1.Pod{
|
|
||||||
*getPod(),
|
|
||||||
*getPod(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
|
|
||||||
func verfiyMetadata(description string, t *testing.T, in *MetadataOnlyObject) {
|
|
||||||
pod := getPod()
|
|
||||||
if e, a := pod.ObjectMeta, in.ObjectMeta; !reflect.DeepEqual(e, a) {
|
|
||||||
t.Errorf("%s: expected %#v, got %#v", description, e, a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDecodeToMetadataOnlyObject(t *testing.T) {
|
|
||||||
data := getPodJson(t)
|
|
||||||
cf := serializer.DirectCodecFactory{CodecFactory: NewMetadataCodecFactory()}
|
|
||||||
info, ok := runtime.SerializerInfoForMediaType(cf.SupportedMediaTypes(), runtime.ContentTypeJSON)
|
|
||||||
if !ok {
|
|
||||||
t.Fatalf("expected to get a JSON serializer")
|
|
||||||
}
|
|
||||||
codec := cf.DecoderToVersion(info.Serializer, schema.GroupVersion{Group: "SOMEGROUP", Version: "SOMEVERSION"})
|
|
||||||
// decode with into
|
|
||||||
into := &MetadataOnlyObject{}
|
|
||||||
ret, _, err := codec.Decode(data, nil, into)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
metaOnly, ok := ret.(*MetadataOnlyObject)
|
|
||||||
if !ok {
|
|
||||||
t.Fatalf("expected ret to be *runtime.MetadataOnlyObject")
|
|
||||||
}
|
|
||||||
verfiyMetadata("check returned metaonly with into", t, metaOnly)
|
|
||||||
verfiyMetadata("check into", t, into)
|
|
||||||
// decode without into
|
|
||||||
ret, _, err = codec.Decode(data, nil, nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
metaOnly, ok = ret.(*MetadataOnlyObject)
|
|
||||||
if !ok {
|
|
||||||
t.Fatalf("expected ret to be *runtime.MetadataOnlyObject")
|
|
||||||
}
|
|
||||||
verfiyMetadata("check returned metaonly without into", t, metaOnly)
|
|
||||||
}
|
|
||||||
|
|
||||||
func verifyListMetadata(t *testing.T, metaOnlyList *MetadataOnlyObjectList) {
|
|
||||||
items, err := meta.ExtractList(metaOnlyList)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for _, item := range items {
|
|
||||||
metaOnly, ok := item.(*MetadataOnlyObject)
|
|
||||||
if !ok {
|
|
||||||
t.Fatalf("expected item to be *MetadataOnlyObject")
|
|
||||||
}
|
|
||||||
verfiyMetadata("check list", t, metaOnly)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDecodeToMetadataOnlyObjectList(t *testing.T) {
|
|
||||||
data := getPodListJson(t)
|
|
||||||
cf := serializer.DirectCodecFactory{CodecFactory: NewMetadataCodecFactory()}
|
|
||||||
info, ok := runtime.SerializerInfoForMediaType(cf.SupportedMediaTypes(), runtime.ContentTypeJSON)
|
|
||||||
if !ok {
|
|
||||||
t.Fatalf("expected to get a JSON serializer")
|
|
||||||
}
|
|
||||||
codec := cf.DecoderToVersion(info.Serializer, schema.GroupVersion{Group: "SOMEGROUP", Version: "SOMEVERSION"})
|
|
||||||
// decode with into
|
|
||||||
into := &MetadataOnlyObjectList{}
|
|
||||||
ret, _, err := codec.Decode(data, nil, into)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
metaOnlyList, ok := ret.(*MetadataOnlyObjectList)
|
|
||||||
if !ok {
|
|
||||||
t.Fatalf("expected ret to be *runtime.UnstructuredList")
|
|
||||||
}
|
|
||||||
verifyListMetadata(t, metaOnlyList)
|
|
||||||
verifyListMetadata(t, into)
|
|
||||||
// decode without into
|
|
||||||
ret, _, err = codec.Decode(data, nil, nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
metaOnlyList, ok = ret.(*MetadataOnlyObjectList)
|
|
||||||
if !ok {
|
|
||||||
t.Fatalf("expected ret to be *runtime.UnstructuredList")
|
|
||||||
}
|
|
||||||
verifyListMetadata(t, metaOnlyList)
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user