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