Skip to content

Commit cf3c5d3

Browse files
committed
switch easy groups to new install pattern
1 parent 0a6a9c5 commit cf3c5d3

File tree

88 files changed

+1267
-866
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+1267
-866
lines changed

cmd/openshift/openshift.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func main() {
2929
defer serviceability.BehaviorOnPanic(os.Getenv("OPENSHIFT_ON_PANIC"), version.Get())()
3030
defer serviceability.Profile(os.Getenv("OPENSHIFT_PROFILE")).Stop()
3131

32-
legacy.LegacyInstallAll(legacyscheme.Scheme)
32+
legacy.InstallLegacyInternalAll(legacyscheme.Scheme)
3333

3434
rand.Seed(time.Now().UTC().UnixNano())
3535
if len(os.Getenv("GOMAXPROCS")) == 0 {

examples/examples_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import (
3333
)
3434

3535
func init() {
36-
legacy.LegacyInstallAll(legacyscheme.Scheme)
36+
legacy.InstallLegacyInternalAll(legacyscheme.Scheme)
3737
}
3838

3939
func walkJSONFiles(inDir string, fn func(name, path string, data []byte)) error {

hack/import-restrictions.json

+8-5
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,11 @@
225225
"allowedImportPackageRoots": [
226226
"vendor/k8s.io/apimachinery",
227227
"vendor/k8s.io/api",
228-
"vendor/github.com/openshift/api",
229-
"github.com/openshift/origin/pkg/api/apihelpers"
228+
"vendor/github.com/openshift/api"
230229
],
231230
"allowedImportPackages": [
232-
"vendor/k8s.io/kubernetes/pkg/apis/core"
231+
"vendor/k8s.io/kubernetes/pkg/apis/core",
232+
"vendor/k8s.io/kubernetes/pkg/apis/core/v1"
233233
]
234234
},
235235

@@ -261,7 +261,10 @@
261261
"github.com/openshift/origin/pkg/api/apihelpers"
262262
],
263263
"allowedImportPackages": [
264-
"vendor/k8s.io/kubernetes/pkg/apis/core"
264+
"vendor/k8s.io/kubernetes/pkg/apis/core",
265+
"vendor/github.com/davecgh/go-spew/spew",
266+
"vendor/k8s.io/kubernetes/pkg/apis/core/v1"
267+
265268
]
266269
},
267270

@@ -350,7 +353,7 @@
350353
"github.com/openshift/origin/pkg/api",
351354
"github.com/openshift/origin/pkg/template/apis/template",
352355
"github.com/openshift/origin/pkg/template/apis/template/validation",
353-
"github.com/openshift/origin/pkg/route/apis/route"
356+
"github.com/openshift/origin/pkg/api/legacy"
354357
]
355358
},
356359

pkg/api/legacy/apps.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import (
66
"k8s.io/apimachinery/pkg/runtime"
77
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
88
"k8s.io/kubernetes/pkg/apis/core"
9+
corev1conversions "k8s.io/kubernetes/pkg/apis/core/v1"
910
"k8s.io/kubernetes/pkg/apis/extensions"
11+
extensionsv1beta1conversions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
1012

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

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

2123
schemeBuilder := runtime.NewSchemeBuilder(
2224
addUngroupifiedInternalAppsTypes,
2325
core.AddToScheme,
2426
extensions.AddToScheme,
27+
corev1conversions.AddToScheme,
28+
extensionsv1beta1conversions.AddToScheme,
2529

2630
appsv1helpers.AddConversionFuncs,
2731
appsv1helpers.RegisterDefaults,

pkg/api/legacy/authorization.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import (
66
"k8s.io/apimachinery/pkg/runtime"
77
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
88
"k8s.io/kubernetes/pkg/apis/core"
9+
corev1conversions "k8s.io/kubernetes/pkg/apis/core/v1"
910
"k8s.io/kubernetes/pkg/apis/rbac"
11+
rbacv1conversions "k8s.io/kubernetes/pkg/apis/rbac/v1"
1012

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

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

2123
schemeBuilder := runtime.NewSchemeBuilder(
2224
addUngroupifiedInternalAuthorizationTypes,
2325
core.AddToScheme,
2426
rbac.AddToScheme,
27+
corev1conversions.AddToScheme,
28+
rbacv1conversions.AddToScheme,
2529

2630
authorizationv1helpers.AddConversionFuncs,
2731
authorizationv1helpers.AddFieldSelectorKeyConversions,

pkg/api/legacy/build.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414

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

2020
schemeBuilder := runtime.NewSchemeBuilder(

pkg/api/legacy/build_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import (
99
internal "github.com/openshift/origin/pkg/build/apis/build"
1010
)
1111

12-
func TestFieldSelectorConversions(t *testing.T) {
12+
func TestBuildFieldSelectorConversions(t *testing.T) {
1313
install := func(scheme *runtime.Scheme) error {
14-
InstallLegacyBuild(scheme)
14+
InstallInternalLegacyBuild(scheme)
1515
return nil
1616
}
1717

pkg/api/legacy/image.go

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package legacy
2+
3+
import (
4+
corev1 "k8s.io/api/core/v1"
5+
"k8s.io/apimachinery/pkg/runtime"
6+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
7+
"k8s.io/kubernetes/pkg/apis/core"
8+
corev1conversions "k8s.io/kubernetes/pkg/apis/core/v1"
9+
10+
"github.com/openshift/api/image/docker10"
11+
"github.com/openshift/api/image/dockerpre012"
12+
imagev1 "github.com/openshift/api/image/v1"
13+
"github.com/openshift/origin/pkg/api/apihelpers"
14+
"github.com/openshift/origin/pkg/image/apis/image"
15+
imagev1helpers "github.com/openshift/origin/pkg/image/apis/image/v1"
16+
)
17+
18+
// InstallLegacyImage this looks like a lot of duplication, but the code in the individual versions is living and may
19+
// change. The code here should never change and needs to allow the other code to move independently.
20+
func InstallInternalLegacyImage(scheme *runtime.Scheme) {
21+
InstallExternalLegacyImage(scheme)
22+
23+
schemeBuilder := runtime.NewSchemeBuilder(
24+
addUngroupifiedInternalImageTypes,
25+
core.AddToScheme,
26+
corev1conversions.AddToScheme,
27+
28+
addLegacyImageFieldSelectorKeyConversions,
29+
imagev1helpers.RegisterDefaults,
30+
imagev1helpers.RegisterConversions,
31+
)
32+
utilruntime.Must(schemeBuilder.AddToScheme(scheme))
33+
}
34+
35+
func InstallExternalLegacyImage(scheme *runtime.Scheme) {
36+
schemeBuilder := runtime.NewSchemeBuilder(
37+
addUngroupifiedImageTypes,
38+
docker10.AddToSchemeInCoreGroup,
39+
dockerpre012.AddToSchemeInCoreGroup,
40+
corev1.AddToScheme,
41+
)
42+
utilruntime.Must(schemeBuilder.AddToScheme(scheme))
43+
}
44+
45+
func addUngroupifiedImageTypes(scheme *runtime.Scheme) error {
46+
types := []runtime.Object{
47+
&imagev1.Image{},
48+
&imagev1.ImageList{},
49+
&imagev1.ImageSignature{},
50+
&imagev1.ImageStream{},
51+
&imagev1.ImageStreamList{},
52+
&imagev1.ImageStreamMapping{},
53+
&imagev1.ImageStreamTag{},
54+
&imagev1.ImageStreamTagList{},
55+
&imagev1.ImageStreamImage{},
56+
&imagev1.ImageStreamImport{},
57+
}
58+
scheme.AddKnownTypes(GroupVersion, types...)
59+
return nil
60+
}
61+
62+
func addUngroupifiedInternalImageTypes(scheme *runtime.Scheme) error {
63+
scheme.AddKnownTypes(internalGroupVersion,
64+
&image.Image{},
65+
&image.ImageList{},
66+
&image.DockerImage{},
67+
&image.ImageSignature{},
68+
&image.ImageStream{},
69+
&image.ImageStreamList{},
70+
&image.ImageStreamMapping{},
71+
&image.ImageStreamTag{},
72+
&image.ImageStreamTagList{},
73+
&image.ImageStreamImage{},
74+
&image.ImageStreamImport{},
75+
)
76+
return nil
77+
}
78+
79+
func addLegacyImageFieldSelectorKeyConversions(scheme *runtime.Scheme) error {
80+
if err := scheme.AddFieldLabelConversionFunc(GroupVersion.String(), "ImageStream", legacyImageStreamFieldSelectorKeyConversionFunc); err != nil {
81+
return err
82+
}
83+
return nil
84+
}
85+
86+
func legacyImageStreamFieldSelectorKeyConversionFunc(label, value string) (internalLabel, internalValue string, err error) {
87+
switch label {
88+
case "spec.dockerImageRepository",
89+
"status.dockerImageRepository":
90+
return label, value, nil
91+
default:
92+
return apihelpers.LegacyMetaV1FieldSelectorConversionWithName(label, value)
93+
}
94+
}

pkg/api/legacy/image_test.go

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package legacy
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8+
"k8s.io/apimachinery/pkg/runtime"
9+
"k8s.io/apimachinery/pkg/runtime/serializer"
10+
"k8s.io/apimachinery/pkg/util/diff"
11+
kapi "k8s.io/kubernetes/pkg/apis/core"
12+
13+
"github.com/openshift/origin/pkg/api/apihelpers/apitesting"
14+
internal "github.com/openshift/origin/pkg/image/apis/image"
15+
)
16+
17+
func TestImageRoundTripVersionedObject(t *testing.T) {
18+
scheme := runtime.NewScheme()
19+
InstallInternalLegacyImage(scheme)
20+
codecs := serializer.NewCodecFactory(scheme)
21+
22+
d := &internal.DockerImage{
23+
Config: &internal.DockerConfig{
24+
Env: []string{"A=1", "B=2"},
25+
},
26+
}
27+
i := &internal.Image{
28+
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
29+
30+
DockerImageLayers: []internal.ImageLayer{{Name: "foo", LayerSize: 10}},
31+
DockerImageMetadata: *d,
32+
DockerImageReference: "foo/bar/baz",
33+
}
34+
35+
data, err := runtime.Encode(codecs.LegacyCodec(GroupVersion), i)
36+
if err != nil {
37+
t.Fatalf("unexpected error: %v", err)
38+
}
39+
40+
obj, err := runtime.Decode(codecs.UniversalDecoder(), data)
41+
if err != nil {
42+
t.Fatalf("unexpected error: %v", err)
43+
}
44+
image := obj.(*internal.Image)
45+
if image.DockerImageMetadataVersion != "1.0" {
46+
t.Errorf("did not default to correct metadata version: %#v", image)
47+
}
48+
image.DockerImageMetadataVersion = ""
49+
if !reflect.DeepEqual(i, image) {
50+
t.Errorf("unable to round trip object: %s", diff.ObjectDiff(i, image))
51+
}
52+
}
53+
54+
func TestImageFieldSelectors(t *testing.T) {
55+
install := func(scheme *runtime.Scheme) error {
56+
InstallInternalLegacyImage(scheme)
57+
return nil
58+
}
59+
60+
apitesting.FieldKeyCheck{
61+
SchemeBuilder: []func(*runtime.Scheme) error{install},
62+
Kind: GroupVersion.WithKind("ImageStream"),
63+
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
64+
AllowedExternalFieldKeys: []string{"name", "spec.dockerImageRepository", "status.dockerImageRepository"},
65+
FieldKeyEvaluatorFn: internal.ImageStreamSelector,
66+
}.Check(t)
67+
}
68+
69+
func TestImageImportSpecDefaulting(t *testing.T) {
70+
scheme := runtime.NewScheme()
71+
codecs := serializer.NewCodecFactory(scheme)
72+
InstallInternalLegacyImage(scheme)
73+
74+
i := &internal.ImageStreamImport{
75+
Spec: internal.ImageStreamImportSpec{
76+
Images: []internal.ImageImportSpec{
77+
{From: kapi.ObjectReference{Name: "something:other"}},
78+
},
79+
},
80+
}
81+
data, err := runtime.Encode(codecs.LegacyCodec(GroupVersion), i)
82+
if err != nil {
83+
t.Fatal(err)
84+
}
85+
obj, err := runtime.Decode(codecs.UniversalDecoder(), data)
86+
if err != nil {
87+
t.Fatal(err)
88+
}
89+
isi := obj.(*internal.ImageStreamImport)
90+
if isi.Spec.Images[0].To == nil || isi.Spec.Images[0].To.Name != "other" {
91+
t.Errorf("unexpected round trip: %#v", isi)
92+
}
93+
}

0 commit comments

Comments
 (0)