-
Notifications
You must be signed in to change notification settings - Fork 116
/
imagestream.go
44 lines (36 loc) · 1.28 KB
/
imagestream.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package runner
import (
"context"
"errors"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
const (
// name of test ImageStream
testImageStreamName = "tests"
// namespace containing test ImageStream
testImageStreamNamespace = "openshift"
)
// GetLatestImageStreamTag returns the From name of the latest ImageStream tag.
func (r *Runner) GetLatestImageStreamTag() (string, error) {
return r.getImageStreamTag("latest")
}
// getImageStreamTag returns the From name of the given ImageStream tag.
func (r *Runner) getImageStreamTag(tag string) (string, error) {
if r.Image == nil {
return "", errors.New("client for Image must be set")
}
stream, err := r.Image.ImageV1().ImageStreams(r.ImageStreamNamespace).Get(context.TODO(), r.ImageStreamName, metav1.GetOptions{})
if err != nil {
return "", fmt.Errorf("can't get ImageStream '%s/%s': %v", r.ImageStreamNamespace, r.ImageStreamName, err)
}
for _, imageTag := range stream.Spec.Tags {
if imageTag.Name == tag {
if imageTag.From != nil {
return imageTag.From.Name, nil
}
return "", fmt.Errorf("ImageStream '%s/%s' tag '%s' has a nil From", r.ImageStreamNamespace, r.ImageStreamName, tag)
}
}
return "", fmt.Errorf("ImageStream '%s/%s' does not have tag '%s'", r.ImageStreamNamespace, r.ImageStreamName, tag)
}