diff --git a/hack/update-openapi-spec.sh b/hack/update-openapi-spec.sh index 572089126a4..9fd67e960de 100755 --- a/hack/update-openapi-spec.sh +++ b/hack/update-openapi-spec.sh @@ -66,7 +66,7 @@ kube::log::status "Starting kube-apiserver" --etcd-servers="http://${ETCD_HOST}:${ETCD_PORT}" \ --advertise-address="10.10.10.10" \ --cert-dir="${TMP_DIR}/certs" \ - --runtime-config="api/all=true" \ + --runtime-config="api/all=true,extensions/v1beta1/daemonsets=true,extensions/v1beta1/deployments=true,extensions/v1beta1/replicasets=true,extensions/v1beta1/networkpolicies=true,extensions/v1beta1/podsecuritypolicies=true,extensions/v1beta1/replicationcontrollers=true" \ --token-auth-file="${TMP_DIR}/tokenauth.csv" \ --logtostderr \ --v=2 \ diff --git a/test/integration/apiserver/BUILD b/test/integration/apiserver/BUILD index 745bba58b94..bf404be616f 100644 --- a/test/integration/apiserver/BUILD +++ b/test/integration/apiserver/BUILD @@ -25,9 +25,12 @@ go_test( "//pkg/printers:go_default_library", "//pkg/printers/internalversion:go_default_library", "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", "//staging/src/k8s.io/api/auditregistration/v1alpha1:go_default_library", "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", diff --git a/test/integration/apiserver/apiserver_test.go b/test/integration/apiserver/apiserver_test.go index 9afc1c14e0f..9ecb123f920 100644 --- a/test/integration/apiserver/apiserver_test.go +++ b/test/integration/apiserver/apiserver_test.go @@ -45,10 +45,15 @@ import ( ) func setup(t *testing.T, groupVersions ...schema.GroupVersion) (*httptest.Server, clientset.Interface, framework.CloseFunc) { + return setupWithResources(t, groupVersions, nil) +} + +func setupWithResources(t *testing.T, groupVersions []schema.GroupVersion, resources []schema.GroupVersionResource) (*httptest.Server, clientset.Interface, framework.CloseFunc) { masterConfig := framework.NewIntegrationTestMasterConfig() - if len(groupVersions) > 0 { + if len(groupVersions) > 0 || len(resources) > 0 { resourceConfig := master.DefaultAPIResourceConfigSource() resourceConfig.EnableVersions(groupVersions...) + resourceConfig.EnableResources(resources...) masterConfig.ExtraConfig.APIResourceConfigSource = resourceConfig } _, s, closeFn := framework.RunAMaster(masterConfig) diff --git a/test/integration/apiserver/print_test.go b/test/integration/apiserver/print_test.go index ff21b2f82ba..bbf8bfaf09c 100644 --- a/test/integration/apiserver/print_test.go +++ b/test/integration/apiserver/print_test.go @@ -26,8 +26,11 @@ import ( "testing" "time" + appsv1beta1 "k8s.io/api/apps/v1beta1" + appsv1beta2 "k8s.io/api/apps/v1beta2" auditregv1alpha1 "k8s.io/api/auditregistration/v1alpha1" batchv2alpha1 "k8s.io/api/batch/v2alpha1" + extensionsv1beta1 "k8s.io/api/extensions/v1beta1" rbacv1alpha1 "k8s.io/api/rbac/v1alpha1" schedulerapi "k8s.io/api/scheduling/v1beta1" settingsv1alpha1 "k8s.io/api/settings/v1alpha1" @@ -35,6 +38,7 @@ import ( "k8s.io/apimachinery/pkg/api/meta" metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/client-go/discovery" "k8s.io/client-go/tools/clientcmd" @@ -131,14 +135,27 @@ var missingHanlders = sets.NewString( ) func TestServerSidePrint(t *testing.T) { - s, _, closeFn := setup(t, + s, _, closeFn := setupWithResources(t, // additional groupversions needed for the test to run - auditregv1alpha1.SchemeGroupVersion, - batchv2alpha1.SchemeGroupVersion, - rbacv1alpha1.SchemeGroupVersion, - settingsv1alpha1.SchemeGroupVersion, - schedulerapi.SchemeGroupVersion, - storagev1alpha1.SchemeGroupVersion) + []schema.GroupVersion{ + auditregv1alpha1.SchemeGroupVersion, + batchv2alpha1.SchemeGroupVersion, + rbacv1alpha1.SchemeGroupVersion, + settingsv1alpha1.SchemeGroupVersion, + schedulerapi.SchemeGroupVersion, + storagev1alpha1.SchemeGroupVersion, + appsv1beta1.SchemeGroupVersion, + appsv1beta2.SchemeGroupVersion, + extensionsv1beta1.SchemeGroupVersion, + }, + []schema.GroupVersionResource{ + extensionsv1beta1.SchemeGroupVersion.WithResource("daemonsets"), + extensionsv1beta1.SchemeGroupVersion.WithResource("deployments"), + extensionsv1beta1.SchemeGroupVersion.WithResource("networkpolicies"), + extensionsv1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"), + extensionsv1beta1.SchemeGroupVersion.WithResource("replicasets"), + }, + ) defer closeFn() ns := framework.CreateTestingNamespace("server-print", s, t) diff --git a/test/integration/etcd/BUILD b/test/integration/etcd/BUILD index d86e89cc42d..886566f7ffd 100644 --- a/test/integration/etcd/BUILD +++ b/test/integration/etcd/BUILD @@ -15,6 +15,7 @@ go_test( "integration", ], deps = [ + "//cmd/kube-apiserver/app/options:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", diff --git a/test/integration/etcd/etcd_storage_path_test.go b/test/integration/etcd/etcd_storage_path_test.go index 0335a5030c2..50a5b4ca101 100644 --- a/test/integration/etcd/etcd_storage_path_test.go +++ b/test/integration/etcd/etcd_storage_path_test.go @@ -35,6 +35,7 @@ import ( "k8s.io/apimachinery/pkg/util/diff" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/dynamic" + "k8s.io/kubernetes/cmd/kube-apiserver/app/options" ) // Only add kinds to this list when this a virtual resource with get and create verbs that doesn't actually @@ -49,7 +50,15 @@ const testNamespace = "etcdstoragepathtestnamespace" // It will also fail when a type gets moved to a different location. Be very careful in this situation because // it essentially means that you will be break old clusters unless you create some migration path for the old data. func TestEtcdStoragePath(t *testing.T) { - master := StartRealMasterOrDie(t) + master := StartRealMasterOrDie(t, func(opts *options.ServerRunOptions) { + // force enable all resources so we can check storage. + // TODO: drop these once we stop allowing them to be served. + opts.APIEnablement.RuntimeConfig["extensions/v1beta1/deployments"] = "true" + opts.APIEnablement.RuntimeConfig["extensions/v1beta1/daemonsets"] = "true" + opts.APIEnablement.RuntimeConfig["extensions/v1beta1/replicasets"] = "true" + opts.APIEnablement.RuntimeConfig["extensions/v1beta1/podsecuritypolicies"] = "true" + opts.APIEnablement.RuntimeConfig["extensions/v1beta1/networkpolicies"] = "true" + }) defer master.Cleanup() defer dumpEtcdKVOnFailure(t, master.KV) diff --git a/test/integration/etcd/server.go b/test/integration/etcd/server.go index 8c433618014..60df584222a 100644 --- a/test/integration/etcd/server.go +++ b/test/integration/etcd/server.go @@ -54,7 +54,7 @@ import ( ) // StartRealMasterOrDie starts an API master that is appropriate for use in tests that require one of every resource -func StartRealMasterOrDie(t *testing.T) *Master { +func StartRealMasterOrDie(t *testing.T, configFuncs ...func(*options.ServerRunOptions)) *Master { certDir, err := ioutil.TempDir("", t.Name()) if err != nil { t.Fatal(err) @@ -79,13 +79,14 @@ func StartRealMasterOrDie(t *testing.T) *Master { kubeAPIServerOptions.ServiceClusterIPRange = *defaultServiceClusterIPRange kubeAPIServerOptions.Authorization.Modes = []string{"RBAC"} kubeAPIServerOptions.Admission.GenericAdmission.DisablePlugins = []string{"ServiceAccount"} + kubeAPIServerOptions.APIEnablement.RuntimeConfig["api/all"] = "true" + for _, f := range configFuncs { + f(kubeAPIServerOptions) + } completedOptions, err := app.Complete(kubeAPIServerOptions) if err != nil { t.Fatal(err) } - if err := completedOptions.APIEnablement.RuntimeConfig.Set("api/all=true"); err != nil { - t.Fatal(err) - } // get etcd client before starting API server rawClient, kvClient, err := integration.GetEtcdClients(completedOptions.Etcd.StorageConfig.Transport) diff --git a/test/integration/scale/scale_test.go b/test/integration/scale/scale_test.go index 6c4db98a3b1..1b30bc950f6 100644 --- a/test/integration/scale/scale_test.go +++ b/test/integration/scale/scale_test.go @@ -52,7 +52,11 @@ func TestMain(m *testing.M) { } func TestScaleSubresources(t *testing.T) { - clientSet, tearDown := setup(t) + clientSet, tearDown := setupWithOptions(t, nil, []string{ + "--runtime-config", + // TODO(liggitt): remove these once apps/v1beta1, apps/v1beta2, and extensions/v1beta1 can no longer be served + "api/all=true,extensions/v1beta1/deployments=true,extensions/v1beta1/replicationcontrollers=true,extensions/v1beta1/replicasets=true", + }) defer tearDown() resourceLists, err := clientSet.Discovery().ServerResources() @@ -63,6 +67,7 @@ func TestScaleSubresources(t *testing.T) { expectedScaleSubresources := map[schema.GroupVersionResource]schema.GroupVersionKind{ makeGVR("", "v1", "replicationcontrollers/scale"): makeGVK("autoscaling", "v1", "Scale"), + // TODO(liggitt): remove these once apps/v1beta1, apps/v1beta2, and extensions/v1beta1 can no longer be served makeGVR("extensions", "v1beta1", "deployments/scale"): makeGVK("extensions", "v1beta1", "Scale"), makeGVR("extensions", "v1beta1", "replicationcontrollers/scale"): makeGVK("extensions", "v1beta1", "Scale"), makeGVR("extensions", "v1beta1", "replicasets/scale"): makeGVK("extensions", "v1beta1", "Scale"), @@ -215,7 +220,11 @@ var ( ) func setup(t *testing.T) (client kubernetes.Interface, tearDown func()) { - result := apitesting.StartTestServerOrDie(t, nil, nil, framework.SharedEtcd()) + return setupWithOptions(t, nil, nil) +} + +func setupWithOptions(t *testing.T, instanceOptions *apitesting.TestServerInstanceOptions, flags []string) (client kubernetes.Interface, tearDown func()) { + result := apitesting.StartTestServerOrDie(t, instanceOptions, flags, framework.SharedEtcd()) // TODO: Disable logging here until we resolve teardown issues which result in // massive log spam. Another path forward would be to refactor