Skip to content

Commit da036e0

Browse files
author
OpenShift Bot
committed
Merge pull request #2089 from kargakis/image-stream-fix
Merged by openshift-bot
2 parents e7ce86b + 51a6136 commit da036e0

File tree

6 files changed

+47
-40
lines changed

6 files changed

+47
-40
lines changed

hack/test-cmd.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ echo "imageStreams: ok"
333333
[ "$(osc new-app mongo -o yaml | grep library/mongo)" ]
334334
# the local image repository takes precedence over the Docker Hub "mysql" image
335335
[ "$(osc new-app mysql -o yaml | grep mysql-55-centos7)" ]
336+
osc delete all --all
336337
osc new-app library/php mysql -l no-source=php-mysql
337338
osc delete all -l no-source=php-mysql
338339
# check if we can create from a stored template

pkg/generate/app/app.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ func (s *BuildStrategyRef) BuildStrategy() (*buildapi.BuildStrategy, []buildapi.
161161
type ImageRef struct {
162162
imageapi.DockerImageReference
163163
AsImageStream bool
164+
OutputImage bool
164165

165166
Stream *imageapi.ImageStream
166167
Info *imageapi.DockerImage
@@ -183,10 +184,15 @@ func (r *ImageRef) NameReference() string {
183184

184185
// ObjectReference returns an object reference from the image reference
185186
func (r *ImageRef) ObjectReference() *kapi.ObjectReference {
187+
if r.Stream != nil {
188+
return &kapi.ObjectReference{
189+
Kind: "ImageStreamTag",
190+
Name: r.Name + ":" + r.Tag,
191+
}
192+
}
186193
return &kapi.ObjectReference{
187-
Kind: "ImageStreamTag",
188-
Name: r.Name + ":" + imageapi.DefaultImageTag,
189-
Namespace: r.Namespace,
194+
Kind: "ImageStreamTag",
195+
Name: r.Name + ":" + imageapi.DefaultImageTag,
190196
}
191197
}
192198

@@ -241,19 +247,20 @@ func (r *ImageRef) ImageStream() (*imageapi.ImageStream, error) {
241247
return nil, fmt.Errorf("unable to suggest an image stream name for %q", r.String())
242248
}
243249

244-
repo := &imageapi.ImageStream{
250+
stream := &imageapi.ImageStream{
245251
ObjectMeta: kapi.ObjectMeta{
246252
Name: name,
247253
},
248254
Spec: imageapi.ImageStreamSpec{
249255
Tags: map[string]imageapi.TagReference{imageapi.DefaultImageTag: {DockerImageReference: r.DockerImageReference.String()}},
250256
},
251257
}
252-
if !r.AsImageStream {
253-
repo.Spec.DockerImageRepository = r.String()
258+
if !r.OutputImage {
259+
stream.Spec.DockerImageRepository = r.String()
260+
stream.Spec.Tags = map[string]imageapi.TagReference{}
254261
}
255262

256-
return repo, nil
263+
return stream, nil
257264
}
258265

259266
// DeployableContainer sets up a container for the image ready for deployment

pkg/generate/app/cmd/newapp_test.go

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"os"
66
"reflect"
7+
"sort"
78
"strings"
89
"testing"
910

@@ -464,11 +465,11 @@ func TestRun(t *testing.T) {
464465
tests := []struct {
465466
name string
466467
config *AppConfig
467-
expectedRes map[string]string
468+
expected map[string][]string
468469
expectedErr error
469470
}{
470471
{
471-
name: "",
472+
name: "successful ruby app generation",
472473
config: &AppConfig{
473474
SourceRepositories: util.StringList{"https://github.com/openshift/ruby-hello-world"},
474475

@@ -493,53 +494,52 @@ func TestRun(t *testing.T) {
493494
osclient: &client.Fake{},
494495
originNamespace: "default",
495496
},
496-
expectedRes: map[string]string{
497-
"imageStream": "ruby-hello-world",
498-
"buildConfig": "ruby-hello-world",
499-
"deploymentConfig": "ruby-hello-world",
500-
"service": "ruby-hello-world"},
497+
expected: map[string][]string{
498+
"imageStream": {"ruby-hello-world", "ruby-20-centos7"},
499+
"buildConfig": {"ruby-hello-world"},
500+
"deploymentConfig": {"ruby-hello-world"},
501+
"service": {"ruby-hello-world"},
502+
},
501503
expectedErr: nil,
502504
},
503505
}
504506

505507
for _, test := range tests {
506508
res, err := test.config.Run(os.Stdout)
507509
if err != test.expectedErr {
508-
t.Errorf("Error mismatch! Expected %v, got %v", test.expectedErr, err)
510+
t.Errorf("%s: Error mismatch! Expected %v, got %v", test.name, test.expectedErr, err)
509511
continue
510512
}
511-
var object, objectName string
513+
got := map[string][]string{}
512514
for _, obj := range res.List.Items {
513-
var unknown bool
514515
switch tp := obj.(type) {
515516
case *buildapi.BuildConfig:
516-
object = "buildConfig"
517-
objectName = tp.Name
517+
got["buildConfig"] = append(got["buildConfig"], tp.Name)
518518
case *kapi.Service:
519-
object = "service"
520-
objectName = tp.Name
519+
got["service"] = append(got["service"], tp.Name)
521520
case *imageapi.ImageStream:
522-
object = "imageStream"
523-
objectName = tp.Name
521+
got["imageStream"] = append(got["imageStream"], tp.Name)
524522
case *deploy.DeploymentConfig:
525-
object = "deploymentConfig"
526-
objectName = tp.Name
527-
default:
528-
t.Errorf("Unknown resource type")
529-
unknown = true
523+
got["deploymentConfig"] = append(got["deploymentConfig"], tp.Name)
530524
}
525+
}
531526

532-
if unknown {
533-
continue
534-
}
527+
if len(test.expected) != len(got) {
528+
t.Errorf("%s: Resource kind size mismatch! Expected %d, got %d", test.name, len(test.expected), len(got))
529+
continue
530+
}
535531

536-
name, ok := test.expectedRes[object]
532+
for k, exp := range test.expected {
533+
g, ok := got[k]
537534
if !ok {
538-
t.Errorf("Expected %s object, but didn't find one", object)
539-
continue
535+
t.Errorf("%s: Didn't find expected kind %s", test.name, k)
540536
}
541-
if name != objectName {
542-
t.Errorf("Expected object name %s, got %s", name, objectName)
537+
538+
sort.Strings(g)
539+
sort.Strings(exp)
540+
541+
if !reflect.DeepEqual(g, exp) {
542+
t.Errorf("%s: Resource names mismatch! Expected %v, got %v", test.name, exp, g)
543543
continue
544544
}
545545
}

pkg/generate/app/imagelookup.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,15 +152,14 @@ func (r DockerRegistryResolver) Resolve(value string) (*ComponentMatch, error) {
152152
return nil, err
153153
}
154154

155-
from := ref.Registry
156155
if len(ref.Registry) == 0 {
157156
ref.Registry = "Docker Hub"
158157
}
159158
return &ComponentMatch{
160159
Value: value,
161160
Argument: fmt.Sprintf("--docker-image=%q", value),
162161
Name: value,
163-
Description: descriptionFor(dockerImage, value, from),
162+
Description: descriptionFor(dockerImage, value, ref.Registry),
164163
Builder: IsBuilderImage(dockerImage),
165164
Score: 0,
166165
Image: dockerImage,
@@ -329,7 +328,7 @@ func InputImageFromMatch(match *ComponentMatch) (*ImageRef, error) {
329328
if err != nil {
330329
return nil, err
331330
}
332-
input.AsImageStream = false
331+
input.AsImageStream = true
333332
input.Info = match.Image
334333
return input, nil
335334

pkg/generate/app/imageref.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ func (g *imageRefGenerator) FromName(name string) (*ImageRef, error) {
4141
}
4242
return &ImageRef{
4343
DockerImageReference: ref,
44-
AsImageStream: true,
4544
}, nil
4645
}
4746

pkg/generate/app/pipeline.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func NewBuildPipeline(from string, input *ImageRef, strategy *BuildStrategyRef,
5050
Tag: image.DefaultImageTag,
5151
},
5252

53+
OutputImage: true,
5354
AsImageStream: true,
5455
}
5556
if input != nil {

0 commit comments

Comments
 (0)