Skip to content

Commit 51a314b

Browse files
authoredApr 16, 2018
Merge pull request #19348 from deads2k/cli-30-set
own up to the attrocities commited in set
2 parents df81eca + 6ef2c70 commit 51a314b

File tree

4 files changed

+126
-52
lines changed

4 files changed

+126
-52
lines changed
 

Diff for: ‎pkg/oc/cli/cmd/set/set.go

-3
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ func NewCmdImage(fullName string, f *clientcmd.Factory, out, err io.Writer) *cob
9696
cmd.Long = setImageLong
9797
cmd.Example = fmt.Sprintf(setImageExample, fullName)
9898

99-
flags := cmd.Flags()
100-
f.ImageResolutionOptions().Bind(flags)
101-
10299
return cmd
103100
}
104101

Diff for: ‎pkg/oc/cli/util/clientcmd/factory_client_access.go

+13-48
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ import (
2525
kapi "k8s.io/kubernetes/pkg/apis/core"
2626
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
2727
"k8s.io/kubernetes/pkg/kubectl"
28+
"k8s.io/kubernetes/pkg/kubectl/cmd/set"
2829
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
2930
"k8s.io/kubernetes/pkg/kubectl/resource"
3031
"k8s.io/kubernetes/pkg/kubectl/util/transport"
3132

3233
appsapiv1 "github.com/openshift/api/apps/v1"
3334
appsapi "github.com/openshift/origin/pkg/apps/apis/apps"
34-
imageclient "github.com/openshift/origin/pkg/image/generated/internalclientset"
35+
imageapi "github.com/openshift/origin/pkg/image/apis/image"
3536
deploymentcmd "github.com/openshift/origin/pkg/oc/cli/deploymentconfigs"
3637
routegen "github.com/openshift/origin/pkg/route/generator"
3738
)
@@ -40,30 +41,27 @@ type ring0Factory struct {
4041
*OpenshiftCLIClientBuilder
4142

4243
clientConfig kclientcmd.ClientConfig
43-
imageResolutionOptions FlagBinder
4444
kubeClientAccessFactory kcmdutil.ClientAccessFactory
4545
}
4646

4747
type ClientAccessFactory interface {
4848
kcmdutil.ClientAccessFactory
4949
CLIClientBuilder
50-
51-
ImageResolutionOptions() FlagBinder
5250
}
5351

5452
func NewClientAccessFactory(optionalClientConfig kclientcmd.ClientConfig) ClientAccessFactory {
5553
// if we call this factory construction method, we want the openshift style config loading
5654
kclientcmd.UseOpenShiftKubeConfigValues = true
5755
kclientcmd.ErrEmptyConfig = kclientcmd.NewErrConfigurationMissing()
56+
set.ParseDockerImageReferenceToStringFunc = ParseDockerImageReferenceToStringFunc
5857

5958
flags := pflag.NewFlagSet("", pflag.ContinueOnError)
6059
clientConfig := optionalClientConfig
6160
if optionalClientConfig == nil {
6261
clientConfig = kcmdutil.DefaultClientConfig(flags)
6362
}
6463
factory := &ring0Factory{
65-
clientConfig: clientConfig,
66-
imageResolutionOptions: &imageResolutionOptions{},
64+
clientConfig: clientConfig,
6765
}
6866
factory.kubeClientAccessFactory = kcmdutil.NewClientAccessFactoryFromDiscovery(
6967
flags,
@@ -276,49 +274,8 @@ func (f *ring0Factory) Pauser(info *resource.Info) ([]byte, error) {
276274
}
277275
}
278276

279-
// ImageResolutionOptions provides the "--source" flag to commands that deal with images
280-
// and need to provide extra capabilities for working with ImageStreamTags and
281-
// ImageStreamImages.
282-
type imageResolutionOptions struct {
283-
bound bool
284-
Source string
285-
}
286-
287-
func (o *imageResolutionOptions) Bound() bool {
288-
return o.bound
289-
}
290-
291-
func (o *imageResolutionOptions) Bind(f *pflag.FlagSet) {
292-
if o.Bound() {
293-
return
294-
}
295-
f.StringVarP(&o.Source, "source", "", "docker", "The image source type; valid types are 'imagestreamtag', 'istag', 'imagestreamimage', 'isimage', and 'docker'")
296-
o.bound = true
297-
}
298-
299-
func (f *ring0Factory) ImageResolutionOptions() FlagBinder {
300-
return f.imageResolutionOptions
301-
}
302-
303277
func (f *ring0Factory) ResolveImage(image string) (string, error) {
304-
options := f.imageResolutionOptions.(*imageResolutionOptions)
305-
if isDockerImageSource(options.Source) {
306-
return f.kubeClientAccessFactory.ResolveImage(image)
307-
}
308-
config, err := f.kubeClientAccessFactory.ClientConfig()
309-
if err != nil {
310-
return "", err
311-
}
312-
imageClient, err := imageclient.NewForConfig(config)
313-
if err != nil {
314-
return "", err
315-
}
316-
namespace, _, err := f.DefaultNamespace()
317-
if err != nil {
318-
return "", err
319-
}
320-
321-
return resolveImagePullSpec(imageClient.Image(), options.Source, image, namespace)
278+
return f.kubeClientAccessFactory.ResolveImage(image)
322279
}
323280

324281
func (f *ring0Factory) Resumer(info *resource.Info) ([]byte, error) {
@@ -416,3 +373,11 @@ func getProtocols(spec kapi.PodSpec) map[string]string {
416373
}
417374
return result
418375
}
376+
377+
func ParseDockerImageReferenceToStringFunc(spec string) (string, error) {
378+
ret, err := imageapi.ParseDockerImageReference(spec)
379+
if err != nil {
380+
return "", err
381+
}
382+
return ret.String(), nil
383+
}

Diff for: ‎vendor/k8s.io/kubernetes/pkg/kubectl/cmd/set/patch_setimage.go

+107
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: ‎vendor/k8s.io/kubernetes/pkg/kubectl/cmd/set/set_image.go

+6-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.