@@ -17,9 +17,7 @@ import (
17
17
utilerrors "k8s.io/apimachinery/pkg/util/errors"
18
18
"k8s.io/apimachinery/pkg/util/strategicpatch"
19
19
"k8s.io/client-go/dynamic"
20
- "k8s.io/kubernetes/pkg/api/legacyscheme"
21
- kapi "k8s.io/kubernetes/pkg/apis/core"
22
- kinternalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
20
+ "k8s.io/client-go/kubernetes"
23
21
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
24
22
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
25
23
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
@@ -30,9 +28,8 @@ import (
30
28
31
29
buildv1 "github.com/openshift/api/build/v1"
32
30
cmdutil "github.com/openshift/origin/pkg/cmd/util"
33
- "github.com/openshift/origin/pkg/oc/util/clientcmd "
31
+ envresolve "github.com/openshift/origin/pkg/oc/lib/env "
34
32
utilenv "github.com/openshift/origin/pkg/oc/util/env"
35
- envresolve "github.com/openshift/origin/pkg/pod/envresolve"
36
33
)
37
34
38
35
var (
@@ -108,7 +105,7 @@ type EnvOptions struct {
108
105
Encoder runtime.Encoder
109
106
Mapper meta.RESTMapper
110
107
Client dynamic.Interface
111
- KubeClient kinternalclientset .Interface
108
+ KClientSet kubernetes .Interface
112
109
Printer printers.ResourcePrinter
113
110
Namespace string
114
111
ExplicitNamespace bool
@@ -160,7 +157,7 @@ func NewCmdEnv(fullName string, f kcmdutil.Factory, streams genericclioptions.IO
160
157
return cmd
161
158
}
162
159
163
- func validateNoOverwrites (existing []kapi .EnvVar , env []kapi .EnvVar ) error {
160
+ func validateNoOverwrites (existing []corev1 .EnvVar , env []corev1 .EnvVar ) error {
164
161
for _ , e := range env {
165
162
if current , exists := findEnv (existing , e .Name ); exists && current .Value != e .Value {
166
163
return fmt .Errorf ("'%s' already has a value (%s), and --overwrite is false" , current .Name , current .Value )
@@ -184,8 +181,12 @@ func (o *EnvOptions) Complete(f kcmdutil.Factory, cmd *cobra.Command, args []str
184
181
return kcmdutil .UsageErrorf (cmd , "one or more resources must be specified as <resource> <name> or <resource>/<name>" )
185
182
}
186
183
187
- var err error
188
- o .KubeClient , err = f .ClientSet ()
184
+ config , err := f .ToRESTConfig ()
185
+ if err != nil {
186
+ return err
187
+ }
188
+
189
+ o .KClientSet , err = kubernetes .NewForConfig (config )
189
190
if err != nil {
190
191
return err
191
192
}
@@ -260,11 +261,11 @@ func (o *EnvOptions) RunEnv() error {
260
261
switch from := info .Object .(type ) {
261
262
case * corev1.Secret :
262
263
for key := range from .Data {
263
- envVar := kapi .EnvVar {
264
+ envVar := corev1 .EnvVar {
264
265
Name : keyToEnvName (key ),
265
- ValueFrom : & kapi .EnvVarSource {
266
- SecretKeyRef : & kapi .SecretKeySelector {
267
- LocalObjectReference : kapi .LocalObjectReference {
266
+ ValueFrom : & corev1 .EnvVarSource {
267
+ SecretKeyRef : & corev1 .SecretKeySelector {
268
+ LocalObjectReference : corev1 .LocalObjectReference {
268
269
Name : from .Name ,
269
270
},
270
271
Key : key ,
@@ -275,11 +276,11 @@ func (o *EnvOptions) RunEnv() error {
275
276
}
276
277
case * corev1.ConfigMap :
277
278
for key := range from .Data {
278
- envVar := kapi .EnvVar {
279
+ envVar := corev1 .EnvVar {
279
280
Name : keyToEnvName (key ),
280
- ValueFrom : & kapi .EnvVarSource {
281
- ConfigMapKeyRef : & kapi .ConfigMapKeySelector {
282
- LocalObjectReference : kapi .LocalObjectReference {
281
+ ValueFrom : & corev1 .EnvVarSource {
282
+ ConfigMapKeyRef : & corev1 .ConfigMapKeySelector {
283
+ LocalObjectReference : corev1 .LocalObjectReference {
283
284
Name : from .Name ,
284
285
},
285
286
Key : key ,
@@ -342,9 +343,9 @@ func (o *EnvOptions) RunEnv() error {
342
343
errored := []* resource.Info {}
343
344
for _ , info := range infos {
344
345
name := getObjectName (info )
345
- ok , err := o .UpdatePodSpecForObject (info .Object , clientcmd . ConvertInteralPodSpecToExternal ( func (spec * kapi .PodSpec ) error {
346
+ ok , err := o .UpdatePodSpecForObject (info .Object , func (spec * corev1 .PodSpec ) error {
346
347
resolutionErrorsEncountered := false
347
- containers , _ := selectContainers (spec .Containers , o .ContainerSelector )
348
+ containers , _ := selectContainersV1 (spec .Containers , o .ContainerSelector )
348
349
if len (containers ) == 0 {
349
350
fmt .Fprintf (o .ErrOut , "warning: %s does not have any containers matching %q\n " , name , o .ContainerSelector )
350
351
return nil
@@ -377,7 +378,7 @@ func (o *EnvOptions) RunEnv() error {
377
378
continue
378
379
}
379
380
380
- value , err := envresolve .GetEnvVarRefValue (o .KubeClient , o .Namespace , store , env .ValueFrom , info .Object , c )
381
+ value , err := envresolve .GetEnvVarRefValue (o .KClientSet , o .Namespace , store , env .ValueFrom , info .Object , c )
381
382
// Print the resolved value
382
383
if err == nil {
383
384
fmt .Fprintf (o .Out , "%s=%s\n " , env .Name , value )
@@ -408,10 +409,10 @@ func (o *EnvOptions) RunEnv() error {
408
409
return errors .New ("failed to retrieve valueFrom references" )
409
410
}
410
411
return nil
411
- }))
412
+ })
412
413
if ! ok {
413
414
// This is a fallback function for objects that don't have pod spec.
414
- ok , err = updateObjectEnvironment (info .Object , func (vars * []kapi .EnvVar ) error {
415
+ ok , err = updateObjectEnvironment (info .Object , func (vars * []corev1 .EnvVar ) error {
415
416
if vars == nil {
416
417
return fmt .Errorf ("no environment variables provided" )
417
418
}
@@ -499,40 +500,21 @@ updates:
499
500
}
500
501
501
502
// UpdateObjectEnvironment update the environment variables in object specification.
502
- func updateObjectEnvironment (obj runtime.Object , fn func (* []kapi .EnvVar ) error ) (bool , error ) {
503
+ func updateObjectEnvironment (obj runtime.Object , fn func (* []corev1 .EnvVar ) error ) (bool , error ) {
503
504
switch t := obj .(type ) {
504
505
case * buildv1.BuildConfig :
505
506
if t .Spec .Strategy .CustomStrategy != nil {
506
- return true , convertInternalEnvVarToExternal ( fn ) (& t .Spec .Strategy .CustomStrategy .Env )
507
+ return true , fn (& t .Spec .Strategy .CustomStrategy .Env )
507
508
}
508
509
if t .Spec .Strategy .SourceStrategy != nil {
509
- return true , convertInternalEnvVarToExternal ( fn ) (& t .Spec .Strategy .SourceStrategy .Env )
510
+ return true , fn (& t .Spec .Strategy .SourceStrategy .Env )
510
511
}
511
512
if t .Spec .Strategy .DockerStrategy != nil {
512
- return true , convertInternalEnvVarToExternal ( fn ) (& t .Spec .Strategy .DockerStrategy .Env )
513
+ return true , fn (& t .Spec .Strategy .DockerStrategy .Env )
513
514
}
514
515
if t .Spec .Strategy .JenkinsPipelineStrategy != nil {
515
- return true , convertInternalEnvVarToExternal ( fn ) (& t .Spec .Strategy .JenkinsPipelineStrategy .Env )
516
+ return true , fn (& t .Spec .Strategy .JenkinsPipelineStrategy .Env )
516
517
}
517
518
}
518
519
return false , fmt .Errorf ("object does not contain any environment variables %T" , obj )
519
520
}
520
-
521
- // TODO: this needs to die when switching to external versions
522
- func convertInternalEnvVarToExternal (inFn func (* []kapi.EnvVar ) error ) func (* []corev1.EnvVar ) error {
523
- return func (specToMutate * []corev1.EnvVar ) error {
524
- externalEnvVar := & []kapi.EnvVar {}
525
- if err := legacyscheme .Scheme .Convert (specToMutate , externalEnvVar , nil ); err != nil {
526
- return err
527
- }
528
- if err := inFn (externalEnvVar ); err != nil {
529
- return err
530
- }
531
- internalEnvVar := & []corev1.EnvVar {}
532
- if err := legacyscheme .Scheme .Convert (externalEnvVar , internalEnvVar , nil ); err != nil {
533
- return err
534
- }
535
- * specToMutate = * internalEnvVar
536
- return nil
537
- }
538
- }
0 commit comments