Skip to content

Commit c00eee8

Browse files
committed
externalize remaining set commands
1 parent 12aef55 commit c00eee8

File tree

13 files changed

+264
-333
lines changed

13 files changed

+264
-333
lines changed

pkg/image/apis/image/v1/helpers.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package v1
22

33
import (
4+
"strings"
5+
46
"github.com/openshift/api/image/v1"
57
imageapi "github.com/openshift/origin/pkg/image/apis/image"
68
)
@@ -13,6 +15,9 @@ func LatestTaggedImage(stream *v1.ImageStream, tag string) *v1.TagEvent {
1315
tag = imageapi.DefaultImageTag
1416
}
1517
// find the most recent tag event with an image reference
18+
if stream.Status.Tags == nil {
19+
return nil
20+
}
1621
if stream.Status.Tags != nil {
1722
for _, t := range stream.Status.Tags {
1823
if t.Tag == tag {
@@ -26,3 +31,12 @@ func LatestTaggedImage(stream *v1.ImageStream, tag string) *v1.TagEvent {
2631

2732
return nil
2833
}
34+
35+
func HasAnnotationTag(tagRef *v1.TagReference, searchTag string) bool {
36+
for _, tag := range strings.Split(tagRef.Annotations["tags"], ",") {
37+
if tag == searchTag {
38+
return true
39+
}
40+
}
41+
return false
42+
}

pkg/oc/cli/admin/migrate/images/imagerefs.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/spf13/cobra"
1010
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
1111

12-
"k8s.io/api/core/v1"
12+
corev1 "k8s.io/api/core/v1"
1313
"k8s.io/apimachinery/pkg/runtime"
1414
kapi "k8s.io/kubernetes/pkg/apis/core"
1515
"k8s.io/kubernetes/pkg/credentialprovider"
@@ -24,7 +24,7 @@ import (
2424
imageapi "github.com/openshift/origin/pkg/image/apis/image"
2525
imageclientinternal "github.com/openshift/origin/pkg/image/generated/internalclientset"
2626
imagetypedclient "github.com/openshift/origin/pkg/image/generated/internalclientset/typed/image/internalversion"
27-
"github.com/openshift/origin/pkg/oc/util/clientcmd"
27+
"k8s.io/kubernetes/pkg/api/legacyscheme"
2828
)
2929

3030
var (
@@ -78,7 +78,7 @@ type MigrateImageReferenceOptions struct {
7878

7979
Client imagetypedclient.ImageStreamsGetter
8080
Mappings ImageReferenceMappings
81-
UpdatePodSpecFn func(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error)
81+
UpdatePodSpecFn func(obj runtime.Object, fn func(*corev1.PodSpec) error) (bool, error)
8282
}
8383

8484
func NewMigrateImageReferenceOptions(streams genericclioptions.IOStreams) *MigrateImageReferenceOptions {
@@ -278,7 +278,7 @@ func (o *MigrateImageReferenceOptions) transform(obj runtime.Object) (migrate.Re
278278
default:
279279
if o.UpdatePodSpecFn != nil {
280280
var changed bool
281-
supports, err := o.UpdatePodSpecFn(obj, clientcmd.ConvertInteralPodSpecToExternal(func(spec *kapi.PodSpec) error {
281+
supports, err := o.UpdatePodSpecFn(obj, convertInteralPodSpecToExternal(func(spec *kapi.PodSpec) error {
282282
changed = updatePodSpec(spec, fn)
283283
return nil
284284
}))
@@ -324,6 +324,25 @@ func updatePodSpec(spec *kapi.PodSpec, fn TransformImageFunc) bool {
324324
return changed
325325
}
326326

327+
// TODO(juanvallejo): this needs to die once this command is switched to externals
328+
func convertInteralPodSpecToExternal(inFn func(*kapi.PodSpec) error) func(*corev1.PodSpec) error {
329+
return func(specToMutate *corev1.PodSpec) error {
330+
internalPodSpec := &kapi.PodSpec{}
331+
if err := legacyscheme.Scheme.Convert(specToMutate, internalPodSpec, nil); err != nil {
332+
return err
333+
}
334+
if err := inFn(internalPodSpec); err != nil {
335+
return err
336+
}
337+
externalPodSpec := &corev1.PodSpec{}
338+
if err := legacyscheme.Scheme.Convert(internalPodSpec, externalPodSpec, nil); err != nil {
339+
return err
340+
}
341+
*specToMutate = *externalPodSpec
342+
return nil
343+
}
344+
}
345+
327346
func updateDockerConfig(cfg credentialprovider.DockerConfig, fn TransformImageFunc) bool {
328347
var changed bool
329348
for k, v := range cfg {

pkg/oc/cli/set/env.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828

2929
buildv1 "github.com/openshift/api/build/v1"
3030
cmdutil "github.com/openshift/origin/pkg/cmd/util"
31-
envresolve "github.com/openshift/origin/pkg/oc/lib/env"
3231
utilenv "github.com/openshift/origin/pkg/oc/util/env"
3332
)
3433

@@ -345,7 +344,7 @@ func (o *EnvOptions) RunEnv() error {
345344
name := getObjectName(info)
346345
ok, err := o.UpdatePodSpecForObject(info.Object, func(spec *corev1.PodSpec) error {
347346
resolutionErrorsEncountered := false
348-
containers, _ := selectContainersV1(spec.Containers, o.ContainerSelector)
347+
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
349348
if len(containers) == 0 {
350349
fmt.Fprintf(o.ErrOut, "warning: %s does not have any containers matching %q\n", name, o.ContainerSelector)
351350
return nil
@@ -362,7 +361,7 @@ func (o *EnvOptions) RunEnv() error {
362361

363362
if o.List {
364363
resolveErrors := map[string][]string{}
365-
store := envresolve.NewResourceStore()
364+
store := utilenv.NewResourceStore()
366365

367366
fmt.Fprintf(o.Out, "# %s, container %s\n", name, c.Name)
368367
for _, env := range c.Env {
@@ -374,19 +373,19 @@ func (o *EnvOptions) RunEnv() error {
374373

375374
// Print the reference version
376375
if !o.Resolve {
377-
fmt.Fprintf(o.Out, "# %s from %s\n", env.Name, envresolve.GetEnvVarRefString(env.ValueFrom))
376+
fmt.Fprintf(o.Out, "# %s from %s\n", env.Name, utilenv.GetEnvVarRefString(env.ValueFrom))
378377
continue
379378
}
380379

381-
value, err := envresolve.GetEnvVarRefValue(o.KClientSet, o.Namespace, store, env.ValueFrom, info.Object, c)
380+
value, err := utilenv.GetEnvVarRefValue(o.KClientSet, o.Namespace, store, env.ValueFrom, info.Object, c)
382381
// Print the resolved value
383382
if err == nil {
384383
fmt.Fprintf(o.Out, "%s=%s\n", env.Name, value)
385384
continue
386385
}
387386

388387
// Print the reference version and save the resolve error
389-
fmt.Fprintf(o.Out, "# %s from %s\n", env.Name, envresolve.GetEnvVarRefString(env.ValueFrom))
388+
fmt.Fprintf(o.Out, "# %s from %s\n", env.Name, utilenv.GetEnvVarRefString(env.ValueFrom))
390389
errString := err.Error()
391390
resolveErrors[errString] = append(resolveErrors[errString], env.Name)
392391
resolutionErrorsEncountered = true

pkg/oc/cli/set/helper.go

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,11 @@ import (
99
"k8s.io/apimachinery/pkg/util/sets"
1010
"k8s.io/apimachinery/pkg/util/strategicpatch"
1111
"k8s.io/kubernetes/pkg/api/legacyscheme"
12-
kapi "k8s.io/kubernetes/pkg/apis/core"
1312
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
1413
"k8s.io/kubernetes/pkg/kubectl/scheme"
1514
)
1615

17-
func selectContainers(containers []kapi.Container, spec string) ([]*kapi.Container, []*kapi.Container) {
18-
out := []*kapi.Container{}
19-
skipped := []*kapi.Container{}
20-
for i, c := range containers {
21-
if selectString(c.Name, spec) {
22-
out = append(out, &containers[i])
23-
} else {
24-
skipped = append(skipped, &containers[i])
25-
}
26-
}
27-
return out, skipped
28-
}
29-
30-
// TODO(juanvallejo): remove internal helper once all callers are switched to externals
31-
func selectContainersV1(containers []corev1.Container, spec string) ([]*corev1.Container, []*corev1.Container) {
16+
func selectContainers(containers []corev1.Container, spec string) ([]*corev1.Container, []*corev1.Container) {
3217
out := []*corev1.Container{}
3318
skipped := []*corev1.Container{}
3419
for i, c := range containers {

pkg/oc/cli/set/probe.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,20 @@ import (
1010
"github.com/golang/glog"
1111
"github.com/spf13/cobra"
1212

13+
corev1 "k8s.io/api/core/v1"
1314
"k8s.io/apimachinery/pkg/api/meta"
1415
"k8s.io/apimachinery/pkg/runtime"
1516
"k8s.io/apimachinery/pkg/types"
1617
utilerrors "k8s.io/apimachinery/pkg/util/errors"
1718
"k8s.io/apimachinery/pkg/util/intstr"
1819
"k8s.io/client-go/dynamic"
19-
kapi "k8s.io/kubernetes/pkg/apis/core"
2020
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
2121
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
2222
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
2323
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
2424
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
2525
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
2626
"k8s.io/kubernetes/pkg/kubectl/scheme"
27-
28-
"github.com/openshift/origin/pkg/oc/util/clientcmd"
2927
)
3028

3129
var (
@@ -96,7 +94,7 @@ type ProbeOptions struct {
9694
DryRun bool
9795

9896
FlagSet func(string) bool
99-
HTTPGetAction *kapi.HTTPGetAction
97+
HTTPGetAction *corev1.HTTPGetAction
10098

10199
// Length of time before health checking is activated. In seconds.
102100
InitialDelaySeconds *int
@@ -232,8 +230,8 @@ func (o *ProbeOptions) Complete(f kcmdutil.Factory, cmd *cobra.Command, args []s
232230
if host == "localhost" {
233231
host = ""
234232
}
235-
o.HTTPGetAction = &kapi.HTTPGetAction{
236-
Scheme: kapi.URIScheme(strings.ToUpper(url.Scheme)),
233+
o.HTTPGetAction = &corev1.HTTPGetAction{
234+
Scheme: corev1.URIScheme(strings.ToUpper(url.Scheme)),
237235
Host: host,
238236
Port: intOrString(port),
239237
Path: url.Path,
@@ -313,7 +311,7 @@ func (o *ProbeOptions) Run() error {
313311
patches := CalculatePatchesExternal(infos, func(info *resource.Info) (bool, error) {
314312
transformed := false
315313
name := getObjectName(info)
316-
_, err := o.UpdatePodSpecForObject(info.Object, clientcmd.ConvertInteralPodSpecToExternal(func(spec *kapi.PodSpec) error {
314+
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *corev1.PodSpec) error {
317315
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
318316
if len(containers) == 0 {
319317
fmt.Fprintf(o.ErrOut, "warning: %s does not have any containers matching %q\n", name, o.ContainerSelector)
@@ -325,7 +323,7 @@ func (o *ProbeOptions) Run() error {
325323
o.updateContainer(container)
326324
}
327325
return nil
328-
}))
326+
})
329327
return transformed, err
330328
})
331329
if singleItemImplied && len(patches) == 0 {
@@ -367,7 +365,7 @@ func (o *ProbeOptions) Run() error {
367365

368366
}
369367

370-
func (o *ProbeOptions) updateContainer(container *kapi.Container) {
368+
func (o *ProbeOptions) updateContainer(container *corev1.Container) {
371369
if o.Remove {
372370
if o.Readiness {
373371
container.ReadinessProbe = nil
@@ -379,27 +377,27 @@ func (o *ProbeOptions) updateContainer(container *kapi.Container) {
379377
}
380378
if o.Readiness {
381379
if container.ReadinessProbe == nil {
382-
container.ReadinessProbe = &kapi.Probe{}
380+
container.ReadinessProbe = &corev1.Probe{}
383381
}
384382
o.updateProbe(container.ReadinessProbe)
385383
}
386384
if o.Liveness {
387385
if container.LivenessProbe == nil {
388-
container.LivenessProbe = &kapi.Probe{}
386+
container.LivenessProbe = &corev1.Probe{}
389387
}
390388
o.updateProbe(container.LivenessProbe)
391389
}
392390
}
393391

394392
// updateProbe updates only those fields with flags set by the user
395-
func (o *ProbeOptions) updateProbe(probe *kapi.Probe) {
393+
func (o *ProbeOptions) updateProbe(probe *corev1.Probe) {
396394
switch {
397395
case o.Command != nil:
398-
probe.Handler = kapi.Handler{Exec: &kapi.ExecAction{Command: o.Command}}
396+
probe.Handler = corev1.Handler{Exec: &corev1.ExecAction{Command: o.Command}}
399397
case o.HTTPGetAction != nil:
400-
probe.Handler = kapi.Handler{HTTPGet: o.HTTPGetAction}
398+
probe.Handler = corev1.Handler{HTTPGet: o.HTTPGetAction}
401399
case len(o.OpenTCPSocket) > 0:
402-
probe.Handler = kapi.Handler{TCPSocket: &kapi.TCPSocketAction{Port: intOrString(o.OpenTCPSocket)}}
400+
probe.Handler = corev1.Handler{TCPSocket: &corev1.TCPSocketAction{Port: intOrString(o.OpenTCPSocket)}}
403401
}
404402
if o.InitialDelaySeconds != nil {
405403
probe.InitialDelaySeconds = int32(*o.InitialDelaySeconds)

0 commit comments

Comments
 (0)