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
5432ef5c
Commit
5432ef5c
authored
Apr 27, 2018
by
David Eads
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
divide statically known typer from dynamically derive restmapper
parent
6fbcbc99
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
47 additions
and
75 deletions
+47
-75
apply_set_last_applied.go
pkg/kubectl/cmd/apply_set_last_applied.go
+1
-2
BUILD
pkg/kubectl/cmd/auth/BUILD
+1
-0
cani.go
pkg/kubectl/cmd/auth/cani.go
+1
-1
autoscale.go
pkg/kubectl/cmd/autoscale.go
+1
-3
create.go
pkg/kubectl/cmd/create/create.go
+3
-2
create_clusterrole_test.go
pkg/kubectl/cmd/create/create_clusterrole_test.go
+1
-1
create_role.go
pkg/kubectl/cmd/create/create_role.go
+1
-1
create_role_test.go
pkg/kubectl/cmd/create/create_role_test.go
+1
-1
drain_test.go
pkg/kubectl/cmd/drain_test.go
+1
-1
explain.go
pkg/kubectl/cmd/explain.go
+1
-1
expose.go
pkg/kubectl/cmd/expose.go
+1
-2
BUILD
pkg/kubectl/cmd/rollout/BUILD
+1
-1
rollout_pause.go
pkg/kubectl/cmd/rollout/rollout_pause.go
+1
-3
rollout_resume.go
pkg/kubectl/cmd/rollout/rollout_resume.go
+1
-3
rollout_undo.go
pkg/kubectl/cmd/rollout/rollout_undo.go
+1
-3
run.go
pkg/kubectl/cmd/run.go
+3
-2
set_selector.go
pkg/kubectl/cmd/set/set_selector.go
+1
-1
fake.go
pkg/kubectl/cmd/testing/fake.go
+3
-4
factory.go
pkg/kubectl/cmd/util/factory.go
+1
-1
factory_builder.go
pkg/kubectl/cmd/util/factory_builder.go
+2
-2
factory_object_mapping.go
pkg/kubectl/cmd/util/factory_object_mapping.go
+5
-16
BUILD
pkg/kubectl/resource/BUILD
+3
-0
builder.go
pkg/kubectl/resource/builder.go
+5
-0
visitor.go
pkg/kubectl/resource/visitor.go
+1
-1
lazy.go
staging/src/k8s.io/apimachinery/pkg/api/meta/lazy.go
+4
-21
print_test.go
test/integration/apiserver/print_test.go
+1
-1
etcd_storage_path_test.go
test/integration/etcd/etcd_storage_path_test.go
+1
-1
No files found.
pkg/kubectl/cmd/apply_set_last_applied.go
View file @
5432ef5c
...
...
@@ -46,7 +46,6 @@ type SetLastAppliedOptions struct {
Selector
string
InfoList
[]
*
resource
.
Info
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
Namespace
string
EnforceNamespace
bool
DryRun
bool
...
...
@@ -117,7 +116,7 @@ func (o *SetLastAppliedOptions) Complete(f cmdutil.Factory, cmd *cobra.Command)
o
.
Output
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
o
.
ShortOutput
=
o
.
Output
==
"name"
o
.
Mapper
,
o
.
Typer
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
var
err
error
o
.
Namespace
,
o
.
EnforceNamespace
,
err
=
f
.
DefaultNamespace
()
...
...
pkg/kubectl/cmd/auth/BUILD
View file @
5432ef5c
...
...
@@ -16,6 +16,7 @@ go_library(
"//build/visible_to:pkg_kubectl_cmd_auth_CONSUMERS",
],
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/authorization:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion:go_default_library",
...
...
pkg/kubectl/cmd/auth/cani.go
View file @
5432ef5c
...
...
@@ -127,7 +127,7 @@ func (o *CanIOptions) Complete(f cmdutil.Factory, args []string) error {
break
}
resourceTokens
:=
strings
.
SplitN
(
args
[
1
],
"/"
,
2
)
restMapper
,
_
:=
f
.
Object
()
restMapper
:=
f
.
RESTMapper
()
o
.
Resource
=
o
.
resourceFor
(
restMapper
,
resourceTokens
[
0
])
if
len
(
resourceTokens
)
>
1
{
o
.
ResourceName
=
resourceTokens
[
1
]
...
...
pkg/kubectl/cmd/autoscale.go
View file @
5432ef5c
...
...
@@ -23,7 +23,6 @@ import (
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
...
...
@@ -68,7 +67,6 @@ type AutoscaleOptions struct {
EnforceNamespace
bool
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
ClientForMapping
func
(
mapping
*
meta
.
RESTMapping
)
(
resource
.
RESTClient
,
error
)
GeneratorFunc
func
(
string
,
*
meta
.
RESTMapping
)
(
kubectl
.
StructuredGenerator
,
error
)
...
...
@@ -133,7 +131,7 @@ func (o *AutoscaleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
o
.
CreateAnnotation
=
cmdutil
.
GetFlagBool
(
cmd
,
cmdutil
.
ApplyAnnotationsFlag
)
o
.
Builder
=
f
.
NewBuilder
()
o
.
CanBeAutoscaled
=
f
.
CanBeAutoscaled
o
.
Mapper
,
o
.
Typer
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
o
.
ClientForMapping
=
f
.
ClientForMapping
o
.
BuilderArgs
=
args
o
.
RecordFlags
.
Complete
(
f
.
Command
(
cmd
,
false
))
...
...
pkg/kubectl/cmd/create/create.go
View file @
5432ef5c
...
...
@@ -389,9 +389,10 @@ func RunCreateSubcommand(f cmdutil.Factory, options *CreateSubcommandOptions) er
if
err
!=
nil
{
return
err
}
mapper
,
typer
:=
f
.
Object
()
mapper
:=
f
.
RESTMapper
()
if
!
options
.
DryRun
{
gvks
,
_
,
err
:=
typer
.
ObjectKinds
(
obj
)
// create subcommands have compiled knowledge of things they create, so type them directly
gvks
,
_
,
err
:=
legacyscheme
.
Scheme
.
ObjectKinds
(
obj
)
if
err
!=
nil
{
return
err
}
...
...
pkg/kubectl/cmd/create/create_clusterrole_test.go
View file @
5432ef5c
...
...
@@ -437,7 +437,7 @@ func TestClusterRoleValidate(t *testing.T) {
for
name
,
test
:=
range
tests
{
t
.
Run
(
name
,
func
(
t
*
testing
.
T
)
{
test
.
clusterRoleOptions
.
Mapper
,
_
=
tf
.
Object
()
test
.
clusterRoleOptions
.
Mapper
=
tf
.
RESTMapper
()
err
:=
test
.
clusterRoleOptions
.
Validate
()
if
test
.
expectErr
&&
err
==
nil
{
t
.
Errorf
(
"%s: expect error happens, but validate passes."
,
name
)
...
...
pkg/kubectl/cmd/create/create_role.go
View file @
5432ef5c
...
...
@@ -205,7 +205,7 @@ func (o *CreateRoleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
o
.
ResourceNames
=
resourceNames
// Complete other options for Run.
o
.
Mapper
,
_
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
o
.
DryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
o
.
OutputFormat
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
...
...
pkg/kubectl/cmd/create/create_role_test.go
View file @
5432ef5c
...
...
@@ -339,7 +339,7 @@ func TestValidate(t *testing.T) {
}
for
name
,
test
:=
range
tests
{
test
.
roleOptions
.
Mapper
,
_
=
tf
.
Object
()
test
.
roleOptions
.
Mapper
=
tf
.
RESTMapper
()
err
:=
test
.
roleOptions
.
Validate
()
if
test
.
expectErr
&&
err
==
nil
{
t
.
Errorf
(
"%s: expect error happens but validate passes."
,
name
)
...
...
pkg/kubectl/cmd/drain_test.go
View file @
5432ef5c
...
...
@@ -836,7 +836,7 @@ func TestDeletePods(t *testing.T) {
o
:=
DrainOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"drained"
),
}
o
.
mapper
,
_
=
tf
.
Object
()
o
.
mapper
=
tf
.
RESTMapper
()
o
.
Out
=
os
.
Stdout
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinterFunc
,
error
)
{
...
...
pkg/kubectl/cmd/explain.go
View file @
5432ef5c
...
...
@@ -94,7 +94,7 @@ func (o *ExplainOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error {
o
.
Recursive
=
cmdutil
.
GetFlagBool
(
cmd
,
"recursive"
)
o
.
ApiVersion
=
cmdutil
.
GetFlagString
(
cmd
,
"api-version"
)
o
.
Mapper
,
_
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
var
err
error
o
.
Schema
,
err
=
f
.
OpenAPISchema
()
...
...
pkg/kubectl/cmd/expose.go
View file @
5432ef5c
...
...
@@ -96,7 +96,6 @@ type ExposeServiceOptions struct {
Namespace
string
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
Builder
*
resource
.
Builder
...
...
@@ -188,7 +187,7 @@ func (o *ExposeServiceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) e
o
.
MapBasedSelectorForObject
=
f
.
MapBasedSelectorForObject
o
.
PortsForObject
=
f
.
PortsForObject
o
.
ProtocolsForObject
=
f
.
ProtocolsForObject
o
.
Mapper
,
o
.
Typer
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
o
.
LabelsForObject
=
f
.
LabelsForObject
o
.
Namespace
,
o
.
EnforceNamespace
,
err
=
f
.
DefaultNamespace
()
...
...
pkg/kubectl/cmd/rollout/BUILD
View file @
5432ef5c
...
...
@@ -19,6 +19,7 @@ go_library(
"//build/visible_to:pkg_kubectl_cmd_rollout_CONSUMERS",
],
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/set:go_default_library",
"//pkg/kubectl/cmd/templates:go_default_library",
...
...
@@ -29,7 +30,6 @@ go_library(
"//vendor/github.com/renstrom/dedent:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
...
...
pkg/kubectl/cmd/rollout/rollout_pause.go
View file @
5432ef5c
...
...
@@ -23,7 +23,6 @@ import (
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
...
...
@@ -42,7 +41,6 @@ type PauseConfig struct {
Pauser
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
Infos
[]
*
resource
.
Info
Out
io
.
Writer
...
...
@@ -101,7 +99,7 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i
return
cmdutil
.
UsageErrorf
(
cmd
,
"%s"
,
cmd
.
Use
)
}
o
.
Mapper
,
o
.
Typer
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
o
.
Pauser
=
f
.
Pauser
o
.
Out
=
out
...
...
pkg/kubectl/cmd/rollout/rollout_resume.go
View file @
5432ef5c
...
...
@@ -23,7 +23,6 @@ import (
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/api/legacyscheme"
...
...
@@ -42,7 +41,6 @@ type ResumeConfig struct {
Resumer
func
(
object
*
resource
.
Info
)
([]
byte
,
error
)
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
Infos
[]
*
resource
.
Info
Out
io
.
Writer
...
...
@@ -99,7 +97,7 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out
return
cmdutil
.
UsageErrorf
(
cmd
,
"%s"
,
cmd
.
Use
)
}
o
.
Mapper
,
o
.
Typer
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
o
.
Resumer
=
f
.
Resumer
o
.
Out
=
out
...
...
pkg/kubectl/cmd/rollout/rollout_undo.go
View file @
5432ef5c
...
...
@@ -20,7 +20,6 @@ import (
"io"
"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"
...
...
@@ -39,7 +38,6 @@ type UndoOptions struct {
Rollbackers
[]
kubectl
.
Rollbacker
Mapper
meta
.
RESTMapper
Typer
runtime
.
ObjectTyper
Infos
[]
*
resource
.
Info
ToRevision
int64
DryRun
bool
...
...
@@ -103,7 +101,7 @@ func (o *UndoOptions) CompleteUndo(f cmdutil.Factory, cmd *cobra.Command, out io
}
o
.
ToRevision
=
cmdutil
.
GetFlagInt64
(
cmd
,
"to-revision"
)
o
.
Mapper
,
o
.
Typer
=
f
.
Object
()
o
.
Mapper
=
f
.
RESTMapper
()
o
.
Out
=
out
o
.
DryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
...
...
pkg/kubectl/cmd/run.go
View file @
5432ef5c
...
...
@@ -643,8 +643,9 @@ func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command
return
nil
,
err
}
mapper
,
typer
:=
f
.
Object
()
groupVersionKinds
,
_
,
err
:=
typer
.
ObjectKinds
(
obj
)
mapper
:=
f
.
RESTMapper
()
// run has compiled knowledge of the thing is is creating
groupVersionKinds
,
_
,
err
:=
legacyscheme
.
Scheme
.
ObjectKinds
(
obj
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
pkg/kubectl/cmd/set/set_selector.go
View file @
5432ef5c
...
...
@@ -140,7 +140,7 @@ func (o *SetSelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, arg
return
err
}
mapper
,
_
:=
f
.
Object
()
mapper
:=
f
.
RESTMapper
()
o
.
mapper
=
mapper
o
.
resources
,
o
.
selector
,
err
=
getResourcesAndSelector
(
args
)
...
...
pkg/kubectl/cmd/testing/fake.go
View file @
5432ef5c
...
...
@@ -342,7 +342,7 @@ func (f *TestFactory) Command(*cobra.Command, bool) string {
}
func
(
f
*
TestFactory
)
NewBuilder
()
*
resource
.
Builder
{
mapper
,
_
:=
f
.
Object
()
mapper
:=
f
.
RESTMapper
()
return
resource
.
NewBuilder
(
&
resource
.
Mapper
{
...
...
@@ -430,7 +430,7 @@ func (f *TestFactory) ClientSetForVersion(requiredVersion *schema.GroupVersion)
return
f
.
ClientSet
()
}
func
(
f
*
TestFactory
)
Object
()
(
meta
.
RESTMapper
,
runtime
.
ObjectTyper
)
{
func
(
f
*
TestFactory
)
RESTMapper
()
meta
.
RESTMapper
{
groupResources
:=
testDynamicResources
()
mapper
:=
discovery
.
NewRESTMapper
(
groupResources
,
...
...
@@ -457,10 +457,9 @@ func (f *TestFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
}
// TODO: should probably be the external scheme
typer
:=
discovery
.
NewUnstructuredObjectTyper
(
groupResources
,
legacyscheme
.
Scheme
)
fakeDs
:=
&
fakeCachedDiscoveryClient
{}
expander
:=
cmdutil
.
NewShortcutExpander
(
mapper
,
fakeDs
)
return
expander
,
typer
return
expander
}
func
(
f
*
TestFactory
)
LogsForObject
(
object
,
options
runtime
.
Object
,
timeout
time
.
Duration
)
(
*
restclient
.
Request
,
error
)
{
...
...
pkg/kubectl/cmd/util/factory.go
View file @
5432ef5c
...
...
@@ -164,7 +164,7 @@ type ClientAccessFactory interface {
// Generally they provide object typing and functions that build requests based on the negotiated clients.
type
ObjectMappingFactory
interface
{
// Returns interfaces for dealing with arbitrary runtime.Objects.
Object
()
(
meta
.
RESTMapper
,
runtime
.
ObjectTyper
)
RESTMapper
()
meta
.
RESTMapper
// Returns interface for expanding categories like `all`.
CategoryExpander
()
categories
.
CategoryExpander
// Returns a RESTClient for working with the specified RESTMapping or an error. This is intended
...
...
pkg/kubectl/cmd/util/factory_builder.go
View file @
5432ef5c
...
...
@@ -47,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
,
_
:=
f
.
objectMappingFactory
.
Object
()
mapper
:=
f
.
objectMappingFactory
.
RESTMapper
()
unstructuredClientMapperFunc
:=
resource
.
ClientMapperFunc
(
f
.
objectMappingFactory
.
UnstructuredClientForMapping
)
...
...
@@ -97,7 +97,7 @@ func (f *ring2Factory) ScaleClient() (scaleclient.ScalesGetter, error) {
return
nil
,
err
}
resolver
:=
scaleclient
.
NewDiscoveryScaleKindResolver
(
discoClient
)
mapper
,
_
:=
f
.
objectMappingFactory
.
Object
()
mapper
:=
f
.
objectMappingFactory
.
RESTMapper
()
return
scaleclient
.
New
(
restClient
,
mapper
,
dynamic
.
LegacyAPIPathResolverFunc
,
resolver
),
nil
}
...
...
pkg/kubectl/cmd/util/factory_object_mapping.go
View file @
5432ef5c
...
...
@@ -76,34 +76,23 @@ func NewObjectMappingFactory(clientAccessFactory ClientAccessFactory) ObjectMapp
// the built in mapper if necessary. It supports unstructured objects either way, since
// the underlying Scheme supports Unstructured. The mapper will return converters that can
// convert versioned types to unstructured and back.
func
(
f
*
ring1Factory
)
objectLoader
()
(
meta
.
RESTMapper
,
runtime
.
ObjectTy
per
,
error
)
{
func
(
f
*
ring1Factory
)
restMapper
()
(
meta
.
RESTMap
per
,
error
)
{
discoveryClient
,
err
:=
f
.
clientAccessFactory
.
DiscoveryClient
()
if
err
!=
nil
{
glog
.
V
(
3
)
.
Infof
(
"Unable to get a discovery client to find server resources, falling back to hardcoded types: %v"
,
err
)
return
legacyscheme
.
Registry
.
RESTMapper
(),
legacyscheme
.
Scheme
,
nil
}
groupResources
,
err
:=
discovery
.
GetAPIGroupResources
(
discoveryClient
)
if
err
!=
nil
&&
!
discoveryClient
.
Fresh
()
{
discoveryClient
.
Invalidate
()
groupResources
,
err
=
discovery
.
GetAPIGroupResources
(
discoveryClient
)
}
if
err
!=
nil
{
glog
.
V
(
3
)
.
Infof
(
"Unable to retrieve API resources, falling back to hardcoded types: %v"
,
err
)
return
legacyscheme
.
Registry
.
RESTMapper
(),
legacyscheme
.
Scheme
,
nil
return
legacyscheme
.
Registry
.
RESTMapper
(),
nil
}
// allow conversion between typed and unstructured objects
interfaces
:=
meta
.
InterfacesForUnstructuredConversion
(
legacyscheme
.
Registry
.
InterfacesFor
)
mapper
:=
discovery
.
NewDeferredDiscoveryRESTMapper
(
discoveryClient
,
meta
.
VersionInterfacesFunc
(
interfaces
))
// TODO: should this also indicate it recognizes typed objects?
typer
:=
discovery
.
NewUnstructuredObjectTyper
(
groupResources
,
legacyscheme
.
Scheme
)
expander
:=
NewShortcutExpander
(
mapper
,
discoveryClient
)
return
expander
,
typer
,
err
return
expander
,
err
}
func
(
f
*
ring1Factory
)
Object
()
(
meta
.
RESTMapper
,
runtime
.
ObjectTyper
)
{
return
meta
.
NewLazy
ObjectLoader
(
f
.
objectLoad
er
)
func
(
f
*
ring1Factory
)
RESTMapper
()
meta
.
RESTMapper
{
return
meta
.
NewLazy
RESTMapperLoader
(
f
.
restMapp
er
)
}
func
(
f
*
ring1Factory
)
CategoryExpander
()
categories
.
CategoryExpander
{
...
...
pkg/kubectl/resource/BUILD
View file @
5432ef5c
...
...
@@ -29,6 +29,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/api/errors: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/unstructuredscheme:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
...
...
@@ -55,6 +56,8 @@ go_test(
],
embed = [":go_default_library"],
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/core/install:go_default_library",
"//pkg/kubectl/categories:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//vendor/github.com/ghodss/yaml:go_default_library",
...
...
pkg/kubectl/resource/builder.go
View file @
5432ef5c
...
...
@@ -644,6 +644,11 @@ func (b *Builder) mappingFor(resourceOrKindArg string) (*meta.RESTMapping, error
// if we error out here, it is because we could not match a resource or a kind
// for the given argument. To maintain consistency with previous behavior,
// announce that a resource type could not be found.
// if the error is a URL error, then we had trouble doing discovery, so we should return the original
// error since it may help a user diagnose what is actually wrong
if
_
,
ok
:=
err
.
(
*
url
.
Error
);
ok
{
return
nil
,
err
}
return
nil
,
fmt
.
Errorf
(
"the server doesn't have a resource type %q"
,
groupResource
.
Resource
)
}
...
...
pkg/kubectl/resource/visitor.go
View file @
5432ef5c
...
...
@@ -188,7 +188,7 @@ func (i *Info) versioned(convertor runtime.ObjectConvertor) (runtime.Object, err
// 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.
// Deprecated this function will be removed once calling code is updated to indicate the correct
// negoticatedserializers during contruction of the builder
// negoticatedserializers during con
s
truction of the builder
func
(
i
*
Info
)
AsVersioned
(
convertor
runtime
.
ObjectConvertor
)
runtime
.
Object
{
if
obj
,
err
:=
i
.
versioned
(
convertor
);
err
==
nil
{
return
obj
...
...
staging/src/k8s.io/apimachinery/pkg/api/meta/lazy.go
View file @
5432ef5c
...
...
@@ -19,27 +19,25 @@ package meta
import
(
"sync"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
// lazyObject defers loading the mapper and typer until necessary.
type
lazyObject
struct
{
loader
func
()
(
RESTMapper
,
runtime
.
ObjectTyper
,
error
)
loader
func
()
(
RESTMapper
,
error
)
lock
sync
.
Mutex
loaded
bool
err
error
mapper
RESTMapper
typer
runtime
.
ObjectTyper
}
// NewLazyObjectLoader handles unrecoverable errors when creating a RESTMapper / ObjectTyper by
// returning those initialization errors when the interface methods are invoked. This defers the
// initialization and any server calls until a client actually needs to perform the action.
func
NewLazy
ObjectLoader
(
fn
func
()
(
RESTMapper
,
runtime
.
ObjectTyper
,
error
))
(
RESTMapper
,
runtime
.
ObjectTyper
)
{
func
NewLazy
RESTMapperLoader
(
fn
func
()
(
RESTMapper
,
error
))
RESTMapper
{
obj
:=
&
lazyObject
{
loader
:
fn
}
return
obj
,
obj
return
obj
}
// init lazily loads the mapper and typer, returning an error if initialization has failed.
...
...
@@ -49,13 +47,12 @@ func (o *lazyObject) init() error {
if
o
.
loaded
{
return
o
.
err
}
o
.
mapper
,
o
.
typer
,
o
.
err
=
o
.
loader
()
o
.
mapper
,
o
.
err
=
o
.
loader
()
o
.
loaded
=
true
return
o
.
err
}
var
_
RESTMapper
=
&
lazyObject
{}
var
_
runtime
.
ObjectTyper
=
&
lazyObject
{}
func
(
o
*
lazyObject
)
KindFor
(
resource
schema
.
GroupVersionResource
)
(
schema
.
GroupVersionKind
,
error
)
{
if
err
:=
o
.
init
();
err
!=
nil
{
...
...
@@ -105,17 +102,3 @@ func (o *lazyObject) ResourceSingularizer(resource string) (singular string, err
}
return
o
.
mapper
.
ResourceSingularizer
(
resource
)
}
func
(
o
*
lazyObject
)
ObjectKinds
(
obj
runtime
.
Object
)
([]
schema
.
GroupVersionKind
,
bool
,
error
)
{
if
err
:=
o
.
init
();
err
!=
nil
{
return
nil
,
false
,
err
}
return
o
.
typer
.
ObjectKinds
(
obj
)
}
func
(
o
*
lazyObject
)
Recognizes
(
gvk
schema
.
GroupVersionKind
)
bool
{
if
err
:=
o
.
init
();
err
!=
nil
{
return
false
}
return
o
.
typer
.
Recognizes
(
gvk
)
}
test/integration/apiserver/print_test.go
View file @
5432ef5c
...
...
@@ -147,7 +147,7 @@ func TestServerSidePrint(t *testing.T) {
printer
:=
newFakePrinter
(
printersinternal
.
AddHandlers
)
factory
:=
util
.
NewFactory
(
clientcmd
.
NewDefaultClientConfig
(
*
createKubeConfig
(
s
.
URL
),
&
clientcmd
.
ConfigOverrides
{}))
mapper
,
_
:=
factory
.
Object
()
mapper
:=
factory
.
RESTMapper
()
for
gvk
,
apiType
:=
range
legacyscheme
.
Scheme
.
AllKnownTypes
()
{
// we do not care about internal objects or lists // TODO make sure this is always true
...
...
test/integration/etcd/etcd_storage_path_test.go
View file @
5432ef5c
...
...
@@ -811,7 +811,7 @@ func startRealMasterOrDie(t *testing.T, certDir string) (*allClient, clientv3.KV
t
.
Fatal
(
err
)
}
mapper
,
_
:=
util
.
NewFactory
(
clientcmd
.
NewDefaultClientConfig
(
*
clientcmdapi
.
NewConfig
(),
&
clientcmd
.
ConfigOverrides
{}))
.
Object
()
mapper
:=
util
.
NewFactory
(
clientcmd
.
NewDefaultClientConfig
(
*
clientcmdapi
.
NewConfig
(),
&
clientcmd
.
ConfigOverrides
{}))
.
RESTMapper
()
return
client
,
kvClient
,
mapper
}
...
...
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