Skip to content

Commit 1b747ae

Browse files
committed
Hide DockerImageConfig as well as DockerImageManifest
Signed-off-by: Gladkov Alexey <[email protected]>
1 parent 12b6215 commit 1b747ae

File tree

4 files changed

+104
-0
lines changed

4 files changed

+104
-0
lines changed

pkg/image/registry/imagestreamimage/rest.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ func (r *REST) Get(ctx kapi.Context, id string) (runtime.Object, error) {
7070
return nil, err
7171
}
7272
image.DockerImageManifest = ""
73+
image.DockerImageConfig = ""
7374

7475
isi := api.ImageStreamImage{
7576
ObjectMeta: kapi.ObjectMeta{

pkg/image/registry/imagestreamimport/rest.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,13 +436,15 @@ func clearManifests(isi *api.ImageStreamImport) {
436436
if !isi.Spec.Images[i].IncludeManifest {
437437
if isi.Status.Images[i].Image != nil {
438438
isi.Status.Images[i].Image.DockerImageManifest = ""
439+
isi.Status.Images[i].Image.DockerImageConfig = ""
439440
}
440441
}
441442
}
442443
if isi.Spec.Repository != nil && !isi.Spec.Repository.IncludeManifest {
443444
for i := range isi.Status.Repository.Images {
444445
if isi.Status.Repository.Images[i].Image != nil {
445446
isi.Status.Repository.Images[i].Image.DockerImageManifest = ""
447+
isi.Status.Repository.Images[i].Image.DockerImageConfig = ""
446448
}
447449
}
448450
}

pkg/image/registry/imagestreamtag/rest.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ func newISTag(tag string, imageStream *imageapi.ImageStream, image *imageapi.Ima
372372
return nil, err
373373
}
374374
image.DockerImageManifest = ""
375+
image.DockerImageConfig = ""
375376
ist.Image = *image
376377
} else {
377378
ist.Image = imageapi.Image{}

test/integration/imagestream_test.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package integration
22

33
import (
4+
"encoding/json"
45
"os"
56
"reflect"
67
"testing"
@@ -11,6 +12,7 @@ import (
1112

1213
deployapi "github.com/openshift/origin/pkg/deploy/api"
1314
stratsupport "github.com/openshift/origin/pkg/deploy/strategy/support"
15+
imagetest "github.com/openshift/origin/pkg/image/admission/testutil"
1416
imageapi "github.com/openshift/origin/pkg/image/api"
1517
testutil "github.com/openshift/origin/test/util"
1618
testserver "github.com/openshift/origin/test/util/server"
@@ -282,6 +284,104 @@ func TestImageStreamMappingCreate(t *testing.T) {
282284
}
283285
}
284286

287+
func TestImageStreamWithoutDockerImageConfig(t *testing.T) {
288+
testutil.RequireEtcd(t)
289+
defer testutil.DumpEtcdOnFailure(t)
290+
_, clusterAdminKubeConfig, err := testserver.StartTestMasterAPI()
291+
if err != nil {
292+
t.Fatalf("unexpected error: %v", err)
293+
}
294+
295+
clusterAdminClient, err := testutil.GetClusterAdminClient(clusterAdminKubeConfig)
296+
if err != nil {
297+
t.Errorf("unexpected error: %v", err)
298+
}
299+
err = testutil.CreateNamespace(clusterAdminKubeConfig, testutil.Namespace())
300+
if err != nil {
301+
t.Errorf("unexpected error: %v", err)
302+
}
303+
304+
stream := mockImageStream()
305+
306+
expected, err := clusterAdminClient.ImageStreams(testutil.Namespace()).Create(stream)
307+
if err != nil {
308+
t.Fatalf("Unexpected error: %v", err)
309+
}
310+
if expected.Name == "" {
311+
t.Errorf("Unexpected empty image Name %v", expected)
312+
}
313+
314+
imageConfig := imageapi.DockerConfig{
315+
Hostname: "example.com",
316+
Env: []string{"A=B"},
317+
}
318+
319+
imageConfigBytes, err := json.Marshal(imageConfig)
320+
if err != nil {
321+
t.Fatalf("error marshaling image config: %s", err)
322+
}
323+
324+
image := imageapi.Image{
325+
ObjectMeta: kapi.ObjectMeta{
326+
Name: imagetest.BaseImageWith1LayerDigest,
327+
},
328+
DockerImageMetadata: imageapi.DockerImage{
329+
Config: &imageapi.DockerConfig{
330+
Hostname: "example.com",
331+
Env: []string{"A=B"},
332+
},
333+
},
334+
DockerImageConfig: string(imageConfigBytes),
335+
DockerImageReference: "some/namespace/name",
336+
}
337+
338+
// create a mapping to an image that doesn't exist
339+
mapping := &imageapi.ImageStreamMapping{
340+
ObjectMeta: kapi.ObjectMeta{
341+
Name: stream.Name,
342+
},
343+
Tag: "newer",
344+
Image: image,
345+
}
346+
if err := clusterAdminClient.ImageStreamMappings(testutil.Namespace()).Create(mapping); err != nil {
347+
t.Fatalf("unexpected error: %v", err)
348+
}
349+
350+
img, err := clusterAdminClient.Images().Get(image.Name)
351+
if err != nil {
352+
t.Fatalf("unexpected error: %v", err)
353+
}
354+
if img.Name != image.Name {
355+
t.Fatalf("unexpected image: %#v", img)
356+
}
357+
if len(img.DockerImageConfig) == 0 {
358+
t.Fatalf("image has an empty config: %#v", img)
359+
}
360+
361+
ist, err := clusterAdminClient.ImageStreamTags(testutil.Namespace()).Get(stream.Name, "newer")
362+
if err != nil {
363+
t.Fatalf("Unexpected error: %v", err)
364+
}
365+
if ist.Image.Name != image.Name {
366+
t.Fatalf("unexpected image: %#v", img)
367+
}
368+
if len(ist.Image.DockerImageConfig) != 0 {
369+
t.Errorf("image has a not empty config: %#v", ist)
370+
}
371+
372+
isi, err := clusterAdminClient.ImageStreamImages(testutil.Namespace()).Get(stream.Name, imagetest.BaseImageWith1LayerDigest)
373+
if err != nil {
374+
t.Fatalf("Unexpected error: %v", err)
375+
}
376+
if isi.Image.Name != image.Name {
377+
t.Fatalf("unexpected image: %#v", img)
378+
}
379+
if len(isi.Image.DockerImageConfig) != 0 {
380+
t.Errorf("image has a not empty config: %#v", isi)
381+
}
382+
383+
}
384+
285385
func TestImageStreamTagLifecycleHook(t *testing.T) {
286386
testutil.RequireEtcd(t)
287387
defer testutil.DumpEtcdOnFailure(t)

0 commit comments

Comments
 (0)