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
a53a72e2
Commit
a53a72e2
authored
May 02, 2018
by
David Eads
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
udpate some examples to use external types
parent
b8aa7baa
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
159 additions
and
42 deletions
+159
-42
apply.go
pkg/kubectl/cmd/apply.go
+3
-3
create.go
pkg/kubectl/cmd/create/create.go
+1
-1
expose.go
pkg/kubectl/cmd/expose.go
+1
-1
BUILD
pkg/kubectl/cmd/set/BUILD
+3
-0
set_env.go
pkg/kubectl/cmd/set/set_env.go
+8
-13
set_env_test.go
pkg/kubectl/cmd/set/set_env_test.go
+4
-4
set_image.go
pkg/kubectl/cmd/set/set_image.go
+8
-9
set_image_test.go
pkg/kubectl/cmd/set/set_image_test.go
+6
-6
factory_client_access.go
pkg/kubectl/cmd/util/factory_client_access.go
+7
-0
factory_object_mapping.go
pkg/kubectl/cmd/util/factory_object_mapping.go
+107
-0
builder.go
pkg/kubectl/resource/builder.go
+11
-5
No files found.
pkg/kubectl/cmd/apply.go
View file @
a53a72e2
...
...
@@ -591,7 +591,7 @@ type pruner struct {
}
func
(
p
*
pruner
)
prune
(
f
cmdutil
.
Factory
,
namespace
string
,
mapping
*
meta
.
RESTMapping
,
includeUninitialized
bool
)
error
{
objList
,
err
:=
p
.
dynamicClient
.
Resource
(
mapping
.
GroupVersionKind
.
GroupVersion
()
.
WithResource
(
mapping
.
Resource
)
)
.
objList
,
err
:=
p
.
dynamicClient
.
Resource
(
mapping
.
Resource
)
.
Namespace
(
namespace
)
.
List
(
metav1
.
ListOptions
{
LabelSelector
:
p
.
labelSelector
,
...
...
@@ -647,7 +647,7 @@ func (p *pruner) delete(namespace, name string, mapping *meta.RESTMapping, scale
func
runDelete
(
namespace
,
name
string
,
mapping
*
meta
.
RESTMapping
,
c
dynamic
.
DynamicInterface
,
cascade
bool
,
gracePeriod
int
,
clientsetFunc
func
()
(
internalclientset
.
Interface
,
error
),
scaleClient
scaleclient
.
ScalesGetter
)
error
{
if
!
cascade
{
return
c
.
Resource
(
mapping
.
GroupVersionKind
.
GroupVersion
()
.
WithResource
(
mapping
.
Resource
)
)
.
Namespace
(
namespace
)
.
Delete
(
name
,
nil
)
return
c
.
Resource
(
mapping
.
Resource
)
.
Namespace
(
namespace
)
.
Delete
(
name
,
nil
)
}
cs
,
err
:=
clientsetFunc
()
if
err
!=
nil
{
...
...
@@ -658,7 +658,7 @@ func runDelete(namespace, name string, mapping *meta.RESTMapping, c dynamic.Dyna
if
_
,
ok
:=
err
.
(
*
kubectl
.
NoSuchReaperError
);
!
ok
{
return
err
}
return
c
.
Resource
(
mapping
.
GroupVersionKind
.
GroupVersion
()
.
WithResource
(
mapping
.
Resource
)
)
.
Namespace
(
namespace
)
.
Delete
(
name
,
nil
)
return
c
.
Resource
(
mapping
.
Resource
)
.
Namespace
(
namespace
)
.
Delete
(
name
,
nil
)
}
var
options
*
metav1
.
DeleteOptions
if
gracePeriod
>=
0
{
...
...
pkg/kubectl/cmd/create/create.go
View file @
a53a72e2
...
...
@@ -421,7 +421,7 @@ func RunCreateSubcommand(f cmdutil.Factory, options *CreateSubcommandOptions) er
if
mapping
.
Scope
.
Name
()
==
meta
.
RESTScopeNameRoot
{
namespace
=
""
}
actualObject
,
err
:=
dynamicClient
.
Resource
(
mapping
.
GroupVersionKind
.
GroupVersion
()
.
WithResource
(
mapping
.
Resource
)
)
.
Namespace
(
namespace
)
.
Create
(
asUnstructured
)
actualObject
,
err
:=
dynamicClient
.
Resource
(
mapping
.
Resource
)
.
Namespace
(
namespace
)
.
Create
(
asUnstructured
)
if
err
!=
nil
{
return
err
}
...
...
pkg/kubectl/cmd/expose.go
View file @
a53a72e2
...
...
@@ -346,7 +346,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
return
err
}
// Serialize the object with the annotation applied.
actualObject
,
err
:=
o
.
DynamicClient
.
Resource
(
objMapping
.
GroupVersionKind
.
GroupVersion
()
.
WithResource
(
objMapping
.
Resource
)
)
.
Namespace
(
o
.
Namespace
)
.
Create
(
asUnstructured
)
actualObject
,
err
:=
o
.
DynamicClient
.
Resource
(
objMapping
.
Resource
)
.
Namespace
(
o
.
Namespace
)
.
Create
(
asUnstructured
)
if
err
!=
nil
{
return
err
}
...
...
pkg/kubectl/cmd/set/BUILD
View file @
a53a72e2
...
...
@@ -27,12 +27,14 @@ go_library(
"//pkg/kubectl/cmd/util/env:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_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/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
...
...
@@ -81,6 +83,7 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1: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",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/fake:go_default_library",
],
...
...
pkg/kubectl/cmd/set/set_env.go
View file @
a53a72e2
...
...
@@ -30,12 +30,12 @@ import (
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
envutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util/env"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
...
...
@@ -241,7 +241,7 @@ func (o *EnvOptions) RunEnv() error {
if
len
(
o
.
From
)
!=
0
{
b
:=
o
.
builder
()
.
WithScheme
(
legacyscheme
.
Scheme
)
.
WithScheme
(
scheme
.
Scheme
,
scheme
.
Registry
.
RegisteredGroupVersions
()
...
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
o
.
namespace
)
.
DefaultNamespace
()
.
...
...
@@ -261,11 +261,7 @@ func (o *EnvOptions) RunEnv() error {
}
for
_
,
info
:=
range
infos
{
versionedObject
,
err
:=
legacyscheme
.
Scheme
.
ConvertToVersion
(
info
.
Object
,
info
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
if
err
!=
nil
{
return
err
}
switch
from
:=
versionedObject
.
(
type
)
{
switch
from
:=
info
.
Object
.
(
type
)
{
case
*
v1
.
Secret
:
for
key
:=
range
from
.
Data
{
envVar
:=
v1
.
EnvVar
{
...
...
@@ -309,7 +305,7 @@ func (o *EnvOptions) RunEnv() error {
}
b
:=
o
.
builder
()
.
WithScheme
(
legacyscheme
.
Scheme
)
.
WithScheme
(
scheme
.
Scheme
,
scheme
.
Registry
.
RegisteredGroupVersions
()
...
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
o
.
namespace
)
.
DefaultNamespace
()
.
...
...
@@ -326,8 +322,7 @@ func (o *EnvOptions) RunEnv() error {
if
err
!=
nil
{
return
err
}
patches
:=
CalculatePatches
(
infos
,
cmdutil
.
InternalVersionJSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
info
.
Object
=
cmdutil
.
AsDefaultVersionedOrOriginal
(
info
.
Object
,
info
.
Mapping
)
patches
:=
CalculatePatches
(
infos
,
scheme
.
DefaultJSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
_
,
err
:=
o
.
updatePodSpecForObject
(
info
.
Object
,
func
(
spec
*
v1
.
PodSpec
)
error
{
resolutionErrorsEncountered
:=
false
containers
,
_
:=
selectContainers
(
spec
.
Containers
,
o
.
ContainerSelector
)
...
...
@@ -394,7 +389,7 @@ func (o *EnvOptions) RunEnv() error {
})
if
err
==
nil
{
return
runtime
.
Encode
(
cmdutil
.
InternalVersion
JSONEncoder
(),
info
.
Object
)
return
runtime
.
Encode
(
scheme
.
Default
JSONEncoder
(),
info
.
Object
)
}
return
nil
,
err
})
...
...
@@ -418,7 +413,7 @@ func (o *EnvOptions) RunEnv() error {
}
if
o
.
Local
||
o
.
dryRun
{
if
err
:=
o
.
PrintObj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
patch
.
Info
.
Object
,
patch
.
Info
.
Mapping
)
,
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
Object
,
o
.
Out
);
err
!=
nil
{
return
err
}
continue
...
...
@@ -437,7 +432,7 @@ func (o *EnvOptions) RunEnv() error {
return
fmt
.
Errorf
(
"at least one environment variable must be provided"
)
}
if
err
:=
o
.
PrintObj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
info
.
Object
,
info
.
Mapping
)
,
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
info
.
Object
,
o
.
Out
);
err
!=
nil
{
return
err
}
}
...
...
pkg/kubectl/cmd/set/set_env_test.go
View file @
a53a72e2
...
...
@@ -36,9 +36,9 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
...
...
@@ -50,7 +50,7 @@ func TestSetEnvLocal(t *testing.T) {
tf
:=
cmdtesting
.
NewTestFactory
()
defer
tf
.
Cleanup
()
ns
:=
legacyscheme
.
Codecs
ns
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
tf
.
Client
=
&
fake
.
RESTClient
{
GroupVersion
:
schema
.
GroupVersion
{
Version
:
""
},
NegotiatedSerializer
:
ns
,
...
...
@@ -93,7 +93,7 @@ func TestSetMultiResourcesEnvLocal(t *testing.T) {
tf
:=
cmdtesting
.
NewTestFactory
()
defer
tf
.
Cleanup
()
ns
:=
legacyscheme
.
Codecs
ns
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
tf
.
Client
=
&
fake
.
RESTClient
{
GroupVersion
:
schema
.
GroupVersion
{
Version
:
""
},
NegotiatedSerializer
:
ns
,
...
...
@@ -464,7 +464,7 @@ func TestSetEnvRemote(t *testing.T) {
defer
tf
.
Cleanup
()
codec
:=
scheme
.
Codecs
.
CodecForVersions
(
scheme
.
Codecs
.
LegacyCodec
(
groupVersion
),
scheme
.
Codecs
.
UniversalDecoder
(
groupVersion
),
groupVersion
,
groupVersion
)
ns
:=
legacyscheme
.
Codecs
ns
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
tf
.
Namespace
=
"test"
tf
.
Client
=
&
fake
.
RESTClient
{
GroupVersion
:
groupVersion
,
...
...
pkg/kubectl/cmd/set/set_image.go
View file @
a53a72e2
...
...
@@ -19,11 +19,9 @@ package set
import
(
"fmt"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/printers"
"github.com/golang/glog"
"github.com/spf13/cobra"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
...
...
@@ -32,7 +30,9 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// ImageOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
...
...
@@ -161,7 +161,7 @@ func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
includeUninitialized
:=
cmdutil
.
ShouldIncludeUninitialized
(
cmd
,
false
)
builder
:=
f
.
NewBuilder
()
.
WithScheme
(
legacyscheme
.
Scheme
)
.
WithScheme
(
scheme
.
Scheme
,
scheme
.
Registry
.
RegisteredGroupVersions
()
...
)
.
LocalParam
(
o
.
Local
)
.
ContinueOnError
()
.
NamespaceParam
(
cmdNamespace
)
.
DefaultNamespace
()
.
...
...
@@ -209,9 +209,8 @@ func (o *SetImageOptions) Validate() error {
func
(
o
*
SetImageOptions
)
Run
()
error
{
allErrs
:=
[]
error
{}
patches
:=
CalculatePatches
(
o
.
Infos
,
cmdutil
.
InternalVersion
JSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
patches
:=
CalculatePatches
(
o
.
Infos
,
scheme
.
Default
JSONEncoder
(),
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
{
transformed
:=
false
info
.
Object
=
cmdutil
.
AsDefaultVersionedOrOriginal
(
info
.
Object
,
info
.
Mapping
)
_
,
err
:=
o
.
UpdatePodSpecForObject
(
info
.
Object
,
func
(
spec
*
v1
.
PodSpec
)
error
{
for
name
,
image
:=
range
o
.
ContainerImages
{
var
(
...
...
@@ -259,7 +258,7 @@ func (o *SetImageOptions) Run() error {
glog
.
V
(
4
)
.
Infof
(
"error recording current command: %v"
,
err
)
}
return
runtime
.
Encode
(
cmdutil
.
InternalVersion
JSONEncoder
(),
info
.
Object
)
return
runtime
.
Encode
(
scheme
.
Default
JSONEncoder
(),
info
.
Object
)
})
for
_
,
patch
:=
range
patches
{
...
...
@@ -275,7 +274,7 @@ func (o *SetImageOptions) Run() error {
}
if
o
.
Local
||
o
.
DryRun
{
if
err
:=
o
.
PrintObj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
patch
.
Info
.
Object
,
patch
.
Info
.
Mapping
)
,
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
Object
,
o
.
Out
);
err
!=
nil
{
return
err
}
continue
...
...
@@ -289,7 +288,7 @@ func (o *SetImageOptions) Run() error {
}
info
.
Refresh
(
obj
,
true
)
if
err
:=
o
.
PrintObj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
info
.
Object
,
info
.
Mapping
)
,
o
.
Out
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
info
.
Object
,
o
.
Out
);
err
!=
nil
{
return
err
}
}
...
...
pkg/kubectl/cmd/set/set_image_test.go
View file @
a53a72e2
...
...
@@ -24,9 +24,8 @@ import (
"strings"
"testing"
"k8s.io/kubernetes/pkg/printers"
"github.com/stretchr/testify/assert"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
appsv1beta2
"k8s.io/api/apps/v1beta2"
...
...
@@ -36,21 +35,22 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
func
TestImageLocal
(
t
*
testing
.
T
)
{
tf
:=
cmdtesting
.
NewTestFactory
()
defer
tf
.
Cleanup
()
ns
:=
legacyscheme
.
Codecs
ns
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
tf
.
Client
=
&
fake
.
RESTClient
{
GroupVersion
:
schema
.
GroupVersion
{
Version
:
""
},
...
...
@@ -173,7 +173,7 @@ func TestSetMultiResourcesImageLocal(t *testing.T) {
tf
:=
cmdtesting
.
NewTestFactory
()
defer
tf
.
Cleanup
()
ns
:=
legacyscheme
.
Codecs
ns
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
tf
.
Client
=
&
fake
.
RESTClient
{
GroupVersion
:
schema
.
GroupVersion
{
Version
:
""
},
...
...
@@ -554,7 +554,7 @@ func TestSetImageRemote(t *testing.T) {
defer
tf
.
Cleanup
()
codec
:=
scheme
.
Codecs
.
CodecForVersions
(
scheme
.
Codecs
.
LegacyCodec
(
groupVersion
),
scheme
.
Codecs
.
UniversalDecoder
(
groupVersion
),
groupVersion
,
groupVersion
)
ns
:=
legacyscheme
.
Codecs
ns
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
tf
.
Namespace
=
"test"
tf
.
Client
=
&
fake
.
RESTClient
{
GroupVersion
:
groupVersion
,
...
...
pkg/kubectl/cmd/util/factory_client_access.go
View file @
a53a72e2
...
...
@@ -257,6 +257,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
t
.
Spec
.
Template
=
&
v1
.
PodTemplateSpec
{}
}
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// Deployment
case
*
extensionsv1beta1
.
Deployment
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
...
...
@@ -266,6 +267,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1
.
Deployment
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// DaemonSet
case
*
extensionsv1beta1
.
DaemonSet
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
...
...
@@ -273,6 +275,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1
.
DaemonSet
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// ReplicaSet
case
*
extensionsv1beta1
.
ReplicaSet
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
...
...
@@ -280,6 +283,7 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1
.
ReplicaSet
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// StatefulSet
case
*
appsv1beta1
.
StatefulSet
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
...
...
@@ -287,14 +291,17 @@ func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.Po
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1
.
StatefulSet
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// Job
case
*
batchv1
.
Job
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// CronJob
case
*
batchv1beta1
.
CronJob
:
return
true
,
fn
(
&
t
.
Spec
.
JobTemplate
.
Spec
.
Template
.
Spec
)
case
*
batchv2alpha1
.
CronJob
:
return
true
,
fn
(
&
t
.
Spec
.
JobTemplate
.
Spec
.
Template
.
Spec
)
default
:
return
false
,
fmt
.
Errorf
(
"the object is not a pod or does not have a pod template"
)
}
...
...
pkg/kubectl/cmd/util/factory_object_mapping.go
View file @
a53a72e2
...
...
@@ -27,7 +27,13 @@ import (
"sync"
"time"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
appsv1beta2
"k8s.io/api/apps/v1beta2"
batchv1
"k8s.io/api/batch/v1"
"k8s.io/api/core/v1"
corev1
"k8s.io/api/core/v1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
...
...
@@ -38,6 +44,7 @@ import (
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/batch"
api
"k8s.io/kubernetes/pkg/apis/core"
apiv1
"k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/kubectl"
...
...
@@ -198,6 +205,8 @@ func (f *ring1Factory) LogsForObject(object, options runtime.Object, timeout tim
switch
t
:=
object
.
(
type
)
{
case
*
api
.
Pod
:
return
clientset
.
Core
()
.
Pods
(
t
.
Namespace
)
.
GetLogs
(
t
.
Name
,
opts
),
nil
case
*
corev1
.
Pod
:
return
clientset
.
Core
()
.
Pods
(
t
.
Namespace
)
.
GetLogs
(
t
.
Name
,
opts
),
nil
}
namespace
,
selector
,
err
:=
selectorsForObject
(
object
)
...
...
@@ -223,10 +232,31 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
extensionsv1beta1
.
ReplicaSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1
.
ReplicaSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1beta2
.
ReplicaSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
api
.
ReplicationController
:
namespace
=
t
.
Namespace
selector
=
labels
.
SelectorFromSet
(
t
.
Spec
.
Selector
)
case
*
corev1
.
ReplicationController
:
namespace
=
t
.
Namespace
selector
=
labels
.
SelectorFromSet
(
t
.
Spec
.
Selector
)
case
*
apps
.
StatefulSet
:
namespace
=
t
.
Namespace
...
...
@@ -234,6 +264,24 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1
.
StatefulSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1beta1
.
StatefulSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1beta2
.
StatefulSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
extensions
.
DaemonSet
:
namespace
=
t
.
Namespace
...
...
@@ -241,6 +289,24 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
extensionsv1beta1
.
DaemonSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1
.
DaemonSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1beta2
.
DaemonSet
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
extensions
.
Deployment
:
namespace
=
t
.
Namespace
...
...
@@ -248,6 +314,30 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
extensionsv1beta1
.
Deployment
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1
.
Deployment
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1beta1
.
Deployment
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
appsv1beta2
.
Deployment
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
batch
.
Job
:
namespace
=
t
.
Namespace
...
...
@@ -255,6 +345,12 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
batchv1
.
Job
:
namespace
=
t
.
Namespace
selector
,
err
=
metav1
.
LabelSelectorAsSelector
(
t
.
Spec
.
Selector
)
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid label selector: %v"
,
err
)
}
case
*
api
.
Service
:
namespace
=
t
.
Namespace
...
...
@@ -262,6 +358,12 @@ func selectorsForObject(object runtime.Object) (namespace string, selector label
return
""
,
nil
,
fmt
.
Errorf
(
"invalid service '%s': Service is defined without a selector"
,
t
.
Name
)
}
selector
=
labels
.
SelectorFromSet
(
t
.
Spec
.
Selector
)
case
*
corev1
.
Service
:
namespace
=
t
.
Namespace
if
t
.
Spec
.
Selector
==
nil
||
len
(
t
.
Spec
.
Selector
)
==
0
{
return
""
,
nil
,
fmt
.
Errorf
(
"invalid service '%s': Service is defined without a selector"
,
t
.
Name
)
}
selector
=
labels
.
SelectorFromSet
(
t
.
Spec
.
Selector
)
default
:
return
""
,
nil
,
fmt
.
Errorf
(
"selector for %T not implemented"
,
object
)
...
...
@@ -325,6 +427,11 @@ func (f *ring1Factory) AttachablePodForObject(object runtime.Object, timeout tim
switch
t
:=
object
.
(
type
)
{
case
*
api
.
Pod
:
return
t
,
nil
case
*
corev1
.
Pod
:
internalPod
:=
&
api
.
Pod
{}
err
:=
apiv1
.
Convert_v1_Pod_To_core_Pod
(
t
,
internalPod
,
nil
)
return
internalPod
,
err
}
namespace
,
selector
,
err
:=
selectorsForObject
(
object
)
...
...
pkg/kubectl/resource/builder.go
View file @
a53a72e2
...
...
@@ -64,7 +64,7 @@ type Builder struct {
objectTyper
runtime
.
ObjectTyper
// codecFactory describes which codecs you want to use
codecFactory
*
serializer
.
CodecFactory
negotiatedSerializer
runtime
.
NegotiatedSerializer
// local indicates that we cannot make server calls
local
bool
...
...
@@ -240,13 +240,19 @@ func (b *Builder) WithScheme(scheme *runtime.Scheme, decodingVersions ...schema.
}
b
.
objectTyper
=
scheme
codecFactory
:=
serializer
.
NewCodecFactory
(
scheme
)
b
.
codecFactory
=
&
codecFactory
negotiatedSerializer
:=
runtime
.
NegotiatedSerializer
(
codecFactory
)
// if you specified versions, you're specifying a desire for external types, which you don't want to round-trip through
// internal types
if
len
(
decodingVersions
)
>
0
{
negotiatedSerializer
=
&
serializer
.
DirectCodecFactory
{
CodecFactory
:
codecFactory
}
}
b
.
negotiatedSerializer
=
negotiatedSerializer
b
.
mapper
=
&
mapper
{
localFn
:
b
.
isLocal
,
restMapper
:
b
.
restMapper
,
clientFn
:
b
.
getClient
,
decoder
:
b
.
codecFactory
.
UniversalDecoder
(
decodingVersions
...
),
decoder
:
codecFactory
.
UniversalDecoder
(
decodingVersions
...
),
}
return
b
...
...
@@ -827,8 +833,8 @@ func (b *Builder) getClient(gv schema.GroupVersion) (RESTClient, error) {
return
b
.
fakeClientFn
(
gv
)
}
if
b
.
codecFactory
!=
nil
{
return
b
.
clientConfigFn
.
clientForGroupVersion
(
gv
,
b
.
codecFactory
)
if
b
.
negotiatedSerializer
!=
nil
{
return
b
.
clientConfigFn
.
clientForGroupVersion
(
gv
,
b
.
negotiatedSerializer
)
}
return
b
.
clientConfigFn
.
unstructuredClientForGroupVersion
(
gv
)
...
...
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