diff --git a/pkg/client/tests/BUILD b/pkg/client/tests/BUILD index 4f3d97737ce..4c3982b2864 100644 --- a/pkg/client/tests/BUILD +++ b/pkg/client/tests/BUILD @@ -17,7 +17,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", - "//pkg/api/testapi:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/kubelet/server/portforward:go_default_library", diff --git a/pkg/client/tests/listwatch_test.go b/pkg/client/tests/listwatch_test.go index 10d878199ff..40c1b9f8c4d 100644 --- a/pkg/client/tests/listwatch_test.go +++ b/pkg/client/tests/listwatch_test.go @@ -23,7 +23,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/runtime" @@ -34,7 +34,6 @@ import ( . "k8s.io/client-go/tools/cache" watchtools "k8s.io/client-go/tools/watch" utiltesting "k8s.io/client-go/util/testing" - "k8s.io/kubernetes/pkg/api/testapi" ) func parseSelectorOrDie(s string) fields.Selector { @@ -71,7 +70,7 @@ func TestListWatchesCanList(t *testing.T) { }{ // Node { - location: testapi.Default.ResourcePath("nodes", metav1.NamespaceAll, ""), + location: "/api/v1/nodes", resource: "nodes", namespace: metav1.NamespaceAll, fieldSelector: parseSelectorOrDie(""), @@ -79,7 +78,7 @@ func TestListWatchesCanList(t *testing.T) { // pod with "assigned" field selector. { location: buildLocation( - testapi.Default.ResourcePath("pods", metav1.NamespaceAll, ""), + "/api/v1/pods", buildQueryValues(url.Values{fieldSelectorQueryParamName: []string{"spec.host="}})), resource: "pods", namespace: metav1.NamespaceAll, @@ -88,7 +87,7 @@ func TestListWatchesCanList(t *testing.T) { // pod in namespace "foo" { location: buildLocation( - testapi.Default.ResourcePath("pods", "foo", ""), + "/api/v1/namespaces/foo/pods", buildQueryValues(url.Values{fieldSelectorQueryParamName: []string{"spec.host="}})), resource: "pods", namespace: "foo", @@ -124,7 +123,7 @@ func TestListWatchesCanWatch(t *testing.T) { // Node { location: buildLocation( - testapi.Default.ResourcePath("nodes", metav1.NamespaceAll, ""), + "/api/v1/nodes", buildQueryValues(url.Values{"watch": []string{"true"}})), rv: "", resource: "nodes", @@ -133,7 +132,7 @@ func TestListWatchesCanWatch(t *testing.T) { }, { location: buildLocation( - testapi.Default.ResourcePath("nodes", metav1.NamespaceAll, ""), + "/api/v1/nodes", buildQueryValues(url.Values{"resourceVersion": []string{"42"}, "watch": []string{"true"}})), rv: "42", resource: "nodes", @@ -143,7 +142,7 @@ func TestListWatchesCanWatch(t *testing.T) { // pod with "assigned" field selector. { location: buildLocation( - testapi.Default.ResourcePath("pods", metav1.NamespaceAll, ""), + "/api/v1/pods", buildQueryValues(url.Values{fieldSelectorQueryParamName: []string{"spec.host="}, "resourceVersion": []string{"0"}, "watch": []string{"true"}})), rv: "0", resource: "pods", @@ -153,7 +152,7 @@ func TestListWatchesCanWatch(t *testing.T) { // pod with namespace foo and assigned field selector { location: buildLocation( - testapi.Default.ResourcePath("pods", "foo", ""), + "/api/v1/namespaces/foo/pods", buildQueryValues(url.Values{fieldSelectorQueryParamName: []string{"spec.host="}, "resourceVersion": []string{"0"}, "watch": []string{"true"}})), rv: "0", resource: "pods", diff --git a/pkg/controller/BUILD b/pkg/controller/BUILD index 445672cd963..f447f4c4e5a 100644 --- a/pkg/controller/BUILD +++ b/pkg/controller/BUILD @@ -14,7 +14,6 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/controller/testutil:go_default_library", "//pkg/securitycontext:go_default_library", @@ -31,6 +30,7 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/tools/record:go_default_library", diff --git a/pkg/controller/controller_utils_test.go b/pkg/controller/controller_utils_test.go index 837a10b22a8..4ede69f007c 100644 --- a/pkg/controller/controller_utils_test.go +++ b/pkg/controller/controller_utils_test.go @@ -28,7 +28,7 @@ import ( "time" apps "k8s.io/api/apps/v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" apiequality "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -38,11 +38,11 @@ import ( "k8s.io/apimachinery/pkg/util/uuid" clientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" + clientscheme "k8s.io/client-go/kubernetes/scheme" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/record" utiltesting "k8s.io/client-go/util/testing" - "k8s.io/kubernetes/pkg/api/testapi" _ "k8s.io/kubernetes/pkg/apis/core/install" "k8s.io/kubernetes/pkg/controller/testutil" "k8s.io/kubernetes/pkg/securitycontext" @@ -279,7 +279,7 @@ func TestUIDExpectations(t *testing.T) { func TestCreatePods(t *testing.T) { ns := metav1.NamespaceDefault - body := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "empty_pod"}}) + body := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "empty_pod"}}) fakeHandler := utiltesting.FakeHandler{ StatusCode: 200, ResponseBody: string(body), @@ -306,7 +306,7 @@ func TestCreatePods(t *testing.T) { }, Spec: controllerSpec.Spec.Template.Spec, } - fakeHandler.ValidateRequest(t, testapi.Default.ResourcePath("pods", metav1.NamespaceDefault, ""), "POST", nil) + fakeHandler.ValidateRequest(t, "/api/v1/namespaces/default/pods", "POST", nil) var actualPod = &v1.Pod{} err = json.Unmarshal([]byte(fakeHandler.RequestBody), actualPod) assert.NoError(t, err, "unexpected error: %v", err) diff --git a/pkg/controller/endpoint/BUILD b/pkg/controller/endpoint/BUILD index f4fc32b463f..75574933d9e 100644 --- a/pkg/controller/endpoint/BUILD +++ b/pkg/controller/endpoint/BUILD @@ -45,7 +45,6 @@ go_test( srcs = ["endpoints_controller_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/api/v1/endpoints:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/controller:go_default_library", @@ -61,6 +60,7 @@ go_test( "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/util/testing:go_default_library", diff --git a/pkg/controller/endpoint/endpoints_controller_test.go b/pkg/controller/endpoint/endpoints_controller_test.go index cd6fcc95387..80270b1f604 100644 --- a/pkg/controller/endpoint/endpoints_controller_test.go +++ b/pkg/controller/endpoint/endpoints_controller_test.go @@ -35,11 +35,11 @@ import ( utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/informers" clientset "k8s.io/client-go/kubernetes" + clientscheme "k8s.io/client-go/kubernetes/scheme" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" utiltesting "k8s.io/client-go/util/testing" featuregatetesting "k8s.io/component-base/featuregate/testing" - "k8s.io/kubernetes/pkg/api/testapi" endptspkg "k8s.io/kubernetes/pkg/api/v1/endpoints" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/controller" @@ -139,11 +139,14 @@ func addNotReadyPodsWithSpecifiedRestartPolicyAndPhase(store cache.Store, namesp func makeTestServer(t *testing.T, namespace string) (*httptest.Server, *utiltesting.FakeHandler) { fakeEndpointsHandler := utiltesting.FakeHandler{ StatusCode: http.StatusOK, - ResponseBody: runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{}), + ResponseBody: runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{}), } mux := http.NewServeMux() - mux.Handle(testapi.Default.ResourcePath("endpoints", namespace, ""), &fakeEndpointsHandler) - mux.Handle(testapi.Default.ResourcePath("endpoints/", namespace, ""), &fakeEndpointsHandler) + if namespace == "" { + t.Fatal("namespace cannot be empty") + } + mux.Handle("/api/v1/namespaces/"+namespace+"/endpoints", &fakeEndpointsHandler) + mux.Handle("/api/v1/namespaces/"+namespace+"/endpoints/", &fakeEndpointsHandler) mux.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) { t.Errorf("unexpected request: %v", req.RequestURI) http.Error(res, "", http.StatusNotFound) @@ -315,7 +318,7 @@ func TestSyncEndpointsProtocolTCP(t *testing.T) { endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -329,7 +332,7 @@ func TestSyncEndpointsProtocolTCP(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsProtocolUDP(t *testing.T) { @@ -359,7 +362,7 @@ func TestSyncEndpointsProtocolUDP(t *testing.T) { endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -373,7 +376,7 @@ func TestSyncEndpointsProtocolUDP(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "UDP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsProtocolSCTP(t *testing.T) { @@ -403,7 +406,7 @@ func TestSyncEndpointsProtocolSCTP(t *testing.T) { endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -417,7 +420,7 @@ func TestSyncEndpointsProtocolSCTP(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "SCTP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsEmptySelectorSelectsAll(t *testing.T) { @@ -443,7 +446,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAll(t *testing.T) { }) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -457,7 +460,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAll(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsEmptySelectorSelectsAllNotReady(t *testing.T) { @@ -483,7 +486,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllNotReady(t *testing.T) { }) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -497,7 +500,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllNotReady(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsEmptySelectorSelectsAllMixed(t *testing.T) { @@ -523,7 +526,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllMixed(t *testing.T) { }) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -538,7 +541,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllMixed(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsPreexisting(t *testing.T) { @@ -567,7 +570,7 @@ func TestSyncEndpointsItemsPreexisting(t *testing.T) { }) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -581,7 +584,7 @@ func TestSyncEndpointsItemsPreexisting(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsPreexistingIdentical(t *testing.T) { @@ -643,7 +646,7 @@ func TestSyncEndpointsItems(t *testing.T) { {Name: "port1", Port: 8088, Protocol: "TCP"}, }, }} - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ ResourceVersion: "", Name: "foo", @@ -654,7 +657,7 @@ func TestSyncEndpointsItems(t *testing.T) { Subsets: endptspkg.SortSubsets(expectedSubsets), }) endpointsHandler.ValidateRequestCount(t, 1) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, ""), "POST", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints", "POST", &data) } func TestSyncEndpointsItemsWithLabels(t *testing.T) { @@ -693,7 +696,7 @@ func TestSyncEndpointsItemsWithLabels(t *testing.T) { }} serviceLabels[v1.IsHeadlessService] = "" - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ ResourceVersion: "", Name: "foo", @@ -702,7 +705,7 @@ func TestSyncEndpointsItemsWithLabels(t *testing.T) { Subsets: endptspkg.SortSubsets(expectedSubsets), }) endpointsHandler.ValidateRequestCount(t, 1) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, ""), "POST", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints", "POST", &data) } func TestSyncEndpointsItemsPreexistingLabelsChange(t *testing.T) { @@ -740,7 +743,7 @@ func TestSyncEndpointsItemsPreexistingLabelsChange(t *testing.T) { endpoints.syncService(ns + "/foo") serviceLabels[v1.IsHeadlessService] = "" - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -752,7 +755,7 @@ func TestSyncEndpointsItemsPreexistingLabelsChange(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestWaitsForAllInformersToBeSynced2(t *testing.T) { @@ -838,7 +841,7 @@ func TestSyncEndpointsHeadlessService(t *testing.T) { originalService := service.DeepCopy() endpoints.serviceStore.Add(service) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -857,7 +860,7 @@ func TestSyncEndpointsHeadlessService(t *testing.T) { t.Fatalf("syncing endpoints changed service: %s", diff.ObjectReflectDiff(service, originalService)) } endpointsHandler.ValidateRequestCount(t, 1) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyNeverAndPhaseFailed(t *testing.T) { @@ -885,7 +888,7 @@ func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyNeverAndPhaseFail }, }) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -896,7 +899,7 @@ func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyNeverAndPhaseFail }, Subsets: []v1.EndpointSubset{}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyNeverAndPhaseSucceeded(t *testing.T) { @@ -924,7 +927,7 @@ func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyNeverAndPhaseSucc }, }) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -935,7 +938,7 @@ func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyNeverAndPhaseSucc }, Subsets: []v1.EndpointSubset{}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyOnFailureAndPhaseSucceeded(t *testing.T) { @@ -963,7 +966,7 @@ func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyOnFailureAndPhase }, }) endpoints.syncService(ns + "/foo") - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -974,7 +977,7 @@ func TestSyncEndpointsItemsExcludeNotReadyPodsWithRestartPolicyOnFailureAndPhase }, Subsets: []v1.EndpointSubset{}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestSyncEndpointsHeadlessWithoutPort(t *testing.T) { @@ -993,7 +996,7 @@ func TestSyncEndpointsHeadlessWithoutPort(t *testing.T) { addPods(endpoints.podStore, ns, 1, 1, 0, false) endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Labels: map[string]string{ @@ -1005,7 +1008,7 @@ func TestSyncEndpointsHeadlessWithoutPort(t *testing.T) { Ports: nil, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, ""), "POST", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints", "POST", &data) } // There are 3*5 possibilities(3 types of RestartPolicy by 5 types of PodPhase). Not list them all here. @@ -1424,7 +1427,7 @@ func TestLastTriggerChangeTimeAnnotation(t *testing.T) { endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -1441,7 +1444,7 @@ func TestLastTriggerChangeTimeAnnotation(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestLastTriggerChangeTimeAnnotation_AnnotationOverridden(t *testing.T) { @@ -1474,7 +1477,7 @@ func TestLastTriggerChangeTimeAnnotation_AnnotationOverridden(t *testing.T) { endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -1491,7 +1494,7 @@ func TestLastTriggerChangeTimeAnnotation_AnnotationOverridden(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } func TestLastTriggerChangeTimeAnnotation_AnnotationCleared(t *testing.T) { @@ -1525,7 +1528,7 @@ func TestLastTriggerChangeTimeAnnotation_AnnotationCleared(t *testing.T) { endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - data := runtime.EncodeOrDie(testapi.Default.Codec(), &v1.Endpoints{ + data := runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &v1.Endpoints{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: ns, @@ -1539,7 +1542,7 @@ func TestLastTriggerChangeTimeAnnotation_AnnotationCleared(t *testing.T) { Ports: []v1.EndpointPort{{Port: 8080, Protocol: "TCP"}}, }}, }) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "PUT", &data) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "PUT", &data) } // TestPodUpdatesBatching verifies that endpoint updates caused by pod updates are batched together. @@ -1941,7 +1944,7 @@ func TestSyncEndpointsServiceNotFound(t *testing.T) { }) endpoints.syncService(ns + "/foo") endpointsHandler.ValidateRequestCount(t, 1) - endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "DELETE", nil) + endpointsHandler.ValidateRequest(t, "/api/v1/namespaces/"+ns+"/endpoints/foo", "DELETE", nil) } func podChangedHelper(oldPod, newPod *v1.Pod, endpointChanged endpointutil.EndpointsMatch) bool { diff --git a/pkg/controller/history/BUILD b/pkg/controller/history/BUILD index 0a385e679df..8dc1b62907a 100644 --- a/pkg/controller/history/BUILD +++ b/pkg/controller/history/BUILD @@ -12,7 +12,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", - "//pkg/api/testapi:go_default_library", "//pkg/controller:go_default_library", "//staging/src/k8s.io/api/apps/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", @@ -25,6 +24,7 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/pkg/controller/history/controller_history_test.go b/pkg/controller/history/controller_history_test.go index dcf6bb609eb..c513d616055 100644 --- a/pkg/controller/history/controller_history_test.go +++ b/pkg/controller/history/controller_history_test.go @@ -27,8 +27,8 @@ import ( "k8s.io/api/core/v1" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes/fake" + clientscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/controller" "k8s.io/apimachinery/pkg/api/errors" @@ -968,12 +968,12 @@ func TestRealHistory_AdoptControllerRevision(t *testing.T) { return true, nil, errors.NewNotFound(apps.Resource("controllerrevisions"), test.revision.Name) } b, err := strategicpatch.StrategicMergePatch( - []byte(runtime.EncodeOrDie(testapi.Apps.Codec(), test.revision)), + []byte(runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(apps.SchemeGroupVersion), test.revision)), action.GetPatch(), test.revision) if err != nil { return true, nil, err } - obj, err := runtime.Decode(testapi.Apps.Codec(), b) + obj, err := runtime.Decode(clientscheme.Codecs.LegacyCodec(apps.SchemeGroupVersion), b) if err != nil { return true, nil, err } @@ -1219,12 +1219,12 @@ func TestRealHistory_ReleaseControllerRevision(t *testing.T) { test.revision.GroupVersionKind().GroupKind(), test.revision.Name, nil) } b, err := strategicpatch.StrategicMergePatch( - []byte(runtime.EncodeOrDie(testapi.Apps.Codec(), test.revision)), + []byte(runtime.EncodeOrDie(clientscheme.Codecs.LegacyCodec(apps.SchemeGroupVersion), test.revision)), action.GetPatch(), test.revision) if err != nil { return true, nil, err } - obj, err := runtime.Decode(testapi.Apps.Codec(), b) + obj, err := runtime.Decode(clientscheme.Codecs.LegacyCodec(apps.SchemeGroupVersion), b) if err != nil { return true, nil, err } diff --git a/pkg/controller/service/BUILD b/pkg/controller/service/BUILD index a262265ff77..1e5097cd826 100644 --- a/pkg/controller/service/BUILD +++ b/pkg/controller/service/BUILD @@ -42,7 +42,6 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/controller:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", diff --git a/pkg/controller/service/controller_test.go b/pkg/controller/service/controller_test.go index 55ca8dde47f..c061063f9a2 100644 --- a/pkg/controller/service/controller_test.go +++ b/pkg/controller/service/controller_test.go @@ -41,7 +41,6 @@ import ( fakecloud "k8s.io/cloud-provider/fake" servicehelper "k8s.io/cloud-provider/service/helpers" featuregatetesting "k8s.io/component-base/featuregate/testing" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/controller" ) @@ -53,7 +52,7 @@ func newService(name string, uid types.UID, serviceType v1.ServiceType) *v1.Serv Name: name, Namespace: "default", UID: uid, - SelfLink: testapi.Default.SelfLink("services", name), + SelfLink: "/api/v1/namespaces/default/services/" + name, }, Spec: v1.ServiceSpec{ Type: serviceType, @@ -145,7 +144,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "udp-service", Namespace: "default", - SelfLink: testapi.Default.SelfLink("services", "udp-service"), + SelfLink: "/api/v1/namespaces/default/services/udp-service", }, Spec: v1.ServiceSpec{ Ports: []v1.ServicePort{{ @@ -166,7 +165,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "basic-service1", Namespace: "default", - SelfLink: testapi.Default.SelfLink("services", "basic-service1"), + SelfLink: "/api/v1/namespaces/default/services/basic-service1", }, Spec: v1.ServiceSpec{ Ports: []v1.ServicePort{{ @@ -187,7 +186,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "sctp-service", Namespace: "default", - SelfLink: testapi.Default.SelfLink("services", "sctp-service"), + SelfLink: "/api/v1/namespaces/default/services/sctp-service", }, Spec: v1.ServiceSpec{ Ports: []v1.ServicePort{{ @@ -234,7 +233,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "basic-service1", Namespace: "default", - SelfLink: testapi.Default.SelfLink("services", "basic-service1"), + SelfLink: "/api/v1/namespaces/default/services/basic-service1", DeletionTimestamp: &metav1.Time{ Time: time.Now(), }, @@ -267,7 +266,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "basic-service1", Namespace: "default", - SelfLink: testapi.Default.SelfLink("services", "basic-service1"), + SelfLink: "/api/v1/namespaces/default/services/basic-service1", }, Spec: v1.ServiceSpec{ Ports: []v1.ServicePort{{ @@ -288,7 +287,7 @@ func TestSyncLoadBalancerIfNeeded(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "basic-service1", Namespace: "default", - SelfLink: testapi.Default.SelfLink("services", "basic-service1"), + SelfLink: "/api/v1/namespaces/default/services/basic-service1", Finalizers: []string{servicehelper.LoadBalancerCleanupFinalizer}, }, Spec: v1.ServiceSpec{ diff --git a/pkg/controller/volume/persistentvolume/BUILD b/pkg/controller/volume/persistentvolume/BUILD index 96442c698f3..7cd45a02ed7 100644 --- a/pkg/controller/volume/persistentvolume/BUILD +++ b/pkg/controller/volume/persistentvolume/BUILD @@ -74,7 +74,6 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/volume/persistentvolume/testing:go_default_library", diff --git a/pkg/controller/volume/persistentvolume/framework_test.go b/pkg/controller/volume/persistentvolume/framework_test.go index fd6c57591fe..05e8af3e005 100644 --- a/pkg/controller/volume/persistentvolume/framework_test.go +++ b/pkg/controller/volume/persistentvolume/framework_test.go @@ -40,7 +40,6 @@ import ( storagelisters "k8s.io/client-go/listers/storage/v1" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/record" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/controller" pvtesting "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/testing" pvutil "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/util" @@ -375,7 +374,7 @@ func newClaim(name, claimUID, capacity, boundToVolume string, phase v1.Persisten }, } // Make sure ref.GetReference(claim) works - claim.ObjectMeta.SelfLink = testapi.Default.SelfLink("pvc", name) + claim.ObjectMeta.SelfLink = "/api/v1/namespaces/" + testNamespace + "/persistentvolumeclaims/" + name if len(annotations) > 0 { claim.Annotations = make(map[string]string) diff --git a/pkg/controller/volume/persistentvolume/index_test.go b/pkg/controller/volume/persistentvolume/index_test.go index 848ed6655f0..8a24c67876f 100644 --- a/pkg/controller/volume/persistentvolume/index_test.go +++ b/pkg/controller/volume/persistentvolume/index_test.go @@ -27,7 +27,6 @@ import ( "k8s.io/client-go/kubernetes/scheme" ref "k8s.io/client-go/tools/reference" featuregatetesting "k8s.io/component-base/featuregate/testing" - "k8s.io/kubernetes/pkg/api/testapi" pvutil "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/util" "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume/util" @@ -1396,7 +1395,7 @@ func TestFindingPreboundVolumes(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "claim01", Namespace: "myns", - SelfLink: testapi.Default.SelfLink("pvc", ""), + SelfLink: "/api/v1/namespaces/myns/persistentvolumeclaims/claim01", }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, diff --git a/pkg/controller/volume/scheduling/BUILD b/pkg/controller/volume/scheduling/BUILD index 32affc54ccc..59f4a3558bd 100644 --- a/pkg/controller/volume/scheduling/BUILD +++ b/pkg/controller/volume/scheduling/BUILD @@ -45,7 +45,6 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/volume/persistentvolume/testing:go_default_library", "//pkg/controller/volume/persistentvolume/util:go_default_library", diff --git a/pkg/controller/volume/scheduling/scheduler_binder_test.go b/pkg/controller/volume/scheduling/scheduler_binder_test.go index f47f47232cc..457a5cd0c80 100644 --- a/pkg/controller/volume/scheduling/scheduler_binder_test.go +++ b/pkg/controller/volume/scheduling/scheduler_binder_test.go @@ -40,7 +40,6 @@ import ( k8stesting "k8s.io/client-go/testing" featuregatetesting "k8s.io/component-base/featuregate/testing" "k8s.io/klog" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/controller" pvtesting "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/testing" pvutil "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/util" @@ -562,7 +561,7 @@ func makeTestPVC(name, size, node string, pvcBoundState int, pvName, resourceVer Namespace: "testns", UID: types.UID("pvc-uid"), ResourceVersion: resourceVersion, - SelfLink: testapi.Default.SelfLink("pvc", name), + SelfLink: "/api/v1/namespaces/testns/persistentvolumeclaims/" + name, }, Spec: v1.PersistentVolumeClaimSpec{ Resources: v1.ResourceRequirements{ diff --git a/pkg/kubelet/config/BUILD b/pkg/kubelet/config/BUILD index c3d577a4ded..25595bd3e9b 100644 --- a/pkg/kubelet/config/BUILD +++ b/pkg/kubelet/config/BUILD @@ -72,7 +72,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", - "//pkg/api/testapi:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", "//pkg/apis/core/validation:go_default_library", diff --git a/pkg/kubelet/config/common_test.go b/pkg/kubelet/config/common_test.go index 2328a29698f..c220a14e504 100644 --- a/pkg/kubelet/config/common_test.go +++ b/pkg/kubelet/config/common_test.go @@ -26,8 +26,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" + clientscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/core/validation" "k8s.io/kubernetes/pkg/securitycontext" @@ -72,7 +72,7 @@ func TestDecodeSinglePod(t *testing.T) { }, }, } - json, err := runtime.Encode(testapi.Default.Codec(), pod) + json, err := runtime.Encode(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), pod) if err != nil { t.Errorf("unexpected error: %v", err) } @@ -148,7 +148,7 @@ func TestDecodePodList(t *testing.T) { podList := &v1.PodList{ Items: []v1.Pod{*pod}, } - json, err := runtime.Encode(testapi.Default.Codec(), podList) + json, err := runtime.Encode(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), podList) if err != nil { t.Errorf("unexpected error: %v", err) } diff --git a/pkg/kubelet/config/file_linux_test.go b/pkg/kubelet/config/file_linux_test.go index 773718b85ac..ee9f1517b75 100644 --- a/pkg/kubelet/config/file_linux_test.go +++ b/pkg/kubelet/config/file_linux_test.go @@ -33,7 +33,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/kubernetes/pkg/api/testapi" + clientscheme "k8s.io/client-go/kubernetes/scheme" api "k8s.io/kubernetes/pkg/apis/core" k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1" "k8s.io/kubernetes/pkg/apis/core/validation" @@ -199,7 +199,7 @@ func getTestCases(hostname types.NodeName) []*testCase { } func (tc *testCase) writeToFile(dir, name string, t *testing.T) string { - fileContents, err := runtime.Encode(testapi.Default.Codec(), tc.pod) + fileContents, err := runtime.Encode(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), tc.pod) if err != nil { t.Fatalf("%s: error in encoding the pod: %v", tc.desc, err) } diff --git a/pkg/kubelet/config/http_test.go b/pkg/kubelet/config/http_test.go index 5b75b5d850d..398dbc8e679 100644 --- a/pkg/kubelet/config/http_test.go +++ b/pkg/kubelet/config/http_test.go @@ -28,8 +28,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" + clientscheme "k8s.io/client-go/kubernetes/scheme" utiltesting "k8s.io/client-go/util/testing" - "k8s.io/kubernetes/pkg/api/testapi" api "k8s.io/kubernetes/pkg/apis/core" k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1" "k8s.io/kubernetes/pkg/apis/core/validation" @@ -292,7 +292,7 @@ func TestExtractPodsFromHTTP(t *testing.T) { } for _, testCase := range testCases { - data, err := runtime.Encode(testapi.Default.Codec(), testCase.pods) + data, err := runtime.Encode(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), testCase.pods) if err != nil { t.Fatalf("%s: error in encoding the pod: %v", testCase.desc, err) } diff --git a/pkg/master/BUILD b/pkg/master/BUILD index 8352c992662..f8441369f07 100644 --- a/pkg/master/BUILD +++ b/pkg/master/BUILD @@ -149,7 +149,6 @@ go_test( race = "off", deps = [ "//pkg/api/legacyscheme:go_default_library", - "//pkg/api/testapi:go_default_library", "//pkg/apis/batch:go_default_library", "//pkg/apis/networking:go_default_library", "//pkg/apis/storage:go_default_library", diff --git a/pkg/master/master_test.go b/pkg/master/master_test.go index 4b144946187..9829cbb8f23 100644 --- a/pkg/master/master_test.go +++ b/pkg/master/master_test.go @@ -48,7 +48,6 @@ import ( restclient "k8s.io/client-go/rest" kubeversion "k8s.io/component-base/version" "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/networking" apisstorage "k8s.io/kubernetes/pkg/apis/storage" @@ -86,7 +85,7 @@ func setUp(t *testing.T) (*etcd3testing.EtcdTestServer, Config, *assert.Assertio networking.Resource("ingresses").WithVersion("v1beta1"), } resourceEncoding = resourceconfig.MergeResourceEncodingConfigs(resourceEncoding, resourceEncodingOverrides) - storageFactory := serverstorage.NewDefaultStorageFactory(*storageConfig, testapi.StorageMediaType(), legacyscheme.Codecs, resourceEncoding, DefaultAPIResourceConfigSource(), nil) + storageFactory := serverstorage.NewDefaultStorageFactory(*storageConfig, "application/vnd.kubernetes.protobuf", legacyscheme.Codecs, resourceEncoding, DefaultAPIResourceConfigSource(), nil) etcdOptions := options.NewEtcdOptions(storageConfig) // unit tests don't need watch cache and it leaks lots of goroutines with etcd testing functions during unit tests diff --git a/pkg/registry/registrytest/etcd.go b/pkg/registry/registrytest/etcd.go index 07be8cd6d4a..7a512e99ece 100644 --- a/pkg/registry/registrytest/etcd.go +++ b/pkg/registry/registrytest/etcd.go @@ -24,14 +24,11 @@ import ( serverstorage "k8s.io/apiserver/pkg/server/storage" etcd3testing "k8s.io/apiserver/pkg/storage/etcd3/testing" "k8s.io/apiserver/pkg/storage/storagebackend" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/kubeapiserver" ) func NewEtcdStorage(t *testing.T, group string) (*storagebackend.Config, *etcd3testing.EtcdTestServer) { - server, config := etcd3testing.NewUnsecuredEtcd3TestClientServer(t) - config.Codec = testapi.Groups[group].StorageCodec() - return config, server + return NewEtcdStorageForResource(t, schema.GroupResource{Group: group, Resource: "any"}) } func NewEtcdStorageForResource(t *testing.T, resource schema.GroupResource) (*storagebackend.Config, *etcd3testing.EtcdTestServer) { diff --git a/staging/src/k8s.io/apimachinery/pkg/test/runtime_unversioned_test.go b/staging/src/k8s.io/apimachinery/pkg/test/runtime_unversioned_test.go index 4fa920650d9..fc8c1764802 100644 --- a/staging/src/k8s.io/apimachinery/pkg/test/runtime_unversioned_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/test/runtime_unversioned_test.go @@ -70,8 +70,6 @@ func TestExperimentalEncodeDecodeStatus(t *testing.T) { Reason: metav1.StatusReasonUnknown, Message: "", } - // TODO: caesarxuchao: use the testapi.Extensions.Codec() once the PR that - // moves experimental from v1 to v1beta1 got merged. _, codecs := TestScheme() expCodec := apitesting.TestCodec(codecs, schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}) diff --git a/test/integration/apimachinery/BUILD b/test/integration/apimachinery/BUILD index f74b9041378..33318cc0765 100644 --- a/test/integration/apimachinery/BUILD +++ b/test/integration/apimachinery/BUILD @@ -11,7 +11,6 @@ go_test( "integration", ], deps = [ - "//pkg/api/testapi:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", diff --git a/test/integration/apimachinery/watch_restart_test.go b/test/integration/apimachinery/watch_restart_test.go index 6878c704e1f..4c08e5d7c94 100644 --- a/test/integration/apimachinery/watch_restart_test.go +++ b/test/integration/apimachinery/watch_restart_test.go @@ -34,7 +34,6 @@ import ( restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" watchtools "k8s.io/client-go/tools/watch" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/test/integration/framework" ) @@ -75,8 +74,7 @@ func TestWatchRestartsIfTimeoutNotReached(t *testing.T) { defer closeFn() config := &restclient.Config{ - Host: s.URL, - ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Groups[corev1.GroupName].GroupVersion()}, + Host: s.URL, } namespaceObject := framework.CreateTestingNamespace("retry-watch", s, t) diff --git a/test/integration/auth/BUILD b/test/integration/auth/BUILD index 3b32efe33c6..f97b600dada 100644 --- a/test/integration/auth/BUILD +++ b/test/integration/auth/BUILD @@ -24,7 +24,6 @@ go_test( "//cmd/kube-apiserver/app/options:go_default_library", "//cmd/kube-apiserver/app/testing:go_default_library", "//pkg/api/legacyscheme:go_default_library", - "//pkg/api/testapi:go_default_library", "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", diff --git a/test/integration/auth/accessreview_test.go b/test/integration/auth/accessreview_test.go index 5fd56a0f0a3..55fc9b2afc6 100644 --- a/test/integration/auth/accessreview_test.go +++ b/test/integration/auth/accessreview_test.go @@ -30,7 +30,6 @@ import ( "k8s.io/apiserver/pkg/authorization/authorizer" clientset "k8s.io/client-go/kubernetes" restclient "k8s.io/client-go/rest" - "k8s.io/kubernetes/pkg/api/testapi" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/test/integration/framework" ) @@ -62,7 +61,7 @@ func TestSubjectAccessReview(t *testing.T) { _, s, closeFn := framework.RunAMaster(masterConfig) defer closeFn() - clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Groups[api.GroupName].GroupVersion()}}) + clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL}) tests := []struct { name string @@ -157,7 +156,7 @@ func TestSelfSubjectAccessReview(t *testing.T) { _, s, closeFn := framework.RunAMaster(masterConfig) defer closeFn() - clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Groups[api.GroupName].GroupVersion()}}) + clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL}) tests := []struct { name string @@ -236,7 +235,7 @@ func TestLocalSubjectAccessReview(t *testing.T) { _, s, closeFn := framework.RunAMaster(masterConfig) defer closeFn() - clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Groups[api.GroupName].GroupVersion()}}) + clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL}) tests := []struct { name string diff --git a/test/integration/auth/auth_test.go b/test/integration/auth/auth_test.go index 852c2228b69..da3e85e78aa 100644 --- a/test/integration/auth/auth_test.go +++ b/test/integration/auth/auth_test.go @@ -47,8 +47,7 @@ import ( "k8s.io/apiserver/pkg/authorization/authorizerfactory" "k8s.io/apiserver/plugin/pkg/authenticator/token/tokentest" "k8s.io/apiserver/plugin/pkg/authenticator/token/webhook" - "k8s.io/client-go/tools/clientcmd/api/v1" - "k8s.io/kubernetes/pkg/api/testapi" + v1 "k8s.io/client-go/tools/clientcmd/api/v1" "k8s.io/kubernetes/pkg/apis/autoscaling" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/extensions" @@ -94,26 +93,45 @@ func getTestWebhookTokenAuth(serverURL string) (authenticator.Request, error) { } func path(resource, namespace, name string) string { - return testapi.Default.ResourcePath(resource, namespace, name) + return pathWithPrefix("", resource, namespace, name) } func pathWithPrefix(prefix, resource, namespace, name string) string { - return testapi.Default.ResourcePathWithPrefix(prefix, resource, namespace, name) + path := "/api/v1" + if prefix != "" { + path = path + "/" + prefix + } + if namespace != "" { + path = path + "/namespaces/" + namespace + } + // Resource names are lower case. + resource = strings.ToLower(resource) + if resource != "" { + path = path + "/" + resource + } + if name != "" { + path = path + "/" + name + } + return path } func pathWithSubResource(resource, namespace, name, subresource string) string { - return testapi.Default.SubResourcePath(resource, namespace, name, subresource) + path := pathWithPrefix("", resource, namespace, name) + if subresource != "" { + path = path + "/" + subresource + } + return path } func timeoutPath(resource, namespace, name string) string { - return addTimeoutFlag(testapi.Default.ResourcePath(resource, namespace, name)) + return addTimeoutFlag(path(resource, namespace, name)) } // Bodies for requests used in subsequent tests. var aPod = ` { "kind": "Pod", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "metadata": { "name": "a", "creationTimestamp": null%s @@ -131,7 +149,7 @@ var aPod = ` var aRC = ` { "kind": "ReplicationController", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "metadata": { "name": "a", "labels": { @@ -164,7 +182,7 @@ var aRC = ` var aService = ` { "kind": "Service", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "metadata": { "name": "a", "labels": { @@ -188,7 +206,7 @@ var aService = ` var aNode = ` { "kind": "Node", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "metadata": { "name": "a"%s }, @@ -202,7 +220,7 @@ func aEvent(namespace string) string { return ` { "kind": "Event", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "metadata": { "name": "a"%s }, @@ -219,7 +237,7 @@ func aEvent(namespace string) string { var aBinding = ` { "kind": "Binding", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "metadata": { "name": "a"%s }, @@ -242,7 +260,7 @@ var emptyEndpoints = ` var aEndpoints = ` { "kind": "Endpoints", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "metadata": { "name": "a"%s }, @@ -267,7 +285,7 @@ var aEndpoints = ` var deleteNow = ` { "kind": "DeleteOptions", - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "gracePeriodSeconds": 0%s } ` diff --git a/test/integration/auth/rbac_test.go b/test/integration/auth/rbac_test.go index b8600ef969b..da7461fb920 100644 --- a/test/integration/auth/rbac_test.go +++ b/test/integration/auth/rbac_test.go @@ -23,12 +23,12 @@ import ( "io/ioutil" "net/http" "net/http/httputil" + gopath "path" "reflect" "strings" "testing" "time" - api "k8s.io/api/core/v1" rbacapi "k8s.io/api/rbac/v1" apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -49,7 +49,6 @@ import ( featuregatetesting "k8s.io/component-base/featuregate/testing" "k8s.io/klog" "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/api/testapi" rbachelper "k8s.io/kubernetes/pkg/apis/rbac/v1" "k8s.io/kubernetes/pkg/master" "k8s.io/kubernetes/pkg/registry/rbac/clusterrole" @@ -193,12 +192,9 @@ func (s statusCode) String() string { // Declare a set of raw objects to use. var ( - // Make a role binding with the version enabled in testapi.Rbac - // This assumes testapi is using rbac.authorization.k8s.io/v1beta1 or rbac.authorization.k8s.io/v1, which are identical in structure. - // TODO: rework or remove testapi usage to allow writing integration tests that don't depend on envvars writeJobsRoleBinding = ` { - "apiVersion": "` + testapi.Rbac.GroupVersion().String() + `", + "apiVersion": "rbac.authorization.k8s.io/v1", "kind": "RoleBinding", "metadata": { "name": "pi"%s @@ -260,7 +256,7 @@ var ( ` podNamespace = ` { - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "pod-namespace"%s @@ -269,7 +265,7 @@ var ( ` jobNamespace = ` { - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "job-namespace"%s @@ -278,7 +274,7 @@ var ( ` forbiddenNamespace = ` { - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "forbidden-namespace"%s @@ -287,7 +283,7 @@ var ( ` limitRangeNamespace = ` { - "apiVersion": "` + testapi.Groups[api.GroupName].GroupVersion().String() + `", + "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "limitrange-namespace"%s @@ -560,12 +556,21 @@ func TestRBAC(t *testing.T) { previousResourceVersion := make(map[string]float64) for j, r := range tc.requests { - testGroup, ok := testapi.Groups[r.apiGroup] - if !ok { - t.Errorf("case %d %d: unknown api group %q, %s", i, j, r.apiGroup, r) - continue + path := "/" + if r.apiGroup == "" { + path = gopath.Join(path, "api/v1") + } else { + path = gopath.Join(path, "apis", r.apiGroup, "v1") + } + if r.namespace != "" { + path = gopath.Join(path, "namespaces", r.namespace) + } + if r.resource != "" { + path = gopath.Join(path, r.resource) + } + if r.name != "" { + path = gopath.Join(path, r.name) } - path := testGroup.ResourcePath(r.resource, r.namespace, r.name) var body io.Reader if r.body != "" { @@ -652,7 +657,7 @@ func TestBootstrapping(t *testing.T) { _, s, closeFn := framework.RunAMaster(masterConfig) defer closeFn() - clientset := clientset.NewForConfigOrDie(&restclient.Config{BearerToken: superUser, Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Groups[api.GroupName].GroupVersion()}}) + clientset := clientset.NewForConfigOrDie(&restclient.Config{BearerToken: superUser, Host: s.URL}) watcher, err := clientset.RbacV1().ClusterRoles().Watch(metav1.ListOptions{ResourceVersion: "0"}) if err != nil { @@ -712,7 +717,7 @@ func TestDiscoveryUpgradeBootstrapping(t *testing.T) { })) _, s, tearDownFn := framework.RunAMaster(masterConfig) - client := clientset.NewForConfigOrDie(&restclient.Config{BearerToken: superUser, Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Groups[api.GroupName].GroupVersion()}}) + client := clientset.NewForConfigOrDie(&restclient.Config{BearerToken: superUser, Host: s.URL}) // Modify the default RBAC discovery ClusterRoleBidnings to look more like the defaults that // existed prior to v1.14, but with user modifications. @@ -750,7 +755,7 @@ func TestDiscoveryUpgradeBootstrapping(t *testing.T) { // `system:discovery`, and respect auto-reconciliation annotations. _, s, tearDownFn = framework.RunAMaster(masterConfig) - client = clientset.NewForConfigOrDie(&restclient.Config{BearerToken: superUser, Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Groups[api.GroupName].GroupVersion()}}) + client = clientset.NewForConfigOrDie(&restclient.Config{BearerToken: superUser, Host: s.URL}) newDiscRoleBinding, err := client.RbacV1().ClusterRoleBindings().Get("system:discovery", metav1.GetOptions{}) if err != nil { diff --git a/test/integration/client/BUILD b/test/integration/client/BUILD index 66073bb551f..8f6fd280328 100644 --- a/test/integration/client/BUILD +++ b/test/integration/client/BUILD @@ -18,7 +18,6 @@ go_test( deps = [ "//cmd/kube-apiserver/app/testing:go_default_library", "//pkg/api/legacyscheme:go_default_library", - "//pkg/api/testapi:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -32,6 +31,7 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", "//staging/src/k8s.io/client-go/dynamic:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/component-base/version:go_default_library", "//test/integration/framework:go_default_library", "//test/utils/image:go_default_library", diff --git a/test/integration/client/dynamic_client_test.go b/test/integration/client/dynamic_client_test.go index 360c0a698f2..930829c666d 100644 --- a/test/integration/client/dynamic_client_test.go +++ b/test/integration/client/dynamic_client_test.go @@ -32,8 +32,8 @@ import ( "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/dynamic" clientset "k8s.io/client-go/kubernetes" + clientscheme "k8s.io/client-go/kubernetes/scheme" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/test/integration/framework" ) @@ -208,7 +208,7 @@ func unstructuredToPod(obj *unstructured.Unstructured) (*v1.Pod, error) { return nil, err } pod := new(v1.Pod) - err = runtime.DecodeInto(testapi.Default.Codec(), json, pod) + err = runtime.DecodeInto(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), json, pod) pod.Kind = "" pod.APIVersion = "" return pod, err @@ -220,6 +220,6 @@ func unstructuredToEvent(obj *unstructured.Unstructured) (*v1.Event, error) { return nil, err } event := new(v1.Event) - err = runtime.DecodeInto(testapi.Default.Codec(), json, event) + err = runtime.DecodeInto(clientscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), json, event) return event, err }