From 28413b3246804747b4d0c7825f76c27da881eee3 Mon Sep 17 00:00:00 2001 From: David Eads Date: Fri, 20 Jul 2018 14:40:55 -0400 Subject: [PATCH 1/6] UPSTREAM: : tidy up oc patches and ensure we never print a non-groupified object --- .../kubernetes/pkg/kubectl/cmd/patch_run.go | 15 -------- .../k8s.io/kubernetes/pkg/kubectl/cmd/run.go | 5 +-- .../kubectl/cmd/util/editor/editoptions.go | 3 +- .../cmd/util/editor/patch_overrideeditor.go | 3 -- .../kubectl/genericclioptions/config_flags.go | 3 +- .../openshiftpatch/patch_openshift.go | 34 +++++++++++++++++++ .../genericclioptions/patch_config_flags.go | 2 -- .../genericclioptions/printers/json.go | 7 ++++ .../genericclioptions/printers/jsonpath.go | 4 +++ .../genericclioptions/printers/name.go | 4 +++ .../genericclioptions/printers/template.go | 11 ++++++ .../genericclioptions/printers/typesetter.go | 14 ++++++-- .../genericclioptions/resource/mapper.go | 5 +-- .../genericclioptions/resource/patch_kind.go | 14 -------- 14 files changed, 81 insertions(+), 43 deletions(-) delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubectl/cmd/patch_run.go delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/patch_overrideeditor.go create mode 100644 vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch/patch_openshift.go delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/patch_kind.go diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/patch_run.go b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/patch_run.go deleted file mode 100644 index ddf153b608e7..000000000000 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/patch_run.go +++ /dev/null @@ -1,15 +0,0 @@ -package cmd - -import ( - "k8s.io/apimachinery/pkg/runtime/schema" -) - -var OAPIToGroupifiedGVK func(gvk *schema.GroupVersionKind) - -func FixOAPIGroupifiedGVK(gvk *schema.GroupVersionKind) { - if OAPIToGroupifiedGVK != nil { - OAPIToGroupifiedGVK(gvk) - } -} - -var UseOpenShiftGenerator = false diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/run.go b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/run.go index 661e1f237067..07de298372d6 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/run.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/run.go @@ -39,6 +39,7 @@ import ( "k8s.io/kubernetes/pkg/kubectl/cmd/templates" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers" "k8s.io/kubernetes/pkg/kubectl/scheme" @@ -141,7 +142,7 @@ func NewRunOptions(streams genericclioptions.IOStreams) *RunOptions { func NewCmdRun(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command { o := NewRunOptions(streams) - if UseOpenShiftGenerator { + if openshiftpatch.IsOC { o.DefaultRestartAlwaysGenerator = "deploymentconfig/v1" } @@ -659,7 +660,7 @@ func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command if err != nil { return nil, err } - FixOAPIGroupifiedGVK(&mapping.GroupVersionKind) + openshiftpatch.FixOAPIGroupifiedGVK(&mapping.GroupVersionKind) if len(overrides) > 0 { codec := runtime.NewCodec(scheme.DefaultJSONEncoder(), scheme.Codecs.UniversalDecoder(scheme.Scheme.PrioritizedVersionsAllGroups()...)) diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/editoptions.go b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/editoptions.go index 5d39ea623148..43b826126843 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/editoptions.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/editoptions.go @@ -47,6 +47,7 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/crlf" "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/scheme" @@ -809,7 +810,7 @@ func hashOnLineBreak(s string) string { // editorEnvs returns an ordered list of env vars to check for editor preferences. func editorEnvs() []string { - if UseOpenShiftEditorEnvVars { + if openshiftpatch.IsOC { return []string{"OC_EDITOR", "KUBE_EDITOR", "EDITOR"} } diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/patch_overrideeditor.go b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/patch_overrideeditor.go deleted file mode 100644 index d59f42ad9fc6..000000000000 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/util/editor/patch_overrideeditor.go +++ /dev/null @@ -1,3 +0,0 @@ -package editor - -var UseOpenShiftEditorEnvVars = false diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/config_flags.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/config_flags.go index a867e25ff443..a4b8cc47c1aa 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/config_flags.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/config_flags.go @@ -31,6 +31,7 @@ import ( "k8s.io/client-go/restmapper" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/util/homedir" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" ) const ( @@ -221,7 +222,7 @@ func (f *ConfigFlags) ToRESTMapper() (meta.RESTMapper, error) { // AddFlags binds client configuration flags to a given flagset func (f *ConfigFlags) AddFlags(flags *pflag.FlagSet) { if f.KubeConfig != nil { - if !UseOpenShiftKubeConfigValues { + if !openshiftpatch.IsOC { flags.StringVar(f.KubeConfig, "kubeconfig", *f.KubeConfig, "Path to the kubeconfig file to use for CLI requests.") } else { flags.StringVar(f.KubeConfig, OpenShiftKubeConfigFlagName, *f.KubeConfig, "Path to the kubeconfig file to use for CLI requests.") diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch/patch_openshift.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch/patch_openshift.go new file mode 100644 index 000000000000..6dba9c78bf07 --- /dev/null +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch/patch_openshift.go @@ -0,0 +1,34 @@ +package openshiftpatch + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +var IsOC = false + +var OAPIToGroupifiedGVK func(gvk *schema.GroupVersionKind) + +func FixOAPIGroupifiedGVK(gvk *schema.GroupVersionKind) { + if OAPIToGroupifiedGVK != nil { + OAPIToGroupifiedGVK(gvk) + } +} + +var OAPIToGroupified func(uncast runtime.Object, gvk *schema.GroupVersionKind) + +func FixOAPIGroupKind(uncast runtime.Object, gvk *schema.GroupVersionKind) { + if OAPIToGroupified != nil { + OAPIToGroupified(uncast, gvk) + } +} + +var IsOAPIFn func(gvk schema.GroupVersionKind) bool + +func IsOAPI(gvk schema.GroupVersionKind) bool { + if IsOAPIFn == nil { + return false + } + + return IsOAPIFn(gvk) +} diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/patch_config_flags.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/patch_config_flags.go index 283cf784157c..c607a9214d49 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/patch_config_flags.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/patch_config_flags.go @@ -2,8 +2,6 @@ package genericclioptions import "fmt" -var UseOpenShiftKubeConfigValues = false - // OpenShiftKubeConfigFlagName exists only so that we can track down all non-standard offenders const OpenShiftKubeConfigFlagName = "config" diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/json.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/json.go index 1df9a8646656..97a24047284d 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/json.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/json.go @@ -24,6 +24,7 @@ import ( "reflect" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" "github.com/ghodss/yaml" ) @@ -55,6 +56,9 @@ func (p *JSONPrinter) PrintObj(obj runtime.Object, w io.Writer) error { if obj.GetObjectKind().GroupVersionKind().Empty() { return fmt.Errorf("missing apiVersion or kind; try GetObjectKind().SetGroupVersionKind() if you know the type") } + if openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { + return fmt.Errorf("attempt to print an ungroupified object: %v", obj.GetObjectKind().GroupVersionKind()) + } data, err := json.MarshalIndent(obj, "", " ") if err != nil { @@ -95,6 +99,9 @@ func (p *YAMLPrinter) PrintObj(obj runtime.Object, w io.Writer) error { if obj.GetObjectKind().GroupVersionKind().Empty() { return fmt.Errorf("missing apiVersion or kind; try GetObjectKind().SetGroupVersionKind() if you know the type") } + if openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { + return fmt.Errorf("attempt to print an ungroupified object: %v", obj.GetObjectKind().GroupVersionKind()) + } output, err := yaml.Marshal(obj) if err != nil { diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/jsonpath.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/jsonpath.go index 76ebb1563dd2..fd07746b9744 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/jsonpath.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/jsonpath.go @@ -25,6 +25,7 @@ import ( "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/util/jsonpath" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" ) // exists returns true if it would be possible to call the index function @@ -121,6 +122,9 @@ func (j *JSONPathPrinter) PrintObj(obj runtime.Object, w io.Writer) error { if InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) { return fmt.Errorf(InternalObjectPrinterErr) } + if openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { + return fmt.Errorf("attempt to print an ungroupified object: %v", obj.GetObjectKind().GroupVersionKind()) + } var queryObj interface{} = obj if meta.IsListType(obj) { diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/name.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/name.go index d04c5c6bbc79..ef2decfc6e58 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/name.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/name.go @@ -26,6 +26,7 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" ) // NamePrinter is an implementation of ResourcePrinter which outputs "resource/name" pair of an object. @@ -72,6 +73,9 @@ func (p *NamePrinter) PrintObj(obj runtime.Object, w io.Writer) error { if obj.GetObjectKind().GroupVersionKind().Empty() { return fmt.Errorf("missing apiVersion or kind; try GetObjectKind().SetGroupVersionKind() if you know the type") } + if openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { + return fmt.Errorf("attempt to print an ungroupified object: %v", obj.GetObjectKind().GroupVersionKind()) + } name := "" if acc, err := meta.Accessor(obj); err == nil { diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/template.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/template.go index 16c343af0f26..8860c0a58a90 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/template.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/template.go @@ -25,6 +25,7 @@ import ( "text/template" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" ) // TemplatePrinter is an implementation of ResourcePrinter which formats data with a Go Template. @@ -61,6 +62,13 @@ func (p *TemplatePrinter) AfterPrint(w io.Writer, res string) error { // PrintObj formats the obj with the Go Template. func (p *TemplatePrinter) PrintObj(obj runtime.Object, w io.Writer) error { + if InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) { + return fmt.Errorf(InternalObjectPrinterErr) + } + if openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { + return fmt.Errorf("attempt to print an ungroupified object: %v", obj.GetObjectKind().GroupVersionKind()) + } + var data []byte var err error data, err = json.Marshal(obj) @@ -151,6 +159,9 @@ func (p *GoTemplatePrinter) PrintObj(obj runtime.Object, w io.Writer) error { if InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) { return fmt.Errorf(InternalObjectPrinterErr) } + if openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { + return fmt.Errorf("attempt to print an ungroupified object: %v", obj.GetObjectKind().GroupVersionKind()) + } var data []byte var err error diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/typesetter.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/typesetter.go index 8d2d9b56ec08..a3eadd9b01ea 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/typesetter.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/typesetter.go @@ -21,7 +21,7 @@ import ( "io" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" ) // TypeSetterPrinter is an implementation of ResourcePrinter wraps another printer with types set on the objects @@ -42,13 +42,14 @@ func (p *TypeSetterPrinter) PrintObj(obj runtime.Object, w io.Writer) error { if obj == nil { return p.Delegate.PrintObj(obj, w) } - if !obj.GetObjectKind().GroupVersionKind().Empty() { + if !obj.GetObjectKind().GroupVersionKind().Empty() && !openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { return p.Delegate.PrintObj(obj, w) } // we were empty coming in, make sure we're empty going out. This makes the call thread-unsafe + existingGVK := obj.GetObjectKind().GroupVersionKind() defer func() { - obj.GetObjectKind().SetGroupVersionKind(schema.GroupVersionKind{}) + obj.GetObjectKind().SetGroupVersionKind(existingGVK) }() gvks, _, err := p.Typer.ObjectKinds(obj) @@ -68,6 +69,13 @@ func (p *TypeSetterPrinter) PrintObj(obj runtime.Object, w io.Writer) error { break } + if openshiftpatch.IsOAPI(obj.GetObjectKind().GroupVersionKind()) { + gvk := obj.GetObjectKind().GroupVersionKind() + openshiftpatch.FixOAPIGroupifiedGVK(&gvk) + obj.GetObjectKind().SetGroupVersionKind(gvk) + return p.Delegate.PrintObj(obj, w) + } + return p.Delegate.PrintObj(obj, w) } diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go index 07f00078ab72..ab644a46153f 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go @@ -22,6 +22,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" ) // Mapper is a convenience struct for holding references to the interfaces @@ -43,7 +44,7 @@ func (m *mapper) infoForData(data []byte, source string) (*Info, error) { if err != nil { return nil, fmt.Errorf("unable to decode %q: %v", source, err) } - fixOAPIGroupKind(obj, gvk) + openshiftpatch.FixOAPIGroupKind(obj, gvk) name, _ := metadataAccessor.Name(obj) namespace, _ := metadataAccessor.Namespace(obj) @@ -92,7 +93,7 @@ func (m *mapper) infoForObject(obj runtime.Object, typer runtime.ObjectTyper, pr if len(groupVersionKinds) > 1 && len(preferredGVKs) > 0 { gvk = preferredObjectKind(groupVersionKinds, preferredGVKs) } - fixOAPIGroupKind(obj, &gvk) + openshiftpatch.FixOAPIGroupKind(obj, &gvk) name, _ := metadataAccessor.Name(obj) namespace, _ := metadataAccessor.Namespace(obj) diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/patch_kind.go b/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/patch_kind.go deleted file mode 100644 index fd40b825ab3a..000000000000 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/patch_kind.go +++ /dev/null @@ -1,14 +0,0 @@ -package resource - -import ( - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" -) - -var OAPIToGroupified func(uncast runtime.Object, gvk *schema.GroupVersionKind) - -func fixOAPIGroupKind(uncast runtime.Object, gvk *schema.GroupVersionKind) { - if OAPIToGroupified != nil { - OAPIToGroupified(uncast, gvk) - } -} From 6d9b565ad517c4b31f234151e7951bc0f843c238 Mon Sep 17 00:00:00 2001 From: David Eads Date: Fri, 20 Jul 2018 14:41:05 -0400 Subject: [PATCH 2/6] ensure we never print a non-groupified object --- .../legacygroupification/groupification.go | 23 +++++++++++++++++++ pkg/oc/cli/shim_kubectl.go | 13 ++++------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/pkg/api/legacygroupification/groupification.go b/pkg/api/legacygroupification/groupification.go index e13e2e26343c..fc7db091ddf5 100644 --- a/pkg/api/legacygroupification/groupification.go +++ b/pkg/api/legacygroupification/groupification.go @@ -31,6 +31,15 @@ import ( "github.com/openshift/origin/pkg/user/apis/user" ) +func IsOAPI(gvk schema.GroupVersionKind) bool { + if len(gvk.Group) > 0 { + return false + } + + _, ok := oapiKindsToGroup[gvk.Kind] + return ok +} + func OAPIToGroupifiedGVK(gvk *schema.GroupVersionKind) { if len(gvk.Group) > 0 { return @@ -53,16 +62,19 @@ func OAPIToGroupified(uncast runtime.Object, gvk *schema.GroupVersionKind) { newGroup := fixOAPIGroupKindInTopLevelUnstructured(obj.Object) if len(newGroup) > 0 { gvk.Group = newGroup + uncast.GetObjectKind().SetGroupVersionKind(*gvk) } case *unstructured.UnstructuredList: newGroup := fixOAPIGroupKindInTopLevelUnstructured(obj.Object) if len(newGroup) > 0 { gvk.Group = newGroup + uncast.GetObjectKind().SetGroupVersionKind(*gvk) } case *apps.DeploymentConfig, *appsv1.DeploymentConfig, *apps.DeploymentConfigList, *appsv1.DeploymentConfigList, *apps.DeploymentConfigRollback, *appsv1.DeploymentConfigRollback: gvk.Group = apps.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *authorization.ClusterRoleBinding, *authorizationv1.ClusterRoleBinding, *authorization.ClusterRoleBindingList, *authorizationv1.ClusterRoleBindingList, *authorization.ClusterRole, *authorizationv1.ClusterRole, *authorization.ClusterRoleList, *authorizationv1.ClusterRoleList, @@ -70,10 +82,12 @@ func OAPIToGroupified(uncast runtime.Object, gvk *schema.GroupVersionKind) { *authorization.RoleBinding, *authorizationv1.RoleBinding, *authorization.RoleBindingList, *authorizationv1.RoleBindingList, *authorization.RoleBindingRestriction, *authorizationv1.RoleBindingRestriction, *authorization.RoleBindingRestrictionList, *authorizationv1.RoleBindingRestrictionList: gvk.Group = authorization.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *build.BuildConfig, *buildv1.BuildConfig, *build.BuildConfigList, *buildv1.BuildConfigList, *build.Build, *buildv1.Build, *build.BuildList, *buildv1.BuildList: gvk.Group = build.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *image.Image, *imagev1.Image, *image.ImageList, *imagev1.ImageList, *image.ImageSignature, *imagev1.ImageSignature, @@ -83,43 +97,52 @@ func OAPIToGroupified(uncast runtime.Object, gvk *schema.GroupVersionKind) { *image.ImageStream, *imagev1.ImageStream, *image.ImageStreamList, *imagev1.ImageStreamList, *image.ImageStreamTag, *imagev1.ImageStreamTag: gvk.Group = image.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *network.ClusterNetwork, *networkv1.ClusterNetwork, *network.ClusterNetworkList, *networkv1.ClusterNetworkList, *network.NetNamespace, *networkv1.NetNamespace, *network.NetNamespaceList, *networkv1.NetNamespaceList, *network.HostSubnet, *networkv1.HostSubnet, *network.HostSubnetList, *networkv1.HostSubnetList, *network.EgressNetworkPolicy, *networkv1.EgressNetworkPolicy, *network.EgressNetworkPolicyList, *networkv1.EgressNetworkPolicyList: gvk.Group = network.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *project.Project, *projectv1.Project, *project.ProjectList, *projectv1.ProjectList, *project.ProjectRequest, *projectv1.ProjectRequest: gvk.Group = project.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *quota.ClusterResourceQuota, *quotav1.ClusterResourceQuota, *quota.ClusterResourceQuotaList, *quotav1.ClusterResourceQuotaList: gvk.Group = quota.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *oauth.OAuthAuthorizeToken, *oauthv1.OAuthAuthorizeToken, *oauth.OAuthAuthorizeTokenList, *oauthv1.OAuthAuthorizeTokenList, *oauth.OAuthClientAuthorization, *oauthv1.OAuthClientAuthorization, *oauth.OAuthClientAuthorizationList, *oauthv1.OAuthClientAuthorizationList, *oauth.OAuthClient, *oauthv1.OAuthClient, *oauth.OAuthClientList, *oauthv1.OAuthClientList, *oauth.OAuthAccessToken, *oauthv1.OAuthAccessToken, *oauth.OAuthAccessTokenList, *oauthv1.OAuthAccessTokenList: gvk.Group = oauth.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *route.Route, *routev1.Route, *route.RouteList, *routev1.RouteList: gvk.Group = route.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *security.SecurityContextConstraints, *securityv1.SecurityContextConstraints, *security.SecurityContextConstraintsList, *securityv1.SecurityContextConstraintsList, *security.PodSecurityPolicySubjectReview, *securityv1.PodSecurityPolicySubjectReview, *security.PodSecurityPolicySelfSubjectReview, *securityv1.PodSecurityPolicySelfSubjectReview, *security.PodSecurityPolicyReview, *securityv1.PodSecurityPolicyReview: gvk.Group = security.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *template.Template, *templatev1.Template, *template.TemplateList, *templatev1.TemplateList: gvk.Group = template.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) case *user.Group, *userv1.Group, *user.GroupList, *userv1.GroupList, *user.Identity, *userv1.Identity, *user.IdentityList, *userv1.IdentityList, *user.UserIdentityMapping, *userv1.UserIdentityMapping, *user.User, *userv1.User, *user.UserList, *userv1.UserList: gvk.Group = user.GroupName + uncast.GetObjectKind().SetGroupVersionKind(*gvk) } } diff --git a/pkg/oc/cli/shim_kubectl.go b/pkg/oc/cli/shim_kubectl.go index f6a280caa843..30e443146066 100644 --- a/pkg/oc/cli/shim_kubectl.go +++ b/pkg/oc/cli/shim_kubectl.go @@ -2,12 +2,10 @@ package cli import ( kclientcmd "k8s.io/client-go/tools/clientcmd" - kcmd "k8s.io/kubernetes/pkg/kubectl/cmd" kcmdset "k8s.io/kubernetes/pkg/kubectl/cmd/set" kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" - "k8s.io/kubernetes/pkg/kubectl/cmd/util/editor" "k8s.io/kubernetes/pkg/kubectl/genericclioptions" - "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/openshiftpatch" "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers" "github.com/openshift/origin/pkg/api/legacygroupification" @@ -18,13 +16,12 @@ import ( func shimKubectlForOc() { // we only need this change for `oc`. `kubectl` should behave as close to `kubectl` as we can // if we call this factory construction method, we want the openshift style config loading - genericclioptions.UseOpenShiftKubeConfigValues = true kclientcmd.ErrEmptyConfig = genericclioptions.NewErrConfigurationMissing() kcmdset.ParseDockerImageReferenceToStringFunc = clientcmd.ParseDockerImageReferenceToStringFunc - editor.UseOpenShiftEditorEnvVars = true - resource.OAPIToGroupified = legacygroupification.OAPIToGroupified - kcmd.OAPIToGroupifiedGVK = legacygroupification.OAPIToGroupifiedGVK - kcmd.UseOpenShiftGenerator = true + openshiftpatch.OAPIToGroupified = legacygroupification.OAPIToGroupified + openshiftpatch.OAPIToGroupifiedGVK = legacygroupification.OAPIToGroupifiedGVK + openshiftpatch.IsOAPIFn = legacygroupification.IsOAPI + openshiftpatch.IsOC = true // update polymorphic helpers polymorphichelpers.AttachablePodForObjectFn = originpolymorphichelpers.NewAttachablePodForObjectFn(polymorphichelpers.AttachablePodForObjectFn) From a089c5712208b48640d3dee7f10c1dd47bc36322 Mon Sep 17 00:00:00 2001 From: David Eads Date: Fri, 20 Jul 2018 13:14:48 -0400 Subject: [PATCH 3/6] show better info oc size growth --- hack/lib/constants.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hack/lib/constants.sh b/hack/lib/constants.sh index d4925dd34c18..046d7a8d1e25 100755 --- a/hack/lib/constants.sh +++ b/hack/lib/constants.sh @@ -341,8 +341,9 @@ function os::build::check_binaries() { # enforce that certain binaries don't accidentally grow too large # IMPORTANT: contact Clayton or another master team member before altering this code if [[ -f "${OS_OUTPUT_BINPATH}/${platform}/oc" ]]; then - if [[ "$(du -m "${OS_OUTPUT_BINPATH}/${platform}/oc" | cut -f 1)" -gt "115" ]]; then - os::log::fatal "oc binary has grown substantially. You must have approval before bumping this limit." + ocsize=$(du -m "${OS_OUTPUT_BINPATH}/${platform}/oc" | cut -f 1) + if [[ "${ocsize}" -gt "116" ]]; then + os::log::fatal "oc binary has grown substantially to ${ocsize}. You must have approval before bumping this limit." fi fi if [[ -f "${OS_OUTPUT_BINPATH}/${platform}/openshift-node-config" ]]; then From 6a8400bf1f037f642f7f3fa561bdf3c3c7f941ad Mon Sep 17 00:00:00 2001 From: David Eads Date: Thu, 12 Jul 2018 15:56:27 -0400 Subject: [PATCH 4/6] use normal sudo arg to preserve env --- hack/lib/start.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/hack/lib/start.sh b/hack/lib/start.sh index c0853928d869..7cfa11c87654 100644 --- a/hack/lib/start.sh +++ b/hack/lib/start.sh @@ -522,15 +522,11 @@ function os::start::internal::openshift_executable() { openshift_executable="${sudo} docker run ${docker_options} ${volumes} ${envvars} openshift/origin:${version}" else - local envvars="" - if [[ -n "${ENV:-}" ]]; then - envvars="env " - for envvar in "${ENV[@]}"; do - envvars+="${envvar} " - done - fi - - openshift_executable="${sudo} ${envvars} $(which openshift)" + if [[ -n "${sudo}" ]]; then + openshift_executable="${sudo} -E $(which openshift)" + else + openshift_executable="$(which openshift)" + fi fi echo "${openshift_executable}" From b7daec7e4e2a745480b83dfe56bb4e10429a3387 Mon Sep 17 00:00:00 2001 From: David Eads Date: Fri, 20 Jul 2018 13:14:37 -0400 Subject: [PATCH 5/6] start tightening scheme usage in oc --- cmd/oc/oc.go | 25 +- cmd/openshift/openshift.go | 2 +- examples/examples_test.go | 2 +- pkg/api/install/fastpath_conversion.go | 539 ++++++++++++++++ pkg/api/install/install.go | 587 ++---------------- pkg/api/legacy/install.go | 4 +- .../legacygroupification/groupification.go | 3 + pkg/cmd/openshift-apiserver/cmd.go | 2 +- pkg/oc/cli/cli.go | 6 - pkg/oc/cli/debug/debug.go | 6 +- pkg/oc/cli/logs/logs.go | 4 +- pkg/oc/cli/rollout/cancel.go | 9 +- pkg/oc/cli/rollout/retry.go | 6 +- pkg/oc/cli/set/buildhook.go | 6 +- pkg/oc/cli/set/buildsecret.go | 8 +- pkg/oc/cli/set/deploymenthook.go | 6 +- pkg/oc/cli/set/env.go | 8 +- pkg/oc/cli/set/helper.go | 29 - pkg/oc/cli/set/imagelookup.go | 6 +- pkg/oc/cli/set/probe.go | 6 +- pkg/oc/cli/set/routebackends.go | 6 +- pkg/oc/cli/set/triggers.go | 6 +- pkg/oc/cli/set/volume.go | 6 +- pkg/oc/util/ocscheme/groupified.go | 59 -- pkg/oc/util/ocscheme/printing.go | 42 +- pkg/oc/util/ocscheme/read_internal.go | 44 +- test/util/server/server.go | 2 +- tools/etcdhelper/etcdhelper.go | 14 +- 28 files changed, 665 insertions(+), 778 deletions(-) create mode 100644 pkg/api/install/fastpath_conversion.go delete mode 100644 pkg/oc/util/ocscheme/groupified.go diff --git a/cmd/oc/oc.go b/cmd/oc/oc.go index 14d11eb68829..5a7896eb059f 100644 --- a/cmd/oc/oc.go +++ b/cmd/oc/oc.go @@ -10,16 +10,15 @@ import ( "k8s.io/apiserver/pkg/util/logs" "k8s.io/kubernetes/pkg/kubectl/scheme" + "github.com/openshift/api" + "github.com/openshift/api/authorization" + "github.com/openshift/api/quota" "github.com/openshift/library-go/pkg/serviceability" + "github.com/openshift/origin/pkg/api/install" + "github.com/openshift/origin/pkg/api/legacy" "github.com/openshift/origin/pkg/oc/cli" "github.com/openshift/origin/pkg/version" - - // install all APIs - apiinstall "github.com/openshift/origin/pkg/api/install" - _ "k8s.io/kubernetes/pkg/apis/autoscaling/install" - _ "k8s.io/kubernetes/pkg/apis/batch/install" - _ "k8s.io/kubernetes/pkg/apis/core/install" - _ "k8s.io/kubernetes/pkg/apis/extensions/install" + "k8s.io/kubernetes/pkg/api/legacyscheme" ) func main() { @@ -33,7 +32,17 @@ func main() { runtime.GOMAXPROCS(runtime.NumCPU()) } - apiinstall.InstallAll(scheme.Scheme) + // the kubectl scheme expects to have all the recognizable external types it needs to consume. Install those here. + api.Install(scheme.Scheme) + legacy.InstallExternalLegacyAll(scheme.Scheme) + // TODO fix up the install for the "all types" + authorization.Install(scheme.Scheme) + quota.Install(scheme.Scheme) + + // the legacyscheme is used in kubectl and expects to have the internal types registered. Explicitly wire our types here. + // this does + install.InstallInternalOpenShift(legacyscheme.Scheme) + legacy.InstallInternalLegacyAll(scheme.Scheme) basename := filepath.Base(os.Args[0]) command := cli.CommandFor(basename) diff --git a/cmd/openshift/openshift.go b/cmd/openshift/openshift.go index 41b4c2b71b99..6ccd5d7285f7 100644 --- a/cmd/openshift/openshift.go +++ b/cmd/openshift/openshift.go @@ -29,7 +29,7 @@ func main() { defer serviceability.BehaviorOnPanic(os.Getenv("OPENSHIFT_ON_PANIC"), version.Get())() defer serviceability.Profile(os.Getenv("OPENSHIFT_PROFILE")).Stop() - legacy.InstallLegacyInternalAll(legacyscheme.Scheme) + legacy.InstallInternalLegacyAll(legacyscheme.Scheme) rand.Seed(time.Now().UTC().UnixNano()) if len(os.Getenv("GOMAXPROCS")) == 0 { diff --git a/examples/examples_test.go b/examples/examples_test.go index b064e029333f..fde3c880795a 100644 --- a/examples/examples_test.go +++ b/examples/examples_test.go @@ -33,7 +33,7 @@ import ( ) func init() { - legacy.InstallLegacyInternalAll(legacyscheme.Scheme) + legacy.InstallInternalLegacyAll(legacyscheme.Scheme) } func walkJSONFiles(inDir string, fn func(name, path string, data []byte)) error { diff --git a/pkg/api/install/fastpath_conversion.go b/pkg/api/install/fastpath_conversion.go new file mode 100644 index 000000000000..832a0a2ecd8d --- /dev/null +++ b/pkg/api/install/fastpath_conversion.go @@ -0,0 +1,539 @@ +package install + +import ( + kv1 "k8s.io/api/core/v1" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/kubernetes/pkg/api/legacyscheme" + kapi "k8s.io/kubernetes/pkg/apis/core" + kapiv1 "k8s.io/kubernetes/pkg/apis/core/v1" + + // we have a strong dependency on kube objects for deployments and scale + _ "k8s.io/kubernetes/pkg/apis/apps/install" + _ "k8s.io/kubernetes/pkg/apis/authentication/install" + _ "k8s.io/kubernetes/pkg/apis/authorization/install" + _ "k8s.io/kubernetes/pkg/apis/autoscaling/install" + _ "k8s.io/kubernetes/pkg/apis/batch/install" + _ "k8s.io/kubernetes/pkg/apis/certificates/install" + _ "k8s.io/kubernetes/pkg/apis/core/install" + _ "k8s.io/kubernetes/pkg/apis/extensions/install" + _ "k8s.io/kubernetes/pkg/apis/policy/install" + _ "k8s.io/kubernetes/pkg/apis/rbac/install" + _ "k8s.io/kubernetes/pkg/apis/settings/install" + _ "k8s.io/kubernetes/pkg/apis/storage/install" + + _ "github.com/openshift/origin/pkg/cmd/server/apis/config/install" + + metainternal "k8s.io/apimachinery/pkg/apis/meta/internalversion" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + watchapi "k8s.io/apimachinery/pkg/watch" + + appsapi "github.com/openshift/origin/pkg/apps/apis/apps" + authorizationapi "github.com/openshift/origin/pkg/authorization/apis/authorization" + buildapi "github.com/openshift/origin/pkg/build/apis/build" + imageapi "github.com/openshift/origin/pkg/image/apis/image" + oauthapi "github.com/openshift/origin/pkg/oauth/apis/oauth" + projectapi "github.com/openshift/origin/pkg/project/apis/project" + routeapi "github.com/openshift/origin/pkg/route/apis/route" + templateapi "github.com/openshift/origin/pkg/template/apis/template" + userapi "github.com/openshift/origin/pkg/user/apis/user" + + appsv1 "github.com/openshift/api/apps/v1" + authorizationv1 "github.com/openshift/api/authorization/v1" + buildv1 "github.com/openshift/api/build/v1" + imagev1 "github.com/openshift/api/image/v1" + oauthv1 "github.com/openshift/api/oauth/v1" + projectv1 "github.com/openshift/api/project/v1" + routev1 "github.com/openshift/api/route/v1" + templatev1 "github.com/openshift/api/template/v1" + userv1 "github.com/openshift/api/user/v1" + + appsconversionv1 "github.com/openshift/origin/pkg/apps/apis/apps/v1" + authorizationconversionv1 "github.com/openshift/origin/pkg/authorization/apis/authorization/v1" + buildconversionv1 "github.com/openshift/origin/pkg/build/apis/build/v1" + imageconversionv1 "github.com/openshift/origin/pkg/image/apis/image/v1" + oauthconversionv1 "github.com/openshift/origin/pkg/oauth/apis/oauth/v1" + projectconversionv1 "github.com/openshift/origin/pkg/project/apis/project/v1" + routeconversionv1 "github.com/openshift/origin/pkg/route/apis/route/v1" + templateconversionv1 "github.com/openshift/origin/pkg/template/apis/template/v1" + userconversionv1 "github.com/openshift/origin/pkg/user/apis/user/v1" +) + +func init() { + // This is a "fast-path" that avoids reflection for common types. It focuses on the objects that are + // converted the most in the cluster. + // TODO: generate one of these for every external API group - this is to prove the impact + legacyscheme.Scheme.AddGenericConversionFunc(func(objA, objB interface{}, s conversion.Scope) (bool, error) { + switch a := objA.(type) { + case *metav1.WatchEvent: + switch b := objB.(type) { + case *metav1.InternalEvent: + return true, metav1.Convert_versioned_Event_to_versioned_InternalEvent(a, b, s) + case *watchapi.Event: + return true, metav1.Convert_versioned_Event_to_watch_Event(a, b, s) + } + case *metav1.InternalEvent: + switch b := objB.(type) { + case *metav1.WatchEvent: + return true, metav1.Convert_versioned_InternalEvent_to_versioned_Event(a, b, s) + } + case *watchapi.Event: + switch b := objB.(type) { + case *metav1.WatchEvent: + return true, metav1.Convert_watch_Event_to_versioned_Event(a, b, s) + } + + case *metainternal.ListOptions: + switch b := objB.(type) { + case *metav1.ListOptions: + return true, metainternal.Convert_internalversion_ListOptions_To_v1_ListOptions(a, b, s) + } + case *metav1.ListOptions: + switch b := objB.(type) { + case *metainternal.ListOptions: + return true, metainternal.Convert_v1_ListOptions_To_internalversion_ListOptions(a, b, s) + } + + case *kv1.ServiceAccount: + switch b := objB.(type) { + case *kapi.ServiceAccount: + return true, kapiv1.Convert_v1_ServiceAccount_To_core_ServiceAccount(a, b, s) + } + case *kapi.ServiceAccount: + switch b := objB.(type) { + case *kv1.ServiceAccount: + return true, kapiv1.Convert_core_ServiceAccount_To_v1_ServiceAccount(a, b, s) + } + + case *kv1.SecretList: + switch b := objB.(type) { + case *kapi.SecretList: + return true, kapiv1.Convert_v1_SecretList_To_core_SecretList(a, b, s) + } + case *kapi.SecretList: + switch b := objB.(type) { + case *kv1.SecretList: + return true, kapiv1.Convert_core_SecretList_To_v1_SecretList(a, b, s) + } + + case *kv1.Secret: + switch b := objB.(type) { + case *kapi.Secret: + return true, kapiv1.Convert_v1_Secret_To_core_Secret(a, b, s) + } + case *kapi.Secret: + switch b := objB.(type) { + case *kv1.Secret: + return true, kapiv1.Convert_core_Secret_To_v1_Secret(a, b, s) + } + + case *routev1.RouteList: + switch b := objB.(type) { + case *routeapi.RouteList: + return true, routeconversionv1.Convert_v1_RouteList_To_route_RouteList(a, b, s) + } + case *routeapi.RouteList: + switch b := objB.(type) { + case *routev1.RouteList: + return true, routeconversionv1.Convert_route_RouteList_To_v1_RouteList(a, b, s) + } + + case *routev1.Route: + switch b := objB.(type) { + case *routeapi.Route: + return true, routeconversionv1.Convert_v1_Route_To_route_Route(a, b, s) + } + case *routeapi.Route: + switch b := objB.(type) { + case *routev1.Route: + return true, routeconversionv1.Convert_route_Route_To_v1_Route(a, b, s) + } + + case *buildv1.BuildList: + switch b := objB.(type) { + case *buildapi.BuildList: + return true, buildconversionv1.Convert_v1_BuildList_To_build_BuildList(a, b, s) + } + case *buildapi.BuildList: + switch b := objB.(type) { + case *buildv1.BuildList: + return true, buildconversionv1.Convert_build_BuildList_To_v1_BuildList(a, b, s) + } + + case *buildv1.BuildConfigList: + switch b := objB.(type) { + case *buildapi.BuildConfigList: + return true, buildconversionv1.Convert_v1_BuildConfigList_To_build_BuildConfigList(a, b, s) + } + case *buildapi.BuildConfigList: + switch b := objB.(type) { + case *buildv1.BuildConfigList: + return true, buildconversionv1.Convert_build_BuildConfigList_To_v1_BuildConfigList(a, b, s) + } + + case *buildv1.BuildConfig: + switch b := objB.(type) { + case *buildapi.BuildConfig: + return true, buildconversionv1.Convert_v1_BuildConfig_To_build_BuildConfig(a, b, s) + } + case *buildapi.BuildConfig: + switch b := objB.(type) { + case *buildv1.BuildConfig: + return true, buildconversionv1.Convert_build_BuildConfig_To_v1_BuildConfig(a, b, s) + } + + case *buildv1.Build: + switch b := objB.(type) { + case *buildapi.Build: + return true, buildconversionv1.Convert_v1_Build_To_build_Build(a, b, s) + } + case *buildapi.Build: + switch b := objB.(type) { + case *buildv1.Build: + return true, buildconversionv1.Convert_build_Build_To_v1_Build(a, b, s) + } + case *oauthv1.OAuthAuthorizeToken: + switch b := objB.(type) { + case *oauthapi.OAuthAuthorizeToken: + return true, oauthconversionv1.Convert_v1_OAuthAuthorizeToken_To_oauth_OAuthAuthorizeToken(a, b, s) + } + case *oauthapi.OAuthAuthorizeToken: + switch b := objB.(type) { + case *oauthv1.OAuthAuthorizeToken: + return true, oauthconversionv1.Convert_oauth_OAuthAuthorizeToken_To_v1_OAuthAuthorizeToken(a, b, s) + } + + case *oauthv1.OAuthAccessToken: + switch b := objB.(type) { + case *oauthapi.OAuthAccessToken: + return true, oauthconversionv1.Convert_v1_OAuthAccessToken_To_oauth_OAuthAccessToken(a, b, s) + } + case *oauthapi.OAuthAccessToken: + switch b := objB.(type) { + case *oauthv1.OAuthAccessToken: + return true, oauthconversionv1.Convert_oauth_OAuthAccessToken_To_v1_OAuthAccessToken(a, b, s) + } + + case *projectv1.Project: + switch b := objB.(type) { + case *projectapi.Project: + return true, projectconversionv1.Convert_v1_Project_To_project_Project(a, b, s) + } + case *projectapi.Project: + switch b := objB.(type) { + case *projectv1.Project: + return true, projectconversionv1.Convert_project_Project_To_v1_Project(a, b, s) + } + + case *projectv1.ProjectList: + switch b := objB.(type) { + case *projectapi.ProjectList: + return true, projectconversionv1.Convert_v1_ProjectList_To_project_ProjectList(a, b, s) + } + case *projectapi.ProjectList: + switch b := objB.(type) { + case *projectv1.ProjectList: + return true, projectconversionv1.Convert_project_ProjectList_To_v1_ProjectList(a, b, s) + } + + case *templatev1.Template: + switch b := objB.(type) { + case *templateapi.Template: + return true, templateconversionv1.Convert_v1_Template_To_template_Template(a, b, s) + } + case *templateapi.Template: + switch b := objB.(type) { + case *templatev1.Template: + return true, templateconversionv1.Convert_template_Template_To_v1_Template(a, b, s) + } + + case *templatev1.TemplateList: + switch b := objB.(type) { + case *templateapi.TemplateList: + return true, templateconversionv1.Convert_v1_TemplateList_To_template_TemplateList(a, b, s) + } + case *templateapi.TemplateList: + switch b := objB.(type) { + case *templatev1.TemplateList: + return true, templateconversionv1.Convert_template_TemplateList_To_v1_TemplateList(a, b, s) + } + + case *templatev1.TemplateInstance: + switch b := objB.(type) { + case *templateapi.TemplateInstance: + return true, templateconversionv1.Convert_v1_TemplateInstance_To_template_TemplateInstance(a, b, s) + } + case *templateapi.TemplateInstance: + switch b := objB.(type) { + case *templatev1.TemplateInstance: + return true, templateconversionv1.Convert_template_TemplateInstance_To_v1_TemplateInstance(a, b, s) + } + + case *templatev1.TemplateInstanceList: + switch b := objB.(type) { + case *templateapi.TemplateInstanceList: + return true, templateconversionv1.Convert_v1_TemplateInstanceList_To_template_TemplateInstanceList(a, b, s) + } + case *templateapi.TemplateInstanceList: + switch b := objB.(type) { + case *templatev1.TemplateInstanceList: + return true, templateconversionv1.Convert_template_TemplateInstanceList_To_v1_TemplateInstanceList(a, b, s) + } + + case *templatev1.BrokerTemplateInstance: + switch b := objB.(type) { + case *templateapi.BrokerTemplateInstance: + return true, templateconversionv1.Convert_v1_BrokerTemplateInstance_To_template_BrokerTemplateInstance(a, b, s) + } + case *templateapi.BrokerTemplateInstance: + switch b := objB.(type) { + case *templatev1.BrokerTemplateInstance: + return true, templateconversionv1.Convert_template_BrokerTemplateInstance_To_v1_BrokerTemplateInstance(a, b, s) + } + + case *templatev1.BrokerTemplateInstanceList: + switch b := objB.(type) { + case *templateapi.BrokerTemplateInstanceList: + return true, templateconversionv1.Convert_v1_BrokerTemplateInstanceList_To_template_BrokerTemplateInstanceList(a, b, s) + } + case *templateapi.BrokerTemplateInstanceList: + switch b := objB.(type) { + case *templatev1.BrokerTemplateInstanceList: + return true, templateconversionv1.Convert_template_BrokerTemplateInstanceList_To_v1_BrokerTemplateInstanceList(a, b, s) + } + + case *appsv1.DeploymentConfig: + switch b := objB.(type) { + case *appsapi.DeploymentConfig: + return true, appsconversionv1.Convert_v1_DeploymentConfig_To_apps_DeploymentConfig(a, b, s) + } + case *appsapi.DeploymentConfig: + switch b := objB.(type) { + case *appsv1.DeploymentConfig: + return true, appsconversionv1.Convert_apps_DeploymentConfig_To_v1_DeploymentConfig(a, b, s) + } + + case *imagev1.ImageStream: + switch b := objB.(type) { + case *imageapi.ImageStream: + return true, imageconversionv1.Convert_v1_ImageStream_To_image_ImageStream(a, b, s) + } + case *imageapi.ImageStream: + switch b := objB.(type) { + case *imagev1.ImageStream: + return true, imageconversionv1.Convert_image_ImageStream_To_v1_ImageStream(a, b, s) + } + + case *imagev1.Image: + switch b := objB.(type) { + case *imageapi.Image: + return true, imageconversionv1.Convert_v1_Image_To_image_Image(a, b, s) + } + case *imageapi.Image: + switch b := objB.(type) { + case *imagev1.Image: + return true, imageconversionv1.Convert_image_Image_To_v1_Image(a, b, s) + } + + case *imagev1.ImageSignature: + switch b := objB.(type) { + case *imageapi.ImageSignature: + return true, imageconversionv1.Convert_v1_ImageSignature_To_image_ImageSignature(a, b, s) + } + case *imageapi.ImageSignature: + switch b := objB.(type) { + case *imagev1.ImageSignature: + return true, imageconversionv1.Convert_image_ImageSignature_To_v1_ImageSignature(a, b, s) + } + + case *imagev1.ImageStreamImport: + switch b := objB.(type) { + case *imageapi.ImageStreamImport: + return true, imageconversionv1.Convert_v1_ImageStreamImport_To_image_ImageStreamImport(a, b, s) + } + case *imageapi.ImageStreamImport: + switch b := objB.(type) { + case *imagev1.ImageStreamImport: + return true, imageconversionv1.Convert_image_ImageStreamImport_To_v1_ImageStreamImport(a, b, s) + } + + case *imagev1.ImageStreamList: + switch b := objB.(type) { + case *imageapi.ImageStreamList: + return true, imageconversionv1.Convert_v1_ImageStreamList_To_image_ImageStreamList(a, b, s) + } + case *imageapi.ImageStreamList: + switch b := objB.(type) { + case *imagev1.ImageStreamList: + return true, imageconversionv1.Convert_image_ImageStreamList_To_v1_ImageStreamList(a, b, s) + } + + case *imagev1.ImageStreamImage: + switch b := objB.(type) { + case *imageapi.ImageStreamImage: + return true, imageconversionv1.Convert_v1_ImageStreamImage_To_image_ImageStreamImage(a, b, s) + } + case *imageapi.ImageStreamImage: + switch b := objB.(type) { + case *imagev1.ImageStreamImage: + return true, imageconversionv1.Convert_image_ImageStreamImage_To_v1_ImageStreamImage(a, b, s) + } + + case *imagev1.ImageStreamTag: + switch b := objB.(type) { + case *imageapi.ImageStreamTag: + return true, imageconversionv1.Convert_v1_ImageStreamTag_To_image_ImageStreamTag(a, b, s) + } + case *imageapi.ImageStreamTag: + switch b := objB.(type) { + case *imagev1.ImageStreamTag: + return true, imageconversionv1.Convert_image_ImageStreamTag_To_v1_ImageStreamTag(a, b, s) + } + + case *imagev1.ImageStreamMapping: + switch b := objB.(type) { + case *imageapi.ImageStreamMapping: + return true, imageconversionv1.Convert_v1_ImageStreamMapping_To_image_ImageStreamMapping(a, b, s) + } + case *imageapi.ImageStreamMapping: + switch b := objB.(type) { + case *imagev1.ImageStreamMapping: + return true, imageconversionv1.Convert_image_ImageStreamMapping_To_v1_ImageStreamMapping(a, b, s) + } + + case *authorizationv1.ClusterRole: + switch b := objB.(type) { + case *authorizationapi.ClusterRole: + return true, authorizationconversionv1.Convert_v1_ClusterRole_To_authorization_ClusterRole(a, b, s) + } + case *authorizationapi.ClusterRole: + switch b := objB.(type) { + case *authorizationv1.ClusterRole: + return true, authorizationconversionv1.Convert_authorization_ClusterRole_To_v1_ClusterRole(a, b, s) + } + + case *authorizationv1.Role: + switch b := objB.(type) { + case *authorizationapi.Role: + return true, authorizationconversionv1.Convert_v1_Role_To_authorization_Role(a, b, s) + } + case *authorizationapi.Role: + switch b := objB.(type) { + case *authorizationv1.Role: + return true, authorizationconversionv1.Convert_authorization_Role_To_v1_Role(a, b, s) + } + + case *authorizationv1.ClusterRoleBinding: + switch b := objB.(type) { + case *authorizationapi.ClusterRoleBinding: + return true, authorizationconversionv1.Convert_v1_ClusterRoleBinding_To_authorization_ClusterRoleBinding(a, b, s) + } + case *authorizationapi.ClusterRoleBinding: + switch b := objB.(type) { + case *authorizationv1.ClusterRoleBinding: + return true, authorizationconversionv1.Convert_authorization_ClusterRoleBinding_To_v1_ClusterRoleBinding(a, b, s) + } + + case *authorizationv1.RoleBinding: + switch b := objB.(type) { + case *authorizationapi.RoleBinding: + return true, authorizationconversionv1.Convert_v1_RoleBinding_To_authorization_RoleBinding(a, b, s) + } + case *authorizationapi.RoleBinding: + switch b := objB.(type) { + case *authorizationv1.RoleBinding: + return true, authorizationconversionv1.Convert_authorization_RoleBinding_To_v1_RoleBinding(a, b, s) + } + + case *authorizationv1.IsPersonalSubjectAccessReview: + switch b := objB.(type) { + case *authorizationapi.IsPersonalSubjectAccessReview: + return true, authorizationconversionv1.Convert_v1_IsPersonalSubjectAccessReview_To_authorization_IsPersonalSubjectAccessReview(a, b, s) + } + case *authorizationapi.IsPersonalSubjectAccessReview: + switch b := objB.(type) { + case *authorizationv1.IsPersonalSubjectAccessReview: + return true, authorizationconversionv1.Convert_authorization_IsPersonalSubjectAccessReview_To_v1_IsPersonalSubjectAccessReview(a, b, s) + } + + case *authorizationv1.RoleBindingRestriction: + switch b := objB.(type) { + case *authorizationapi.RoleBindingRestriction: + return true, authorizationconversionv1.Convert_v1_RoleBindingRestriction_To_authorization_RoleBindingRestriction(a, b, s) + } + case *authorizationapi.RoleBindingRestriction: + switch b := objB.(type) { + case *authorizationv1.RoleBindingRestriction: + return true, authorizationconversionv1.Convert_authorization_RoleBindingRestriction_To_v1_RoleBindingRestriction(a, b, s) + } + + case *userv1.User: + switch b := objB.(type) { + case *userapi.User: + return true, userconversionv1.Convert_v1_User_To_user_User(a, b, s) + } + case *userapi.User: + switch b := objB.(type) { + case *userv1.User: + return true, userconversionv1.Convert_user_User_To_v1_User(a, b, s) + } + + case *userv1.UserList: + switch b := objB.(type) { + case *userapi.UserList: + return true, userconversionv1.Convert_v1_UserList_To_user_UserList(a, b, s) + } + case *userapi.UserList: + switch b := objB.(type) { + case *userv1.UserList: + return true, userconversionv1.Convert_user_UserList_To_v1_UserList(a, b, s) + } + + case *userv1.UserIdentityMapping: + switch b := objB.(type) { + case *userapi.UserIdentityMapping: + return true, userconversionv1.Convert_v1_UserIdentityMapping_To_user_UserIdentityMapping(a, b, s) + } + case *userapi.UserIdentityMapping: + switch b := objB.(type) { + case *userv1.UserIdentityMapping: + return true, userconversionv1.Convert_user_UserIdentityMapping_To_v1_UserIdentityMapping(a, b, s) + } + + case *userv1.Identity: + switch b := objB.(type) { + case *userapi.Identity: + return true, userconversionv1.Convert_v1_Identity_To_user_Identity(a, b, s) + } + case *userapi.Identity: + switch b := objB.(type) { + case *userv1.Identity: + return true, userconversionv1.Convert_user_Identity_To_v1_Identity(a, b, s) + } + + case *userv1.GroupList: + switch b := objB.(type) { + case *userapi.GroupList: + return true, userconversionv1.Convert_v1_GroupList_To_user_GroupList(a, b, s) + } + case *userapi.GroupList: + switch b := objB.(type) { + case *userv1.GroupList: + return true, userconversionv1.Convert_user_GroupList_To_v1_GroupList(a, b, s) + } + + case *userv1.Group: + switch b := objB.(type) { + case *userapi.Group: + return true, userconversionv1.Convert_v1_Group_To_user_Group(a, b, s) + } + case *userapi.Group: + switch b := objB.(type) { + case *userv1.Group: + return true, userconversionv1.Convert_user_Group_To_v1_Group(a, b, s) + } + + } + return false, nil + }) +} diff --git a/pkg/api/install/install.go b/pkg/api/install/install.go index f37c18a26093..a5e844816fde 100644 --- a/pkg/api/install/install.go +++ b/pkg/api/install/install.go @@ -1,31 +1,32 @@ package install import ( - kv1 "k8s.io/api/core/v1" - - "k8s.io/apimachinery/pkg/conversion" + crdinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/kubernetes/pkg/api/legacyscheme" - kapi "k8s.io/kubernetes/pkg/apis/core" - kapiv1 "k8s.io/kubernetes/pkg/apis/core/v1" - - // we have a strong dependency on kube objects for deployments and scale - _ "k8s.io/kubernetes/pkg/apis/apps/install" - _ "k8s.io/kubernetes/pkg/apis/authentication/install" - _ "k8s.io/kubernetes/pkg/apis/authorization/install" - _ "k8s.io/kubernetes/pkg/apis/autoscaling/install" - _ "k8s.io/kubernetes/pkg/apis/batch/install" - _ "k8s.io/kubernetes/pkg/apis/certificates/install" - _ "k8s.io/kubernetes/pkg/apis/core/install" - _ "k8s.io/kubernetes/pkg/apis/extensions/install" - _ "k8s.io/kubernetes/pkg/apis/policy/install" - _ "k8s.io/kubernetes/pkg/apis/rbac/install" - _ "k8s.io/kubernetes/pkg/apis/settings/install" - _ "k8s.io/kubernetes/pkg/apis/storage/install" + apiregistrationinstall "k8s.io/kube-aggregator/pkg/apis/apiregistration/install" + kadmissioninstall "k8s.io/kubernetes/pkg/apis/admission/install" + kadmissionregistrationinstall "k8s.io/kubernetes/pkg/apis/admissionregistration/install" + kappsinstall "k8s.io/kubernetes/pkg/apis/apps/install" + kauthenticationinstall "k8s.io/kubernetes/pkg/apis/authentication/install" + kauthorizationinstall "k8s.io/kubernetes/pkg/apis/authorization/install" + kautoscalinginstall "k8s.io/kubernetes/pkg/apis/autoscaling/install" + kbatchinstall "k8s.io/kubernetes/pkg/apis/batch/install" + kcertificatesinstall "k8s.io/kubernetes/pkg/apis/certificates/install" + kcomponentconfiginstall "k8s.io/kubernetes/pkg/apis/componentconfig/install" + kcoreinstall "k8s.io/kubernetes/pkg/apis/core/install" + keventsinstall "k8s.io/kubernetes/pkg/apis/events/install" + kextensionsinstall "k8s.io/kubernetes/pkg/apis/extensions/install" + kimagepolicyinstall "k8s.io/kubernetes/pkg/apis/imagepolicy/install" + knetworkinginstall "k8s.io/kubernetes/pkg/apis/networking/install" + kpolicyinstall "k8s.io/kubernetes/pkg/apis/policy/install" + krbacinstall "k8s.io/kubernetes/pkg/apis/rbac/install" + kschedulinginstall "k8s.io/kubernetes/pkg/apis/scheduling/install" + ksettingsinstall "k8s.io/kubernetes/pkg/apis/settings/install" + kstorageinstall "k8s.io/kubernetes/pkg/apis/storage/install" _ "github.com/openshift/origin/pkg/cmd/server/apis/config/install" - apps "github.com/openshift/origin/pkg/apps/apis/apps/install" + oapps "github.com/openshift/origin/pkg/apps/apis/apps/install" authz "github.com/openshift/origin/pkg/authorization/apis/authorization/install" build "github.com/openshift/origin/pkg/build/apis/build/install" image "github.com/openshift/origin/pkg/image/apis/image/install" @@ -37,524 +38,10 @@ import ( security "github.com/openshift/origin/pkg/security/apis/security/install" template "github.com/openshift/origin/pkg/template/apis/template/install" user "github.com/openshift/origin/pkg/user/apis/user/install" - - metainternal "k8s.io/apimachinery/pkg/apis/meta/internalversion" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - watchapi "k8s.io/apimachinery/pkg/watch" - - appsapi "github.com/openshift/origin/pkg/apps/apis/apps" - authorizationapi "github.com/openshift/origin/pkg/authorization/apis/authorization" - buildapi "github.com/openshift/origin/pkg/build/apis/build" - imageapi "github.com/openshift/origin/pkg/image/apis/image" - oauthapi "github.com/openshift/origin/pkg/oauth/apis/oauth" - projectapi "github.com/openshift/origin/pkg/project/apis/project" - routeapi "github.com/openshift/origin/pkg/route/apis/route" - templateapi "github.com/openshift/origin/pkg/template/apis/template" - userapi "github.com/openshift/origin/pkg/user/apis/user" - - appsv1 "github.com/openshift/api/apps/v1" - authorizationv1 "github.com/openshift/api/authorization/v1" - buildv1 "github.com/openshift/api/build/v1" - imagev1 "github.com/openshift/api/image/v1" - oauthv1 "github.com/openshift/api/oauth/v1" - projectv1 "github.com/openshift/api/project/v1" - routev1 "github.com/openshift/api/route/v1" - templatev1 "github.com/openshift/api/template/v1" - userv1 "github.com/openshift/api/user/v1" - - appsconversionv1 "github.com/openshift/origin/pkg/apps/apis/apps/v1" - authorizationconversionv1 "github.com/openshift/origin/pkg/authorization/apis/authorization/v1" - buildconversionv1 "github.com/openshift/origin/pkg/build/apis/build/v1" - imageconversionv1 "github.com/openshift/origin/pkg/image/apis/image/v1" - oauthconversionv1 "github.com/openshift/origin/pkg/oauth/apis/oauth/v1" - projectconversionv1 "github.com/openshift/origin/pkg/project/apis/project/v1" - routeconversionv1 "github.com/openshift/origin/pkg/route/apis/route/v1" - templateconversionv1 "github.com/openshift/origin/pkg/template/apis/template/v1" - userconversionv1 "github.com/openshift/origin/pkg/user/apis/user/v1" ) -func init() { - // This is a "fast-path" that avoids reflection for common types. It focuses on the objects that are - // converted the most in the cluster. - // TODO: generate one of these for every external API group - this is to prove the impact - legacyscheme.Scheme.AddGenericConversionFunc(func(objA, objB interface{}, s conversion.Scope) (bool, error) { - switch a := objA.(type) { - case *metav1.WatchEvent: - switch b := objB.(type) { - case *metav1.InternalEvent: - return true, metav1.Convert_versioned_Event_to_versioned_InternalEvent(a, b, s) - case *watchapi.Event: - return true, metav1.Convert_versioned_Event_to_watch_Event(a, b, s) - } - case *metav1.InternalEvent: - switch b := objB.(type) { - case *metav1.WatchEvent: - return true, metav1.Convert_versioned_InternalEvent_to_versioned_Event(a, b, s) - } - case *watchapi.Event: - switch b := objB.(type) { - case *metav1.WatchEvent: - return true, metav1.Convert_watch_Event_to_versioned_Event(a, b, s) - } - - case *metainternal.ListOptions: - switch b := objB.(type) { - case *metav1.ListOptions: - return true, metainternal.Convert_internalversion_ListOptions_To_v1_ListOptions(a, b, s) - } - case *metav1.ListOptions: - switch b := objB.(type) { - case *metainternal.ListOptions: - return true, metainternal.Convert_v1_ListOptions_To_internalversion_ListOptions(a, b, s) - } - - case *kv1.ServiceAccount: - switch b := objB.(type) { - case *kapi.ServiceAccount: - return true, kapiv1.Convert_v1_ServiceAccount_To_core_ServiceAccount(a, b, s) - } - case *kapi.ServiceAccount: - switch b := objB.(type) { - case *kv1.ServiceAccount: - return true, kapiv1.Convert_core_ServiceAccount_To_v1_ServiceAccount(a, b, s) - } - - case *kv1.SecretList: - switch b := objB.(type) { - case *kapi.SecretList: - return true, kapiv1.Convert_v1_SecretList_To_core_SecretList(a, b, s) - } - case *kapi.SecretList: - switch b := objB.(type) { - case *kv1.SecretList: - return true, kapiv1.Convert_core_SecretList_To_v1_SecretList(a, b, s) - } - - case *kv1.Secret: - switch b := objB.(type) { - case *kapi.Secret: - return true, kapiv1.Convert_v1_Secret_To_core_Secret(a, b, s) - } - case *kapi.Secret: - switch b := objB.(type) { - case *kv1.Secret: - return true, kapiv1.Convert_core_Secret_To_v1_Secret(a, b, s) - } - - case *routev1.RouteList: - switch b := objB.(type) { - case *routeapi.RouteList: - return true, routeconversionv1.Convert_v1_RouteList_To_route_RouteList(a, b, s) - } - case *routeapi.RouteList: - switch b := objB.(type) { - case *routev1.RouteList: - return true, routeconversionv1.Convert_route_RouteList_To_v1_RouteList(a, b, s) - } - - case *routev1.Route: - switch b := objB.(type) { - case *routeapi.Route: - return true, routeconversionv1.Convert_v1_Route_To_route_Route(a, b, s) - } - case *routeapi.Route: - switch b := objB.(type) { - case *routev1.Route: - return true, routeconversionv1.Convert_route_Route_To_v1_Route(a, b, s) - } - - case *buildv1.BuildList: - switch b := objB.(type) { - case *buildapi.BuildList: - return true, buildconversionv1.Convert_v1_BuildList_To_build_BuildList(a, b, s) - } - case *buildapi.BuildList: - switch b := objB.(type) { - case *buildv1.BuildList: - return true, buildconversionv1.Convert_build_BuildList_To_v1_BuildList(a, b, s) - } - - case *buildv1.BuildConfigList: - switch b := objB.(type) { - case *buildapi.BuildConfigList: - return true, buildconversionv1.Convert_v1_BuildConfigList_To_build_BuildConfigList(a, b, s) - } - case *buildapi.BuildConfigList: - switch b := objB.(type) { - case *buildv1.BuildConfigList: - return true, buildconversionv1.Convert_build_BuildConfigList_To_v1_BuildConfigList(a, b, s) - } - - case *buildv1.BuildConfig: - switch b := objB.(type) { - case *buildapi.BuildConfig: - return true, buildconversionv1.Convert_v1_BuildConfig_To_build_BuildConfig(a, b, s) - } - case *buildapi.BuildConfig: - switch b := objB.(type) { - case *buildv1.BuildConfig: - return true, buildconversionv1.Convert_build_BuildConfig_To_v1_BuildConfig(a, b, s) - } - - case *buildv1.Build: - switch b := objB.(type) { - case *buildapi.Build: - return true, buildconversionv1.Convert_v1_Build_To_build_Build(a, b, s) - } - case *buildapi.Build: - switch b := objB.(type) { - case *buildv1.Build: - return true, buildconversionv1.Convert_build_Build_To_v1_Build(a, b, s) - } - case *oauthv1.OAuthAuthorizeToken: - switch b := objB.(type) { - case *oauthapi.OAuthAuthorizeToken: - return true, oauthconversionv1.Convert_v1_OAuthAuthorizeToken_To_oauth_OAuthAuthorizeToken(a, b, s) - } - case *oauthapi.OAuthAuthorizeToken: - switch b := objB.(type) { - case *oauthv1.OAuthAuthorizeToken: - return true, oauthconversionv1.Convert_oauth_OAuthAuthorizeToken_To_v1_OAuthAuthorizeToken(a, b, s) - } - - case *oauthv1.OAuthAccessToken: - switch b := objB.(type) { - case *oauthapi.OAuthAccessToken: - return true, oauthconversionv1.Convert_v1_OAuthAccessToken_To_oauth_OAuthAccessToken(a, b, s) - } - case *oauthapi.OAuthAccessToken: - switch b := objB.(type) { - case *oauthv1.OAuthAccessToken: - return true, oauthconversionv1.Convert_oauth_OAuthAccessToken_To_v1_OAuthAccessToken(a, b, s) - } - - case *projectv1.Project: - switch b := objB.(type) { - case *projectapi.Project: - return true, projectconversionv1.Convert_v1_Project_To_project_Project(a, b, s) - } - case *projectapi.Project: - switch b := objB.(type) { - case *projectv1.Project: - return true, projectconversionv1.Convert_project_Project_To_v1_Project(a, b, s) - } - - case *projectv1.ProjectList: - switch b := objB.(type) { - case *projectapi.ProjectList: - return true, projectconversionv1.Convert_v1_ProjectList_To_project_ProjectList(a, b, s) - } - case *projectapi.ProjectList: - switch b := objB.(type) { - case *projectv1.ProjectList: - return true, projectconversionv1.Convert_project_ProjectList_To_v1_ProjectList(a, b, s) - } - - case *templatev1.Template: - switch b := objB.(type) { - case *templateapi.Template: - return true, templateconversionv1.Convert_v1_Template_To_template_Template(a, b, s) - } - case *templateapi.Template: - switch b := objB.(type) { - case *templatev1.Template: - return true, templateconversionv1.Convert_template_Template_To_v1_Template(a, b, s) - } - - case *templatev1.TemplateList: - switch b := objB.(type) { - case *templateapi.TemplateList: - return true, templateconversionv1.Convert_v1_TemplateList_To_template_TemplateList(a, b, s) - } - case *templateapi.TemplateList: - switch b := objB.(type) { - case *templatev1.TemplateList: - return true, templateconversionv1.Convert_template_TemplateList_To_v1_TemplateList(a, b, s) - } - - case *templatev1.TemplateInstance: - switch b := objB.(type) { - case *templateapi.TemplateInstance: - return true, templateconversionv1.Convert_v1_TemplateInstance_To_template_TemplateInstance(a, b, s) - } - case *templateapi.TemplateInstance: - switch b := objB.(type) { - case *templatev1.TemplateInstance: - return true, templateconversionv1.Convert_template_TemplateInstance_To_v1_TemplateInstance(a, b, s) - } - - case *templatev1.TemplateInstanceList: - switch b := objB.(type) { - case *templateapi.TemplateInstanceList: - return true, templateconversionv1.Convert_v1_TemplateInstanceList_To_template_TemplateInstanceList(a, b, s) - } - case *templateapi.TemplateInstanceList: - switch b := objB.(type) { - case *templatev1.TemplateInstanceList: - return true, templateconversionv1.Convert_template_TemplateInstanceList_To_v1_TemplateInstanceList(a, b, s) - } - - case *templatev1.BrokerTemplateInstance: - switch b := objB.(type) { - case *templateapi.BrokerTemplateInstance: - return true, templateconversionv1.Convert_v1_BrokerTemplateInstance_To_template_BrokerTemplateInstance(a, b, s) - } - case *templateapi.BrokerTemplateInstance: - switch b := objB.(type) { - case *templatev1.BrokerTemplateInstance: - return true, templateconversionv1.Convert_template_BrokerTemplateInstance_To_v1_BrokerTemplateInstance(a, b, s) - } - - case *templatev1.BrokerTemplateInstanceList: - switch b := objB.(type) { - case *templateapi.BrokerTemplateInstanceList: - return true, templateconversionv1.Convert_v1_BrokerTemplateInstanceList_To_template_BrokerTemplateInstanceList(a, b, s) - } - case *templateapi.BrokerTemplateInstanceList: - switch b := objB.(type) { - case *templatev1.BrokerTemplateInstanceList: - return true, templateconversionv1.Convert_template_BrokerTemplateInstanceList_To_v1_BrokerTemplateInstanceList(a, b, s) - } - - case *appsv1.DeploymentConfig: - switch b := objB.(type) { - case *appsapi.DeploymentConfig: - return true, appsconversionv1.Convert_v1_DeploymentConfig_To_apps_DeploymentConfig(a, b, s) - } - case *appsapi.DeploymentConfig: - switch b := objB.(type) { - case *appsv1.DeploymentConfig: - return true, appsconversionv1.Convert_apps_DeploymentConfig_To_v1_DeploymentConfig(a, b, s) - } - - case *imagev1.ImageStream: - switch b := objB.(type) { - case *imageapi.ImageStream: - return true, imageconversionv1.Convert_v1_ImageStream_To_image_ImageStream(a, b, s) - } - case *imageapi.ImageStream: - switch b := objB.(type) { - case *imagev1.ImageStream: - return true, imageconversionv1.Convert_image_ImageStream_To_v1_ImageStream(a, b, s) - } - - case *imagev1.Image: - switch b := objB.(type) { - case *imageapi.Image: - return true, imageconversionv1.Convert_v1_Image_To_image_Image(a, b, s) - } - case *imageapi.Image: - switch b := objB.(type) { - case *imagev1.Image: - return true, imageconversionv1.Convert_image_Image_To_v1_Image(a, b, s) - } - - case *imagev1.ImageSignature: - switch b := objB.(type) { - case *imageapi.ImageSignature: - return true, imageconversionv1.Convert_v1_ImageSignature_To_image_ImageSignature(a, b, s) - } - case *imageapi.ImageSignature: - switch b := objB.(type) { - case *imagev1.ImageSignature: - return true, imageconversionv1.Convert_image_ImageSignature_To_v1_ImageSignature(a, b, s) - } - - case *imagev1.ImageStreamImport: - switch b := objB.(type) { - case *imageapi.ImageStreamImport: - return true, imageconversionv1.Convert_v1_ImageStreamImport_To_image_ImageStreamImport(a, b, s) - } - case *imageapi.ImageStreamImport: - switch b := objB.(type) { - case *imagev1.ImageStreamImport: - return true, imageconversionv1.Convert_image_ImageStreamImport_To_v1_ImageStreamImport(a, b, s) - } - - case *imagev1.ImageStreamList: - switch b := objB.(type) { - case *imageapi.ImageStreamList: - return true, imageconversionv1.Convert_v1_ImageStreamList_To_image_ImageStreamList(a, b, s) - } - case *imageapi.ImageStreamList: - switch b := objB.(type) { - case *imagev1.ImageStreamList: - return true, imageconversionv1.Convert_image_ImageStreamList_To_v1_ImageStreamList(a, b, s) - } - - case *imagev1.ImageStreamImage: - switch b := objB.(type) { - case *imageapi.ImageStreamImage: - return true, imageconversionv1.Convert_v1_ImageStreamImage_To_image_ImageStreamImage(a, b, s) - } - case *imageapi.ImageStreamImage: - switch b := objB.(type) { - case *imagev1.ImageStreamImage: - return true, imageconversionv1.Convert_image_ImageStreamImage_To_v1_ImageStreamImage(a, b, s) - } - - case *imagev1.ImageStreamTag: - switch b := objB.(type) { - case *imageapi.ImageStreamTag: - return true, imageconversionv1.Convert_v1_ImageStreamTag_To_image_ImageStreamTag(a, b, s) - } - case *imageapi.ImageStreamTag: - switch b := objB.(type) { - case *imagev1.ImageStreamTag: - return true, imageconversionv1.Convert_image_ImageStreamTag_To_v1_ImageStreamTag(a, b, s) - } - - case *imagev1.ImageStreamMapping: - switch b := objB.(type) { - case *imageapi.ImageStreamMapping: - return true, imageconversionv1.Convert_v1_ImageStreamMapping_To_image_ImageStreamMapping(a, b, s) - } - case *imageapi.ImageStreamMapping: - switch b := objB.(type) { - case *imagev1.ImageStreamMapping: - return true, imageconversionv1.Convert_image_ImageStreamMapping_To_v1_ImageStreamMapping(a, b, s) - } - - case *authorizationv1.ClusterRole: - switch b := objB.(type) { - case *authorizationapi.ClusterRole: - return true, authorizationconversionv1.Convert_v1_ClusterRole_To_authorization_ClusterRole(a, b, s) - } - case *authorizationapi.ClusterRole: - switch b := objB.(type) { - case *authorizationv1.ClusterRole: - return true, authorizationconversionv1.Convert_authorization_ClusterRole_To_v1_ClusterRole(a, b, s) - } - - case *authorizationv1.Role: - switch b := objB.(type) { - case *authorizationapi.Role: - return true, authorizationconversionv1.Convert_v1_Role_To_authorization_Role(a, b, s) - } - case *authorizationapi.Role: - switch b := objB.(type) { - case *authorizationv1.Role: - return true, authorizationconversionv1.Convert_authorization_Role_To_v1_Role(a, b, s) - } - - case *authorizationv1.ClusterRoleBinding: - switch b := objB.(type) { - case *authorizationapi.ClusterRoleBinding: - return true, authorizationconversionv1.Convert_v1_ClusterRoleBinding_To_authorization_ClusterRoleBinding(a, b, s) - } - case *authorizationapi.ClusterRoleBinding: - switch b := objB.(type) { - case *authorizationv1.ClusterRoleBinding: - return true, authorizationconversionv1.Convert_authorization_ClusterRoleBinding_To_v1_ClusterRoleBinding(a, b, s) - } - - case *authorizationv1.RoleBinding: - switch b := objB.(type) { - case *authorizationapi.RoleBinding: - return true, authorizationconversionv1.Convert_v1_RoleBinding_To_authorization_RoleBinding(a, b, s) - } - case *authorizationapi.RoleBinding: - switch b := objB.(type) { - case *authorizationv1.RoleBinding: - return true, authorizationconversionv1.Convert_authorization_RoleBinding_To_v1_RoleBinding(a, b, s) - } - - case *authorizationv1.IsPersonalSubjectAccessReview: - switch b := objB.(type) { - case *authorizationapi.IsPersonalSubjectAccessReview: - return true, authorizationconversionv1.Convert_v1_IsPersonalSubjectAccessReview_To_authorization_IsPersonalSubjectAccessReview(a, b, s) - } - case *authorizationapi.IsPersonalSubjectAccessReview: - switch b := objB.(type) { - case *authorizationv1.IsPersonalSubjectAccessReview: - return true, authorizationconversionv1.Convert_authorization_IsPersonalSubjectAccessReview_To_v1_IsPersonalSubjectAccessReview(a, b, s) - } - - case *authorizationv1.RoleBindingRestriction: - switch b := objB.(type) { - case *authorizationapi.RoleBindingRestriction: - return true, authorizationconversionv1.Convert_v1_RoleBindingRestriction_To_authorization_RoleBindingRestriction(a, b, s) - } - case *authorizationapi.RoleBindingRestriction: - switch b := objB.(type) { - case *authorizationv1.RoleBindingRestriction: - return true, authorizationconversionv1.Convert_authorization_RoleBindingRestriction_To_v1_RoleBindingRestriction(a, b, s) - } - - case *userv1.User: - switch b := objB.(type) { - case *userapi.User: - return true, userconversionv1.Convert_v1_User_To_user_User(a, b, s) - } - case *userapi.User: - switch b := objB.(type) { - case *userv1.User: - return true, userconversionv1.Convert_user_User_To_v1_User(a, b, s) - } - - case *userv1.UserList: - switch b := objB.(type) { - case *userapi.UserList: - return true, userconversionv1.Convert_v1_UserList_To_user_UserList(a, b, s) - } - case *userapi.UserList: - switch b := objB.(type) { - case *userv1.UserList: - return true, userconversionv1.Convert_user_UserList_To_v1_UserList(a, b, s) - } - - case *userv1.UserIdentityMapping: - switch b := objB.(type) { - case *userapi.UserIdentityMapping: - return true, userconversionv1.Convert_v1_UserIdentityMapping_To_user_UserIdentityMapping(a, b, s) - } - case *userapi.UserIdentityMapping: - switch b := objB.(type) { - case *userv1.UserIdentityMapping: - return true, userconversionv1.Convert_user_UserIdentityMapping_To_v1_UserIdentityMapping(a, b, s) - } - - case *userv1.Identity: - switch b := objB.(type) { - case *userapi.Identity: - return true, userconversionv1.Convert_v1_Identity_To_user_Identity(a, b, s) - } - case *userapi.Identity: - switch b := objB.(type) { - case *userv1.Identity: - return true, userconversionv1.Convert_user_Identity_To_v1_Identity(a, b, s) - } - - case *userv1.GroupList: - switch b := objB.(type) { - case *userapi.GroupList: - return true, userconversionv1.Convert_v1_GroupList_To_user_GroupList(a, b, s) - } - case *userapi.GroupList: - switch b := objB.(type) { - case *userv1.GroupList: - return true, userconversionv1.Convert_user_GroupList_To_v1_GroupList(a, b, s) - } - - case *userv1.Group: - switch b := objB.(type) { - case *userapi.Group: - return true, userconversionv1.Convert_v1_Group_To_user_Group(a, b, s) - } - case *userapi.Group: - switch b := objB.(type) { - case *userv1.Group: - return true, userconversionv1.Convert_user_Group_To_v1_Group(a, b, s) - } - - } - return false, nil - }) -} - -func InstallAll(scheme *runtime.Scheme) { - // add Origin types to the given scheme - apps.Install(scheme) +func InstallInternalOpenShift(scheme *runtime.Scheme) { + oapps.Install(scheme) authz.Install(scheme) build.Install(scheme) image.Install(scheme) @@ -567,3 +54,29 @@ func InstallAll(scheme *runtime.Scheme) { template.Install(scheme) user.Install(scheme) } + +func InstallInternalKube(scheme *runtime.Scheme) { + crdinstall.Install(scheme) + + apiregistrationinstall.Install(scheme) + + kadmissioninstall.Install(scheme) + kadmissionregistrationinstall.Install(scheme) + kappsinstall.Install(scheme) + kauthenticationinstall.Install(scheme) + kauthorizationinstall.Install(scheme) + kautoscalinginstall.Install(scheme) + kbatchinstall.Install(scheme) + kcertificatesinstall.Install(scheme) + kcomponentconfiginstall.Install(scheme) + kcoreinstall.Install(scheme) + keventsinstall.Install(scheme) + kextensionsinstall.Install(scheme) + kimagepolicyinstall.Install(scheme) + knetworkinginstall.Install(scheme) + kpolicyinstall.Install(scheme) + krbacinstall.Install(scheme) + kschedulinginstall.Install(scheme) + ksettingsinstall.Install(scheme) + kstorageinstall.Install(scheme) +} diff --git a/pkg/api/legacy/install.go b/pkg/api/legacy/install.go index 12d0a654408e..fff37fbcdcc4 100644 --- a/pkg/api/legacy/install.go +++ b/pkg/api/legacy/install.go @@ -21,7 +21,7 @@ func Resource(resource string) schema.GroupResource { return schema.GroupResource{Group: GroupName, Resource: resource} } -func InstallLegacyInternalAll(scheme *runtime.Scheme) { +func InstallInternalLegacyAll(scheme *runtime.Scheme) { InstallInternalLegacyApps(scheme) InstallInternalLegacyAuthorization(scheme) InstallInternalLegacyBuild(scheme) @@ -36,7 +36,7 @@ func InstallLegacyInternalAll(scheme *runtime.Scheme) { InstallInternalLegacyUser(scheme) } -func InstallLegacyExternalAll(scheme *runtime.Scheme) { +func InstallExternalLegacyAll(scheme *runtime.Scheme) { InstallExternalLegacyApps(scheme) InstallExternalLegacyAuthorization(scheme) InstallExternalLegacyBuild(scheme) diff --git a/pkg/api/legacygroupification/groupification.go b/pkg/api/legacygroupification/groupification.go index fc7db091ddf5..c9935903a89d 100644 --- a/pkg/api/legacygroupification/groupification.go +++ b/pkg/api/legacygroupification/groupification.go @@ -31,6 +31,7 @@ import ( "github.com/openshift/origin/pkg/user/apis/user" ) +// deprecated func IsOAPI(gvk schema.GroupVersionKind) bool { if len(gvk.Group) > 0 { return false @@ -40,6 +41,7 @@ func IsOAPI(gvk schema.GroupVersionKind) bool { return ok } +// deprecated func OAPIToGroupifiedGVK(gvk *schema.GroupVersionKind) { if len(gvk.Group) > 0 { return @@ -52,6 +54,7 @@ func OAPIToGroupifiedGVK(gvk *schema.GroupVersionKind) { gvk.Group = newGroup } +// deprecated func OAPIToGroupified(uncast runtime.Object, gvk *schema.GroupVersionKind) { if len(gvk.Group) > 0 { return diff --git a/pkg/cmd/openshift-apiserver/cmd.go b/pkg/cmd/openshift-apiserver/cmd.go index 22f6511b4adb..34cebeed9241 100644 --- a/pkg/cmd/openshift-apiserver/cmd.go +++ b/pkg/cmd/openshift-apiserver/cmd.go @@ -38,7 +38,7 @@ func NewOpenShiftAPIServerCommand(name, basename string, out, errout io.Writer) Short: "Launch OpenShift apiserver", Long: longDescription, Run: func(c *cobra.Command, args []string) { - legacy.InstallLegacyInternalAll(legacyscheme.Scheme) + legacy.InstallInternalLegacyAll(legacyscheme.Scheme) kcmdutil.CheckErr(options.Validate()) diff --git a/pkg/oc/cli/cli.go b/pkg/oc/cli/cli.go index 67e85ac77297..5132a5ff2c0f 100644 --- a/pkg/oc/cli/cli.go +++ b/pkg/oc/cli/cli.go @@ -8,10 +8,8 @@ import ( "runtime" "strings" - "github.com/golang/glog" "github.com/openshift/origin/pkg/oc/util/ocscheme" "github.com/spf13/cobra" - "k8s.io/client-go/kubernetes/scheme" kubecmd "k8s.io/kubernetes/pkg/kubectl/cmd" ktemplates "k8s.io/kubernetes/pkg/kubectl/cmd/templates" kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" @@ -345,10 +343,6 @@ func CommandFor(basename string) *cobra.Command { basename = strings.TrimSuffix(basename, ".exe") } - if err := ocscheme.AddOpenShiftExternalToScheme(scheme.Scheme); err != nil { - glog.Fatal(err) - } - switch basename { case "kubectl": kcmdutil.DefaultPrintingScheme = ocscheme.PrintingInternalScheme diff --git a/pkg/oc/cli/debug/debug.go b/pkg/oc/cli/debug/debug.go index d3f98b60e6bd..31c6d7313e22 100644 --- a/pkg/oc/cli/debug/debug.go +++ b/pkg/oc/cli/debug/debug.go @@ -35,6 +35,7 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers" + "k8s.io/kubernetes/pkg/kubectl/scheme" "k8s.io/kubernetes/pkg/kubectl/util/term" "k8s.io/kubernetes/pkg/util/interrupt" @@ -49,7 +50,6 @@ import ( imageclient "github.com/openshift/origin/pkg/image/generated/internalclientset/typed/image/internalversion" generateapp "github.com/openshift/origin/pkg/oc/lib/newapp/app" utilenv "github.com/openshift/origin/pkg/oc/util/env" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) type DebugOptions struct { @@ -141,7 +141,7 @@ var ( func NewDebugOptions(streams genericclioptions.IOStreams) *DebugOptions { return &DebugOptions{ - PrintFlags: genericclioptions.NewPrintFlags("").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("").WithTypeSetter(scheme.Scheme), IOStreams: streams, Timeout: 15 * time.Minute, KeepInitContainers: true, @@ -327,7 +327,7 @@ func (o DebugOptions) Validate() error { // Debug creates and runs a debugging pod. func (o *DebugOptions) RunDebug() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). NamespaceParam(o.Namespace).DefaultNamespace(). SingleResourceType(). ResourceNames("pods", o.Resources...). diff --git a/pkg/oc/cli/logs/logs.go b/pkg/oc/cli/logs/logs.go index 9f5a64e477bb..e8977045aef2 100644 --- a/pkg/oc/cli/logs/logs.go +++ b/pkg/oc/cli/logs/logs.go @@ -13,6 +13,7 @@ import ( "k8s.io/kubernetes/pkg/kubectl/cmd/templates" kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/scheme" "github.com/openshift/api/apps" "github.com/openshift/api/build" @@ -21,7 +22,6 @@ import ( buildclientinternal "github.com/openshift/origin/pkg/build/generated/internalclientset" buildclient "github.com/openshift/origin/pkg/build/generated/internalclientset/typed/build/internalversion" buildutil "github.com/openshift/origin/pkg/build/util" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) // LogsRecommendedCommandName is the recommended command name @@ -143,7 +143,7 @@ func (o *LogsOptions) Complete(f kcmdutil.Factory, cmd *cobra.Command, args []st podLogOptions := o.KubeLogOptions.Options.(*kapi.PodLogOptions) infos, err := f.NewBuilder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). NamespaceParam(o.Namespace).DefaultNamespace(). ResourceNames("pods", args...). SingleResourceType().RequireObject(false). diff --git a/pkg/oc/cli/rollout/cancel.go b/pkg/oc/cli/rollout/cancel.go index ad13fe6b8a4c..f57348f77cbc 100644 --- a/pkg/oc/cli/rollout/cancel.go +++ b/pkg/oc/cli/rollout/cancel.go @@ -6,7 +6,7 @@ import ( "strings" "time" - units "github.com/docker/go-units" + "github.com/docker/go-units" "github.com/spf13/cobra" "k8s.io/apimachinery/pkg/api/meta" @@ -14,7 +14,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" utilerrors "k8s.io/apimachinery/pkg/util/errors" - "k8s.io/kubernetes/pkg/api/legacyscheme" kapi "k8s.io/kubernetes/pkg/apis/core" kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/pkg/kubectl/cmd/templates" @@ -22,12 +21,12 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/scheme" appsv1 "github.com/openshift/api/apps/v1" appsapi "github.com/openshift/origin/pkg/apps/apis/apps" appsinternalutil "github.com/openshift/origin/pkg/apps/controller/util" "github.com/openshift/origin/pkg/oc/cli/set" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) type CancelOptions struct { @@ -37,7 +36,6 @@ type CancelOptions struct { Namespace string NamespaceExplicit bool Mapper meta.RESTMapper - Typer runtime.ObjectTyper Encoder runtime.Encoder Resources []string Clientset kclientset.Interface @@ -98,7 +96,6 @@ func (o *CancelOptions) Complete(f kcmdutil.Factory, cmd *cobra.Command, args [] } var err error - o.Typer = legacyscheme.Scheme o.Mapper, err = f.ToRESTMapper() if err != nil { return err @@ -127,7 +124,7 @@ func (o *CancelOptions) Complete(f kcmdutil.Factory, cmd *cobra.Command, args [] func (o CancelOptions) Run() error { r := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). NamespaceParam(o.Namespace).DefaultNamespace(). FilenameParam(o.NamespaceExplicit, &o.FilenameOptions). ResourceTypeOrNameArgs(true, o.Resources...). diff --git a/pkg/oc/cli/rollout/retry.go b/pkg/oc/cli/rollout/retry.go index bf09a237ef42..5f4e2faf47a4 100644 --- a/pkg/oc/cli/rollout/retry.go +++ b/pkg/oc/cli/rollout/retry.go @@ -20,13 +20,13 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/scheme" appsv1 "github.com/openshift/api/apps/v1" appsapi "github.com/openshift/origin/pkg/apps/apis/apps" appsinternalutil "github.com/openshift/origin/pkg/apps/controller/util" appsutil "github.com/openshift/origin/pkg/apps/util" "github.com/openshift/origin/pkg/oc/cli/set" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) type RetryOptions struct { @@ -65,7 +65,7 @@ var ( func NewRolloutRetryOptions(streams genericclioptions.IOStreams) *RetryOptions { return &RetryOptions{ - PrintFlags: genericclioptions.NewPrintFlags("already retried").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("already retried").WithTypeSetter(scheme.Scheme), IOStreams: streams, } } @@ -135,7 +135,7 @@ func (o RetryOptions) Run() error { } r := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). NamespaceParam(o.Namespace).DefaultNamespace(). FilenameParam(o.ExplicitNamespace, &o.FilenameOptions). ResourceTypeOrNameArgs(true, o.Resources...). diff --git a/pkg/oc/cli/set/buildhook.go b/pkg/oc/cli/set/buildhook.go index 6ee20420ec81..a9922c10df0f 100644 --- a/pkg/oc/cli/set/buildhook.go +++ b/pkg/oc/cli/set/buildhook.go @@ -17,7 +17,7 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" buildv1 "github.com/openshift/api/build/v1" - "github.com/openshift/origin/pkg/oc/util/ocscheme" + "k8s.io/kubernetes/pkg/kubectl/scheme" ) var ( @@ -78,7 +78,7 @@ type BuildHookOptions struct { func NewBuildHookOptions(streams genericclioptions.IOStreams) *BuildHookOptions { return &BuildHookOptions{ - PrintFlags: genericclioptions.NewPrintFlags("hooks updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("hooks updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, } } @@ -184,7 +184,7 @@ func (o *BuildHookOptions) Validate() error { func (o *BuildHookOptions) Run() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/buildsecret.go b/pkg/oc/cli/set/buildsecret.go index 60415101ae93..f74df40423c6 100644 --- a/pkg/oc/cli/set/buildsecret.go +++ b/pkg/oc/cli/set/buildsecret.go @@ -17,9 +17,9 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/scheme" buildv1 "github.com/openshift/api/build/v1" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) var ( @@ -77,7 +77,7 @@ type BuildSecretOptions struct { func NewBuildSecretOptions(streams genericclioptions.IOStreams) *BuildSecretOptions { return &BuildSecretOptions{ - PrintFlags: genericclioptions.NewPrintFlags("secret updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("secret updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, } } @@ -116,7 +116,7 @@ var supportedBuildTypes = []string{"buildconfigs"} func (o *BuildSecretOptions) secretFromArg(arg string) (string, error) { builder := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). NamespaceParam(o.Namespace).DefaultNamespace(). RequireObject(false). @@ -213,7 +213,7 @@ func (o *BuildSecretOptions) Run() error { } b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/deploymenthook.go b/pkg/oc/cli/set/deploymenthook.go index 5c6b9953b0db..486fe47c67d5 100644 --- a/pkg/oc/cli/set/deploymenthook.go +++ b/pkg/oc/cli/set/deploymenthook.go @@ -17,11 +17,11 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/scheme" appsv1 "github.com/openshift/api/apps/v1" cmdutil "github.com/openshift/origin/pkg/cmd/util" utilenv "github.com/openshift/origin/pkg/oc/util/env" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) var ( @@ -92,7 +92,7 @@ type DeploymentHookOptions struct { func NewDeploymentHookOptions(streams genericclioptions.IOStreams) *DeploymentHookOptions { return &DeploymentHookOptions{ - PrintFlags: genericclioptions.NewPrintFlags("hooks updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("hooks updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, FailurePolicyStr: "ignore", } @@ -230,7 +230,7 @@ func (o *DeploymentHookOptions) Validate() error { func (o *DeploymentHookOptions) Run() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/env.go b/pkg/oc/cli/set/env.go index 2f6cffc685f7..bf7ed1517e69 100644 --- a/pkg/oc/cli/set/env.go +++ b/pkg/oc/cli/set/env.go @@ -26,12 +26,12 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers" + "k8s.io/kubernetes/pkg/kubectl/scheme" buildv1 "github.com/openshift/api/build/v1" cmdutil "github.com/openshift/origin/pkg/cmd/util" "github.com/openshift/origin/pkg/oc/util/clientcmd" utilenv "github.com/openshift/origin/pkg/oc/util/env" - "github.com/openshift/origin/pkg/oc/util/ocscheme" envresolve "github.com/openshift/origin/pkg/pod/envresolve" ) @@ -119,7 +119,7 @@ type EnvOptions struct { func NewEnvOptions(streams genericclioptions.IOStreams) *EnvOptions { return &EnvOptions{ - PrintFlags: genericclioptions.NewPrintFlags("updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, ContainerSelector: "*", @@ -236,7 +236,7 @@ func (o *EnvOptions) RunEnv() error { if len(o.From) != 0 { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). @@ -301,7 +301,7 @@ func (o *EnvOptions) RunEnv() error { } b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/helper.go b/pkg/oc/cli/set/helper.go index 9549a8702e1c..02d9e07297c8 100644 --- a/pkg/oc/cli/set/helper.go +++ b/pkg/oc/cli/set/helper.go @@ -2,16 +2,13 @@ package set import ( "fmt" - "io" "strings" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/kubernetes/pkg/api/legacyscheme" kapi "k8s.io/kubernetes/pkg/apis/core" - kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/scheme" ) @@ -29,32 +26,6 @@ func selectContainers(containers []kapi.Container, spec string) ([]*kapi.Contain return out, skipped } -func handlePodUpdateError(out io.Writer, err error, resource string) { - if statusError, ok := err.(*errors.StatusError); ok && errors.IsInvalid(err) { - errorDetails := statusError.Status().Details - if errorDetails.Kind == "Pod" { - all, match := true, false - for _, cause := range errorDetails.Causes { - if cause.Field == "spec" && strings.Contains(cause.Message, "may not update fields other than") { - fmt.Fprintf(out, "error: may not update %s in pod %q directly\n", resource, errorDetails.Name) - match = true - } else { - all = false - } - } - if all && match { - return - } - } else { - if ok := kcmdutil.PrintErrorWithCauses(err, out); ok { - return - } - } - } - - fmt.Fprintf(out, "error: %v\n", err) -} - // selectString returns true if the provided string matches spec, where spec is a string with // a non-greedy '*' wildcard operator. // TODO: turn into a regex and handle greedy matches and backtracking. diff --git a/pkg/oc/cli/set/imagelookup.go b/pkg/oc/cli/set/imagelookup.go index 930162510d33..f02449976199 100644 --- a/pkg/oc/cli/set/imagelookup.go +++ b/pkg/oc/cli/set/imagelookup.go @@ -16,10 +16,10 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/scheme" imagev1 "github.com/openshift/api/image/v1" ometa "github.com/openshift/origin/pkg/api/meta" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) var ( @@ -104,7 +104,7 @@ type ImageLookupOptions struct { func NewImageLookupOptions(streams genericclioptions.IOStreams) *ImageLookupOptions { return &ImageLookupOptions{ - PrintFlags: genericclioptions.NewPrintFlags("image lookup updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("image lookup updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, Enabled: true, } @@ -187,7 +187,7 @@ func (o *ImageLookupOptions) Validate() error { // Run executes the ImageLookupOptions or returns an error. func (o *ImageLookupOptions) Run() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/probe.go b/pkg/oc/cli/set/probe.go index 857552031e7a..044f72b2bf77 100644 --- a/pkg/oc/cli/set/probe.go +++ b/pkg/oc/cli/set/probe.go @@ -23,9 +23,9 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers" + "k8s.io/kubernetes/pkg/kubectl/scheme" "github.com/openshift/origin/pkg/oc/util/clientcmd" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) var ( @@ -116,7 +116,7 @@ type ProbeOptions struct { func NewProbeOptions(streams genericclioptions.IOStreams) *ProbeOptions { return &ProbeOptions{ - PrintFlags: genericclioptions.NewPrintFlags("probes updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("probes updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, ContainerSelector: "*", @@ -290,7 +290,7 @@ func (o *ProbeOptions) Validate() error { func (o *ProbeOptions) Run() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/routebackends.go b/pkg/oc/cli/set/routebackends.go index 27b000029ac8..257caf94de1c 100644 --- a/pkg/oc/cli/set/routebackends.go +++ b/pkg/oc/cli/set/routebackends.go @@ -20,9 +20,9 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/scheme" routev1 "github.com/openshift/api/route/v1" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) var ( @@ -94,7 +94,7 @@ type BackendsOptions struct { func NewBackendsOptions(streams genericclioptions.IOStreams) *BackendsOptions { return &BackendsOptions{ - PrintFlags: genericclioptions.NewPrintFlags("backends updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("backends updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, } } @@ -185,7 +185,7 @@ func (o *BackendsOptions) Validate() error { // Run executes the BackendOptions or returns an error. func (o *BackendsOptions) Run() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/triggers.go b/pkg/oc/cli/set/triggers.go index ea5939a28488..4ab001cd37b6 100644 --- a/pkg/oc/cli/set/triggers.go +++ b/pkg/oc/cli/set/triggers.go @@ -28,6 +28,7 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" + "k8s.io/kubernetes/pkg/kubectl/scheme" appsv1 "github.com/openshift/api/apps/v1" buildv1 "github.com/openshift/api/build/v1" @@ -36,7 +37,6 @@ import ( triggerapi "github.com/openshift/origin/pkg/image/apis/image/v1/trigger" "github.com/openshift/origin/pkg/image/trigger/annotations" "github.com/openshift/origin/pkg/oc/lib/newapp/app" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) var ( @@ -122,7 +122,7 @@ type TriggersOptions struct { func NewTriggersOptions(streams genericclioptions.IOStreams) *TriggersOptions { return &TriggersOptions{ - PrintFlags: genericclioptions.NewPrintFlags("triggers updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("triggers updated").WithTypeSetter(scheme.Scheme), IOStreams: streams, } } @@ -283,7 +283,7 @@ func (o *TriggersOptions) Validate() error { func (o *TriggersOptions) Run() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.Namespace).DefaultNamespace(). diff --git a/pkg/oc/cli/set/volume.go b/pkg/oc/cli/set/volume.go index 694e65cf0dfe..1848c92584ed 100644 --- a/pkg/oc/cli/set/volume.go +++ b/pkg/oc/cli/set/volume.go @@ -29,9 +29,9 @@ import ( "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers" + "k8s.io/kubernetes/pkg/kubectl/scheme" "github.com/openshift/origin/pkg/oc/util/clientcmd" - "github.com/openshift/origin/pkg/oc/util/ocscheme" ) const ( @@ -157,7 +157,7 @@ type AddVolumeOptions struct { func NewVolumeOptions(streams genericclioptions.IOStreams) *VolumeOptions { return &VolumeOptions{ - PrintFlags: genericclioptions.NewPrintFlags("volume updated").WithTypeSetter(ocscheme.PrintingInternalScheme), + PrintFlags: genericclioptions.NewPrintFlags("volume updated").WithTypeSetter(scheme.Scheme), Containers: "*", AddOpts: &AddVolumeOptions{ @@ -438,7 +438,7 @@ func (a *AddVolumeOptions) Complete() error { func (o *VolumeOptions) RunVolume() error { b := o.Builder(). - WithScheme(ocscheme.ReadingInternalScheme, ocscheme.ReadingInternalScheme.PrioritizedVersionsAllGroups()...). + WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). LocalParam(o.Local). ContinueOnError(). NamespaceParam(o.DefaultNamespace).DefaultNamespace(). diff --git a/pkg/oc/util/ocscheme/groupified.go b/pkg/oc/util/ocscheme/groupified.go deleted file mode 100644 index 6d9bb5d2b527..000000000000 --- a/pkg/oc/util/ocscheme/groupified.go +++ /dev/null @@ -1,59 +0,0 @@ -package ocscheme - -import ( - "k8s.io/apimachinery/pkg/runtime" - - appsv1 "github.com/openshift/api/apps/v1" - authorizationv1 "github.com/openshift/api/authorization/v1" - buildv1 "github.com/openshift/api/build/v1" - imagev1 "github.com/openshift/api/image/v1" - networkv1 "github.com/openshift/api/network/v1" - oauthv1 "github.com/openshift/api/oauth/v1" - projectv1 "github.com/openshift/api/project/v1" - quotav1 "github.com/openshift/api/quota/v1" - routev1 "github.com/openshift/api/route/v1" - securityv1 "github.com/openshift/api/security/v1" - templatev1 "github.com/openshift/api/template/v1" - userv1 "github.com/openshift/api/user/v1" -) - -func AddOpenShiftExternalToScheme(scheme *runtime.Scheme) error { - if err := appsv1.AddToScheme(scheme); err != nil { - return err - } - if err := authorizationv1.AddToScheme(scheme); err != nil { - return err - } - if err := buildv1.AddToScheme(scheme); err != nil { - return err - } - if err := imagev1.AddToScheme(scheme); err != nil { - return err - } - if err := networkv1.AddToScheme(scheme); err != nil { - return err - } - if err := oauthv1.AddToScheme(scheme); err != nil { - return err - } - if err := projectv1.AddToScheme(scheme); err != nil { - return err - } - if err := quotav1.AddToScheme(scheme); err != nil { - return err - } - if err := routev1.AddToScheme(scheme); err != nil { - return err - } - if err := securityv1.AddToScheme(scheme); err != nil { - return err - } - if err := templatev1.AddToScheme(scheme); err != nil { - return err - } - if err := userv1.AddToScheme(scheme); err != nil { - return err - } - - return nil -} diff --git a/pkg/oc/util/ocscheme/printing.go b/pkg/oc/util/ocscheme/printing.go index b768808adab6..d13ce1427704 100644 --- a/pkg/oc/util/ocscheme/printing.go +++ b/pkg/oc/util/ocscheme/printing.go @@ -2,25 +2,6 @@ package ocscheme import ( "k8s.io/apimachinery/pkg/runtime" - kadmissioninstall "k8s.io/kubernetes/pkg/apis/admission/install" - kadmissionregistrationinstall "k8s.io/kubernetes/pkg/apis/admissionregistration/install" - kappsinstall "k8s.io/kubernetes/pkg/apis/apps/install" - kauthenticationinstall "k8s.io/kubernetes/pkg/apis/authentication/install" - kauthorizationinstall "k8s.io/kubernetes/pkg/apis/authorization/install" - kautoscalinginstall "k8s.io/kubernetes/pkg/apis/autoscaling/install" - kbatchinstall "k8s.io/kubernetes/pkg/apis/batch/install" - kcertificatesinstall "k8s.io/kubernetes/pkg/apis/certificates/install" - kcomponentconfiginstall "k8s.io/kubernetes/pkg/apis/componentconfig/install" - kcoreinstall "k8s.io/kubernetes/pkg/apis/core/install" - keventsinstall "k8s.io/kubernetes/pkg/apis/events/install" - kextensionsinstall "k8s.io/kubernetes/pkg/apis/extensions/install" - kimagepolicyinstall "k8s.io/kubernetes/pkg/apis/imagepolicy/install" - knetworkinginstall "k8s.io/kubernetes/pkg/apis/networking/install" - kpolicyinstall "k8s.io/kubernetes/pkg/apis/policy/install" - krbacinstall "k8s.io/kubernetes/pkg/apis/rbac/install" - kschedulinginstall "k8s.io/kubernetes/pkg/apis/scheduling/install" - ksettingsinstall "k8s.io/kubernetes/pkg/apis/settings/install" - kstorageinstall "k8s.io/kubernetes/pkg/apis/storage/install" "github.com/openshift/origin/pkg/api/install" ) @@ -31,25 +12,6 @@ import ( var PrintingInternalScheme = runtime.NewScheme() func init() { - install.InstallAll(PrintingInternalScheme) - - kadmissioninstall.Install(PrintingInternalScheme) - kadmissionregistrationinstall.Install(PrintingInternalScheme) - kappsinstall.Install(PrintingInternalScheme) - kauthenticationinstall.Install(PrintingInternalScheme) - kauthorizationinstall.Install(PrintingInternalScheme) - kautoscalinginstall.Install(PrintingInternalScheme) - kbatchinstall.Install(PrintingInternalScheme) - kcertificatesinstall.Install(PrintingInternalScheme) - kcomponentconfiginstall.Install(PrintingInternalScheme) - kcoreinstall.Install(PrintingInternalScheme) - keventsinstall.Install(PrintingInternalScheme) - kextensionsinstall.Install(PrintingInternalScheme) - kimagepolicyinstall.Install(PrintingInternalScheme) - knetworkinginstall.Install(PrintingInternalScheme) - kpolicyinstall.Install(PrintingInternalScheme) - krbacinstall.Install(PrintingInternalScheme) - kschedulinginstall.Install(PrintingInternalScheme) - ksettingsinstall.Install(PrintingInternalScheme) - kstorageinstall.Install(PrintingInternalScheme) + install.InstallInternalOpenShift(PrintingInternalScheme) + install.InstallInternalKube(PrintingInternalScheme) } diff --git a/pkg/oc/util/ocscheme/read_internal.go b/pkg/oc/util/ocscheme/read_internal.go index 953f5e0b25e5..6f1bb01c2635 100644 --- a/pkg/oc/util/ocscheme/read_internal.go +++ b/pkg/oc/util/ocscheme/read_internal.go @@ -2,25 +2,6 @@ package ocscheme import ( "k8s.io/apimachinery/pkg/runtime" - kadmissioninstall "k8s.io/kubernetes/pkg/apis/admission/install" - kadmissionregistrationinstall "k8s.io/kubernetes/pkg/apis/admissionregistration/install" - kappsinstall "k8s.io/kubernetes/pkg/apis/apps/install" - kauthenticationinstall "k8s.io/kubernetes/pkg/apis/authentication/install" - kauthorizationinstall "k8s.io/kubernetes/pkg/apis/authorization/install" - kautoscalinginstall "k8s.io/kubernetes/pkg/apis/autoscaling/install" - kbatchinstall "k8s.io/kubernetes/pkg/apis/batch/install" - kcertificatesinstall "k8s.io/kubernetes/pkg/apis/certificates/install" - kcomponentconfiginstall "k8s.io/kubernetes/pkg/apis/componentconfig/install" - kcoreinstall "k8s.io/kubernetes/pkg/apis/core/install" - keventsinstall "k8s.io/kubernetes/pkg/apis/events/install" - kextensionsinstall "k8s.io/kubernetes/pkg/apis/extensions/install" - kimagepolicyinstall "k8s.io/kubernetes/pkg/apis/imagepolicy/install" - knetworkinginstall "k8s.io/kubernetes/pkg/apis/networking/install" - kpolicyinstall "k8s.io/kubernetes/pkg/apis/policy/install" - krbacinstall "k8s.io/kubernetes/pkg/apis/rbac/install" - kschedulinginstall "k8s.io/kubernetes/pkg/apis/scheduling/install" - ksettingsinstall "k8s.io/kubernetes/pkg/apis/settings/install" - kstorageinstall "k8s.io/kubernetes/pkg/apis/storage/install" "github.com/openshift/origin/pkg/api/install" "github.com/openshift/origin/pkg/api/legacy" @@ -33,26 +14,7 @@ import ( var ReadingInternalScheme = runtime.NewScheme() func init() { - install.InstallAll(ReadingInternalScheme) - legacy.InstallLegacyInternalAll(ReadingInternalScheme) - - kadmissioninstall.Install(ReadingInternalScheme) - kadmissionregistrationinstall.Install(ReadingInternalScheme) - kappsinstall.Install(ReadingInternalScheme) - kauthenticationinstall.Install(ReadingInternalScheme) - kauthorizationinstall.Install(ReadingInternalScheme) - kautoscalinginstall.Install(ReadingInternalScheme) - kbatchinstall.Install(ReadingInternalScheme) - kcertificatesinstall.Install(ReadingInternalScheme) - kcomponentconfiginstall.Install(ReadingInternalScheme) - kcoreinstall.Install(ReadingInternalScheme) - keventsinstall.Install(ReadingInternalScheme) - kextensionsinstall.Install(ReadingInternalScheme) - kimagepolicyinstall.Install(ReadingInternalScheme) - knetworkinginstall.Install(ReadingInternalScheme) - kpolicyinstall.Install(ReadingInternalScheme) - krbacinstall.Install(ReadingInternalScheme) - kschedulinginstall.Install(ReadingInternalScheme) - ksettingsinstall.Install(ReadingInternalScheme) - kstorageinstall.Install(ReadingInternalScheme) + install.InstallInternalOpenShift(ReadingInternalScheme) + install.InstallInternalKube(ReadingInternalScheme) + legacy.InstallInternalLegacyAll(ReadingInternalScheme) } diff --git a/test/util/server/server.go b/test/util/server/server.go index 92d75448c75f..71dde616dad9 100644 --- a/test/util/server/server.go +++ b/test/util/server/server.go @@ -451,7 +451,7 @@ func StartConfiguredMasterWithOptions(masterConfig *configapi.MasterConfig) (str guardMaster() // openshift apiserver needs its own scheme, but this installs it for now. oc needs it off, openshift apiserver needs it on. awesome. - legacy.InstallLegacyInternalAll(legacyscheme.Scheme) + legacy.InstallInternalLegacyAll(legacyscheme.Scheme) if masterConfig.EtcdConfig != nil && len(masterConfig.EtcdConfig.StorageDir) > 0 { os.RemoveAll(masterConfig.EtcdConfig.StorageDir) diff --git a/tools/etcdhelper/etcdhelper.go b/tools/etcdhelper/etcdhelper.go index 0fec22a474cf..40d626f9bf1c 100644 --- a/tools/etcdhelper/etcdhelper.go +++ b/tools/etcdhelper/etcdhelper.go @@ -17,18 +17,14 @@ import ( "github.com/coreos/etcd/pkg/transport" // install all APIs - _ "github.com/openshift/origin/pkg/api/install" - apiinstall "github.com/openshift/origin/pkg/api/install" - apilegacy "github.com/openshift/origin/pkg/api/legacy" - _ "github.com/openshift/origin/pkg/quota/apis/quota/install" - apiregistration "k8s.io/kube-aggregator/pkg/apis/apiregistration/install" - _ "k8s.io/kubernetes/pkg/apis/core/install" + install "github.com/openshift/origin/pkg/api/install" + "github.com/openshift/origin/pkg/api/legacy" ) func init() { - apiregistration.Install(scheme.Scheme) - apiinstall.InstallAll(scheme.Scheme) - apilegacy.InstallLegacyInternalAll(scheme.Scheme) + install.InstallInternalOpenShift(scheme.Scheme) + install.InstallInternalKube(scheme.Scheme) + legacy.InstallInternalLegacyAll(scheme.Scheme) } func main() { From 987864767705b0e80aab86c7b016bca8df5e369f Mon Sep 17 00:00:00 2001 From: David Eads Date: Tue, 24 Jul 2018 11:39:29 -0400 Subject: [PATCH 6/6] convert docs to external types --- pkg/cmd/util/gendocs/gendocs.go | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/pkg/cmd/util/gendocs/gendocs.go b/pkg/cmd/util/gendocs/gendocs.go index afa91ac0934d..5bfd9bc0bda2 100644 --- a/pkg/cmd/util/gendocs/gendocs.go +++ b/pkg/cmd/util/gendocs/gendocs.go @@ -9,10 +9,8 @@ import ( "github.com/spf13/cobra" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/runtime" - kapi "k8s.io/kubernetes/pkg/apis/core" kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/printers" ) @@ -38,26 +36,23 @@ func GenDocs(cmd *cobra.Command, filename string) error { return err } + output := &unstructured.UnstructuredList{} + output.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("List")) + examples := extractExamples(cmd) - items := []runtime.Object{} - for _, example := range examples { - items = append(items, example) + for i := range examples { + output.Items = append(output.Items, *examples[i]) } printOpts := kcmdutil.ExtractCmdPrintOptions(cmd, false) printOpts.OutputFormatType = "template" printOpts.OutputFormatArgument = string(template) - printer, err := printers.GetStandardPrinter( nil, nil, nil, *printOpts) if err != nil { return err } - - err = printer.PrintObj(&kapi.List{ - ListMeta: metav1.ListMeta{}, - Items: items, - }, out) + err = printer.PrintObj(output, out) if err != nil { return err }