Skip to content

Commit

Permalink
Merge pull request #20372 from deads2k/api-04-build
Browse files Browse the repository at this point in the history
switch remaining API groups to new scheme install
  • Loading branch information
openshift-merge-robot authored Jul 20, 2018
2 parents bb11f51 + cf3c5d3 commit 65f7c04
Show file tree
Hide file tree
Showing 173 changed files with 1,892 additions and 1,433 deletions.
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

0 comments on commit 65f7c04

Please sign in to comment.