Skip to content

Commit f370159

Browse files
Merge pull request #20399 from deads2k/build-01-switch
remove build helpers from api packages
2 parents 888d597 + 39c9dd8 commit f370159

File tree

49 files changed

+340
-287
lines changed

Some content is hidden

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

49 files changed

+340
-287
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/apis/build/zz_generated.deepcopy.go

Lines changed: 0 additions & 49 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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+
}

0 commit comments

Comments
 (0)