@@ -24,13 +24,14 @@ import (
24
24
kapi "k8s.io/kubernetes/pkg/apis/core"
25
25
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
26
26
"k8s.io/kubernetes/pkg/kubectl"
27
+ "k8s.io/kubernetes/pkg/kubectl/cmd/set"
27
28
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
28
29
"k8s.io/kubernetes/pkg/kubectl/resource"
29
30
"k8s.io/kubernetes/pkg/kubectl/util/transport"
30
31
31
32
appsapiv1 "github.com/openshift/api/apps/v1"
32
33
appsapi "github.com/openshift/origin/pkg/apps/apis/apps"
33
- imageclient "github.com/openshift/origin/pkg/image/generated/internalclientset "
34
+ imageapi "github.com/openshift/origin/pkg/image/apis/image "
34
35
deploymentcmd "github.com/openshift/origin/pkg/oc/cli/deploymentconfigs"
35
36
routegen "github.com/openshift/origin/pkg/route/generator"
36
37
)
@@ -39,7 +40,6 @@ type ring0Factory struct {
39
40
* OpenshiftCLIClientBuilder
40
41
41
42
clientConfig kclientcmd.ClientConfig
42
- imageResolutionOptions FlagBinder
43
43
kubeClientAccessFactory kcmdutil.ClientAccessFactory
44
44
}
45
45
@@ -48,22 +48,21 @@ type ClientAccessFactory interface {
48
48
CLIClientBuilder
49
49
50
50
OpenShiftClientConfig () kclientcmd.ClientConfig
51
- ImageResolutionOptions () FlagBinder
52
51
}
53
52
54
53
func NewClientAccessFactory (optionalClientConfig kclientcmd.ClientConfig ) ClientAccessFactory {
55
54
// if we call this factory construction method, we want the openshift style config loading
56
55
kclientcmd .UseOpenShiftKubeConfigValues = true
57
56
kclientcmd .ErrEmptyConfig = kclientcmd .NewErrConfigurationMissing ()
57
+ set .ParseDockerImageReferenceToStringFunc = ParseDockerImageReferenceToStringFunc
58
58
59
59
flags := pflag .NewFlagSet ("" , pflag .ContinueOnError )
60
60
clientConfig := optionalClientConfig
61
61
if optionalClientConfig == nil {
62
62
clientConfig = kcmdutil .DefaultClientConfig (flags )
63
63
}
64
64
factory := & ring0Factory {
65
- clientConfig : clientConfig ,
66
- imageResolutionOptions : & imageResolutionOptions {},
65
+ clientConfig : clientConfig ,
67
66
}
68
67
factory .kubeClientAccessFactory = kcmdutil .NewClientAccessFactoryFromDiscovery (
69
68
flags ,
@@ -276,49 +275,8 @@ func (f *ring0Factory) Pauser(info *resource.Info) ([]byte, error) {
276
275
}
277
276
}
278
277
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
-
303
278
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 .OpenShiftClientConfig ().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 )
279
+ return f .kubeClientAccessFactory .ResolveImage (image )
322
280
}
323
281
324
282
func (f * ring0Factory ) Resumer (info * resource.Info ) ([]byte , error ) {
@@ -416,3 +374,11 @@ func getProtocols(spec kapi.PodSpec) map[string]string {
416
374
}
417
375
return result
418
376
}
377
+
378
+ func ParseDockerImageReferenceToStringFunc (spec string ) (string , error ) {
379
+ ret , err := imageapi .ParseDockerImageReference (spec )
380
+ if err != nil {
381
+ return "" , err
382
+ }
383
+ return ret .String (), nil
384
+ }
0 commit comments