Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
d0366861
Unverified
Commit
d0366861
authored
May 16, 2017
by
juanvallejo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix --local flag for `kubectl set` commands
parent
0cb3cb25
Hide whitespace changes
Inline
Side-by-side
Showing
42 changed files
with
290 additions
and
148 deletions
+290
-148
test-cmd-util.sh
hack/make-rules/test-cmd-util.sh
+18
-0
annotate.go
pkg/kubectl/cmd/annotate.go
+19
-6
apply.go
pkg/kubectl/cmd/apply.go
+7
-3
apply_set_last_applied.go
pkg/kubectl/cmd/apply_set_last_applied.go
+7
-3
apply_view_last_applied.go
pkg/kubectl/cmd/apply_view_last_applied.go
+3
-4
attach.go
pkg/kubectl/cmd/attach.go
+1
-3
autoscale.go
pkg/kubectl/cmd/autoscale.go
+3
-3
certificates.go
pkg/kubectl/cmd/certificates.go
+2
-2
clusterinfo.go
pkg/kubectl/cmd/clusterinfo.go
+1
-2
cmd_test.go
pkg/kubectl/cmd/cmd_test.go
+8
-8
convert.go
pkg/kubectl/cmd/convert.go
+3
-10
create.go
pkg/kubectl/cmd/create.go
+9
-4
create_role.go
pkg/kubectl/cmd/create_role.go
+1
-1
delete.go
pkg/kubectl/cmd/delete.go
+8
-3
describe.go
pkg/kubectl/cmd/describe.go
+3
-2
drain.go
pkg/kubectl/cmd/drain.go
+1
-1
expose.go
pkg/kubectl/cmd/expose.go
+3
-3
get.go
pkg/kubectl/cmd/get.go
+13
-7
label.go
pkg/kubectl/cmd/label.go
+15
-4
logs.go
pkg/kubectl/cmd/logs.go
+4
-9
patch.go
pkg/kubectl/cmd/patch.go
+12
-2
replace.go
pkg/kubectl/cmd/replace.go
+14
-3
rollingupdate.go
pkg/kubectl/cmd/rollingupdate.go
+4
-4
rollout_history.go
pkg/kubectl/cmd/rollout/rollout_history.go
+1
-3
rollout_pause.go
pkg/kubectl/cmd/rollout/rollout_pause.go
+1
-1
rollout_resume.go
pkg/kubectl/cmd/rollout/rollout_resume.go
+1
-1
rollout_status.go
pkg/kubectl/cmd/rollout/rollout_status.go
+1
-3
rollout_undo.go
pkg/kubectl/cmd/rollout/rollout_undo.go
+1
-1
run.go
pkg/kubectl/cmd/run.go
+3
-4
scale.go
pkg/kubectl/cmd/scale.go
+2
-2
set_image.go
pkg/kubectl/cmd/set/set_image.go
+4
-4
set_resources.go
pkg/kubectl/cmd/set/set_resources.go
+4
-3
set_selector.go
pkg/kubectl/cmd/set/set_selector.go
+8
-6
set_subject.go
pkg/kubectl/cmd/set/set_subject.go
+3
-2
stop.go
pkg/kubectl/cmd/stop.go
+2
-2
taint.go
pkg/kubectl/cmd/taint.go
+2
-3
BUILD
pkg/kubectl/cmd/testing/BUILD
+1
-0
fake.go
pkg/kubectl/cmd/testing/fake.go
+36
-9
editoptions.go
pkg/kubectl/cmd/util/editor/editoptions.go
+5
-1
factory.go
pkg/kubectl/cmd/util/factory.go
+6
-4
factory_builder.go
pkg/kubectl/cmd/util/factory_builder.go
+48
-10
printing.go
pkg/kubectl/cmd/util/printing.go
+2
-2
No files found.
hack/make-rules/test-cmd-util.sh
View file @
d0366861
...
...
@@ -1848,6 +1848,24 @@ run_recursive_resources_tests() {
kube::test::get_object_assert pods
"{{range.items}}{{
${
labels_field
}
.status}}:{{end}}"
'replaced:replaced:'
kube::test::if_has_string
"
${
output_message
}
"
'error validating data: kind not set'
### Convert deployment YAML file locally without affecting the live deployment.
# Pre-condition: no deployments exist
kube::test::get_object_assert deployment
"{{range.items}}{{
$id_field
}}:{{end}}"
''
# Command
# Create a deployment (revision 1)
kubectl create
-f
hack/testdata/deployment-revision1.yaml
"
${
kube_flags
[@]
}
"
kube::test::get_object_assert deployment
"{{range.items}}{{
$id_field
}}:{{end}}"
'nginx:'
kube::test::get_object_assert deployment
"{{range.items}}{{
$deployment_image_field
}}:{{end}}"
"
${
IMAGE_DEPLOYMENT_R1
}
:"
# Command
output_message
=
$(
kubectl convert
--local
-f
hack/testdata/deployment-revision1.yaml
--output-version
=
apps/v1beta1
-o
go-template
=
'{{ .apiVersion }}'
"
${
kube_flags
[@]
}
"
)
echo
$output_message
# Post-condition: apiVersion is still extensions/v1beta1 in the live deployment, but command output is the new value
kube::test::get_object_assert
'deployment nginx'
"{{ .apiVersion }}"
'extensions/v1beta1'
kube::test::if_has_string
"
${
output_message
}
"
"apps/v1beta1"
# Clean up
kubectl delete deployment nginx
"
${
kube_flags
[@]
}
"
## Convert multiple busybox PODs recursively from directory of YAML files
# Pre-condition: busybox0 & busybox1 PODs exist
kube::test::get_object_assert pods
"{{range.items}}{{
$id_field
}}:{{end}}"
'busybox0:busybox1:'
...
...
pkg/kubectl/cmd/annotate.go
View file @
d0366861
...
...
@@ -27,7 +27,6 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/json"
...
...
@@ -186,11 +185,12 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
changeCause
:=
f
.
Command
(
cmd
,
false
)
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
(
)
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
!
o
.
local
)
if
err
!=
nil
{
return
err
}
b
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
b
:=
builder
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
...
...
@@ -223,10 +223,13 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
}
var
outputObj
runtime
.
Object
obj
,
err
:=
cmdutil
.
MaybeConvertObject
(
info
.
Object
,
info
.
Mapping
.
GroupVersionKind
.
GroupVersion
(),
info
.
Mapping
)
var
obj
runtime
.
Object
obj
,
err
=
cmdutil
.
MaybeConvertObject
(
info
.
Object
,
info
.
Mapping
.
GroupVersionKind
.
GroupVersion
(),
info
.
Mapping
)
if
err
!=
nil
{
return
err
}
if
o
.
dryrun
||
o
.
local
{
if
err
:=
o
.
updateAnnotations
(
obj
);
err
!=
nil
{
return
err
...
...
@@ -271,8 +274,18 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
return
err
}
}
if
o
.
outputFormat
!=
""
{
return
f
.
PrintObject
(
cmd
,
mapper
,
outputObj
,
o
.
out
)
var
mapper
meta
.
RESTMapper
if
o
.
local
{
mapper
,
_
=
f
.
Object
()
}
else
{
mapper
,
_
,
err
=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
err
}
}
if
len
(
o
.
outputFormat
)
>
0
{
return
f
.
PrintObject
(
cmd
,
o
.
local
,
mapper
,
outputObj
,
o
.
out
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
o
.
out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
o
.
dryrun
,
"annotated"
)
return
nil
...
...
pkg/kubectl/cmd/apply.go
View file @
d0366861
...
...
@@ -29,7 +29,6 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
...
...
@@ -193,7 +192,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
return
err
}
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
mapper
,
_
,
err
:=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
err
}
...
...
@@ -205,7 +204,12 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
}
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
builder
.
Schema
(
schema
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
pkg/kubectl/cmd/apply_set_last_applied.go
View file @
d0366861
...
...
@@ -27,7 +27,6 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
apijson
"k8s.io/apimachinery/pkg/util/json"
...
...
@@ -127,13 +126,18 @@ func (o *SetLastAppliedOptions) Complete(f cmdutil.Factory, cmd *cobra.Command)
}
func
(
o
*
SetLastAppliedOptions
)
Validate
(
f
cmdutil
.
Factory
,
cmd
*
cobra
.
Command
)
error
{
r
:=
resource
.
NewBuilder
(
o
.
Mapper
,
f
.
CategoryExpander
(),
o
.
Typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
builder
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
.
FilenameParam
(
o
.
EnforceNamespace
,
&
o
.
FilenameOptions
)
.
Latest
()
.
Flatten
()
.
Do
()
err
:
=
r
.
Err
()
err
=
r
.
Err
()
if
err
!=
nil
{
return
err
}
...
...
pkg/kubectl/cmd/apply_view_last_applied.go
View file @
d0366861
...
...
@@ -24,7 +24,6 @@ import (
"github.com/ghodss/yaml"
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
@@ -83,17 +82,17 @@ func NewCmdApplyViewLastApplied(f cmdutil.Factory, out, err io.Writer) *cobra.Co
}
func
(
o
*
ViewLastAppliedOptions
)
Complete
(
f
cmdutil
.
Factory
,
args
[]
string
)
error
{
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
cmdNamespace
,
enforceNamespace
,
err
:=
f
.
DefaultNamespace
()
if
err
!=
nil
{
return
err
}
cmdNamespace
,
enforceNamespace
,
err
:=
f
.
DefaultNamespace
(
)
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
r
:=
builder
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
ResourceTypeOrNameArgs
(
enforceNamespace
,
args
...
)
.
...
...
pkg/kubectl/cmd/attach.go
View file @
d0366861
...
...
@@ -34,7 +34,6 @@ import (
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/util/i18n"
)
...
...
@@ -144,8 +143,7 @@ func (p *AttachOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn [
return
cmdutil
.
UsageError
(
cmd
,
err
.
Error
())
}
mapper
,
typer
:=
f
.
Object
()
builder
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
))
.
builder
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
switch
len
(
argsIn
)
{
...
...
pkg/kubectl/cmd/autoscale.go
View file @
d0366861
...
...
@@ -91,7 +91,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
}
mapper
,
typer
:=
f
.
Object
()
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
...
...
@@ -162,7 +162,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
object
=
hpa
.
Object
}
if
cmdutil
.
GetDryRunFlag
(
cmd
)
{
return
f
.
PrintObject
(
cmd
,
mapper
,
object
,
out
)
return
f
.
PrintObject
(
cmd
,
false
,
mapper
,
object
,
out
)
}
if
err
:=
kubectl
.
CreateOrUpdateAnnotation
(
cmdutil
.
GetFlagBool
(
cmd
,
cmdutil
.
ApplyAnnotationsFlag
),
hpa
,
f
.
JSONEncoder
());
err
!=
nil
{
...
...
@@ -176,7 +176,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
count
++
if
len
(
cmdutil
.
GetFlagString
(
cmd
,
"output"
))
>
0
{
return
f
.
PrintObject
(
cmd
,
mapper
,
object
,
out
)
return
f
.
PrintObject
(
cmd
,
false
,
mapper
,
object
,
out
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
cmdutil
.
GetDryRunFlag
(
cmd
),
"autoscaled"
)
...
...
pkg/kubectl/cmd/certificates.go
View file @
d0366861
...
...
@@ -162,12 +162,12 @@ func (options *CertificateOptions) RunCertificateDeny(f cmdutil.Factory, out io.
func
(
options
*
CertificateOptions
)
modifyCertificateCondition
(
f
cmdutil
.
Factory
,
out
io
.
Writer
,
modify
func
(
csr
*
certificates
.
CertificateSigningRequest
)
(
*
certificates
.
CertificateSigningRequest
,
string
))
error
{
var
found
int
mapper
,
typer
:=
f
.
Object
()
mapper
,
_
:=
f
.
Object
()
c
,
err
:=
f
.
ClientSet
()
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
ContinueOnError
()
.
FilenameParam
(
false
,
&
options
.
FilenameOptions
)
.
ResourceNames
(
"certificatesigningrequest"
,
options
.
csrNames
...
)
.
...
...
pkg/kubectl/cmd/clusterinfo.go
View file @
d0366861
...
...
@@ -65,14 +65,13 @@ func RunClusterInfo(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) error
}
printService
(
out
,
"Kubernetes master"
,
client
.
Host
)
mapper
,
typer
:=
f
.
Object
()
cmdNamespace
:=
cmdutil
.
GetFlagString
(
cmd
,
"namespace"
)
if
cmdNamespace
==
""
{
cmdNamespace
=
metav1
.
NamespaceSystem
}
// TODO use generalized labels once they are implemented (#341)
b
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
b
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
SelectorParam
(
"kubernetes.io/cluster-service=true"
)
.
ResourceTypeOrNameArgs
(
false
,
[]
string
{
"services"
}
...
)
.
...
...
pkg/kubectl/cmd/cmd_test.go
View file @
d0366861
...
...
@@ -197,7 +197,7 @@ func Example_printReplicationControllerWithNamespace() {
},
}
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
ctrl
,
os
.
Stdout
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
ctrl
,
os
.
Stdout
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
@@ -252,7 +252,7 @@ func Example_printMultiContainersReplicationControllerWithWide() {
},
}
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
ctrl
,
os
.
Stdout
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
ctrl
,
os
.
Stdout
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
@@ -306,7 +306,7 @@ func Example_printReplicationController() {
},
}
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
ctrl
,
os
.
Stdout
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
ctrl
,
os
.
Stdout
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
@@ -349,7 +349,7 @@ func Example_printPodWithWideFormat() {
},
}
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
pod
,
os
.
Stdout
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
pod
,
os
.
Stdout
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
@@ -395,7 +395,7 @@ func Example_printPodWithShowLabels() {
},
}
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
pod
,
os
.
Stdout
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
pod
,
os
.
Stdout
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
@@ -519,7 +519,7 @@ func Example_printPodHideTerminated() {
}
for
_
,
pod
:=
range
filteredPodList
{
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
pod
,
os
.
Stdout
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
pod
,
os
.
Stdout
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
@@ -547,7 +547,7 @@ func Example_printPodShowAll() {
cmd
:=
NewCmdRun
(
f
,
os
.
Stdin
,
os
.
Stdout
,
os
.
Stderr
)
podList
:=
newAllPhasePodList
()
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
podList
,
os
.
Stdout
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
podList
,
os
.
Stdout
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
@@ -622,7 +622,7 @@ func Example_printServiceWithNamespacesAndLabels() {
ld
:=
strings
.
NewLineDelimiter
(
os
.
Stdout
,
"|"
)
defer
ld
.
Flush
()
mapper
,
_
:=
f
.
Object
()
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
svc
,
ld
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
svc
,
ld
)
if
err
!=
nil
{
fmt
.
Printf
(
"Unexpected error: %v"
,
err
)
}
...
...
pkg/kubectl/cmd/convert.go
View file @
d0366861
...
...
@@ -19,7 +19,6 @@ package cmd
import
(
"fmt"
"io"
"os"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
...
...
@@ -127,14 +126,8 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C
}
// build the builder
mapper
,
typer
:=
f
.
Object
()
clientMapper
:=
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
)
if
o
.
local
{
fmt
.
Fprintln
(
os
.
Stderr
,
"running in local mode..."
)
o
.
builder
=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
DisabledClientForMapping
{
ClientMapper
:
clientMapper
},
f
.
Decoder
(
true
))
}
else
{
o
.
builder
=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
clientMapper
,
f
.
Decoder
(
true
))
o
.
builder
=
f
.
NewBuilder
(
!
o
.
local
)
if
!
o
.
local
{
schema
,
err
:=
f
.
Validator
(
cmdutil
.
GetFlagBool
(
cmd
,
"validate"
),
cmdutil
.
GetFlagString
(
cmd
,
"schema-cache-dir"
))
if
err
!=
nil
{
return
err
...
...
@@ -164,7 +157,7 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
}
o
.
encoder
=
f
.
JSONEncoder
()
o
.
printer
,
err
=
f
.
PrinterForCommand
(
cmd
,
nil
,
printers
.
PrintOptions
{})
o
.
printer
,
err
=
f
.
PrinterForCommand
(
cmd
,
o
.
local
,
nil
,
printers
.
PrintOptions
{})
if
err
!=
nil
{
return
err
}
...
...
pkg/kubectl/cmd/create.go
View file @
d0366861
...
...
@@ -23,7 +23,6 @@ import (
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
@@ -125,11 +124,17 @@ func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opt
return
err
}
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
mapper
,
_
,
err
:=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
builder
.
Schema
(
schema
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -290,5 +295,5 @@ func RunCreateSubcommand(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, o
return
nil
}
return
f
.
PrintObject
(
cmd
,
mapper
,
obj
,
out
)
return
f
.
PrintObject
(
cmd
,
false
,
mapper
,
obj
,
out
)
}
pkg/kubectl/cmd/create_role.go
View file @
d0366861
...
...
@@ -199,7 +199,7 @@ func (c *CreateRoleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
}
c
.
PrintObject
=
func
(
obj
runtime
.
Object
)
error
{
return
f
.
PrintObject
(
cmd
,
c
.
Mapper
,
obj
,
c
.
Out
)
return
f
.
PrintObject
(
cmd
,
false
,
c
.
Mapper
,
obj
,
c
.
Out
)
}
clientSet
,
err
:=
f
.
ClientSet
()
...
...
pkg/kubectl/cmd/delete.go
View file @
d0366861
...
...
@@ -26,7 +26,6 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
@@ -170,12 +169,18 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args
}
// Set up client based support.
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
mapper
,
_
,
err
:=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
err
}
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
o
.
Mapper
=
mapper
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
r
:=
builder
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
...
...
pkg/kubectl/cmd/describe.go
View file @
d0366861
...
...
@@ -115,11 +115,12 @@ func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, a
return
cmdutil
.
UsageError
(
cmd
,
"Required resource not specified."
)
}
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
(
)
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
r
:=
builder
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
AllNamespaces
(
allNamespaces
)
.
FilenameParam
(
enforceNamespace
,
options
)
.
...
...
pkg/kubectl/cmd/drain.go
View file @
d0366861
...
...
@@ -215,7 +215,7 @@ func (o *DrainOptions) SetupDrain(cmd *cobra.Command, args []string) error {
return
err
}
r
:=
o
.
Factory
.
NewBuilder
()
.
r
:=
o
.
Factory
.
NewBuilder
(
true
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
ResourceNames
(
"node"
,
args
[
0
])
.
Do
()
...
...
pkg/kubectl/cmd/expose.go
View file @
d0366861
...
...
@@ -127,7 +127,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
}
mapper
,
typer
:=
f
.
Object
()
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
...
...
@@ -255,7 +255,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
info
.
Refresh
(
object
,
true
)
if
cmdutil
.
GetDryRunFlag
(
cmd
)
{
if
len
(
cmdutil
.
GetFlagString
(
cmd
,
"output"
))
>
0
{
return
f
.
PrintObject
(
cmd
,
mapper
,
object
,
out
)
return
f
.
PrintObject
(
cmd
,
false
,
mapper
,
object
,
out
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
true
,
"exposed"
)
return
nil
...
...
@@ -271,7 +271,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
}
if
len
(
cmdutil
.
GetFlagString
(
cmd
,
"output"
))
>
0
{
return
f
.
PrintObject
(
cmd
,
mapper
,
object
,
out
)
return
f
.
PrintObject
(
cmd
,
false
,
mapper
,
object
,
out
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
false
,
"exposed"
)
...
...
pkg/kubectl/cmd/get.go
View file @
d0366861
...
...
@@ -168,10 +168,11 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
selector
:=
cmdutil
.
GetFlagString
(
cmd
,
"selector"
)
allNamespaces
:=
cmdutil
.
GetFlagBool
(
cmd
,
"all-namespaces"
)
showKind
:=
cmdutil
.
GetFlagBool
(
cmd
,
"show-kind"
)
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
(
)
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
cmdNamespace
,
enforceNamespace
,
err
:=
f
.
DefaultNamespace
()
if
err
!=
nil
{
return
err
...
...
@@ -201,7 +202,12 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
// handle watch separately since we cannot watch multiple resource types
isWatch
,
isWatchOnly
:=
cmdutil
.
GetFlagBool
(
cmd
,
"watch"
),
cmdutil
.
GetFlagBool
(
cmd
,
"watch-only"
)
if
isWatch
||
isWatchOnly
{
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
builder
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
AllNamespaces
(
allNamespaces
)
.
FilenameParam
(
enforceNamespace
,
&
options
.
FilenameOptions
)
.
SelectorParam
(
selector
)
.
...
...
@@ -210,7 +216,7 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
SingleResourceType
()
.
Latest
()
.
Do
()
err
:
=
r
.
Err
()
err
=
r
.
Err
()
if
err
!=
nil
{
return
err
}
...
...
@@ -226,7 +232,7 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
}
info
:=
infos
[
0
]
mapping
:=
info
.
ResourceMapping
()
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
nil
,
mapping
,
allNamespaces
)
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
false
,
nil
,
mapping
,
allNamespaces
)
if
err
!=
nil
{
return
err
}
...
...
@@ -291,7 +297,7 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
return
nil
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
r
:=
builder
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
AllNamespaces
(
allNamespaces
)
.
FilenameParam
(
enforceNamespace
,
&
options
.
FilenameOptions
)
.
SelectorParam
(
selector
)
.
...
...
@@ -306,7 +312,7 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
return
err
}
printer
,
err
:=
f
.
PrinterForCommand
(
cmd
,
nil
,
printers
.
PrintOptions
{})
printer
,
err
:=
f
.
PrinterForCommand
(
cmd
,
false
,
nil
,
printers
.
PrintOptions
{})
if
err
!=
nil
{
return
err
}
...
...
@@ -455,7 +461,7 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
outputOpts
,
_
=
outputOptsForMappingFromOpenAPI
(
f
,
cmdutil
.
GetOpenAPICacheDir
(
cmd
),
mapping
)
}
printer
,
err
=
f
.
PrinterForMapping
(
cmd
,
outputOpts
,
mapping
,
allNamespaces
)
printer
,
err
=
f
.
PrinterForMapping
(
cmd
,
false
,
outputOpts
,
mapping
,
allNamespaces
)
if
err
!=
nil
{
if
!
errs
.
Has
(
err
.
Error
())
{
errs
.
Insert
(
err
.
Error
())
...
...
pkg/kubectl/cmd/label.go
View file @
d0366861
...
...
@@ -28,7 +28,6 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
...
...
@@ -181,11 +180,12 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
changeCause
:=
f
.
Command
(
cmd
,
false
)
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
(
)
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
!
o
.
local
)
if
err
!=
nil
{
return
err
}
b
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
b
:=
builder
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
...
...
@@ -220,6 +220,7 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
if
err
!=
nil
{
return
err
}
dataChangeMsg
=
"labeled"
outputObj
=
info
.
Object
}
else
{
obj
:=
info
.
Object
...
...
@@ -275,8 +276,18 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
return
err
}
}
var
mapper
meta
.
RESTMapper
if
o
.
local
{
mapper
,
_
=
f
.
Object
()
}
else
{
mapper
,
_
,
err
=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
err
}
}
if
o
.
outputFormat
!=
""
{
return
f
.
PrintObject
(
cmd
,
mapper
,
outputObj
,
o
.
out
)
return
f
.
PrintObject
(
cmd
,
o
.
local
,
mapper
,
outputObj
,
o
.
out
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
o
.
out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
o
.
dryrun
,
dataChangeMsg
)
return
nil
...
...
pkg/kubectl/cmd/logs.go
View file @
d0366861
...
...
@@ -32,7 +32,6 @@ import (
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/util"
"k8s.io/kubernetes/pkg/util/i18n"
)
...
...
@@ -75,10 +74,9 @@ type LogsOptions struct {
ResourceArg
string
Options
runtime
.
Object
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
ClientMapper
resource
.
ClientMapper
Decoder
runtime
.
Decoder
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
Decoder
runtime
.
Decoder
Object
runtime
.
Object
GetPodTimeout
time
.
Duration
...
...
@@ -181,7 +179,6 @@ func (o *LogsOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Comm
}
o
.
Options
=
logOptions
o
.
LogsForObject
=
f
.
LogsForObject
o
.
ClientMapper
=
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
)
o
.
Out
=
out
if
len
(
selector
)
!=
0
{
...
...
@@ -196,10 +193,8 @@ func (o *LogsOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Comm
}
}
mapper
,
typer
:=
f
.
Object
()
decoder
:=
f
.
Decoder
(
true
)
if
o
.
Object
==
nil
{
builder
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
o
.
ClientMapper
,
decoder
)
.
builder
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
.
SingleResourceType
()
if
o
.
ResourceArg
!=
""
{
...
...
pkg/kubectl/cmd/patch.go
View file @
d0366861
...
...
@@ -149,11 +149,14 @@ func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin
return
fmt
.
Errorf
(
"unable to parse %q: %v"
,
patch
,
err
)
}
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
// TODO: fix --local to work with thirdpartyresources without making use of the discovery client.
// https://github.com/kubernetes/kubernetes/issues/46722
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
r
:=
builder
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
options
.
FilenameOptions
)
.
...
...
@@ -220,6 +223,10 @@ func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin
if
len
(
options
.
OutputFormat
)
>
0
&&
options
.
OutputFormat
!=
"name"
{
return
cmdutil
.
PrintResourceInfoForCommand
(
cmd
,
info
,
f
,
out
)
}
mapper
,
_
,
err
:=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
err
}
cmdutil
.
PrintSuccess
(
mapper
,
options
.
OutputFormat
==
"name"
,
out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
false
,
dataChangedMsg
)
return
nil
}
...
...
@@ -230,14 +237,17 @@ func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin
if
err
!=
nil
{
return
err
}
originalPatchedObjJS
,
err
:=
getPatchedJSON
(
patchType
,
originalObjJS
,
patchBytes
,
mapping
.
GroupVersionKind
,
api
.
Scheme
)
if
err
!=
nil
{
return
err
}
targetObj
,
err
:=
runtime
.
Decode
(
unstructured
.
UnstructuredJSONScheme
,
originalPatchedObjJS
)
if
err
!=
nil
{
return
err
}
// TODO: if we ever want to go generic, this allows a clean -o yaml without trying to print columns or anything
// rawExtension := &runtime.Unknown{
// Raw: originalPatchedObjJS,
...
...
pkg/kubectl/cmd/replace.go
View file @
d0366861
...
...
@@ -120,11 +120,17 @@ func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str
return
fmt
.
Errorf
(
"--timeout must have --force specified"
)
}
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
mapper
,
_
,
err
:=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
:=
builder
.
Schema
(
schema
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -244,7 +250,12 @@ func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
})
})
r
=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
.
builder
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
r
=
builder
.
Schema
(
schema
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
pkg/kubectl/cmd/rollingupdate.go
View file @
d0366861
...
...
@@ -199,7 +199,7 @@ func RunRollingUpdate(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args
return
err
}
request
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
request
:=
f
.
NewBuilder
(
true
)
.
Schema
(
schema
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
resource
.
FilenameOptions
{
Recursive
:
false
,
Filenames
:
[]
string
{
filename
}})
.
...
...
@@ -328,10 +328,10 @@ func RunRollingUpdate(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args
oldRcData
.
WriteString
(
oldRc
.
Name
)
newRcData
.
WriteString
(
newRc
.
Name
)
}
else
{
if
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
oldRc
,
oldRcData
);
err
!=
nil
{
if
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
oldRc
,
oldRcData
);
err
!=
nil
{
return
err
}
if
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
newRc
,
newRcData
);
err
!=
nil
{
if
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
newRc
,
newRcData
);
err
!=
nil
{
return
err
}
}
...
...
@@ -376,7 +376,7 @@ func RunRollingUpdate(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args
return
err
}
if
outputFormat
!=
""
{
return
f
.
PrintObject
(
cmd
,
mapper
,
newRc
,
out
)
return
f
.
PrintObject
(
cmd
,
false
,
mapper
,
newRc
,
out
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
"replicationcontrollers"
,
oldName
,
dryrun
,
message
)
return
nil
...
...
pkg/kubectl/cmd/rollout/rollout_history.go
View file @
d0366861
...
...
@@ -74,14 +74,12 @@ func RunHistory(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []str
return
fmt
.
Errorf
(
"revision must be a positive integer: %v"
,
revision
)
}
mapper
,
typer
:=
f
.
Object
()
cmdNamespace
,
enforceNamespace
,
err
:=
f
.
DefaultNamespace
()
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_pause.go
View file @
d0366861
...
...
@@ -111,7 +111,7 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i
return
err
}
r
:=
resource
.
NewBuilder
(
o
.
Mapper
,
f
.
CategoryExpander
(),
o
.
Typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_resume.go
View file @
d0366861
...
...
@@ -109,7 +109,7 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out
return
err
}
r
:=
resource
.
NewBuilder
(
o
.
Mapper
,
f
.
CategoryExpander
(),
o
.
Typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_status.go
View file @
d0366861
...
...
@@ -77,14 +77,12 @@ func RunStatus(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []stri
return
cmdutil
.
UsageError
(
cmd
,
"Required resource not specified."
)
}
mapper
,
typer
:=
f
.
Object
()
cmdNamespace
,
enforceNamespace
,
err
:=
f
.
DefaultNamespace
()
if
err
!=
nil
{
return
err
}
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_undo.go
View file @
d0366861
...
...
@@ -110,7 +110,7 @@ func (o *UndoOptions) CompleteUndo(f cmdutil.Factory, cmd *cobra.Command, out io
return
err
}
r
:=
resource
.
NewBuilder
(
o
.
Mapper
,
f
.
CategoryExpander
(),
o
.
Typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
r
:=
f
.
NewBuilder
(
true
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/run.go
View file @
d0366861
...
...
@@ -331,8 +331,7 @@ func Run(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cobr
if
err
!=
nil
{
return
err
}
_
,
typer
:=
f
.
Object
()
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
))
.
r
:=
f
.
NewBuilder
(
true
)
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
.
ResourceNames
(
mapping
.
Resource
,
name
)
.
...
...
@@ -379,7 +378,7 @@ func Run(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cobr
outputFormat
:=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
if
outputFormat
!=
""
||
cmdutil
.
GetDryRunFlag
(
cmd
)
{
return
f
.
PrintObject
(
cmd
,
mapper
,
obj
,
cmdOut
)
return
f
.
PrintObject
(
cmd
,
false
,
mapper
,
obj
,
cmdOut
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
cmdOut
,
mapping
.
Resource
,
args
[
0
],
cmdutil
.
GetDryRunFlag
(
cmd
),
"created"
)
return
nil
...
...
@@ -556,7 +555,7 @@ func generateService(f cmdutil.Factory, cmd *cobra.Command, args []string, servi
}
if
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
!=
""
||
cmdutil
.
GetDryRunFlag
(
cmd
)
{
err
:=
f
.
PrintObject
(
cmd
,
mapper
,
obj
,
out
)
err
:=
f
.
PrintObject
(
cmd
,
false
,
mapper
,
obj
,
out
)
if
err
!=
nil
{
return
err
}
...
...
pkg/kubectl/cmd/scale.go
View file @
d0366861
...
...
@@ -98,8 +98,8 @@ func RunScale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin
return
err
}
mapper
,
typer
:=
f
.
Object
()
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
mapper
,
_
:=
f
.
Object
()
r
:=
f
.
NewBuilder
(
true
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
...
...
pkg/kubectl/cmd/set/set_image.go
View file @
d0366861
...
...
@@ -54,7 +54,7 @@ type ImageOptions struct {
Cmd
*
cobra
.
Command
ResolveImage
func
(
in
string
)
(
string
,
error
)
PrintObject
func
(
cmd
*
cobra
.
Command
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
PrintObject
func
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
UpdatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
api
.
PodSpec
)
error
)
(
bool
,
error
)
Resources
[]
string
ContainerImages
map
[
string
]
string
...
...
@@ -137,7 +137,7 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
return
err
}
builder
:=
resource
.
NewBuilder
(
o
.
Mapper
,
f
.
CategoryExpander
(),
o
.
Typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
builder
:=
f
.
NewBuilder
(
!
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
...
...
@@ -227,7 +227,7 @@ func (o *ImageOptions) Run() error {
}
if
o
.
PrintObject
!=
nil
&&
(
o
.
Local
||
o
.
DryRun
)
{
return
o
.
PrintObject
(
o
.
Cmd
,
o
.
Mapper
,
info
.
Object
,
o
.
Out
)
return
o
.
PrintObject
(
o
.
Cmd
,
o
.
Local
,
o
.
Mapper
,
info
.
Object
,
o
.
Out
)
}
// patch the change
...
...
@@ -250,7 +250,7 @@ func (o *ImageOptions) Run() error {
info
.
Refresh
(
obj
,
true
)
if
len
(
o
.
Output
)
>
0
{
return
o
.
PrintObject
(
o
.
Cmd
,
o
.
Mapper
,
obj
,
o
.
Out
)
return
o
.
PrintObject
(
o
.
Cmd
,
o
.
Local
,
o
.
Mapper
,
obj
,
o
.
Out
)
}
cmdutil
.
PrintSuccess
(
o
.
Mapper
,
o
.
ShortOutput
,
o
.
Out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
o
.
DryRun
,
"image updated"
)
}
...
...
pkg/kubectl/cmd/set/set_resources.go
View file @
d0366861
...
...
@@ -81,7 +81,7 @@ type ResourcesOptions struct {
Requests
string
ResourceRequirements
api
.
ResourceRequirements
PrintObject
func
(
cmd
*
cobra
.
Command
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
PrintObject
func
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
UpdatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
api
.
PodSpec
)
error
)
(
bool
,
error
)
Resources
[]
string
}
...
...
@@ -141,12 +141,13 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
return
err
}
builder
:=
resource
.
NewBuilder
(
o
.
Mapper
,
f
.
CategoryExpander
(),
o
.
Typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
builder
:=
f
.
NewBuilder
(
!
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
//FilenameParam(enforceNamespace, o.Filenames...).
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
Flatten
()
if
!
o
.
Local
{
builder
=
builder
.
SelectorParam
(
o
.
Selector
)
.
...
...
@@ -223,7 +224,7 @@ func (o *ResourcesOptions) Run() error {
}
if
o
.
Local
||
cmdutil
.
GetDryRunFlag
(
o
.
Cmd
)
{
return
o
.
PrintObject
(
o
.
Cmd
,
o
.
Mapper
,
info
.
Object
,
o
.
Out
)
return
o
.
PrintObject
(
o
.
Cmd
,
o
.
Local
,
o
.
Mapper
,
info
.
Object
,
o
.
Out
)
}
obj
,
err
:=
resource
.
NewHelper
(
info
.
Client
,
info
.
Mapping
)
.
Patch
(
info
.
Namespace
,
info
.
Name
,
types
.
StrategicMergePatchType
,
patch
.
Patch
)
...
...
pkg/kubectl/cmd/set/set_selector.go
View file @
d0366861
...
...
@@ -117,14 +117,20 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
o
.
mapper
=
mapper
o
.
encoder
=
f
.
JSONEncoder
()
o
.
builder
=
f
.
NewBuilder
()
.
o
.
builder
=
f
.
NewBuilder
(
!
o
.
local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
fileOptions
)
.
Flatten
()
if
!
o
.
local
{
o
.
builder
=
o
.
builder
.
ResourceTypeOrNameArgs
(
o
.
all
,
o
.
resources
...
)
.
Latest
()
}
o
.
PrintObject
=
func
(
obj
runtime
.
Object
)
error
{
return
f
.
PrintObject
(
cmd
,
mapper
,
obj
,
o
.
out
)
return
f
.
PrintObject
(
cmd
,
o
.
local
,
mapper
,
obj
,
o
.
out
)
}
o
.
ClientForMapping
=
func
(
mapping
*
meta
.
RESTMapping
)
(
resource
.
RESTClient
,
error
)
{
return
f
.
ClientForMapping
(
mapping
)
...
...
@@ -147,10 +153,6 @@ func (o *SelectorOptions) Validate() error {
// RunSelector executes the command.
func
(
o
*
SelectorOptions
)
RunSelector
()
error
{
if
!
o
.
local
{
o
.
builder
=
o
.
builder
.
ResourceTypeOrNameArgs
(
o
.
all
,
o
.
resources
...
)
.
Latest
()
}
r
:=
o
.
builder
.
Do
()
err
:=
r
.
Err
()
if
err
!=
nil
{
...
...
pkg/kubectl/cmd/set/set_subject.go
View file @
d0366861
...
...
@@ -115,7 +115,7 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
o
.
ShortOutput
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
==
"name"
o
.
DryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
o
.
PrintObject
=
func
(
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
{
return
f
.
PrintObject
(
cmd
,
mapper
,
obj
,
out
)
return
f
.
PrintObject
(
cmd
,
o
.
Local
,
mapper
,
obj
,
out
)
}
cmdNamespace
,
enforceNamespace
,
err
:=
f
.
DefaultNamespace
()
...
...
@@ -123,11 +123,12 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
return
err
}
builder
:=
resource
.
NewBuilder
(
o
.
Mapper
,
f
.
CategoryExpander
(),
o
.
Typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
builder
:=
f
.
NewBuilder
(
!
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
Flatten
()
if
!
o
.
Local
{
builder
=
builder
.
SelectorParam
(
o
.
Selector
)
.
...
...
pkg/kubectl/cmd/stop.go
View file @
d0366861
...
...
@@ -83,8 +83,8 @@ func RunStop(f cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer
return
err
}
mapper
,
typer
:=
f
.
Object
()
r
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
)
)
.
mapper
,
_
:=
f
.
Object
()
r
:=
f
.
NewBuilder
(
true
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
ResourceTypeOrNameArgs
(
false
,
args
...
)
.
...
...
pkg/kubectl/cmd/taint.go
View file @
d0366861
...
...
@@ -246,8 +246,7 @@ func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
if
o
.
taintsToAdd
,
o
.
taintsToRemove
,
err
=
parseTaints
(
taintArgs
);
err
!=
nil
{
return
cmdutil
.
UsageError
(
cmd
,
err
.
Error
())
}
mapper
,
typer
:=
f
.
Object
()
o
.
builder
=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
))
.
o
.
builder
=
f
.
NewBuilder
(
true
)
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
if
o
.
selector
!=
""
{
...
...
@@ -373,7 +372,7 @@ func (o TaintOptions) RunTaint() error {
mapper
,
_
:=
o
.
f
.
Object
()
outputFormat
:=
cmdutil
.
GetFlagString
(
o
.
cmd
,
"output"
)
if
outputFormat
!=
""
{
return
o
.
f
.
PrintObject
(
o
.
cmd
,
mapper
,
outputObj
,
o
.
out
)
return
o
.
f
.
PrintObject
(
o
.
cmd
,
false
,
mapper
,
outputObj
,
o
.
out
)
}
cmdutil
.
PrintSuccess
(
mapper
,
false
,
o
.
out
,
info
.
Mapping
.
Resource
,
info
.
Name
,
false
,
operation
)
...
...
pkg/kubectl/cmd/testing/BUILD
View file @
d0366861
...
...
@@ -29,6 +29,7 @@ go_library(
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
...
...
pkg/kubectl/cmd/testing/fake.go
View file @
d0366861
...
...
@@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
...
...
@@ -337,7 +338,7 @@ func (f *FakeFactory) Describer(*meta.RESTMapping) (printers.Describer, error) {
return
f
.
tf
.
Describer
,
f
.
tf
.
Err
}
func
(
f
*
FakeFactory
)
PrinterForCommand
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
{
func
(
f
*
FakeFactory
)
PrinterForCommand
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
{
return
f
.
tf
.
Printer
,
f
.
tf
.
Err
}
...
...
@@ -457,18 +458,31 @@ func (f *FakeFactory) BindFlags(flags *pflag.FlagSet) {
func
(
f
*
FakeFactory
)
BindExternalFlags
(
flags
*
pflag
.
FlagSet
)
{
}
func
(
f
*
FakeFactory
)
PrintObject
(
cmd
*
cobra
.
Command
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
{
func
(
f
*
FakeFactory
)
PrintObject
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
{
return
nil
}
func
(
f
*
FakeFactory
)
PrinterForMapping
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
{
func
(
f
*
FakeFactory
)
PrinterForMapping
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
{
return
f
.
tf
.
Printer
,
f
.
tf
.
Err
}
func
(
f
*
FakeFactory
)
NewBuilder
()
*
resource
.
Builder
{
func
(
f
*
FakeFactory
)
NewBuilder
(
allowRemoteCalls
bool
)
*
resource
.
Builder
{
return
nil
}
func
(
f
*
FakeFactory
)
NewUnstructuredBuilder
(
allowRemoteCalls
bool
)
(
*
resource
.
Builder
,
error
)
{
if
!
allowRemoteCalls
{
return
f
.
NewBuilder
(
allowRemoteCalls
),
nil
}
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
nil
,
err
}
return
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
),
nil
}
func
(
f
*
FakeFactory
)
DefaultResourceFilterOptions
(
cmd
*
cobra
.
Command
,
withNamespace
bool
)
*
printers
.
PrintOptions
{
return
&
printers
.
PrintOptions
{}
}
...
...
@@ -618,7 +632,7 @@ func (f *fakeAPIFactory) UnstructuredClientForMapping(m *meta.RESTMapping) (reso
return
f
.
tf
.
UnstructuredClient
,
f
.
tf
.
Err
}
func
(
f
*
fakeAPIFactory
)
PrinterForCommand
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
{
func
(
f
*
fakeAPIFactory
)
PrinterForCommand
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
{
return
f
.
tf
.
Printer
,
f
.
tf
.
Err
}
...
...
@@ -681,7 +695,7 @@ func (f *fakeAPIFactory) Generators(cmdName string) map[string]kubectl.Generator
return
cmdutil
.
DefaultGenerators
(
cmdName
)
}
func
(
f
*
fakeAPIFactory
)
PrintObject
(
cmd
*
cobra
.
Command
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
{
func
(
f
*
fakeAPIFactory
)
PrintObject
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
{
gvks
,
_
,
err
:=
api
.
Scheme
.
ObjectKinds
(
obj
)
if
err
!=
nil
{
return
err
...
...
@@ -692,23 +706,36 @@ func (f *fakeAPIFactory) PrintObject(cmd *cobra.Command, mapper meta.RESTMapper,
return
err
}
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
nil
,
mapping
,
false
)
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
isLocal
,
nil
,
mapping
,
false
)
if
err
!=
nil
{
return
err
}
return
printer
.
PrintObj
(
obj
,
out
)
}
func
(
f
*
fakeAPIFactory
)
PrinterForMapping
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
{
func
(
f
*
fakeAPIFactory
)
PrinterForMapping
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
{
return
f
.
tf
.
Printer
,
f
.
tf
.
Err
}
func
(
f
*
fakeAPIFactory
)
NewBuilder
()
*
resource
.
Builder
{
func
(
f
*
fakeAPIFactory
)
NewBuilder
(
allowRemoteCalls
bool
)
*
resource
.
Builder
{
mapper
,
typer
:=
f
.
Object
()
return
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
f
.
Decoder
(
true
))
}
func
(
f
*
fakeAPIFactory
)
NewUnstructuredBuilder
(
allowRemoteCalls
bool
)
(
*
resource
.
Builder
,
error
)
{
if
!
allowRemoteCalls
{
return
f
.
NewBuilder
(
allowRemoteCalls
),
nil
}
mapper
,
typer
,
err
:=
f
.
UnstructuredObject
()
if
err
!=
nil
{
return
nil
,
err
}
return
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
),
nil
}
func
(
f
*
fakeAPIFactory
)
SuggestedPodTemplateResources
()
[]
schema
.
GroupResource
{
return
[]
schema
.
GroupResource
{}
}
...
...
pkg/kubectl/cmd/util/editor/editoptions.go
View file @
d0366861
...
...
@@ -104,7 +104,11 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []
if
err
!=
nil
{
return
err
}
b
:=
resource
.
NewBuilder
(
mapper
,
f
.
CategoryExpander
(),
typer
,
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
unstructured
.
UnstructuredJSONScheme
)
b
,
err
:=
f
.
NewUnstructuredBuilder
(
true
)
if
err
!=
nil
{
return
err
}
if
o
.
EditMode
==
NormalEditMode
||
o
.
EditMode
==
ApplyEditMode
{
// when do normal edit or apply edit we need to always retrieve the latest resource from server
b
=
b
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
Latest
()
...
...
pkg/kubectl/cmd/util/factory.go
View file @
d0366861
...
...
@@ -233,16 +233,18 @@ type BuilderFactory interface {
// are declared on the command (see AddPrinterFlags). Returns a printer, or an error if a printer
// could not be found.
// TODO: Break the dependency on cmd here.
PrinterForCommand
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
PrinterForCommand
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
// PrinterForMapping returns a printer suitable for displaying the provided resource type.
// Requires that printer flags have been added to cmd (see AddPrinterFlags).
// Returns a printer, true if the printer is generic (is not internal), or
// an error if a printer could not be found.
PrinterForMapping
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
PrinterForMapping
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
// PrintObject prints an api object given command line flags to modify the output format
PrintObject
(
cmd
*
cobra
.
Command
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
PrintObject
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
// One stop shopping for a Builder
NewBuilder
()
*
resource
.
Builder
NewBuilder
(
allowRemoteCalls
bool
)
*
resource
.
Builder
// Resource builder for working with unstructured objects
NewUnstructuredBuilder
(
allowRemoteCalls
bool
)
(
*
resource
.
Builder
,
error
)
// PluginLoader provides the implementation to be used to load cli plugins.
PluginLoader
()
plugins
.
PluginLoader
// PluginRunner provides the implementation to be used to run cli plugins.
...
...
pkg/kubectl/cmd/util/factory_builder.go
View file @
d0366861
...
...
@@ -28,6 +28,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/kubectl/plugins"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -48,10 +49,19 @@ func NewBuilderFactory(clientAccessFactory ClientAccessFactory, objectMappingFac
return
f
}
func
(
f
*
ring2Factory
)
PrinterForCommand
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
{
mapper
,
typer
,
err
:=
f
.
objectMappingFactory
.
UnstructuredObject
()
if
err
!=
nil
{
return
nil
,
err
func
(
f
*
ring2Factory
)
PrinterForCommand
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
options
printers
.
PrintOptions
)
(
printers
.
ResourcePrinter
,
error
)
{
var
mapper
meta
.
RESTMapper
var
typer
runtime
.
ObjectTyper
var
err
error
if
isLocal
{
mapper
=
api
.
Registry
.
RESTMapper
()
typer
=
api
.
Scheme
}
else
{
mapper
,
typer
,
err
=
f
.
objectMappingFactory
.
UnstructuredObject
()
if
err
!=
nil
{
return
nil
,
err
}
}
// TODO: used by the custom column implementation and the name implementation, break this dependency
decoders
:=
[]
runtime
.
Decoder
{
f
.
clientAccessFactory
.
Decoder
(
true
),
unstructured
.
UnstructuredJSONScheme
}
...
...
@@ -59,7 +69,7 @@ func (f *ring2Factory) PrinterForCommand(cmd *cobra.Command, outputOpts *printer
return
PrinterForCommand
(
cmd
,
outputOpts
,
mapper
,
typer
,
encoder
,
decoders
,
options
)
}
func
(
f
*
ring2Factory
)
PrinterForMapping
(
cmd
*
cobra
.
Command
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
{
func
(
f
*
ring2Factory
)
PrinterForMapping
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
outputOpts
*
printers
.
OutputOptions
,
mapping
*
meta
.
RESTMapping
,
withNamespace
bool
)
(
printers
.
ResourcePrinter
,
error
)
{
// Some callers do not have "label-columns" so we can't use the GetFlagStringSlice() helper
columnLabel
,
err
:=
cmd
.
Flags
()
.
GetStringSlice
(
"label-columns"
)
if
err
!=
nil
{
...
...
@@ -76,7 +86,7 @@ func (f *ring2Factory) PrinterForMapping(cmd *cobra.Command, outputOpts *printer
ColumnLabels
:
columnLabel
,
}
printer
,
err
:=
f
.
PrinterForCommand
(
cmd
,
outputOpts
,
options
)
printer
,
err
:=
f
.
PrinterForCommand
(
cmd
,
isLocal
,
outputOpts
,
options
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -108,7 +118,7 @@ func (f *ring2Factory) PrinterForMapping(cmd *cobra.Command, outputOpts *printer
return
printer
,
nil
}
func
(
f
*
ring2Factory
)
PrintObject
(
cmd
*
cobra
.
Command
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
{
func
(
f
*
ring2Factory
)
PrintObject
(
cmd
*
cobra
.
Command
,
isLocal
bool
,
mapper
meta
.
RESTMapper
,
obj
runtime
.
Object
,
out
io
.
Writer
)
error
{
// try to get a typed object
_
,
typer
:=
f
.
objectMappingFactory
.
Object
()
gvks
,
_
,
err
:=
typer
.
ObjectKinds
(
obj
)
...
...
@@ -132,18 +142,46 @@ func (f *ring2Factory) PrintObject(cmd *cobra.Command, mapper meta.RESTMapper, o
return
err
}
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
nil
,
mapping
,
false
)
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
isLocal
,
nil
,
mapping
,
false
)
if
err
!=
nil
{
return
err
}
return
printer
.
PrintObj
(
obj
,
out
)
}
func
(
f
*
ring2Factory
)
NewBuilder
()
*
resource
.
Builder
{
// NewBuilder returns a new resource builder.
// Receives a bool flag and avoids remote calls if set to false
func
(
f
*
ring2Factory
)
NewBuilder
(
allowRemoteCalls
bool
)
*
resource
.
Builder
{
var
clientMapper
resource
.
ClientMapper
clientMapperFunc
:=
resource
.
ClientMapperFunc
(
f
.
objectMappingFactory
.
ClientForMapping
)
mapper
,
typer
:=
f
.
objectMappingFactory
.
Object
()
categoryExpander
:=
f
.
objectMappingFactory
.
CategoryExpander
()
return
resource
.
NewBuilder
(
mapper
,
categoryExpander
,
typer
,
resource
.
ClientMapperFunc
(
f
.
objectMappingFactory
.
ClientForMapping
),
f
.
clientAccessFactory
.
Decoder
(
true
))
if
allowRemoteCalls
{
clientMapper
=
clientMapperFunc
}
else
{
clientMapper
=
resource
.
DisabledClientForMapping
{
ClientMapper
:
clientMapperFunc
}
}
return
resource
.
NewBuilder
(
mapper
,
categoryExpander
,
typer
,
clientMapper
,
f
.
clientAccessFactory
.
Decoder
(
true
))
}
func
(
f
*
ring2Factory
)
NewUnstructuredBuilder
(
allowRemoteCalls
bool
)
(
*
resource
.
Builder
,
error
)
{
if
!
allowRemoteCalls
{
return
f
.
NewBuilder
(
allowRemoteCalls
),
nil
}
clientMapperFunc
:=
resource
.
ClientMapperFunc
(
f
.
objectMappingFactory
.
UnstructuredClientForMapping
)
mapper
,
typer
,
err
:=
f
.
objectMappingFactory
.
UnstructuredObject
()
if
err
!=
nil
{
return
nil
,
err
}
categoryExpander
:=
f
.
objectMappingFactory
.
CategoryExpander
()
return
resource
.
NewBuilder
(
mapper
,
categoryExpander
,
typer
,
clientMapperFunc
,
unstructured
.
UnstructuredJSONScheme
),
nil
}
// PluginLoader loads plugins from a path set by the KUBECTL_PLUGINS_PATH env var.
...
...
pkg/kubectl/cmd/util/printing.go
View file @
d0366861
...
...
@@ -129,12 +129,12 @@ func PrinterForCommand(cmd *cobra.Command, outputOpts *printers.OutputOptions, m
// object passed is non-generic, it attempts to print the object using a HumanReadablePrinter.
// Requires that printer flags have been added to cmd (see AddPrinterFlags).
func
PrintResourceInfoForCommand
(
cmd
*
cobra
.
Command
,
info
*
resource
.
Info
,
f
Factory
,
out
io
.
Writer
)
error
{
printer
,
err
:=
f
.
PrinterForCommand
(
cmd
,
nil
,
printers
.
PrintOptions
{})
printer
,
err
:=
f
.
PrinterForCommand
(
cmd
,
false
,
nil
,
printers
.
PrintOptions
{})
if
err
!=
nil
{
return
err
}
if
!
printer
.
IsGeneric
()
{
printer
,
err
=
f
.
PrinterForMapping
(
cmd
,
nil
,
nil
,
false
)
printer
,
err
=
f
.
PrinterForMapping
(
cmd
,
false
,
nil
,
nil
,
false
)
if
err
!=
nil
{
return
err
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment