Skip to content

Commit

Permalink
switch easy groups to new install pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
deads2k committed Jul 19, 2018
1 parent 6ba369f commit e583df7
Show file tree
Hide file tree
Showing 85 changed files with 1,247 additions and 852 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
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
2 changes: 1 addition & 1 deletion pkg/api/legacy/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

// 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 InstallLegacyBuild(scheme *runtime.Scheme) {
func InstallInternalLegacyBuild(scheme *runtime.Scheme) {
InstallExternalLegacyBuild(scheme)

schemeBuilder := runtime.NewSchemeBuilder(
Expand Down
4 changes: 2 additions & 2 deletions pkg/api/legacy/build_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (
internal "github.com/openshift/origin/pkg/build/apis/build"
)

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

Expand Down
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)
}
}
93 changes: 93 additions & 0 deletions pkg/api/legacy/image_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package legacy

import (
"reflect"
"testing"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/util/diff"
kapi "k8s.io/kubernetes/pkg/apis/core"

"github.com/openshift/origin/pkg/api/apihelpers/apitesting"
internal "github.com/openshift/origin/pkg/image/apis/image"
)

func TestImageRoundTripVersionedObject(t *testing.T) {
scheme := runtime.NewScheme()
InstallInternalLegacyImage(scheme)
codecs := serializer.NewCodecFactory(scheme)

d := &internal.DockerImage{
Config: &internal.DockerConfig{
Env: []string{"A=1", "B=2"},
},
}
i := &internal.Image{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},

DockerImageLayers: []internal.ImageLayer{{Name: "foo", LayerSize: 10}},
DockerImageMetadata: *d,
DockerImageReference: "foo/bar/baz",
}

data, err := runtime.Encode(codecs.LegacyCodec(GroupVersion), i)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}

obj, err := runtime.Decode(codecs.UniversalDecoder(), data)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
image := obj.(*internal.Image)
if image.DockerImageMetadataVersion != "1.0" {
t.Errorf("did not default to correct metadata version: %#v", image)
}
image.DockerImageMetadataVersion = ""
if !reflect.DeepEqual(i, image) {
t.Errorf("unable to round trip object: %s", diff.ObjectDiff(i, image))
}
}

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

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

func TestImageImportSpecDefaulting(t *testing.T) {
scheme := runtime.NewScheme()
codecs := serializer.NewCodecFactory(scheme)
InstallInternalLegacyImage(scheme)

i := &internal.ImageStreamImport{
Spec: internal.ImageStreamImportSpec{
Images: []internal.ImageImportSpec{
{From: kapi.ObjectReference{Name: "something:other"}},
},
},
}
data, err := runtime.Encode(codecs.LegacyCodec(GroupVersion), i)
if err != nil {
t.Fatal(err)
}
obj, err := runtime.Decode(codecs.UniversalDecoder(), data)
if err != nil {
t.Fatal(err)
}
isi := obj.(*internal.ImageStreamImport)
if isi.Spec.Images[0].To == nil || isi.Spec.Images[0].To.Name != "other" {
t.Errorf("unexpected round trip: %#v", isi)
}
}
106 changes: 28 additions & 78 deletions pkg/api/legacy/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,6 @@ package legacy
import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"

imageapi "github.com/openshift/origin/pkg/image/apis/image"
imageapiv1 "github.com/openshift/origin/pkg/image/apis/image/v1"
networkapi "github.com/openshift/origin/pkg/network/apis/network"
networkapiv1 "github.com/openshift/origin/pkg/network/apis/network/v1"
oauthapi "github.com/openshift/origin/pkg/oauth/apis/oauth"
oauthapiv1 "github.com/openshift/origin/pkg/oauth/apis/oauth/v1"
projectapi "github.com/openshift/origin/pkg/project/apis/project"
projectapiv1 "github.com/openshift/origin/pkg/project/apis/project/v1"
quotaapi "github.com/openshift/origin/pkg/quota/apis/quota"
quotaapiv1 "github.com/openshift/origin/pkg/quota/apis/quota/v1"
routeapi "github.com/openshift/origin/pkg/route/apis/route"
routeapiv1 "github.com/openshift/origin/pkg/route/apis/route/v1"
securityapi "github.com/openshift/origin/pkg/security/apis/security"
securityapiv1 "github.com/openshift/origin/pkg/security/apis/security/v1"
templateapi "github.com/openshift/origin/pkg/template/apis/template"
templateapiv1 "github.com/openshift/origin/pkg/template/apis/template/v1"
userapi "github.com/openshift/origin/pkg/user/apis/user"
userapiv1 "github.com/openshift/origin/pkg/user/apis/user/v1"
)

var (
Expand All @@ -41,62 +21,32 @@ func Resource(resource string) schema.GroupResource {
return schema.GroupResource{Group: GroupName, Resource: resource}
}

func InstallLegacyImage(scheme *runtime.Scheme) {
utilruntime.Must(imageapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(imageapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacyNetwork(scheme *runtime.Scheme) {
utilruntime.Must(networkapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(networkapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacyOAuth(scheme *runtime.Scheme) {
utilruntime.Must(oauthapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(oauthapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacyProject(scheme *runtime.Scheme) {
utilruntime.Must(projectapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(projectapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacyQuota(scheme *runtime.Scheme) {
utilruntime.Must(quotaapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(quotaapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacyRoute(scheme *runtime.Scheme) {
utilruntime.Must(routeapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(routeapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacySecurity(scheme *runtime.Scheme) {
utilruntime.Must(securityapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(securityapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacyTemplate(scheme *runtime.Scheme) {
utilruntime.Must(templateapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(templateapiv1.AddToSchemeInCoreGroup(scheme))
}

func InstallLegacyUser(scheme *runtime.Scheme) {
utilruntime.Must(userapi.AddToSchemeInCoreGroup(scheme))
utilruntime.Must(userapiv1.AddToSchemeInCoreGroup(scheme))
}

func LegacyInstallAll(scheme *runtime.Scheme) {
InstallLegacyApps(scheme)
InstallLegacyAuthorization(scheme)
InstallLegacyBuild(scheme)
InstallLegacyImage(scheme)
InstallLegacyNetwork(scheme)
InstallLegacyOAuth(scheme)
InstallLegacyProject(scheme)
InstallLegacyQuota(scheme)
InstallLegacyRoute(scheme)
InstallLegacySecurity(scheme)
InstallLegacyTemplate(scheme)
InstallLegacyUser(scheme)
func InstallLegacyInternalAll(scheme *runtime.Scheme) {
InstallInternalLegacyApps(scheme)
InstallInternalLegacyAuthorization(scheme)
InstallInternalLegacyBuild(scheme)
InstallInternalLegacyImage(scheme)
InstallInternalLegacyNetwork(scheme)
InstallInternalLegacyOAuth(scheme)
InstallInternalLegacyProject(scheme)
InstallInternalLegacyQuota(scheme)
InstallInternalLegacyRoute(scheme)
InstallInternalLegacySecurity(scheme)
InstallInternalLegacyTemplate(scheme)
InstallInternalLegacyUser(scheme)
}

func InstallLegacyExternalAll(scheme *runtime.Scheme) {
InstallExternalLegacyApps(scheme)
InstallExternalLegacyAuthorization(scheme)
InstallExternalLegacyBuild(scheme)
InstallExternalLegacyImage(scheme)
InstallExternalLegacyNetwork(scheme)
InstallExternalLegacyOAuth(scheme)
InstallExternalLegacyProject(scheme)
InstallExternalLegacyQuota(scheme)
InstallExternalLegacyRoute(scheme)
InstallExternalLegacySecurity(scheme)
InstallExternalLegacyTemplate(scheme)
InstallExternalLegacyUser(scheme)
}
Loading

0 comments on commit e583df7

Please sign in to comment.