diff --git a/cmd/kube-apiserver/app/BUILD b/cmd/kube-apiserver/app/BUILD index 31b6b0f9b9a..ee265b95ab9 100644 --- a/cmd/kube-apiserver/app/BUILD +++ b/cmd/kube-apiserver/app/BUILD @@ -39,7 +39,7 @@ go_library( "//pkg/kubeapiserver/options:go_default_library", "//pkg/kubeapiserver/server:go_default_library", "//pkg/master:go_default_library", - "//pkg/master/thirdparty:go_default_library", + "//pkg/master/controller/crdregistration:go_default_library", "//pkg/master/tunneler:go_default_library", "//pkg/quota/install:go_default_library", "//pkg/registry/cachesize:go_default_library", @@ -89,7 +89,6 @@ go_library( "//vendor/k8s.io/apiserver/pkg/admission:go_default_library", "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", "//vendor/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/filters:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", diff --git a/cmd/kube-apiserver/app/aggregator.go b/cmd/kube-apiserver/app/aggregator.go index de77ef2e911..d4a884e75f0 100644 --- a/cmd/kube-apiserver/app/aggregator.go +++ b/cmd/kube-apiserver/app/aggregator.go @@ -41,7 +41,7 @@ import ( apiregistrationclient "k8s.io/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion" "k8s.io/kube-aggregator/pkg/controllers/autoregister" "k8s.io/kubernetes/cmd/kube-apiserver/app/options" - "k8s.io/kubernetes/pkg/master/thirdparty" + "k8s.io/kubernetes/pkg/master/controller/crdregistration" ) func createAggregatorConfig(kubeAPIServerConfig genericapiserver.Config, commandOptions *options.ServerRunOptions, externalInformers kubeexternalinformers.SharedInformerFactory, serviceResolver aggregatorapiserver.ServiceResolver, proxyTransport *http.Transport) (*aggregatorapiserver.Config, error) { @@ -97,7 +97,7 @@ func createAggregatorServer(aggregatorConfig *aggregatorapiserver.Config, delega } autoRegistrationController := autoregister.NewAutoRegisterController(aggregatorServer.APIRegistrationInformers.Apiregistration().InternalVersion().APIServices(), apiRegistrationClient) apiServices := apiServicesToRegister(delegateAPIServer, autoRegistrationController) - crdRegistrationController := thirdparty.NewAutoRegistrationController( + crdRegistrationController := crdregistration.NewAutoRegistrationController( apiExtensionInformers.Apiextensions().InternalVersion().CustomResourceDefinitions(), autoRegistrationController) diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index 48dd9316b04..a5087c8f7c8 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -47,7 +47,6 @@ import ( "k8s.io/apiserver/pkg/admission" "k8s.io/apiserver/pkg/authentication/authenticator" "k8s.io/apiserver/pkg/authorization/authorizer" - genericregistry "k8s.io/apiserver/pkg/registry/generic" genericapiserver "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/server/filters" "k8s.io/apiserver/pkg/server/options/encryptionconfig" @@ -132,7 +131,7 @@ func Run(runOptions *options.ServerRunOptions, stopCh <-chan struct{}) error { return err } - kubeAPIServer, err := CreateKubeAPIServer(kubeAPIServerConfig, apiExtensionsServer.GenericAPIServer, sharedInformers, apiExtensionsConfig.CRDRESTOptionsGetter) + kubeAPIServer, err := CreateKubeAPIServer(kubeAPIServerConfig, apiExtensionsServer.GenericAPIServer, sharedInformers) if err != nil { return err } @@ -178,8 +177,8 @@ func Run(runOptions *options.ServerRunOptions, stopCh <-chan struct{}) error { } // CreateKubeAPIServer creates and wires a workable kube-apiserver -func CreateKubeAPIServer(kubeAPIServerConfig *master.Config, delegateAPIServer genericapiserver.DelegationTarget, sharedInformers informers.SharedInformerFactory, crdRESTOptionsGetter genericregistry.RESTOptionsGetter) (*master.Master, error) { - kubeAPIServer, err := kubeAPIServerConfig.Complete().New(delegateAPIServer, crdRESTOptionsGetter) +func CreateKubeAPIServer(kubeAPIServerConfig *master.Config, delegateAPIServer genericapiserver.DelegationTarget, sharedInformers informers.SharedInformerFactory) (*master.Master, error) { + kubeAPIServer, err := kubeAPIServerConfig.Complete().New(delegateAPIServer) if err != nil { return nil, err } diff --git a/pkg/apis/extensions/validation/validation.go b/pkg/apis/extensions/validation/validation.go index 4be86af92dd..ace36544ffa 100644 --- a/pkg/apis/extensions/validation/validation.go +++ b/pkg/apis/extensions/validation/validation.go @@ -40,55 +40,6 @@ import ( psputil "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util" ) -func ValidateThirdPartyResourceUpdate(update, old *extensions.ThirdPartyResource) field.ErrorList { - allErrs := field.ErrorList{} - allErrs = append(allErrs, apivalidation.ValidateObjectMetaUpdate(&update.ObjectMeta, &old.ObjectMeta, field.NewPath("metadata"))...) - allErrs = append(allErrs, ValidateThirdPartyResource(update)...) - return allErrs -} - -func ValidateThirdPartyResourceName(name string, prefix bool) []string { - // Make sure it's a valid DNS subdomain - if msgs := apivalidation.NameIsDNSSubdomain(name, prefix); len(msgs) != 0 { - return msgs - } - - // Make sure it's at least three segments (kind + two-segment group name) - if !prefix { - parts := strings.Split(name, ".") - if len(parts) < 3 { - return []string{"must be at least three segments long: .."} - } - } - - return nil -} - -func ValidateThirdPartyResource(obj *extensions.ThirdPartyResource) field.ErrorList { - allErrs := field.ErrorList{} - allErrs = append(allErrs, apivalidation.ValidateObjectMeta(&obj.ObjectMeta, false, ValidateThirdPartyResourceName, field.NewPath("metadata"))...) - - versions := sets.String{} - if len(obj.Versions) == 0 { - allErrs = append(allErrs, field.Required(field.NewPath("versions"), "must specify at least one version")) - } - for ix := range obj.Versions { - version := &obj.Versions[ix] - if len(version.Name) == 0 { - allErrs = append(allErrs, field.Invalid(field.NewPath("versions").Index(ix).Child("name"), version, "must not be empty")) - } else { - for _, msg := range validation.IsDNS1123Label(version.Name) { - allErrs = append(allErrs, field.Invalid(field.NewPath("versions").Index(ix).Child("name"), version, msg)) - } - } - if versions.Has(version.Name) { - allErrs = append(allErrs, field.Duplicate(field.NewPath("versions").Index(ix).Child("name"), version)) - } - versions.Insert(version.Name) - } - return allErrs -} - // ValidateDaemonSet tests if required fields in the DaemonSet are set. func ValidateDaemonSet(ds *extensions.DaemonSet) field.ErrorList { allErrs := apivalidation.ValidateObjectMeta(&ds.ObjectMeta, true, ValidateDaemonSetName, field.NewPath("metadata")) @@ -427,14 +378,6 @@ func ValidateDeploymentRollback(obj *extensions.DeploymentRollback) field.ErrorL return allErrs } -func ValidateThirdPartyResourceDataUpdate(update, old *extensions.ThirdPartyResourceData) field.ErrorList { - return apivalidation.ValidateObjectMetaUpdate(&update.ObjectMeta, &old.ObjectMeta, field.NewPath("metadata")) -} - -func ValidateThirdPartyResourceData(obj *extensions.ThirdPartyResourceData) field.ErrorList { - return apivalidation.ValidateObjectMeta(&obj.ObjectMeta, true, apivalidation.NameIsDNSLabel, field.NewPath("metadata")) -} - // ValidateIngress tests if required fields in the Ingress are set. func ValidateIngress(ingress *extensions.Ingress) field.ErrorList { allErrs := apivalidation.ValidateObjectMeta(&ingress.ObjectMeta, true, ValidateIngressName, field.NewPath("metadata")) diff --git a/pkg/kubectl/cmd/annotate.go b/pkg/kubectl/cmd/annotate.go index e60c0ed4584..b72aa0a9060 100644 --- a/pkg/kubectl/cmd/annotate.go +++ b/pkg/kubectl/cmd/annotate.go @@ -225,7 +225,7 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro var outputObj runtime.Object var obj runtime.Object - obj, err = cmdutil.MaybeConvertObject(info.Object, info.Mapping.GroupVersionKind.GroupVersion(), info.Mapping) + obj, err = info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion()) if err != nil { return err } diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index 1bafc28778c..3d61edd280f 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -238,7 +238,6 @@ __custom_func() { * services (aka 'svc') * statefulsets * storageclasses - * thirdpartyresources ` ) diff --git a/pkg/kubectl/cmd/patch.go b/pkg/kubectl/cmd/patch.go index 8e3111ac1c4..431e89619f3 100644 --- a/pkg/kubectl/cmd/patch.go +++ b/pkg/kubectl/cmd/patch.go @@ -150,7 +150,7 @@ func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin return fmt.Errorf("unable to parse %q: %v", patch, err) } - // TODO: fix --local to work with thirdpartyresources without making use of the discovery client. + // TODO: fix --local to work with customresources without making use of the discovery client. // https://github.com/kubernetes/kubernetes/issues/46722 builder, err := f.NewUnstructuredBuilder(true) if err != nil { diff --git a/pkg/kubectl/cmd/util/helpers.go b/pkg/kubectl/cmd/util/helpers.go index 7a1d76d3222..dceceb077b1 100644 --- a/pkg/kubectl/cmd/util/helpers.go +++ b/pkg/kubectl/cmd/util/helpers.go @@ -45,7 +45,6 @@ import ( "k8s.io/apimachinery/pkg/util/yaml" "k8s.io/client-go/tools/clientcmd" "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/printers" @@ -676,18 +675,6 @@ func ParsePairs(pairArgs []string, pairType string, supportRemove bool) (newPair return } -// MaybeConvertObject attempts to convert an object to a specific group/version. If the object is -// a third party resource it is simply passed through. -func MaybeConvertObject(obj runtime.Object, gv schema.GroupVersion, converter runtime.ObjectConvertor) (runtime.Object, error) { - switch obj.(type) { - case *extensions.ThirdPartyResourceData: - // conversion is not supported for 3rd party objects - return obj, nil - default: - return converter.ConvertToVersion(obj, gv) - } -} - // MustPrintWithKinds determines if printer is dealing // with multiple resource kinds, in which case it will // return true, indicating resource kind will be diff --git a/pkg/kubectl/cmd/util/helpers_test.go b/pkg/kubectl/cmd/util/helpers_test.go index 37278802153..87fa3c8a593 100644 --- a/pkg/kubectl/cmd/util/helpers_test.go +++ b/pkg/kubectl/cmd/util/helpers_test.go @@ -25,7 +25,6 @@ import ( "syscall" "testing" - "k8s.io/api/core/v1" apiequality "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" @@ -36,7 +35,6 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/testapi" apitesting "k8s.io/kubernetes/pkg/api/testing" - "k8s.io/kubernetes/pkg/apis/extensions" uexec "k8s.io/kubernetes/pkg/util/exec" ) @@ -321,53 +319,3 @@ func TestDumpReaderToFile(t *testing.T) { t.Fatalf("Wrong file content %s != %s", testString, stringData) } } - -func TestMaybeConvert(t *testing.T) { - tests := []struct { - input runtime.Object - gv schema.GroupVersion - expected runtime.Object - }{ - { - input: &api.Pod{ - ObjectMeta: metav1.ObjectMeta{ - Name: "foo", - }, - }, - gv: schema.GroupVersion{Group: "", Version: "v1"}, - expected: &v1.Pod{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "v1", - Kind: "Pod", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "foo", - }, - }, - }, - { - input: &extensions.ThirdPartyResourceData{ - ObjectMeta: metav1.ObjectMeta{ - Name: "foo", - }, - Data: []byte("this is some data"), - }, - expected: &extensions.ThirdPartyResourceData{ - ObjectMeta: metav1.ObjectMeta{ - Name: "foo", - }, - Data: []byte("this is some data"), - }, - }, - } - - for _, test := range tests { - obj, err := MaybeConvertObject(test.input, test.gv, testapi.Default.Converter()) - if err != nil { - t.Errorf("unexpected error: %v", err) - } - if !apiequality.Semantic.DeepEqual(test.expected, obj) { - t.Errorf("expected:\n%#v\nsaw:\n%#v\n", test.expected, obj) - } - } -} diff --git a/pkg/kubectl/resource/BUILD b/pkg/kubectl/resource/BUILD index 8f9b8176d35..637a3fb3ac7 100644 --- a/pkg/kubectl/resource/BUILD +++ b/pkg/kubectl/resource/BUILD @@ -26,7 +26,6 @@ go_library( deps = [ "//pkg/api:go_default_library", "//pkg/api/validation:go_default_library", - "//pkg/apis/extensions:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/golang.org/x/text/encoding/unicode:go_default_library", "//vendor/golang.org/x/text/transform:go_default_library", diff --git a/pkg/kubectl/resource/result.go b/pkg/kubectl/resource/result.go index c77502bfec0..bb185754c5c 100644 --- a/pkg/kubectl/resource/result.go +++ b/pkg/kubectl/resource/result.go @@ -30,7 +30,6 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/watch" "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/apis/extensions" ) // ErrMatchFunc can be used to filter errors that may not be true failures. @@ -266,13 +265,6 @@ func AsVersionedObjects(infos []*Info, version schema.GroupVersion, encoder runt continue } - // TODO: use info.VersionedObject as the value? - switch obj := info.Object.(type) { - case *extensions.ThirdPartyResourceData: - objects = append(objects, &runtime.Unknown{Raw: obj.Data}) - continue - } - // objects that are not part of api.Scheme must be converted to JSON // TODO: convert to map[string]interface{}, attach to runtime.Unknown? if !version.Empty() { diff --git a/pkg/master/BUILD b/pkg/master/BUILD index b532f76f0dc..841ae34168d 100644 --- a/pkg/master/BUILD +++ b/pkg/master/BUILD @@ -165,8 +165,8 @@ filegroup( name = "all-srcs", srcs = [ ":package-srcs", + "//pkg/master/controller/crdregistration:all-srcs", "//pkg/master/ports:all-srcs", - "//pkg/master/thirdparty:all-srcs", "//pkg/master/tunneler:all-srcs", ], tags = ["automanaged"], diff --git a/pkg/master/thirdparty/BUILD b/pkg/master/controller/crdregistration/BUILD similarity index 95% rename from pkg/master/thirdparty/BUILD rename to pkg/master/controller/crdregistration/BUILD index bbb0536fd4f..b079131ba03 100644 --- a/pkg/master/thirdparty/BUILD +++ b/pkg/master/controller/crdregistration/BUILD @@ -10,7 +10,7 @@ load( go_library( name = "go_default_library", - srcs = ["tprregistration_controller.go"], + srcs = ["crdregistration_controller.go"], tags = ["automanaged"], deps = [ "//pkg/controller:go_default_library", @@ -44,7 +44,7 @@ filegroup( go_test( name = "go_default_test", - srcs = ["tprregistration_controller_test.go"], + srcs = ["crdregistration_controller_test.go"], library = ":go_default_library", tags = ["automanaged"], deps = [ diff --git a/pkg/master/thirdparty/tprregistration_controller.go b/pkg/master/controller/crdregistration/crdregistration_controller.go similarity index 99% rename from pkg/master/thirdparty/tprregistration_controller.go rename to pkg/master/controller/crdregistration/crdregistration_controller.go index bfaa0421661..62b29114165 100644 --- a/pkg/master/thirdparty/tprregistration_controller.go +++ b/pkg/master/controller/crdregistration/crdregistration_controller.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package thirdparty +package crdregistration import ( "fmt" diff --git a/pkg/master/thirdparty/tprregistration_controller_test.go b/pkg/master/controller/crdregistration/crdregistration_controller_test.go similarity index 99% rename from pkg/master/thirdparty/tprregistration_controller_test.go rename to pkg/master/controller/crdregistration/crdregistration_controller_test.go index b4573a5fa30..1e2d8df5879 100644 --- a/pkg/master/thirdparty/tprregistration_controller_test.go +++ b/pkg/master/controller/crdregistration/crdregistration_controller_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package thirdparty +package crdregistration import ( "reflect" diff --git a/pkg/master/master.go b/pkg/master/master.go index 20434f5ea2f..1b4a6a18b64 100644 --- a/pkg/master/master.go +++ b/pkg/master/master.go @@ -45,7 +45,6 @@ import ( utilnet "k8s.io/apimachinery/pkg/util/net" "k8s.io/apiserver/pkg/endpoints/discovery" "k8s.io/apiserver/pkg/registry/generic" - genericregistry "k8s.io/apiserver/pkg/registry/generic" genericapiserver "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/server/healthz" serverstorage "k8s.io/apiserver/pkg/server/storage" @@ -209,7 +208,7 @@ func (c *Config) SkipComplete() completedConfig { // Certain config fields will be set to a default value if unset. // Certain config fields must be specified, including: // KubeletClientConfig -func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget, crdRESTOptionsGetter genericregistry.RESTOptionsGetter) (*Master, error) { +func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) (*Master, error) { if reflect.DeepEqual(c.KubeletClientConfig, kubeletclient.KubeletClientConfig{}) { return nil, fmt.Errorf("Master.New() called with empty config.KubeletClientConfig") } @@ -257,7 +256,6 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget, autoscalingrest.RESTStorageProvider{}, batchrest.RESTStorageProvider{}, certificatesrest.RESTStorageProvider{}, - // TODO(enisoc): Remove crdRESTOptionsGetter input argument when TPR code is removed. extensionsrest.RESTStorageProvider{}, networkingrest.RESTStorageProvider{}, policyrest.RESTStorageProvider{}, @@ -411,7 +409,6 @@ func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig { extensionsapiv1beta1.SchemeGroupVersion.WithResource("ingresses"), extensionsapiv1beta1.SchemeGroupVersion.WithResource("networkpolicies"), extensionsapiv1beta1.SchemeGroupVersion.WithResource("replicasets"), - extensionsapiv1beta1.SchemeGroupVersion.WithResource("thirdpartyresources"), extensionsapiv1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"), ) diff --git a/pkg/master/master_openapi_test.go b/pkg/master/master_openapi_test.go index 7e9f0c78635..4629e4159eb 100644 --- a/pkg/master/master_openapi_test.go +++ b/pkg/master/master_openapi_test.go @@ -54,7 +54,7 @@ func TestValidOpenAPISpec(t *testing.T) { } config.GenericConfig.SwaggerConfig = genericapiserver.DefaultSwaggerConfig() - master, err := config.Complete().New(genericapiserver.EmptyDelegate, nil) + master, err := config.Complete().New(genericapiserver.EmptyDelegate) if err != nil { t.Fatalf("Error in bringing up the master: %v", err) } diff --git a/pkg/master/master_test.go b/pkg/master/master_test.go index e69bd2701e9..05c800372f2 100644 --- a/pkg/master/master_test.go +++ b/pkg/master/master_test.go @@ -115,7 +115,7 @@ func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertion func newMaster(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.Assertions) { etcdserver, config, assert := setUp(t) - master, err := config.Complete().New(genericapiserver.EmptyDelegate, nil) + master, err := config.Complete().New(genericapiserver.EmptyDelegate) if err != nil { t.Fatalf("Error in bringing up the master: %v", err) } @@ -141,7 +141,7 @@ func limitedAPIResourceConfigSource() *serverstorage.ResourceConfig { func newLimitedMaster(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.Assertions) { etcdserver, config, assert := setUp(t) config.APIResourceConfigSource = limitedAPIResourceConfigSource() - master, err := config.Complete().New(genericapiserver.EmptyDelegate, nil) + master, err := config.Complete().New(genericapiserver.EmptyDelegate) if err != nil { t.Fatalf("Error in bringing up the master: %v", err) } diff --git a/pkg/printers/internalversion/printers.go b/pkg/printers/internalversion/printers.go index 8c15b4b4e31..443790e2756 100644 --- a/pkg/printers/internalversion/printers.go +++ b/pkg/printers/internalversion/printers.go @@ -82,8 +82,6 @@ var ( storageClassColumns = []string{"NAME", "PROVISIONER"} statusColumns = []string{"STATUS", "REASON", "MESSAGE"} - // TODO: consider having 'KIND' for third party resource data - thirdPartyResourceDataColumns = []string{"NAME", "LABELS", "DATA"} horizontalPodAutoscalerColumns = []string{"NAME", "REFERENCE", "TARGETS", "MINPODS", "MAXPODS", "REPLICAS", "AGE"} deploymentColumns = []string{"NAME", "DESIRED", "CURRENT", "UP-TO-DATE", "AVAILABLE", "AGE"} deploymentWideColumns = []string{"CONTAINER(S)", "IMAGE(S)", "SELECTOR"} @@ -232,8 +230,6 @@ func AddHandlers(h printers.PrintHandler) { h.Handler(configMapColumns, nil, printConfigMapList) h.Handler(podSecurityPolicyColumns, nil, printPodSecurityPolicy) h.Handler(podSecurityPolicyColumns, nil, printPodSecurityPolicyList) - h.Handler(thirdPartyResourceDataColumns, nil, printThirdPartyResourceData) - h.Handler(thirdPartyResourceDataColumns, nil, printThirdPartyResourceDataList) h.Handler(clusterColumns, nil, printCluster) h.Handler(clusterColumns, nil, printClusterList) h.Handler(networkPolicyColumns, nil, printExtensionsNetworkPolicy) @@ -1488,30 +1484,6 @@ func truncate(str string, maxLen int) string { return str } -func printThirdPartyResourceData(rsrc *extensions.ThirdPartyResourceData, w io.Writer, options printers.PrintOptions) error { - name := printers.FormatResourceName(options.Kind, rsrc.Name, options.WithKind) - - l := labels.FormatLabels(rsrc.Labels) - truncateCols := 50 - if options.Wide { - truncateCols = 100 - } - if _, err := fmt.Fprintf(w, "%s\t%s\t%s\n", name, l, truncate(string(rsrc.Data), truncateCols)); err != nil { - return err - } - return nil -} - -func printThirdPartyResourceDataList(list *extensions.ThirdPartyResourceDataList, w io.Writer, options printers.PrintOptions) error { - for _, item := range list.Items { - if err := printThirdPartyResourceData(&item, w, options); err != nil { - return err - } - } - - return nil -} - func printDeployment(deployment *extensions.Deployment, w io.Writer, options printers.PrintOptions) error { name := printers.FormatResourceName(options.Kind, deployment.Name, options.WithKind) diff --git a/staging/src/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go b/staging/src/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go index a8041d7fec1..9ec73b040c8 100644 --- a/staging/src/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go @@ -102,8 +102,8 @@ func TestValidateObjectMetaOwnerReferences(t *testing.T) { description: "simple success - third party extension.", ownerReferences: []metav1.OwnerReference{ { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "1", }, @@ -128,29 +128,29 @@ func TestValidateObjectMetaOwnerReferences(t *testing.T) { description: "simple controller ref success - one reference with Controller set", ownerReferences: []metav1.OwnerReference{ { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "1", Controller: &falseVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "2", Controller: &trueVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "3", Controller: &falseVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "4", }, @@ -162,29 +162,29 @@ func TestValidateObjectMetaOwnerReferences(t *testing.T) { description: "simple controller ref failure - two references with Controller set", ownerReferences: []metav1.OwnerReference{ { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "1", Controller: &falseVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "2", Controller: &trueVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "3", Controller: &trueVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "4", }, diff --git a/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go b/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go index f2e32c88cdf..5150db01659 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go +++ b/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go @@ -42,10 +42,6 @@ type APIRegistrationManager struct { // registeredGroupVersions stores all API group versions for which RegisterGroup is called. registeredVersions map[schema.GroupVersion]struct{} - // thirdPartyGroupVersions are API versions which are dynamically - // registered (and unregistered) via API calls to the apiserver - thirdPartyGroupVersions []schema.GroupVersion - // enabledVersions represents all enabled API versions. It should be a // subset of registeredVersions. Please call EnableVersions() to add // enabled versions. @@ -66,11 +62,10 @@ type APIRegistrationManager struct { // wish to test. func NewAPIRegistrationManager(kubeAPIVersions string) (*APIRegistrationManager, error) { m := &APIRegistrationManager{ - registeredVersions: map[schema.GroupVersion]struct{}{}, - thirdPartyGroupVersions: []schema.GroupVersion{}, - enabledVersions: map[schema.GroupVersion]struct{}{}, - groupMetaMap: map[string]*apimachinery.GroupMeta{}, - envRequestedVersions: []schema.GroupVersion{}, + registeredVersions: map[schema.GroupVersion]struct{}{}, + enabledVersions: map[schema.GroupVersion]struct{}{}, + groupMetaMap: map[string]*apimachinery.GroupMeta{}, + envRequestedVersions: []schema.GroupVersion{}, } if len(kubeAPIVersions) != 0 { @@ -211,41 +206,6 @@ func (m *APIRegistrationManager) RegisteredGroupVersions() []schema.GroupVersion return ret } -// IsThirdPartyAPIGroupVersion returns true if the api version is a user-registered group/version. -func (m *APIRegistrationManager) IsThirdPartyAPIGroupVersion(gv schema.GroupVersion) bool { - for ix := range m.thirdPartyGroupVersions { - if m.thirdPartyGroupVersions[ix] == gv { - return true - } - } - return false -} - -// AddThirdPartyAPIGroupVersions sets the list of third party versions, -// registers them in the API machinery and enables them. -// Skips GroupVersions that are already registered. -// Returns the list of GroupVersions that were skipped. -func (m *APIRegistrationManager) AddThirdPartyAPIGroupVersions(gvs ...schema.GroupVersion) []schema.GroupVersion { - filteredGVs := []schema.GroupVersion{} - skippedGVs := []schema.GroupVersion{} - for ix := range gvs { - if !m.IsRegisteredVersion(gvs[ix]) { - filteredGVs = append(filteredGVs, gvs[ix]) - } else { - glog.V(3).Infof("Skipping %s, because its already registered", gvs[ix].String()) - skippedGVs = append(skippedGVs, gvs[ix]) - } - } - if len(filteredGVs) == 0 { - return skippedGVs - } - m.RegisterVersions(filteredGVs) - m.EnableVersions(filteredGVs...) - m.thirdPartyGroupVersions = append(m.thirdPartyGroupVersions, filteredGVs...) - - return skippedGVs -} - // InterfacesFor is a union meta.VersionInterfacesFunc func for all registered types func (m *APIRegistrationManager) InterfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) { groupMeta, err := m.Group(version.Group) diff --git a/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go b/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go index 37d54d27f79..58fc0173e9c 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go @@ -23,83 +23,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" ) -func TestAddThirdPartyVersionsBasic(t *testing.T) { - m, err := NewAPIRegistrationManager("") - if err != nil { - t.Fatalf("Unexpected failure to make a manager: %v", err) - } - - registered := []schema.GroupVersion{ - { - Group: "", - Version: "v1", - }, - } - skipped := registered - thirdParty := []schema.GroupVersion{ - { - Group: "company.com", - Version: "v1", - }, - { - Group: "company.com", - Version: "v2", - }, - } - gvs := append(registered, thirdParty...) - - m.RegisterVersions(registered) - wasSkipped := m.AddThirdPartyAPIGroupVersions(gvs...) - if len(wasSkipped) != len(skipped) { - t.Errorf("Expected %v, found %v", skipped, wasSkipped) - } - for ix := range wasSkipped { - found := false - for _, gv := range skipped { - if gv.String() == wasSkipped[ix].String() { - found = true - break - } - } - if !found { - t.Errorf("Couldn't find %v in %v", wasSkipped[ix], skipped) - } - } - for _, gv := range thirdParty { - if !m.IsThirdPartyAPIGroupVersion(gv) { - t.Errorf("Expected %v to be third party.", gv) - } - } -} - -func TestAddThirdPartyVersionsMultiple(t *testing.T) { - thirdParty := []schema.GroupVersion{ - { - Group: "company.com", - Version: "v1", - }, - { - Group: "company.com", - Version: "v2", - }, - } - m, err := NewAPIRegistrationManager("") - if err != nil { - t.Fatalf("Unexpected failure to make a manager: %v", err) - } - for _, gv := range thirdParty { - wasSkipped := m.AddThirdPartyAPIGroupVersions(gv) - if len(wasSkipped) != 0 { - t.Errorf("Expected length 0, found %v", wasSkipped) - } - } - for _, gv := range thirdParty { - if !m.IsThirdPartyAPIGroupVersion(gv) { - t.Errorf("Expected %v to be third party.", gv) - } - } -} - func TestAllPreferredGroupVersions(t *testing.T) { testCases := []struct { groupMetas []apimachinery.GroupMeta diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/watch_test.go b/staging/src/k8s.io/apiserver/pkg/endpoints/watch_test.go index 7e24198194d..802b55e732f 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/watch_test.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/watch_test.go @@ -272,7 +272,6 @@ func TestWatchRead(t *testing.T) { // TODO: yaml stream serialization requires that RawExtension.MarshalJSON // be able to understand nested encoding (since yaml calls json.Marshal // rather than yaml.Marshal, which results in the raw bytes being in yaml). - // Same problem as thirdparty object. /*{ Accept: "application/yaml", ExpectedContentType: "application/yaml;stream=watch", diff --git a/staging/src/k8s.io/client-go/dynamic/client.go b/staging/src/k8s.io/client-go/dynamic/client.go index 2a928199e3b..74fc74c4279 100644 --- a/staging/src/k8s.io/client-go/dynamic/client.go +++ b/staging/src/k8s.io/client-go/dynamic/client.go @@ -298,9 +298,9 @@ func (versionedParameterEncoderWithV1Fallback) DecodeParameters(parameters url.V } // VersionedParameterEncoderWithV1Fallback is useful for encoding query -// parameters for thirdparty resources. It tries to convert object to the +// parameters for custom resources. It tries to convert object to the // specified version before converting it to query parameters, and falls back to // converting to v1 if the object is not registered in the specified version. // For the record, currently API server always treats query parameters sent to a -// thirdparty resource endpoint as v1. +// custom resource endpoint as v1. var VersionedParameterEncoderWithV1Fallback runtime.ParameterCodec = versionedParameterEncoderWithV1Fallback{} diff --git a/test/integration/etcd/etcd_storage_path_test.go b/test/integration/etcd/etcd_storage_path_test.go index f6be745a12d..fd17823947d 100644 --- a/test/integration/etcd/etcd_storage_path_test.go +++ b/test/integration/etcd/etcd_storage_path_test.go @@ -612,7 +612,7 @@ func startRealMasterOrDie(t *testing.T, certDir string) (*allClient, clientv3.KV kubeAPIServerConfig.APIResourceConfigSource = &allResourceSource{} // force enable all resources - kubeAPIServer, err := app.CreateKubeAPIServer(kubeAPIServerConfig, genericapiserver.EmptyDelegate, sharedInformers, nil) + kubeAPIServer, err := app.CreateKubeAPIServer(kubeAPIServerConfig, genericapiserver.EmptyDelegate, sharedInformers) if err != nil { t.Fatal(err) } diff --git a/test/integration/examples/apiserver_test.go b/test/integration/examples/apiserver_test.go index 40d40177fee..2c34a30329b 100644 --- a/test/integration/examples/apiserver_test.go +++ b/test/integration/examples/apiserver_test.go @@ -122,7 +122,7 @@ func TestAggregatedAPIServer(t *testing.T) { } kubeClientConfigValue.Store(kubeAPIServerConfig.GenericConfig.LoopbackClientConfig) - kubeAPIServer, err := app.CreateKubeAPIServer(kubeAPIServerConfig, genericapiserver.EmptyDelegate, sharedInformers, nil) + kubeAPIServer, err := app.CreateKubeAPIServer(kubeAPIServerConfig, genericapiserver.EmptyDelegate, sharedInformers) if err != nil { t.Fatal(err) } diff --git a/test/integration/framework/master_utils.go b/test/integration/framework/master_utils.go index e85525e6fea..27b42959b78 100644 --- a/test/integration/framework/master_utils.go +++ b/test/integration/framework/master_utils.go @@ -253,7 +253,7 @@ func startMasterOrDie(masterConfig *master.Config, incomingServer *httptest.Serv } masterConfig.GenericConfig.SharedInformerFactory = extinformers.NewSharedInformerFactory(clientset, masterConfig.GenericConfig.LoopbackClientConfig.Timeout) - m, err = masterConfig.Complete().New(genericapiserver.EmptyDelegate, nil) + m, err = masterConfig.Complete().New(genericapiserver.EmptyDelegate) if err != nil { closeFn() glog.Fatalf("error in bringing up the master: %v", err)