Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

switch remaining API groups to new scheme install #20372

Merged
merged 4 commits into from
Jul 20, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/openshift/openshift.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.LegacyInstallAll(legacyscheme.Scheme)
legacy.InstallLegacyInternalAll(legacyscheme.Scheme)

rand.Seed(time.Now().UTC().UnixNano())
if len(os.Getenv("GOMAXPROCS")) == 0 {
Expand Down
2 changes: 1 addition & 1 deletion examples/examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import (
)

func init() {
legacy.LegacyInstallAll(legacyscheme.Scheme)
legacy.InstallLegacyInternalAll(legacyscheme.Scheme)
}

func walkJSONFiles(inDir string, fn func(name, path string, data []byte)) error {
Expand Down
13 changes: 8 additions & 5 deletions hack/import-restrictions.json
Original file line number Diff line number Diff line change
Expand Up @@ -225,11 +225,11 @@
"allowedImportPackageRoots": [
"vendor/k8s.io/apimachinery",
"vendor/k8s.io/api",
"vendor/github.com/openshift/api",
"github.com/openshift/origin/pkg/api/apihelpers"
"vendor/github.com/openshift/api"
],
"allowedImportPackages": [
"vendor/k8s.io/kubernetes/pkg/apis/core"
"vendor/k8s.io/kubernetes/pkg/apis/core",
"vendor/k8s.io/kubernetes/pkg/apis/core/v1"
]
},

Expand Down Expand Up @@ -261,7 +261,10 @@
"github.com/openshift/origin/pkg/api/apihelpers"
],
"allowedImportPackages": [
"vendor/k8s.io/kubernetes/pkg/apis/core"
"vendor/k8s.io/kubernetes/pkg/apis/core",
"vendor/github.com/davecgh/go-spew/spew",
"vendor/k8s.io/kubernetes/pkg/apis/core/v1"

]
},

Expand Down Expand Up @@ -350,7 +353,7 @@
"github.com/openshift/origin/pkg/api",
"github.com/openshift/origin/pkg/template/apis/template",
"github.com/openshift/origin/pkg/template/apis/template/validation",
"github.com/openshift/origin/pkg/route/apis/route"
"github.com/openshift/origin/pkg/api/legacy"
]
},

Expand Down
6 changes: 5 additions & 1 deletion pkg/api/legacy/apps.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/kubernetes/pkg/apis/core"
corev1conversions "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
extensionsv1beta1conversions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"

appsv1 "github.com/openshift/api/apps/v1"
"github.com/openshift/origin/pkg/apps/apis/apps"
Expand All @@ -15,13 +17,15 @@ import (

// InstallLegacyApps this looks like a lot of duplication, but the code in the individual versions is living and may
// change. The code here should never change and needs to allow the other code to move independently.
func InstallLegacyApps(scheme *runtime.Scheme) {
func InstallInternalLegacyApps(scheme *runtime.Scheme) {
InstallExternalLegacyApps(scheme)

schemeBuilder := runtime.NewSchemeBuilder(
addUngroupifiedInternalAppsTypes,
core.AddToScheme,
extensions.AddToScheme,
corev1conversions.AddToScheme,
extensionsv1beta1conversions.AddToScheme,

appsv1helpers.AddConversionFuncs,
appsv1helpers.RegisterDefaults,
Expand Down
6 changes: 5 additions & 1 deletion pkg/api/legacy/authorization.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/kubernetes/pkg/apis/core"
corev1conversions "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/rbac"
rbacv1conversions "k8s.io/kubernetes/pkg/apis/rbac/v1"

authorizationv1 "github.com/openshift/api/authorization/v1"
"github.com/openshift/origin/pkg/authorization/apis/authorization"
Expand All @@ -15,13 +17,15 @@ import (

// InstallLegacyAuthorization this looks like a lot of duplication, but the code in the individual versions is living and may
// change. The code here should never change and needs to allow the other code to move independently.
func InstallLegacyAuthorization(scheme *runtime.Scheme) {
func InstallInternalLegacyAuthorization(scheme *runtime.Scheme) {
InstallExternalLegacyAuthorization(scheme)

schemeBuilder := runtime.NewSchemeBuilder(
addUngroupifiedInternalAuthorizationTypes,
core.AddToScheme,
rbac.AddToScheme,
corev1conversions.AddToScheme,
rbacv1conversions.AddToScheme,

authorizationv1helpers.AddConversionFuncs,
authorizationv1helpers.AddFieldSelectorKeyConversions,
Expand Down
90 changes: 90 additions & 0 deletions pkg/api/legacy/build.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package legacy

import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/kubernetes/pkg/apis/core"

buildv1 "github.com/openshift/api/build/v1"
"github.com/openshift/origin/pkg/api/apihelpers"
"github.com/openshift/origin/pkg/build/apis/build"
buildv1helpers "github.com/openshift/origin/pkg/build/apis/build/v1"
)

// InstallLegacyBuild this looks like a lot of duplication, but the code in the individual versions is living and may
// change. The code here should never change and needs to allow the other code to move independently.
func InstallInternalLegacyBuild(scheme *runtime.Scheme) {
InstallExternalLegacyBuild(scheme)

schemeBuilder := runtime.NewSchemeBuilder(
addUngroupifiedInternalBuildTypes,
core.AddToScheme,

addLegacyBuildFieldSelectorKeyConversions,
buildv1helpers.AddConversionFuncs,
buildv1helpers.RegisterDefaults,
buildv1helpers.RegisterConversions,
)
utilruntime.Must(schemeBuilder.AddToScheme(scheme))
}

func InstallExternalLegacyBuild(scheme *runtime.Scheme) {
schemeBuilder := runtime.NewSchemeBuilder(
addUngroupifiedBuildTypes,
corev1.AddToScheme,
)
utilruntime.Must(schemeBuilder.AddToScheme(scheme))
}

func addUngroupifiedBuildTypes(scheme *runtime.Scheme) error {
types := []runtime.Object{
&buildv1.Build{},
&buildv1.BuildList{},
&buildv1.BuildConfig{},
&buildv1.BuildConfigList{},
&buildv1.BuildLog{},
&buildv1.BuildRequest{},
&buildv1.BuildLogOptions{},
&buildv1.BinaryBuildRequestOptions{},
}
scheme.AddKnownTypes(GroupVersion, types...)
return nil
}

func addUngroupifiedInternalBuildTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(internalGroupVersion,
&build.Build{},
&build.BuildList{},
&build.BuildConfig{},
&build.BuildConfigList{},
&build.BuildLog{},
&build.BuildRequest{},
&build.BuildLogOptions{},
&build.BinaryBuildRequestOptions{},
)
return nil
}

func addLegacyBuildFieldSelectorKeyConversions(scheme *runtime.Scheme) error {
if err := scheme.AddFieldLabelConversionFunc(GroupVersion.String(), "Build", legacyBuildFieldSelectorKeyConversionFunc); err != nil {
return err
}
if err := scheme.AddFieldLabelConversionFunc(GroupVersion.String(), "BuildConfig", apihelpers.LegacyMetaV1FieldSelectorConversionWithName); err != nil {
return err
}
return nil
}

// because field selectors can vary in support by version they are exposed under, we have one function for each
// groupVersion we're registering for

func legacyBuildFieldSelectorKeyConversionFunc(label, value string) (internalLabel, internalValue string, err error) {
switch label {
case "status",
"podName":
return label, value, nil
default:
return apihelpers.LegacyMetaV1FieldSelectorConversionWithName(label, value)
}
}
33 changes: 33 additions & 0 deletions pkg/api/legacy/build_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package legacy

import (
"testing"

"github.com/openshift/origin/pkg/api/apihelpers/apitesting"
"k8s.io/apimachinery/pkg/runtime"

internal "github.com/openshift/origin/pkg/build/apis/build"
)

func TestBuildFieldSelectorConversions(t *testing.T) {
install := func(scheme *runtime.Scheme) error {
InstallInternalLegacyBuild(scheme)
return nil
}

apitesting.FieldKeyCheck{
SchemeBuilder: []func(*runtime.Scheme) error{install},
Kind: GroupVersion.WithKind("Build"),
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
AllowedExternalFieldKeys: []string{"name", "status", "podName"},
FieldKeyEvaluatorFn: internal.BuildFieldSelector,
}.Check(t)

apitesting.FieldKeyCheck{
SchemeBuilder: []func(*runtime.Scheme) error{install},
Kind: GroupVersion.WithKind("BuildConfig"),
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
AllowedExternalFieldKeys: []string{"name"},
}.Check(t)

}
94 changes: 94 additions & 0 deletions pkg/api/legacy/image.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package legacy

import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/kubernetes/pkg/apis/core"
corev1conversions "k8s.io/kubernetes/pkg/apis/core/v1"

"github.com/openshift/api/image/docker10"
"github.com/openshift/api/image/dockerpre012"
imagev1 "github.com/openshift/api/image/v1"
"github.com/openshift/origin/pkg/api/apihelpers"
"github.com/openshift/origin/pkg/image/apis/image"
imagev1helpers "github.com/openshift/origin/pkg/image/apis/image/v1"
)

// InstallLegacyImage this looks like a lot of duplication, but the code in the individual versions is living and may
// change. The code here should never change and needs to allow the other code to move independently.
func InstallInternalLegacyImage(scheme *runtime.Scheme) {
InstallExternalLegacyImage(scheme)

schemeBuilder := runtime.NewSchemeBuilder(
addUngroupifiedInternalImageTypes,
core.AddToScheme,
corev1conversions.AddToScheme,

addLegacyImageFieldSelectorKeyConversions,
imagev1helpers.RegisterDefaults,
imagev1helpers.RegisterConversions,
)
utilruntime.Must(schemeBuilder.AddToScheme(scheme))
}

func InstallExternalLegacyImage(scheme *runtime.Scheme) {
schemeBuilder := runtime.NewSchemeBuilder(
addUngroupifiedImageTypes,
docker10.AddToSchemeInCoreGroup,
dockerpre012.AddToSchemeInCoreGroup,
corev1.AddToScheme,
)
utilruntime.Must(schemeBuilder.AddToScheme(scheme))
}

func addUngroupifiedImageTypes(scheme *runtime.Scheme) error {
types := []runtime.Object{
&imagev1.Image{},
&imagev1.ImageList{},
&imagev1.ImageSignature{},
&imagev1.ImageStream{},
&imagev1.ImageStreamList{},
&imagev1.ImageStreamMapping{},
&imagev1.ImageStreamTag{},
&imagev1.ImageStreamTagList{},
&imagev1.ImageStreamImage{},
&imagev1.ImageStreamImport{},
}
scheme.AddKnownTypes(GroupVersion, types...)
return nil
}

func addUngroupifiedInternalImageTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(internalGroupVersion,
&image.Image{},
&image.ImageList{},
&image.DockerImage{},
&image.ImageSignature{},
&image.ImageStream{},
&image.ImageStreamList{},
&image.ImageStreamMapping{},
&image.ImageStreamTag{},
&image.ImageStreamTagList{},
&image.ImageStreamImage{},
&image.ImageStreamImport{},
)
return nil
}

func addLegacyImageFieldSelectorKeyConversions(scheme *runtime.Scheme) error {
if err := scheme.AddFieldLabelConversionFunc(GroupVersion.String(), "ImageStream", legacyImageStreamFieldSelectorKeyConversionFunc); err != nil {
return err
}
return nil
}

func legacyImageStreamFieldSelectorKeyConversionFunc(label, value string) (internalLabel, internalValue string, err error) {
switch label {
case "spec.dockerImageRepository",
"status.dockerImageRepository":
return label, value, nil
default:
return apihelpers.LegacyMetaV1FieldSelectorConversionWithName(label, value)
}
}
Loading