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
6fbcbc99
Commit
6fbcbc99
authored
Apr 27, 2018
by
David Eads
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove unnecessarily flexibiliy to simplify the resource builder
parent
61fdd880
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
154 additions
and
152 deletions
+154
-152
attach.go
pkg/kubectl/cmd/attach.go
+1
-1
reconcile.go
pkg/kubectl/cmd/auth/reconcile.go
+2
-1
autoscale.go
pkg/kubectl/cmd/autoscale.go
+7
-9
certificates.go
pkg/kubectl/cmd/certificates.go
+3
-2
clusterinfo.go
pkg/kubectl/cmd/clusterinfo.go
+2
-1
convert.go
pkg/kubectl/cmd/convert.go
+1
-1
create.go
pkg/kubectl/cmd/create/create.go
+4
-6
drain.go
pkg/kubectl/cmd/drain.go
+4
-4
expose.go
pkg/kubectl/cmd/expose.go
+6
-8
logs.go
pkg/kubectl/cmd/logs.go
+2
-1
portforward.go
pkg/kubectl/cmd/portforward.go
+2
-1
rollout_history.go
pkg/kubectl/cmd/rollout/rollout_history.go
+2
-1
rollout_pause.go
pkg/kubectl/cmd/rollout/rollout_pause.go
+2
-1
rollout_resume.go
pkg/kubectl/cmd/rollout/rollout_resume.go
+2
-1
rollout_status.go
pkg/kubectl/cmd/rollout/rollout_status.go
+2
-1
rollout_undo.go
pkg/kubectl/cmd/rollout/rollout_undo.go
+2
-1
run.go
pkg/kubectl/cmd/run.go
+6
-8
set_env.go
pkg/kubectl/cmd/set/set_env.go
+5
-5
set_image.go
pkg/kubectl/cmd/set/set_image.go
+5
-4
set_resources.go
pkg/kubectl/cmd/set/set_resources.go
+5
-4
set_selector.go
pkg/kubectl/cmd/set/set_selector.go
+4
-3
set_serviceaccount.go
pkg/kubectl/cmd/set/set_serviceaccount.go
+5
-4
set_subject.go
pkg/kubectl/cmd/set/set_subject.go
+4
-3
taint.go
pkg/kubectl/cmd/taint.go
+1
-1
fake.go
pkg/kubectl/cmd/testing/fake.go
+4
-7
factory_builder.go
pkg/kubectl/cmd/util/factory_builder.go
+4
-8
factory_test.go
pkg/kubectl/cmd/util/factory_test.go
+3
-6
builder.go
pkg/kubectl/resource/builder.go
+24
-18
builder_test.go
pkg/kubectl/resource/builder_test.go
+9
-7
mapper.go
pkg/kubectl/resource/mapper.go
+6
-11
selector.go
pkg/kubectl/resource/selector.go
+3
-7
visitor.go
pkg/kubectl/resource/visitor.go
+14
-16
scheme.go
...kg/apis/meta/v1/unstructured/unstructuredscheme/scheme.go
+8
-0
No files found.
pkg/kubectl/cmd/attach.go
View file @
6fbcbc99
...
...
@@ -146,7 +146,7 @@ func (p *AttachOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn [
}
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
switch
len
(
argsIn
)
{
...
...
pkg/kubectl/cmd/auth/reconcile.go
View file @
6fbcbc99
...
...
@@ -23,6 +23,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/rbac"
internalcoreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
internalrbacclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion"
...
...
@@ -95,7 +96,7 @@ func (o *ReconcileOptions) Complete(cmd *cobra.Command, f cmdutil.Factory, args
}
r
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
...
...
pkg/kubectl/cmd/autoscale.go
View file @
6fbcbc99
...
...
@@ -197,7 +197,7 @@ func (o *AutoscaleOptions) Validate(cmd *cobra.Command) error {
func
(
o
*
AutoscaleOptions
)
Run
()
error
{
r
:=
o
.
Builder
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
ContinueOnError
()
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
.
FilenameParam
(
o
.
EnforceNamespace
,
o
.
FilenameOptions
)
.
...
...
@@ -231,13 +231,11 @@ func (o *AutoscaleOptions) Run() error {
}
resourceMapper
:=
&
resource
.
Mapper
{
ObjectTyper
:
o
.
Typer
,
ObjectConverter
:
legacyscheme
.
Scheme
,
RESTMapper
:
o
.
Mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
o
.
ClientForMapping
),
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
RESTMapper
:
o
.
Mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
o
.
ClientForMapping
),
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
}
hpa
,
err
:=
resourceMapper
.
InfoForObject
(
object
,
nil
)
hpa
,
err
:=
resourceMapper
.
InfoForObject
(
object
,
legacyscheme
.
Scheme
,
nil
)
if
err
!=
nil
{
return
err
}
...
...
@@ -253,7 +251,7 @@ func (o *AutoscaleOptions) Run() error {
if
err
!=
nil
{
return
err
}
return
printer
.
PrintObj
(
hpa
.
AsVersioned
(),
o
.
Out
)
return
printer
.
PrintObj
(
hpa
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
}
if
err
:=
kubectl
.
CreateOrUpdateAnnotation
(
o
.
CreateAnnotation
,
hpa
.
Object
,
cmdutil
.
InternalVersionJSONEncoder
());
err
!=
nil
{
...
...
@@ -270,7 +268,7 @@ func (o *AutoscaleOptions) Run() error {
if
err
!=
nil
{
return
err
}
return
printer
.
PrintObj
(
info
.
AsVersioned
(),
o
.
Out
)
return
printer
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
})
if
err
!=
nil
{
return
err
...
...
pkg/kubectl/cmd/certificates.go
View file @
6fbcbc99
...
...
@@ -22,6 +22,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/certificates"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
@@ -203,7 +204,7 @@ func (o *CertificateOptions) RunCertificateDeny(force bool) error {
func
(
options
*
CertificateOptions
)
modifyCertificateCondition
(
builder
*
resource
.
Builder
,
clientSet
internalclientset
.
Interface
,
force
bool
,
modify
func
(
csr
*
certificates
.
CertificateSigningRequest
)
(
*
certificates
.
CertificateSigningRequest
,
bool
))
error
{
var
found
int
r
:=
builder
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
ContinueOnError
()
.
FilenameParam
(
false
,
&
options
.
FilenameOptions
)
.
ResourceNames
(
"certificatesigningrequest"
,
options
.
csrNames
...
)
.
...
...
@@ -227,7 +228,7 @@ func (options *CertificateOptions) modifyCertificateCondition(builder *resource.
}
found
++
return
options
.
PrintObj
(
info
.
AsVersioned
(),
options
.
Out
)
return
options
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
options
.
Out
)
})
if
found
==
0
{
fmt
.
Fprintf
(
options
.
Out
,
"No resources found
\n
"
)
...
...
pkg/kubectl/cmd/clusterinfo.go
View file @
6fbcbc99
...
...
@@ -24,6 +24,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
utilnet
"k8s.io/apimachinery/pkg/util/net"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
@@ -95,7 +96,7 @@ func (o *ClusterInfoOptions) Run() error {
// TODO use generalized labels once they are implemented (#341)
b
:=
o
.
Builder
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
.
LabelSelectorParam
(
"kubernetes.io/cluster-service=true"
)
.
ResourceTypeOrNameArgs
(
false
,
[]
string
{
"services"
}
...
)
.
...
...
pkg/kubectl/cmd/convert.go
View file @
6fbcbc99
...
...
@@ -129,7 +129,7 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) (err er
// build the builder
o
.
builder
=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
scheme
.
Scheme
)
.
LocalParam
(
o
.
local
)
if
!
o
.
local
{
schema
,
err
:=
f
.
Validator
(
cmdutil
.
GetFlagBool
(
cmd
,
"validate"
))
...
...
pkg/kubectl/cmd/create/create.go
View file @
6fbcbc99
...
...
@@ -405,12 +405,10 @@ func RunCreateSubcommand(f cmdutil.Factory, options *CreateSubcommandOptions) er
return
err
}
resourceMapper
:=
&
resource
.
Mapper
{
ObjectTyper
:
typer
,
ObjectConverter
:
legacyscheme
.
Scheme
,
RESTMapper
:
mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
RESTMapper
:
mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
}
info
,
err
:=
resourceMapper
.
InfoForObject
(
obj
,
nil
)
info
,
err
:=
resourceMapper
.
InfoForObject
(
obj
,
legacyscheme
.
Scheme
,
nil
)
if
err
!=
nil
{
return
err
}
...
...
@@ -424,7 +422,7 @@ func RunCreateSubcommand(f cmdutil.Factory, options *CreateSubcommandOptions) er
}
// ensure we pass a versioned object to the printer
obj
=
info
.
AsVersioned
()
obj
=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
}
else
{
if
meta
,
err
:=
meta
.
Accessor
(
obj
);
err
==
nil
&&
nsOverriden
{
meta
.
SetNamespace
(
namespace
)
...
...
pkg/kubectl/cmd/drain.go
View file @
6fbcbc99
...
...
@@ -283,7 +283,7 @@ func (o *DrainOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
}
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
.
ResourceNames
(
"nodes"
,
args
...
)
.
SingleResourceType
()
.
...
...
@@ -741,7 +741,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
fmt
.
Printf
(
"error: %v"
,
err
)
continue
}
printer
.
PrintObj
(
nodeInfo
.
AsVersioned
(),
o
.
Out
)
printer
.
PrintObj
(
nodeInfo
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
}
else
{
if
!
o
.
DryRun
{
helper
:=
resource
.
NewHelper
(
o
.
restClient
,
nodeInfo
.
Mapping
)
...
...
@@ -767,7 +767,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
fmt
.
Fprintf
(
o
.
ErrOut
,
"%v"
,
err
)
continue
}
printer
.
PrintObj
(
nodeInfo
.
AsVersioned
(),
o
.
Out
)
printer
.
PrintObj
(
nodeInfo
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
}
}
else
{
printer
,
err
:=
o
.
ToPrinter
(
"skipped"
)
...
...
@@ -775,7 +775,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
fmt
.
Fprintf
(
o
.
ErrOut
,
"%v"
,
err
)
continue
}
printer
.
PrintObj
(
nodeInfo
.
AsVersioned
(),
o
.
Out
)
printer
.
PrintObj
(
nodeInfo
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
}
}
...
...
pkg/kubectl/cmd/expose.go
View file @
6fbcbc99
...
...
@@ -201,7 +201,7 @@ func (o *ExposeServiceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) e
func
(
o
*
ExposeServiceOptions
)
RunExpose
(
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
r
:=
o
.
Builder
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
ContinueOnError
()
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
.
FilenameParam
(
o
.
EnforceNamespace
,
&
o
.
FilenameOptions
)
.
...
...
@@ -312,13 +312,11 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
}
resourceMapper
:=
&
resource
.
Mapper
{
ObjectTyper
:
o
.
Typer
,
ObjectConverter
:
legacyscheme
.
Scheme
,
RESTMapper
:
o
.
Mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
o
.
ClientForMapping
),
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
RESTMapper
:
o
.
Mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
o
.
ClientForMapping
),
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
}
info
,
err
=
resourceMapper
.
InfoForObject
(
object
,
nil
)
info
,
err
=
resourceMapper
.
InfoForObject
(
object
,
legacyscheme
.
Scheme
,
nil
)
if
err
!=
nil
{
return
err
}
...
...
@@ -339,7 +337,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
return
err
}
return
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
Out
)
return
o
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
})
if
err
!=
nil
{
return
err
...
...
pkg/kubectl/cmd/logs.go
View file @
6fbcbc99
...
...
@@ -30,6 +30,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
@@ -201,7 +202,7 @@ func (o *LogsOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Comm
if
o
.
Object
==
nil
{
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
.
SingleResourceType
()
if
o
.
ResourceArg
!=
""
{
...
...
pkg/kubectl/cmd/portforward.go
View file @
6fbcbc99
...
...
@@ -33,6 +33,7 @@ import (
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/portforward"
"k8s.io/client-go/transport/spdy"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
@@ -179,7 +180,7 @@ func (o *PortForwardOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, arg
}
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
ContinueOnError
()
.
NamespaceParam
(
o
.
Namespace
)
.
DefaultNamespace
()
...
...
pkg/kubectl/cmd/rollout/rollout_history.go
View file @
6fbcbc99
...
...
@@ -20,6 +20,7 @@ import (
"fmt"
"io"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
@@ -81,7 +82,7 @@ func RunHistory(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []str
}
r
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_pause.go
View file @
6fbcbc99
...
...
@@ -26,6 +26,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/set"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
@@ -111,7 +112,7 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i
}
r
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_resume.go
View file @
6fbcbc99
...
...
@@ -26,6 +26,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/set"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
@@ -109,7 +110,7 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out
}
r
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_status.go
View file @
6fbcbc99
...
...
@@ -22,6 +22,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
@@ -85,7 +86,7 @@ func RunStatus(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []stri
}
r
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
options
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/rollout/rollout_undo.go
View file @
6fbcbc99
...
...
@@ -22,6 +22,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
@@ -112,7 +113,7 @@ func (o *UndoOptions) CompleteUndo(f cmdutil.Factory, cmd *cobra.Command, out io
}
r
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
FilenameParam
(
enforceNamespace
,
&
o
.
FilenameOptions
)
.
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
...
...
pkg/kubectl/cmd/run.go
View file @
6fbcbc99
...
...
@@ -458,7 +458,7 @@ func (o *RunOptions) removeCreatedObjects(f cmdutil.Factory, createdObjects []*R
return
err
}
r
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
.
ResourceNames
(
obj
.
Mapping
.
Resource
,
name
)
.
...
...
@@ -674,13 +674,11 @@ func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command
versioned
:=
obj
if
!
o
.
DryRun
{
resourceMapper
:=
&
resource
.
Mapper
{
ObjectTyper
:
typer
,
ObjectConverter
:
legacyscheme
.
Scheme
,
RESTMapper
:
mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
RESTMapper
:
mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
}
info
,
err
:=
resourceMapper
.
InfoForObject
(
obj
,
nil
)
info
,
err
:=
resourceMapper
.
InfoForObject
(
obj
,
legacyscheme
.
Scheme
,
nil
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -694,7 +692,7 @@ func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command
return
nil
,
err
}
versioned
=
info
.
AsVersioned
()
versioned
=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
}
return
&
RunObject
{
Versioned
:
versioned
,
...
...
pkg/kubectl/cmd/set/set_env.go
View file @
6fbcbc99
...
...
@@ -253,7 +253,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
if
len
(
o
.
From
)
!=
0
{
b
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -321,7 +321,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}
b
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -339,7 +339,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
return
err
}
patches
:=
CalculatePatches
(
o
.
Infos
,
cmdutil
.
InternalVersionJSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
info
.
Object
=
info
.
AsVersioned
()
info
.
Object
=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
_
,
err
:=
o
.
UpdatePodSpecForObject
(
info
.
Object
,
func
(
spec
*
v1
.
PodSpec
)
error
{
resolutionErrorsEncountered
:=
false
containers
,
_
:=
selectContainers
(
spec
.
Containers
,
o
.
ContainerSelector
)
...
...
@@ -430,7 +430,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}
if
o
.
Local
||
o
.
DryRun
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
continue
...
...
@@ -449,7 +449,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
return
fmt
.
Errorf
(
"at least one environment variable must be provided"
)
}
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
}
...
...
pkg/kubectl/cmd/set/set_image.go
View file @
6fbcbc99
...
...
@@ -19,6 +19,7 @@ package set
import
(
"fmt"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/printers"
"github.com/golang/glog"
...
...
@@ -160,7 +161,7 @@ func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
includeUninitialized
:=
cmdutil
.
ShouldIncludeUninitialized
(
cmd
,
false
)
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -210,7 +211,7 @@ func (o *SetImageOptions) Run() error {
patches
:=
CalculatePatches
(
o
.
Infos
,
cmdutil
.
InternalVersionJSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
transformed
:=
false
info
.
Object
=
info
.
AsVersioned
()
info
.
Object
=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
_
,
err
:=
o
.
UpdatePodSpecForObject
(
info
.
Object
,
func
(
spec
*
v1
.
PodSpec
)
error
{
for
name
,
image
:=
range
o
.
ContainerImages
{
var
(
...
...
@@ -274,7 +275,7 @@ func (o *SetImageOptions) Run() error {
}
if
o
.
Local
||
o
.
DryRun
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
continue
...
...
@@ -288,7 +289,7 @@ func (o *SetImageOptions) Run() error {
}
info
.
Refresh
(
obj
,
true
)
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
}
...
...
pkg/kubectl/cmd/set/set_resources.go
View file @
6fbcbc99
...
...
@@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
@@ -172,7 +173,7 @@ func (o *SetResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, ar
includeUninitialized
:=
cmdutil
.
ShouldIncludeUninitialized
(
cmd
,
false
)
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -223,7 +224,7 @@ func (o *SetResourcesOptions) Run() error {
allErrs
:=
[]
error
{}
patches
:=
CalculatePatches
(
o
.
Infos
,
cmdutil
.
InternalVersionJSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
transformed
:=
false
info
.
Object
=
info
.
AsVersioned
()
info
.
Object
=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
_
,
err
:=
o
.
UpdatePodSpecForObject
(
info
.
Object
,
func
(
spec
*
v1
.
PodSpec
)
error
{
containers
,
_
:=
selectContainers
(
spec
.
Containers
,
o
.
ContainerSelector
)
if
len
(
containers
)
!=
0
{
...
...
@@ -276,7 +277,7 @@ func (o *SetResourcesOptions) Run() error {
}
if
o
.
Local
||
o
.
DryRun
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
continue
...
...
@@ -289,7 +290,7 @@ func (o *SetResourcesOptions) Run() error {
}
info
.
Refresh
(
obj
,
true
)
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
}
...
...
pkg/kubectl/cmd/set/set_selector.go
View file @
6fbcbc99
...
...
@@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
...
...
@@ -149,7 +150,7 @@ func (o *SetSelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, arg
includeUninitialized
:=
cmdutil
.
ShouldIncludeUninitialized
(
cmd
,
false
)
o
.
builder
=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
LocalParam
(
o
.
local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -207,7 +208,7 @@ func (o *SetSelectorOptions) RunSelector() error {
return
r
.
Visit
(
func
(
info
*
resource
.
Info
,
err
error
)
error
{
patch
:=
&
Patch
{
Info
:
info
}
CalculatePatch
(
patch
,
cmdutil
.
InternalVersionJSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
versioned
:=
info
.
AsVersioned
()
versioned
:=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
patch
.
Info
.
Object
=
versioned
selectErr
:=
updateSelectorForObject
(
info
.
Object
,
*
o
.
selector
)
if
selectErr
!=
nil
{
...
...
@@ -235,7 +236,7 @@ func (o *SetSelectorOptions) RunSelector() error {
}
info
.
Refresh
(
patched
,
true
)
return
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
Out
)
return
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
})
}
...
...
pkg/kubectl/cmd/set/set_serviceaccount.go
View file @
6fbcbc99
...
...
@@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
...
...
@@ -151,7 +152,7 @@ func (o *SetServiceAccountOptions) Complete(f cmdutil.Factory, cmd *cobra.Comman
resources
:=
args
[
:
len
(
args
)
-
1
]
includeUninitialized
:=
cmdutil
.
ShouldIncludeUninitialized
(
cmd
,
false
)
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
LocalParam
(
o
.
local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -173,7 +174,7 @@ func (o *SetServiceAccountOptions) Complete(f cmdutil.Factory, cmd *cobra.Comman
func
(
o
*
SetServiceAccountOptions
)
Run
()
error
{
patchErrs
:=
[]
error
{}
patchFn
:=
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
info
.
Object
=
info
.
AsVersioned
()
info
.
Object
=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
_
,
err
:=
o
.
updatePodSpecForObject
(
info
.
Object
,
func
(
podSpec
*
v1
.
PodSpec
)
error
{
podSpec
.
ServiceAccountName
=
o
.
serviceAccountName
return
nil
...
...
@@ -197,7 +198,7 @@ func (o *SetServiceAccountOptions) Run() error {
continue
}
if
o
.
local
||
o
.
dryRun
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
continue
...
...
@@ -209,7 +210,7 @@ func (o *SetServiceAccountOptions) Run() error {
}
info
.
Refresh
(
patched
,
true
)
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
);
err
!=
nil
{
return
err
}
}
...
...
pkg/kubectl/cmd/set/set_subject.go
View file @
6fbcbc99
...
...
@@ -28,6 +28,7 @@ import (
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/rbac"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
@@ -136,7 +137,7 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
includeUninitialized
:=
cmdutil
.
ShouldIncludeUninitialized
(
cmd
,
false
)
builder
:=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -232,7 +233,7 @@ func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error {
transformed
,
err
:=
updateSubjectForObject
(
info
.
Object
,
subjects
,
fn
)
if
transformed
&&
err
==
nil
{
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec
return
runtime
.
Encode
(
cmdutil
.
InternalVersionJSONEncoder
(),
info
.
AsVersioned
())
return
runtime
.
Encode
(
cmdutil
.
InternalVersionJSONEncoder
(),
info
.
AsVersioned
(
legacyscheme
.
Scheme
))
}
return
nil
,
err
})
...
...
@@ -265,7 +266,7 @@ func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error {
}
info
.
Refresh
(
obj
,
true
)
return
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
Out
)
return
o
.
PrintObj
(
info
.
AsVersioned
(
legacyscheme
.
Scheme
),
o
.
Out
)
}
return
utilerrors
.
NewAggregate
(
allErrs
)
}
...
...
pkg/kubectl/cmd/taint.go
View file @
6fbcbc99
...
...
@@ -151,7 +151,7 @@ func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
return
cmdutil
.
UsageErrorf
(
cmd
,
err
.
Error
())
}
o
.
builder
=
f
.
NewBuilder
()
.
Internal
()
.
Internal
(
legacyscheme
.
Scheme
)
.
ContinueOnError
()
.
NamespaceParam
(
namespace
)
.
DefaultNamespace
()
if
o
.
selector
!=
""
{
...
...
pkg/kubectl/cmd/testing/fake.go
View file @
6fbcbc99
...
...
@@ -342,19 +342,16 @@ func (f *TestFactory) Command(*cobra.Command, bool) string {
}
func
(
f
*
TestFactory
)
NewBuilder
()
*
resource
.
Builder
{
mapper
,
typer
:=
f
.
Object
()
mapper
,
_
:=
f
.
Object
()
return
resource
.
NewBuilder
(
&
resource
.
Mapper
{
RESTMapper
:
mapper
,
ObjectTyper
:
typer
,
ClientMapper
:
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
ObjectConverter
:
legacyscheme
.
Scheme
,
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
RESTMapper
:
mapper
,
ClientMapper
:
resource
.
ClientMapperFunc
(
f
.
ClientForMapping
),
Decoder
:
cmdutil
.
InternalVersionDecoder
(),
},
&
resource
.
Mapper
{
RESTMapper
:
mapper
,
ObjectTyper
:
typer
,
ClientMapper
:
resource
.
ClientMapperFunc
(
f
.
UnstructuredClientForMapping
),
Decoder
:
unstructured
.
UnstructuredJSONScheme
,
},
...
...
pkg/kubectl/cmd/util/factory_builder.go
View file @
6fbcbc99
...
...
@@ -25,7 +25,6 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/client-go/dynamic"
scaleclient
"k8s.io/client-go/scale"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/plugins"
"k8s.io/kubernetes/pkg/kubectl/resource"
...
...
@@ -48,7 +47,7 @@ func NewBuilderFactory(clientAccessFactory ClientAccessFactory, objectMappingFac
// NewBuilder returns a new resource builder for structured api objects.
func
(
f
*
ring2Factory
)
NewBuilder
()
*
resource
.
Builder
{
clientMapperFunc
:=
resource
.
ClientMapperFunc
(
f
.
objectMappingFactory
.
ClientForMapping
)
mapper
,
typer
:=
f
.
objectMappingFactory
.
Object
()
mapper
,
_
:=
f
.
objectMappingFactory
.
Object
()
unstructuredClientMapperFunc
:=
resource
.
ClientMapperFunc
(
f
.
objectMappingFactory
.
UnstructuredClientForMapping
)
...
...
@@ -56,15 +55,12 @@ func (f *ring2Factory) NewBuilder() *resource.Builder {
return
resource
.
NewBuilder
(
&
resource
.
Mapper
{
RESTMapper
:
mapper
,
ObjectTyper
:
typer
,
ObjectConverter
:
legacyscheme
.
Scheme
,
ClientMapper
:
clientMapperFunc
,
Decoder
:
InternalVersionDecoder
(),
RESTMapper
:
mapper
,
ClientMapper
:
clientMapperFunc
,
Decoder
:
InternalVersionDecoder
(),
},
&
resource
.
Mapper
{
RESTMapper
:
mapper
,
ObjectTyper
:
typer
,
ClientMapper
:
unstructuredClientMapperFunc
,
Decoder
:
unstructured
.
UnstructuredJSONScheme
,
},
...
...
pkg/kubectl/cmd/util/factory_test.go
View file @
6fbcbc99
...
...
@@ -34,7 +34,6 @@ import (
"k8s.io/apimachinery/pkg/watch"
manualfake
"k8s.io/client-go/rest/fake"
testcore
"k8s.io/client-go/testing"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
...
...
@@ -474,11 +473,9 @@ func TestDiscoveryReplaceAliases(t *testing.T) {
mapper
:=
NewShortcutExpander
(
testapi
.
Default
.
RESTMapper
(),
ds
)
b
:=
resource
.
NewBuilder
(
&
resource
.
Mapper
{
RESTMapper
:
mapper
,
ObjectTyper
:
legacyscheme
.
Scheme
,
ObjectConverter
:
legacyscheme
.
Scheme
,
ClientMapper
:
fakeClient
(),
Decoder
:
testapi
.
Default
.
Codec
(),
RESTMapper
:
mapper
,
ClientMapper
:
fakeClient
(),
Decoder
:
testapi
.
Default
.
Codec
(),
},
nil
,
categories
.
LegacyCategoryExpander
,
...
...
pkg/kubectl/resource/builder.go
View file @
6fbcbc99
...
...
@@ -26,7 +26,9 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/sets"
...
...
@@ -50,6 +52,10 @@ type Builder struct {
internal
*
Mapper
unstructured
*
Mapper
// objectTyper is statically determinant per-command invocation based on your internal or unstructured choice
// it does not ever need to rely upon discovery.
objectTyper
runtime
.
ObjectTyper
errs
[]
error
paths
[]
Visitor
...
...
@@ -186,8 +192,8 @@ func (b *Builder) Unstructured() *Builder {
return
b
}
b
.
mapper
=
b
.
unstructured
// the unstructured mapper doesn't do any conversion
b
.
mapper
.
ObjectConverter
=
nil
b
.
objectTyper
=
unstructuredscheme
.
NewUnstructuredObjectTyper
()
return
b
}
...
...
@@ -196,7 +202,7 @@ func (b *Builder) Unstructured() *Builder {
// to the server will not be seen by the client code and may result in failure. Only
// use this mode when working offline, or when generating patches to send to the server.
// Use Unstructured if you are reading an object and performing a POST or PUT.
func
(
b
*
Builder
)
Internal
()
*
Builder
{
func
(
b
*
Builder
)
Internal
(
typer
runtime
.
ObjectTyper
)
*
Builder
{
if
b
.
internal
==
nil
{
b
.
errs
=
append
(
b
.
errs
,
fmt
.
Errorf
(
"no internal mapper provided"
))
return
b
...
...
@@ -206,6 +212,8 @@ func (b *Builder) Internal() *Builder {
return
b
}
b
.
mapper
=
b
.
internal
b
.
objectTyper
=
typer
return
b
}
...
...
@@ -762,7 +770,7 @@ func (b *Builder) visitBySelector() *Result {
if
mapping
.
Scope
.
Name
()
!=
meta
.
RESTScopeNameNamespace
{
selectorNamespace
=
""
}
visitors
=
append
(
visitors
,
NewSelector
(
client
,
mapping
,
b
.
mapper
.
ObjectConverter
,
selectorNamespace
,
labelSelector
,
fieldSelector
,
b
.
export
,
b
.
includeUninitialized
,
b
.
limitChunks
))
visitors
=
append
(
visitors
,
NewSelector
(
client
,
mapping
,
selectorNamespace
,
labelSelector
,
fieldSelector
,
b
.
export
,
b
.
includeUninitialized
,
b
.
limitChunks
))
}
if
b
.
continueOnError
{
result
.
visitor
=
EagerVisitorList
(
visitors
)
...
...
@@ -837,12 +845,11 @@ func (b *Builder) visitByResource() *Result {
}
info
:=
&
Info
{
Client
:
client
,
Mapping
:
mapping
,
toVersionedObjectConverter
:
b
.
mapper
.
ObjectConverter
,
Namespace
:
selectorNamespace
,
Name
:
tuple
.
Name
,
Export
:
b
.
export
,
Client
:
client
,
Mapping
:
mapping
,
Namespace
:
selectorNamespace
,
Name
:
tuple
.
Name
,
Export
:
b
.
export
,
}
items
=
append
(
items
,
info
)
}
...
...
@@ -903,12 +910,11 @@ func (b *Builder) visitByName() *Result {
visitors
:=
[]
Visitor
{}
for
_
,
name
:=
range
b
.
names
{
info
:=
&
Info
{
Client
:
client
,
Mapping
:
mapping
,
toVersionedObjectConverter
:
b
.
mapper
.
ObjectConverter
,
Namespace
:
selectorNamespace
,
Name
:
name
,
Export
:
b
.
export
,
Client
:
client
,
Mapping
:
mapping
,
Namespace
:
selectorNamespace
,
Name
:
name
,
Export
:
b
.
export
,
}
visitors
=
append
(
visitors
,
info
)
}
...
...
@@ -944,7 +950,7 @@ func (b *Builder) visitByPaths() *Result {
if
b
.
latest
{
// must flatten lists prior to fetching
if
b
.
flatten
{
visitors
=
NewFlattenListVisitor
(
visitors
,
b
.
mapper
)
visitors
=
NewFlattenListVisitor
(
visitors
,
b
.
objectTyper
,
b
.
mapper
)
}
// must set namespace prior to fetching
if
b
.
defaultNamespace
{
...
...
@@ -975,7 +981,7 @@ func (b *Builder) Do() *Result {
return
r
}
if
b
.
flatten
{
r
.
visitor
=
NewFlattenListVisitor
(
r
.
visitor
,
b
.
mapper
)
r
.
visitor
=
NewFlattenListVisitor
(
r
.
visitor
,
b
.
objectTyper
,
b
.
mapper
)
}
helpers
:=
[]
VisitorFunc
{}
if
b
.
defaultNamespace
{
...
...
pkg/kubectl/resource/builder_test.go
View file @
6fbcbc99
...
...
@@ -46,8 +46,12 @@ import (
"k8s.io/client-go/rest/fake"
restclientwatch
"k8s.io/client-go/rest/watch"
utiltesting
"k8s.io/client-go/util/testing"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/categories"
"k8s.io/kubernetes/pkg/kubectl/scheme"
// install the pod scheme into the legacy scheme for test typer resolution
_
"k8s.io/kubernetes/pkg/apis/core/install"
)
var
(
...
...
@@ -270,15 +274,13 @@ func newDefaultBuilder() *Builder {
func
newDefaultBuilderWith
(
client
ClientMapper
)
*
Builder
{
return
NewBuilder
(
&
Mapper
{
RESTMapper
:
restmapper
,
ObjectTyper
:
scheme
.
Scheme
,
ObjectConverter
:
scheme
.
Scheme
,
ClientMapper
:
client
,
Decoder
:
corev1Codec
,
RESTMapper
:
restmapper
,
ClientMapper
:
client
,
Decoder
:
corev1Codec
,
},
nil
,
categories
.
LegacyCategoryExpander
,
)
.
Internal
()
)
.
Internal
(
legacyscheme
.
Scheme
)
}
func
TestPathBuilderAndVersionedObjectNotDefaulted
(
t
*
testing
.
T
)
{
...
...
@@ -297,7 +299,7 @@ func TestPathBuilderAndVersionedObjectNotDefaulted(t *testing.T) {
if
info
.
Name
!=
"update-demo-kitten"
||
info
.
Namespace
!=
""
||
info
.
Object
==
nil
{
t
.
Errorf
(
"unexpected info: %#v"
,
info
)
}
obj
:=
info
.
AsVersioned
()
obj
:=
info
.
AsVersioned
(
legacyscheme
.
Scheme
)
version
,
ok
:=
obj
.
(
*
v1
.
ReplicationController
)
// versioned object does not have defaulting applied
if
obj
==
nil
||
!
ok
||
version
.
Spec
.
Replicas
!=
nil
{
...
...
pkg/kubectl/resource/mapper.go
View file @
6fbcbc99
...
...
@@ -28,9 +28,6 @@ import (
// Mapper is a convenience struct for holding references to the interfaces
// needed to create Info for arbitrary objects.
type
Mapper
struct
{
ObjectTyper
runtime
.
ObjectTyper
ObjectConverter
runtime
.
ObjectConvertor
RESTMapper
meta
.
RESTMapper
ClientMapper
ClientMapper
Decoder
runtime
.
Decoder
...
...
@@ -60,9 +57,8 @@ func (m *Mapper) InfoForData(data []byte, source string) (*Info, error) {
resourceVersion
,
_
:=
metadataAccessor
.
ResourceVersion
(
obj
)
return
&
Info
{
Client
:
client
,
Mapping
:
mapping
,
toVersionedObjectConverter
:
m
.
ObjectConverter
,
Client
:
client
,
Mapping
:
mapping
,
Source
:
source
,
Namespace
:
namespace
,
...
...
@@ -76,8 +72,8 @@ func (m *Mapper) InfoForData(data []byte, source string) (*Info, error) {
// InfoForObject creates an Info object for the given Object. An error is returned
// if the object cannot be introspected. Name and namespace will be set into Info
// if the mapping's MetadataAccessor can retrieve them.
func
(
m
*
Mapper
)
InfoForObject
(
obj
runtime
.
Object
,
preferredGVKs
[]
schema
.
GroupVersionKind
)
(
*
Info
,
error
)
{
groupVersionKinds
,
_
,
err
:=
m
.
ObjectT
yper
.
ObjectKinds
(
obj
)
func
(
m
*
Mapper
)
InfoForObject
(
obj
runtime
.
Object
,
typer
runtime
.
ObjectTyper
,
preferredGVKs
[]
schema
.
GroupVersionKind
)
(
*
Info
,
error
)
{
groupVersionKinds
,
_
,
err
:=
t
yper
.
ObjectKinds
(
obj
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"unable to get type info from the object %q: %v"
,
reflect
.
TypeOf
(
obj
),
err
)
}
...
...
@@ -100,9 +96,8 @@ func (m *Mapper) InfoForObject(obj runtime.Object, preferredGVKs []schema.GroupV
namespace
,
_
:=
metadataAccessor
.
Namespace
(
obj
)
resourceVersion
,
_
:=
metadataAccessor
.
ResourceVersion
(
obj
)
return
&
Info
{
Client
:
client
,
Mapping
:
mapping
,
toVersionedObjectConverter
:
m
.
ObjectConverter
,
Client
:
client
,
Mapping
:
mapping
,
Namespace
:
namespace
,
Name
:
name
,
...
...
pkg/kubectl/resource/selector.go
View file @
6fbcbc99
...
...
@@ -22,7 +22,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/runtime"
"k8s.io/apimachinery/pkg/watch"
)
...
...
@@ -30,7 +29,6 @@ import (
type
Selector
struct
{
Client
RESTClient
Mapping
*
meta
.
RESTMapping
ObjectConverter
runtime
.
ObjectConvertor
Namespace
string
LabelSelector
string
FieldSelector
string
...
...
@@ -40,11 +38,10 @@ type Selector struct {
}
// NewSelector creates a resource selector which hides details of getting items by their label selector.
func
NewSelector
(
client
RESTClient
,
mapping
*
meta
.
RESTMapping
,
objectConverter
runtime
.
ObjectConvertor
,
namespace
,
labelSelector
,
fieldSelector
string
,
export
,
includeUninitialized
bool
,
limitChunks
int64
)
*
Selector
{
func
NewSelector
(
client
RESTClient
,
mapping
*
meta
.
RESTMapping
,
namespace
,
labelSelector
,
fieldSelector
string
,
export
,
includeUninitialized
bool
,
limitChunks
int64
)
*
Selector
{
return
&
Selector
{
Client
:
client
,
Mapping
:
mapping
,
ObjectConverter
:
objectConverter
,
Namespace
:
namespace
,
LabelSelector
:
labelSelector
,
FieldSelector
:
fieldSelector
,
...
...
@@ -94,9 +91,8 @@ func (r *Selector) Visit(fn VisitorFunc) error {
resourceVersion
,
_
:=
metadataAccessor
.
ResourceVersion
(
list
)
nextContinueToken
,
_
:=
metadataAccessor
.
Continue
(
list
)
info
:=
&
Info
{
Client
:
r
.
Client
,
Mapping
:
r
.
Mapping
,
toVersionedObjectConverter
:
r
.
ObjectConverter
,
Client
:
r
.
Client
,
Mapping
:
r
.
Mapping
,
Namespace
:
r
.
Namespace
,
ResourceVersion
:
resourceVersion
,
...
...
pkg/kubectl/resource/visitor.go
View file @
6fbcbc99
...
...
@@ -77,8 +77,6 @@ type Info struct {
// Mapping may be nil if the object has no available metadata, but is still parseable
// from disk.
Mapping
*
meta
.
RESTMapping
// ObjectConverter allows conversion
toVersionedObjectConverter
runtime
.
ObjectConvertor
// Namespace will be set if the object is namespaced and has a specified value.
Namespace
string
...
...
@@ -183,17 +181,16 @@ func (i *Info) ResourceMapping() *meta.RESTMapping {
}
// Versioned returns the object as a Go type in the mapping's version or returns an error.
func
(
i
*
Info
)
Versioned
(
)
(
runtime
.
Object
,
error
)
{
return
i
.
toVersionedObjectConverte
r
.
ConvertToVersion
(
i
.
Object
,
i
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
func
(
i
*
Info
)
versioned
(
convertor
runtime
.
ObjectConvertor
)
(
runtime
.
Object
,
error
)
{
return
converto
r
.
ConvertToVersion
(
i
.
Object
,
i
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
}
// AsVersioned returns the object as a Go object in the external form if possible (matching the
// group version kind of the mapping, or i.Object if it cannot be converted.
func
(
i
*
Info
)
AsVersioned
()
runtime
.
Object
{
if
i
.
toVersionedObjectConverter
==
nil
{
panic
(
"attempt to call AsVersioned object using .Unstructured builder"
)
}
if
obj
,
err
:=
i
.
Versioned
();
err
==
nil
{
// Deprecated this function will be removed once calling code is updated to indicate the correct
// negoticatedserializers during contruction of the builder
func
(
i
*
Info
)
AsVersioned
(
convertor
runtime
.
ObjectConvertor
)
runtime
.
Object
{
if
obj
,
err
:=
i
.
versioned
(
convertor
);
err
==
nil
{
return
obj
}
return
i
.
Object
...
...
@@ -389,18 +386,19 @@ func (v ContinueOnErrorVisitor) Visit(fn VisitorFunc) error {
// the visit.
// TODO: allow errors to be aggregated?
type
FlattenListVisitor
struct
{
Visitor
*
Mapper
visitor
Visitor
typer
runtime
.
ObjectTyper
mapper
*
Mapper
}
// NewFlattenListVisitor creates a visitor that will expand list style runtime.Objects
// into individual items and then visit them individually.
func
NewFlattenListVisitor
(
v
Visitor
,
mapper
*
Mapper
)
Visitor
{
return
FlattenListVisitor
{
v
,
mapper
}
func
NewFlattenListVisitor
(
v
Visitor
,
typer
runtime
.
ObjectTyper
,
mapper
*
Mapper
)
Visitor
{
return
FlattenListVisitor
{
v
,
typer
,
mapper
}
}
func
(
v
FlattenListVisitor
)
Visit
(
fn
VisitorFunc
)
error
{
return
v
.
V
isitor
.
Visit
(
func
(
info
*
Info
,
err
error
)
error
{
return
v
.
v
isitor
.
Visit
(
func
(
info
*
Info
,
err
error
)
error
{
if
err
!=
nil
{
return
err
}
...
...
@@ -411,7 +409,7 @@ func (v FlattenListVisitor) Visit(fn VisitorFunc) error {
if
err
!=
nil
{
return
fn
(
info
,
nil
)
}
if
errs
:=
runtime
.
DecodeList
(
items
,
v
.
M
apper
.
Decoder
);
len
(
errs
)
>
0
{
if
errs
:=
runtime
.
DecodeList
(
items
,
v
.
m
apper
.
Decoder
);
len
(
errs
)
>
0
{
return
utilerrors
.
NewAggregate
(
errs
)
}
...
...
@@ -422,7 +420,7 @@ func (v FlattenListVisitor) Visit(fn VisitorFunc) error {
}
for
i
:=
range
items
{
item
,
err
:=
v
.
InfoForObject
(
items
[
i
]
,
preferredGVKs
)
item
,
err
:=
v
.
mapper
.
InfoForObject
(
items
[
i
],
v
.
typer
,
preferredGVKs
)
if
err
!=
nil
{
return
err
}
...
...
staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme/scheme.go
View file @
6fbcbc99
...
...
@@ -89,6 +89,14 @@ func (t unstructuredObjectTyper) ObjectKinds(obj runtime.Object) ([]schema.Group
if
_
,
ok
:=
obj
.
(
runtime
.
Unstructured
);
!
ok
{
return
nil
,
false
,
fmt
.
Errorf
(
"cannot type %T"
,
obj
)
}
gvk
:=
obj
.
GetObjectKind
()
.
GroupVersionKind
()
if
len
(
gvk
.
Kind
)
==
0
{
return
nil
,
false
,
runtime
.
NewMissingKindErr
(
"object has no kind field "
)
}
if
len
(
gvk
.
Version
)
==
0
{
return
nil
,
false
,
runtime
.
NewMissingVersionErr
(
"object has no apiVersion field"
)
}
return
[]
schema
.
GroupVersionKind
{
obj
.
GetObjectKind
()
.
GroupVersionKind
()},
false
,
nil
}
...
...
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