Skip to content

Commit 8452500

Browse files
Merge pull request #16377 from deads2k/image-06-conversion
Automatic merge from submit-queue (batch tested with PRs 16226, 16377, 15766, 16299, 16153) remove install dependency from images Use a specific, private scheme to handle the conversion of internal image apis stuff. @bparees @soltysh found it!
2 parents d6d3f97 + 29b3f64 commit 8452500

File tree

3 files changed

+33
-21
lines changed

3 files changed

+33
-21
lines changed

hack/import-restrictions.json

-2
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,10 @@
138138
"vendor/k8s.io/kubernetes/pkg/api/helper",
139139
"vendor/github.com/golang/glog",
140140
"vendor/github.com/fsouza/go-dockerclient",
141-
"vendor/github.com/golang/glog",
142141
"vendor/github.com/docker/distribution/digest",
143142
"vendor/github.com/docker/distribution/manifest/schema1",
144143
"vendor/github.com/docker/distribution/manifest/schema2",
145144
"vendor/github.com/blang/semver",
146-
"github.com/openshift/origin/pkg/image/apis/image/install",
147145
"github.com/openshift/origin/pkg/image/reference"
148146
]
149147
},

pkg/image/apis/image/v1/conversion.go

+22-4
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,30 @@ import (
77
"k8s.io/apimachinery/pkg/conversion"
88
"k8s.io/apimachinery/pkg/runtime"
99
"k8s.io/apimachinery/pkg/runtime/schema"
10-
"k8s.io/kubernetes/pkg/api"
10+
"k8s.io/apimachinery/pkg/runtime/serializer"
1111

1212
"github.com/openshift/origin/pkg/api/apihelpers"
1313
newer "github.com/openshift/origin/pkg/image/apis/image"
14+
"github.com/openshift/origin/pkg/image/apis/image/docker10"
15+
"github.com/openshift/origin/pkg/image/apis/image/dockerpre012"
1416
)
1517

18+
var (
19+
dockerImageScheme = runtime.NewScheme()
20+
dockerImageCodecs = serializer.NewCodecFactory(dockerImageScheme)
21+
)
22+
23+
func init() {
24+
docker10.AddToSchemeInCoreGroup(dockerImageScheme)
25+
dockerpre012.AddToSchemeInCoreGroup(dockerImageScheme)
26+
newer.AddToSchemeInCoreGroup(dockerImageScheme)
27+
AddToSchemeInCoreGroup(dockerImageScheme)
28+
docker10.AddToScheme(dockerImageScheme)
29+
dockerpre012.AddToScheme(dockerImageScheme)
30+
newer.AddToScheme(dockerImageScheme)
31+
AddToScheme(dockerImageScheme)
32+
}
33+
1634
// The docker metadata must be cast to a version
1735
func Convert_image_Image_To_v1_Image(in *newer.Image, out *Image, s conversion.Scope) error {
1836
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
@@ -36,7 +54,7 @@ func Convert_image_Image_To_v1_Image(in *newer.Image, out *Image, s conversion.S
3654
if err != nil {
3755
return err
3856
}
39-
data, err := runtime.Encode(api.Codecs.LegacyCodec(version), &in.DockerImageMetadata)
57+
data, err := runtime.Encode(dockerImageCodecs.LegacyCodec(version), &in.DockerImageMetadata)
4058
if err != nil {
4159
return err
4260
}
@@ -93,11 +111,11 @@ func Convert_v1_Image_To_image_Image(in *Image, out *newer.Image, s conversion.S
93111
}
94112
if len(in.DockerImageMetadata.Raw) > 0 {
95113
// TODO: add a way to default the expected kind and version of an object if not set
96-
obj, err := api.Scheme.New(schema.GroupVersionKind{Version: version, Kind: "DockerImage"})
114+
obj, err := dockerImageScheme.New(schema.GroupVersionKind{Version: version, Kind: "DockerImage"})
97115
if err != nil {
98116
return err
99117
}
100-
if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), in.DockerImageMetadata.Raw, obj); err != nil {
118+
if err := runtime.DecodeInto(dockerImageCodecs.UniversalDecoder(), in.DockerImageMetadata.Raw, obj); err != nil {
101119
return err
102120
}
103121
if err := s.Convert(obj, &out.DockerImageMetadata, 0); err != nil {

pkg/image/apis/image/v1/conversion_test.go

+11-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package v1_test
1+
package v1
22

33
import (
44
"reflect"
@@ -14,10 +14,6 @@ import (
1414
newer "github.com/openshift/origin/pkg/image/apis/image"
1515
"github.com/openshift/origin/pkg/image/apis/image/docker10"
1616
"github.com/openshift/origin/pkg/image/apis/image/dockerpre012"
17-
imageapiv1 "github.com/openshift/origin/pkg/image/apis/image/v1"
18-
19-
// some side-effect of this import is causing TestRoundTripVersionedObject to pass. I don't see it.
20-
_ "github.com/openshift/origin/pkg/image/apis/image/install"
2117
)
2218

2319
func TestRoundTripVersionedObject(t *testing.T) {
@@ -27,9 +23,9 @@ func TestRoundTripVersionedObject(t *testing.T) {
2723
newer.AddToSchemeInCoreGroup(scheme)
2824
docker10.AddToScheme(scheme)
2925
dockerpre012.AddToScheme(scheme)
30-
imageapiv1.AddToSchemeInCoreGroup(scheme)
26+
AddToSchemeInCoreGroup(scheme)
3127
newer.AddToScheme(scheme)
32-
imageapiv1.AddToScheme(scheme)
28+
AddToScheme(scheme)
3329
codecs := serializer.NewCodecFactory(scheme)
3430

3531
d := &newer.DockerImage{
@@ -45,7 +41,7 @@ func TestRoundTripVersionedObject(t *testing.T) {
4541
DockerImageReference: "foo/bar/baz",
4642
}
4743

48-
data, err := runtime.Encode(codecs.LegacyCodec(imageapiv1.SchemeGroupVersion), i)
44+
data, err := runtime.Encode(codecs.LegacyCodec(SchemeGroupVersion), i)
4945
if err != nil {
5046
t.Fatalf("unexpected error: %v", err)
5147
}
@@ -66,16 +62,16 @@ func TestRoundTripVersionedObject(t *testing.T) {
6662

6763
func TestFieldSelectors(t *testing.T) {
6864
apitesting.FieldKeyCheck{
69-
SchemeBuilder: []func(*runtime.Scheme) error{imageapiv1.LegacySchemeBuilder.AddToScheme, newer.LegacySchemeBuilder.AddToScheme},
70-
Kind: imageapiv1.LegacySchemeGroupVersion.WithKind("ImageStream"),
65+
SchemeBuilder: []func(*runtime.Scheme) error{LegacySchemeBuilder.AddToScheme, newer.LegacySchemeBuilder.AddToScheme},
66+
Kind: LegacySchemeGroupVersion.WithKind("ImageStream"),
7167
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
7268
AllowedExternalFieldKeys: []string{"name", "spec.dockerImageRepository", "status.dockerImageRepository"},
7369
FieldKeyEvaluatorFn: newer.ImageStreamSelector,
7470
}.Check(t)
7571

7672
apitesting.FieldKeyCheck{
77-
SchemeBuilder: []func(*runtime.Scheme) error{imageapiv1.SchemeBuilder.AddToScheme, newer.SchemeBuilder.AddToScheme},
78-
Kind: imageapiv1.SchemeGroupVersion.WithKind("ImageStream"),
73+
SchemeBuilder: []func(*runtime.Scheme) error{SchemeBuilder.AddToScheme, newer.SchemeBuilder.AddToScheme},
74+
Kind: SchemeGroupVersion.WithKind("ImageStream"),
7975
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
8076
AllowedExternalFieldKeys: []string{"spec.dockerImageRepository", "status.dockerImageRepository"},
8177
FieldKeyEvaluatorFn: newer.ImageStreamSelector,
@@ -85,8 +81,8 @@ func TestFieldSelectors(t *testing.T) {
8581
func TestImageImportSpecDefaulting(t *testing.T) {
8682
scheme := runtime.NewScheme()
8783
codecs := serializer.NewCodecFactory(scheme)
88-
imageapiv1.LegacySchemeBuilder.AddToScheme(scheme)
89-
imageapiv1.SchemeBuilder.AddToScheme(scheme)
84+
LegacySchemeBuilder.AddToScheme(scheme)
85+
SchemeBuilder.AddToScheme(scheme)
9086
newer.LegacySchemeBuilder.AddToScheme(scheme)
9187
newer.SchemeBuilder.AddToScheme(scheme)
9288

@@ -97,7 +93,7 @@ func TestImageImportSpecDefaulting(t *testing.T) {
9793
},
9894
},
9995
}
100-
data, err := runtime.Encode(codecs.LegacyCodec(imageapiv1.SchemeGroupVersion), i)
96+
data, err := runtime.Encode(codecs.LegacyCodec(SchemeGroupVersion), i)
10197
if err != nil {
10298
t.Fatal(err)
10399
}

0 commit comments

Comments
 (0)