Skip to content

Commit 39c9dd8

Browse files
committed
remove build helpers from api packages
1 parent 6893918 commit 39c9dd8

File tree

48 files changed

+340
-238
lines changed

Some content is hidden

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

48 files changed

+340
-238
lines changed

hack/import-restrictions.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
"allowedImportPackages": [
156156
"vendor/k8s.io/kubernetes/pkg/apis/core",
157157
"vendor/k8s.io/kubernetes/pkg/apis/core/v1",
158+
"github.com/openshift/origin/pkg/build/buildapihelpers",
158159
"github.com/openshift/origin/pkg/image/apis/image"
159160
]
160161
},
@@ -480,6 +481,7 @@
480481
"github.com/openshift/origin/pkg/authorization/util",
481482
"github.com/openshift/origin/pkg/build/apis/build",
482483
"github.com/openshift/origin/pkg/build/apis/build/install",
484+
"github.com/openshift/origin/pkg/build/buildapihelpers",
483485
"github.com/openshift/origin/pkg/build/client",
484486
"github.com/openshift/origin/pkg/build/client/internalversion",
485487
"github.com/openshift/origin/pkg/build/util",

pkg/build/apis/build/fields.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package build
33
import (
44
"fmt"
55

6+
"github.com/openshift/origin/pkg/api/apihelpers"
67
"k8s.io/apimachinery/pkg/fields"
78
runtime "k8s.io/apimachinery/pkg/runtime"
89
)
@@ -13,7 +14,7 @@ func BuildFieldSelector(obj runtime.Object, fieldSet fields.Set) error {
1314
return fmt.Errorf("%T not a Build", obj)
1415
}
1516
fieldSet["status"] = string(build.Status.Phase)
16-
fieldSet["podName"] = GetBuildPodName(build)
17+
fieldSet["podName"] = apihelpers.GetPodName(build.Name, "build")
1718

1819
return nil
1920
}

pkg/build/apis/build/helpers.go

Lines changed: 0 additions & 92 deletions
This file was deleted.

pkg/build/apis/build/util_test.go

Lines changed: 0 additions & 13 deletions
This file was deleted.

pkg/build/apis/build/v1/conversion.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/openshift/api/build/v1"
88
newer "github.com/openshift/origin/pkg/build/apis/build"
9+
"github.com/openshift/origin/pkg/build/buildapihelpers"
910
imageapi "github.com/openshift/origin/pkg/image/apis/image"
1011
)
1112

@@ -18,7 +19,7 @@ func Convert_v1_BuildConfig_To_build_BuildConfig(in *v1.BuildConfig, out *newer.
1819
// Strip off any default imagechange triggers where the buildconfig's
1920
// "from" is not an ImageStreamTag, because those triggers
2021
// will never be invoked.
21-
imageRef := newer.GetInputReference(out.Spec.Strategy)
22+
imageRef := buildapihelpers.GetInputReference(out.Spec.Strategy)
2223
hasIST := imageRef != nil && imageRef.Kind == "ImageStreamTag"
2324
for _, trigger := range out.Spec.Triggers {
2425
if trigger.Type != newer.ImageChangeBuildTriggerType {

pkg/build/apis/build/validation/validation.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020

2121
buildapiv1 "github.com/openshift/api/build/v1"
2222
buildapi "github.com/openshift/origin/pkg/build/apis/build"
23+
"github.com/openshift/origin/pkg/build/buildapihelpers"
2324
"github.com/openshift/origin/pkg/build/buildscheme"
2425
buildutil "github.com/openshift/origin/pkg/build/util"
2526
imageapi "github.com/openshift/origin/pkg/image/apis/image"
@@ -84,7 +85,7 @@ func ValidateBuildConfig(config *buildapi.BuildConfig) field.ErrorList {
8485
fromRefs := map[string]struct{}{}
8586
specPath := field.NewPath("spec")
8687
triggersPath := specPath.Child("triggers")
87-
buildFrom := buildapi.GetInputReference(config.Spec.Strategy)
88+
buildFrom := buildapihelpers.GetInputReference(config.Spec.Strategy)
8889
for i, trg := range config.Spec.Triggers {
8990
allErrs = append(allErrs, validateTrigger(&trg, buildFrom, triggersPath.Index(i))...)
9091
if trg.Type != buildapi.ImageChangeBuildTriggerType || trg.ImageChange == nil {
@@ -664,7 +665,7 @@ func ValidateBuildLogOptions(opts *buildapi.BuildLogOptions) field.ErrorList {
664665
allErrs := field.ErrorList{}
665666

666667
// TODO: Replace by validating PodLogOptions via BuildLogOptions once it's bundled in
667-
popts := buildapi.BuildToPodLogOptions(opts)
668+
popts := buildapihelpers.BuildToPodLogOptions(opts)
668669
if errs := validation.ValidatePodLogOptions(popts); len(errs) > 0 {
669670
allErrs = append(allErrs, errs...)
670671
}

pkg/build/buildapihelpers/helpers.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package buildapihelpers
2+
3+
import (
4+
coreinternalapi "k8s.io/kubernetes/pkg/apis/core"
5+
6+
buildinternalapi "github.com/openshift/origin/pkg/build/apis/build"
7+
)
8+
9+
// BuildToPodLogOptions builds a PodLogOptions object out of a BuildLogOptions.
10+
// Currently BuildLogOptions.Container and BuildLogOptions.Previous aren't used
11+
// so they won't be copied to PodLogOptions.
12+
func BuildToPodLogOptions(opts *buildinternalapi.BuildLogOptions) *coreinternalapi.PodLogOptions {
13+
return &coreinternalapi.PodLogOptions{
14+
Follow: opts.Follow,
15+
SinceSeconds: opts.SinceSeconds,
16+
SinceTime: opts.SinceTime,
17+
Timestamps: opts.Timestamps,
18+
TailLines: opts.TailLines,
19+
LimitBytes: opts.LimitBytes,
20+
}
21+
}
22+
23+
// FindTriggerPolicy retrieves the BuildTrigger(s) of a given type from a build configuration.
24+
// Returns nil if no matches are found.
25+
func FindTriggerPolicy(triggerType buildinternalapi.BuildTriggerType, config *buildinternalapi.BuildConfig) (buildTriggers []buildinternalapi.BuildTriggerPolicy) {
26+
for _, specTrigger := range config.Spec.Triggers {
27+
if specTrigger.Type == triggerType {
28+
buildTriggers = append(buildTriggers, specTrigger)
29+
}
30+
}
31+
return buildTriggers
32+
}
33+
34+
func HasTriggerType(triggerType buildinternalapi.BuildTriggerType, bc *buildinternalapi.BuildConfig) bool {
35+
matches := FindTriggerPolicy(triggerType, bc)
36+
return len(matches) > 0
37+
}
38+
39+
// GetInputReference returns the From ObjectReference associated with the
40+
// BuildStrategy.
41+
func GetInputReference(strategy buildinternalapi.BuildStrategy) *coreinternalapi.ObjectReference {
42+
switch {
43+
case strategy.SourceStrategy != nil:
44+
return &strategy.SourceStrategy.From
45+
case strategy.DockerStrategy != nil:
46+
return strategy.DockerStrategy.From
47+
case strategy.CustomStrategy != nil:
48+
return &strategy.CustomStrategy.From
49+
default:
50+
return nil
51+
}
52+
}

pkg/build/buildapihelpers/sort.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package buildapihelpers
2+
3+
import buildinternalapi "github.com/openshift/origin/pkg/build/apis/build"
4+
5+
// BuildSliceByCreationTimestamp implements sort.Interface for []Build
6+
// based on the CreationTimestamp field.
7+
type BuildSliceByCreationTimestamp []buildinternalapi.Build
8+
9+
func (b BuildSliceByCreationTimestamp) Len() int {
10+
return len(b)
11+
}
12+
13+
func (b BuildSliceByCreationTimestamp) Less(i, j int) bool {
14+
return b[i].CreationTimestamp.Before(&b[j].CreationTimestamp)
15+
}
16+
17+
func (b BuildSliceByCreationTimestamp) Swap(i, j int) {
18+
b[i], b[j] = b[j], b[i]
19+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package buildapihelpers
2+
3+
import (
4+
"sort"
5+
"testing"
6+
"time"
7+
8+
buildinternalapi "github.com/openshift/origin/pkg/build/apis/build"
9+
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
)
12+
13+
func TestSortBuildSliceByCreationTimestamp(t *testing.T) {
14+
present := metav1.Now()
15+
past := metav1.NewTime(present.Add(-time.Minute))
16+
builds := []buildinternalapi.Build{
17+
{
18+
ObjectMeta: metav1.ObjectMeta{
19+
Name: "present",
20+
CreationTimestamp: present,
21+
},
22+
},
23+
{
24+
ObjectMeta: metav1.ObjectMeta{
25+
Name: "past",
26+
CreationTimestamp: past,
27+
},
28+
},
29+
}
30+
sort.Sort(BuildSliceByCreationTimestamp(builds))
31+
if [2]string{builds[0].Name, builds[1].Name} != [2]string{"past", "present"} {
32+
t.Errorf("Unexpected sort order")
33+
}
34+
}

pkg/build/apis/build/util.go renamed to pkg/build/buildapihelpers/util.go

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1-
package build
1+
package buildapihelpers
22

33
import (
44
"github.com/openshift/origin/pkg/api/apihelpers"
5+
buildinternalapi "github.com/openshift/origin/pkg/build/apis/build"
56
"k8s.io/apimachinery/pkg/util/validation"
67
)
78

89
const (
9-
// BuildPodSuffix is the suffix used to append to a build pod name given a build name
10-
BuildPodSuffix = "build"
10+
// buildPodSuffix is the suffix used to append to a build pod name given a build name
11+
buildPodSuffix = "build"
1112
)
1213

1314
// GetBuildPodName returns name of the build pod.
14-
func GetBuildPodName(build *Build) string {
15-
return apihelpers.GetPodName(build.Name, BuildPodSuffix)
15+
func GetBuildPodName(build *buildinternalapi.Build) string {
16+
return apihelpers.GetPodName(build.Name, buildPodSuffix)
1617
}
1718

18-
func StrategyType(strategy BuildStrategy) string {
19+
func StrategyType(strategy buildinternalapi.BuildStrategy) string {
1920
switch {
2021
case strategy.DockerStrategy != nil:
2122
return "Docker"
@@ -29,26 +30,6 @@ func StrategyType(strategy BuildStrategy) string {
2930
return ""
3031
}
3132

32-
func SourceType(source BuildSource) string {
33-
var sourceType string
34-
if source.Git != nil {
35-
sourceType = "Git"
36-
}
37-
if source.Dockerfile != nil {
38-
if len(sourceType) != 0 {
39-
sourceType = sourceType + ","
40-
}
41-
sourceType = sourceType + "Dockerfile"
42-
}
43-
if source.Binary != nil {
44-
if len(sourceType) != 0 {
45-
sourceType = sourceType + ","
46-
}
47-
sourceType = sourceType + "Binary"
48-
}
49-
return sourceType
50-
}
51-
5233
// LabelValue returns a string to use as a value for the Build
5334
// label in a pod. If the length of the string parameter exceeds
5435
// the maximum label length, the value will be truncated.

0 commit comments

Comments
 (0)