mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-04 23:17:50 +00:00
generated: refactor
This commit is contained in:
@@ -27,6 +27,7 @@ go_library(
|
||||
"//pkg/client/typed/dynamic:go_default_library",
|
||||
"//pkg/controller:go_default_library",
|
||||
"//pkg/runtime:go_default_library",
|
||||
"//pkg/runtime/schema:go_default_library",
|
||||
"//pkg/util/metrics:go_default_library",
|
||||
"//pkg/util/runtime:go_default_library",
|
||||
"//pkg/util/sets:go_default_library",
|
||||
@@ -54,6 +55,7 @@ go_test(
|
||||
"//pkg/client/testing/core:go_default_library",
|
||||
"//pkg/client/typed/dynamic:go_default_library",
|
||||
"//pkg/runtime:go_default_library",
|
||||
"//pkg/runtime/schema:go_default_library",
|
||||
"//pkg/util/sets:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -19,13 +19,13 @@ package namespace
|
||||
import (
|
||||
"time"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/client/cache"
|
||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||
"k8s.io/kubernetes/pkg/client/typed/dynamic"
|
||||
"k8s.io/kubernetes/pkg/controller"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||
"k8s.io/kubernetes/pkg/util/metrics"
|
||||
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/wait"
|
||||
@@ -48,7 +48,7 @@ type NamespaceController struct {
|
||||
// namespaces that have been queued up for processing by workers
|
||||
queue workqueue.RateLimitingInterface
|
||||
// function to list of preferred group versions and their corresponding resource set for namespace deletion
|
||||
groupVersionResourcesFn func() ([]unversioned.GroupVersionResource, error)
|
||||
groupVersionResourcesFn func() ([]schema.GroupVersionResource, error)
|
||||
// opCache is a cache to remember if a particular operation is not supported to aid dynamic client.
|
||||
opCache *operationNotSupportedCache
|
||||
// finalizerToken is the finalizer token managed by this controller
|
||||
@@ -59,7 +59,7 @@ type NamespaceController struct {
|
||||
func NewNamespaceController(
|
||||
kubeClient clientset.Interface,
|
||||
clientPool dynamic.ClientPool,
|
||||
groupVersionResourcesFn func() ([]unversioned.GroupVersionResource, error),
|
||||
groupVersionResourcesFn func() ([]schema.GroupVersionResource, error),
|
||||
resyncPeriod time.Duration,
|
||||
finalizerToken v1.FinalizerName) *NamespaceController {
|
||||
|
||||
@@ -73,7 +73,7 @@ func NewNamespaceController(
|
||||
opCache := &operationNotSupportedCache{
|
||||
m: make(map[operationKey]bool),
|
||||
}
|
||||
ignoredGroupVersionResources := []unversioned.GroupVersionResource{
|
||||
ignoredGroupVersionResources := []schema.GroupVersionResource{
|
||||
{Group: "", Version: "v1", Resource: "bindings"},
|
||||
}
|
||||
for _, ignoredGroupVersionResource := range ignoredGroupVersionResources {
|
||||
|
||||
@@ -36,6 +36,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/client/testing/core"
|
||||
"k8s.io/kubernetes/pkg/client/typed/dynamic"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
)
|
||||
|
||||
@@ -115,7 +116,7 @@ func testSyncNamespaceThatIsTerminating(t *testing.T, versions *unversioned.APIV
|
||||
groupVersionResources := testGroupVersionResources()
|
||||
for _, groupVersionResource := range groupVersionResources {
|
||||
urlPath := path.Join([]string{
|
||||
dynamic.LegacyAPIPathResolverFunc(unversioned.GroupVersionKind{Group: groupVersionResource.Group, Version: groupVersionResource.Version}),
|
||||
dynamic.LegacyAPIPathResolverFunc(schema.GroupVersionKind{Group: groupVersionResource.Group, Version: groupVersionResource.Version}),
|
||||
groupVersionResource.Group,
|
||||
groupVersionResource.Version,
|
||||
"namespaces",
|
||||
@@ -169,7 +170,7 @@ func testSyncNamespaceThatIsTerminating(t *testing.T, versions *unversioned.APIV
|
||||
mockClient := fake.NewSimpleClientset(testInput.testNamespace)
|
||||
clientPool := dynamic.NewClientPool(clientConfig, registered.RESTMapper(), dynamic.LegacyAPIPathResolverFunc)
|
||||
|
||||
fn := func() ([]unversioned.GroupVersionResource, error) {
|
||||
fn := func() ([]schema.GroupVersionResource, error) {
|
||||
return groupVersionResources, nil
|
||||
}
|
||||
|
||||
@@ -242,7 +243,7 @@ func TestSyncNamespaceThatIsActive(t *testing.T) {
|
||||
Phase: v1.NamespaceActive,
|
||||
},
|
||||
}
|
||||
fn := func() ([]unversioned.GroupVersionResource, error) {
|
||||
fn := func() ([]schema.GroupVersionResource, error) {
|
||||
return testGroupVersionResources(), nil
|
||||
}
|
||||
err := syncNamespace(mockClient, nil, &operationNotSupportedCache{m: make(map[operationKey]bool)}, fn, testNamespace, v1.FinalizerKubernetes)
|
||||
@@ -295,10 +296,10 @@ func (f *fakeActionHandler) ServeHTTP(response http.ResponseWriter, request *htt
|
||||
}
|
||||
|
||||
// testGroupVersionResources returns a mocked up set of resources across different api groups for testing namespace controller.
|
||||
func testGroupVersionResources() []unversioned.GroupVersionResource {
|
||||
results := []unversioned.GroupVersionResource{}
|
||||
results = append(results, unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"})
|
||||
results = append(results, unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "services"})
|
||||
results = append(results, unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"})
|
||||
func testGroupVersionResources() []schema.GroupVersionResource {
|
||||
results := []schema.GroupVersionResource{}
|
||||
results = append(results, schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"})
|
||||
results = append(results, schema.GroupVersionResource{Group: "", Version: "v1", Resource: "services"})
|
||||
results = append(results, schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"})
|
||||
return results
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import (
|
||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||
"k8s.io/kubernetes/pkg/client/typed/dynamic"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
|
||||
"github.com/golang/glog"
|
||||
@@ -55,7 +56,7 @@ const (
|
||||
// operationKey is an entry in a cache.
|
||||
type operationKey struct {
|
||||
op operation
|
||||
gvr unversioned.GroupVersionResource
|
||||
gvr schema.GroupVersionResource
|
||||
}
|
||||
|
||||
// operationNotSupportedCache is a simple cache to remember if an operation is not supported for a resource.
|
||||
@@ -160,7 +161,7 @@ func finalizeNamespace(kubeClient clientset.Interface, namespace *v1.Namespace,
|
||||
func deleteCollection(
|
||||
dynamicClient *dynamic.Client,
|
||||
opCache *operationNotSupportedCache,
|
||||
gvr unversioned.GroupVersionResource,
|
||||
gvr schema.GroupVersionResource,
|
||||
namespace string,
|
||||
) (bool, error) {
|
||||
glog.V(5).Infof("namespace controller - deleteCollection - namespace: %s, gvr: %v", namespace, gvr)
|
||||
@@ -207,7 +208,7 @@ func deleteCollection(
|
||||
func listCollection(
|
||||
dynamicClient *dynamic.Client,
|
||||
opCache *operationNotSupportedCache,
|
||||
gvr unversioned.GroupVersionResource,
|
||||
gvr schema.GroupVersionResource,
|
||||
namespace string,
|
||||
) (*runtime.UnstructuredList, bool, error) {
|
||||
glog.V(5).Infof("namespace controller - listCollection - namespace: %s, gvr: %v", namespace, gvr)
|
||||
@@ -247,7 +248,7 @@ func listCollection(
|
||||
func deleteEachItem(
|
||||
dynamicClient *dynamic.Client,
|
||||
opCache *operationNotSupportedCache,
|
||||
gvr unversioned.GroupVersionResource,
|
||||
gvr schema.GroupVersionResource,
|
||||
namespace string,
|
||||
) error {
|
||||
glog.V(5).Infof("namespace controller - deleteEachItem - namespace: %s, gvr: %v", namespace, gvr)
|
||||
@@ -275,7 +276,7 @@ func deleteAllContentForGroupVersionResource(
|
||||
kubeClient clientset.Interface,
|
||||
clientPool dynamic.ClientPool,
|
||||
opCache *operationNotSupportedCache,
|
||||
gvr unversioned.GroupVersionResource,
|
||||
gvr schema.GroupVersionResource,
|
||||
namespace string,
|
||||
namespaceDeletedAt unversioned.Time,
|
||||
) (int64, error) {
|
||||
@@ -343,7 +344,7 @@ func deleteAllContent(
|
||||
kubeClient clientset.Interface,
|
||||
clientPool dynamic.ClientPool,
|
||||
opCache *operationNotSupportedCache,
|
||||
groupVersionResources []unversioned.GroupVersionResource,
|
||||
groupVersionResources []schema.GroupVersionResource,
|
||||
namespace string,
|
||||
namespaceDeletedAt unversioned.Time,
|
||||
) (int64, error) {
|
||||
@@ -370,7 +371,7 @@ func syncNamespace(
|
||||
kubeClient clientset.Interface,
|
||||
clientPool dynamic.ClientPool,
|
||||
opCache *operationNotSupportedCache,
|
||||
groupVersionResourcesFn func() ([]unversioned.GroupVersionResource, error),
|
||||
groupVersionResourcesFn func() ([]schema.GroupVersionResource, error),
|
||||
namespace *v1.Namespace,
|
||||
finalizerToken v1.FinalizerName,
|
||||
) error {
|
||||
@@ -457,13 +458,13 @@ func syncNamespace(
|
||||
}
|
||||
|
||||
// estimateGrracefulTermination will estimate the graceful termination required for the specific entity in the namespace
|
||||
func estimateGracefulTermination(kubeClient clientset.Interface, groupVersionResource unversioned.GroupVersionResource, ns string, namespaceDeletedAt unversioned.Time) (int64, error) {
|
||||
func estimateGracefulTermination(kubeClient clientset.Interface, groupVersionResource schema.GroupVersionResource, ns string, namespaceDeletedAt unversioned.Time) (int64, error) {
|
||||
groupResource := groupVersionResource.GroupResource()
|
||||
glog.V(5).Infof("namespace controller - estimateGracefulTermination - group %s, resource: %s", groupResource.Group, groupResource.Resource)
|
||||
estimate := int64(0)
|
||||
var err error
|
||||
switch groupResource {
|
||||
case unversioned.GroupResource{Group: "", Resource: "pods"}:
|
||||
case schema.GroupResource{Group: "", Resource: "pods"}:
|
||||
estimate, err = estimateGracefulTerminationForPods(kubeClient, ns)
|
||||
}
|
||||
if err != nil {
|
||||
@@ -505,7 +506,7 @@ func estimateGracefulTerminationForPods(kubeClient clientset.Interface, ns strin
|
||||
// sortableGroupVersionResources sorts the input set of resources for deletion, and orders pods to always be last.
|
||||
// the idea is that the namespace controller will delete all things that spawn pods first in order to reduce the time
|
||||
// those controllers spend creating pods only to be told NO in admission and potentially overwhelming cluster especially if they lack rate limiting.
|
||||
type sortableGroupVersionResources []unversioned.GroupVersionResource
|
||||
type sortableGroupVersionResources []schema.GroupVersionResource
|
||||
|
||||
func (list sortableGroupVersionResources) Len() int {
|
||||
return len(list)
|
||||
|
||||
Reference in New Issue
Block a user