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
087140ae
Commit
087140ae
authored
May 21, 2018
by
David Eads
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move updatepodspecforobject out of factory
parent
813021c1
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
115 additions
and
79 deletions
+115
-79
BUILD
pkg/kubectl/cmd/set/BUILD
+1
-0
set_env.go
pkg/kubectl/cmd/set/set_env.go
+3
-2
set_image.go
pkg/kubectl/cmd/set/set_image.go
+3
-2
set_resources.go
pkg/kubectl/cmd/set/set_resources.go
+3
-2
set_serviceaccount.go
pkg/kubectl/cmd/set/set_serviceaccount.go
+3
-2
BUILD
pkg/kubectl/cmd/util/BUILD
+0
-2
factory.go
pkg/kubectl/cmd/util/factory.go
+0
-5
factory_client_access.go
pkg/kubectl/cmd/util/factory_client_access.go
+0
-64
BUILD
pkg/kubectl/polymorphichelpers/BUILD
+3
-0
interface.go
pkg/kubectl/polymorphichelpers/interface.go
+8
-0
updatepodspec.go
pkg/kubectl/polymorphichelpers/updatepodspec.go
+91
-0
No files found.
pkg/kubectl/cmd/set/BUILD
View file @
087140ae
...
...
@@ -26,6 +26,7 @@ go_library(
"//pkg/kubectl/cmd/util/env:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/polymorphichelpers:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
"//pkg/printers:go_default_library",
...
...
pkg/kubectl/cmd/set/set_env.go
View file @
087140ae
...
...
@@ -35,6 +35,7 @@ import (
envutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util/env"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
...
...
@@ -114,7 +115,7 @@ type EnvOptions struct {
output
string
dryRun
bool
builder
func
()
*
resource
.
Builder
updatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
updatePodSpecForObject
polymorphichelpers
.
UpdatePodSpecForObjectFunc
namespace
string
enforceNamespace
bool
clientset
*
kubernetes
.
Clientset
...
...
@@ -192,7 +193,7 @@ func (o *EnvOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []stri
return
fmt
.
Errorf
(
"all resources must be specified before environment changes: %s"
,
strings
.
Join
(
args
,
" "
))
}
o
.
updatePodSpecForObject
=
f
.
UpdatePodSpecForObject
o
.
updatePodSpecForObject
=
polymorphichelpers
.
UpdatePodSpecForObjectFn
o
.
output
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
o
.
dryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
...
...
pkg/kubectl/cmd/set/set_image.go
View file @
087140ae
...
...
@@ -30,6 +30,7 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -54,7 +55,7 @@ type SetImageOptions struct {
PrintObj
printers
.
ResourcePrinterFunc
Recorder
genericclioptions
.
Recorder
UpdatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
UpdatePodSpecForObject
polymorphichelpers
.
UpdatePodSpecForObjectFunc
Resources
[]
string
ContainerImages
map
[
string
]
string
...
...
@@ -134,7 +135,7 @@ func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
return
err
}
o
.
UpdatePodSpecForObject
=
f
.
UpdatePodSpecForObject
o
.
UpdatePodSpecForObject
=
polymorphichelpers
.
UpdatePodSpecForObjectFn
o
.
DryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
o
.
Output
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
o
.
ResolveImage
=
f
.
ResolveImage
...
...
pkg/kubectl/cmd/set/set_resources.go
View file @
087140ae
...
...
@@ -34,6 +34,7 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
)
...
...
@@ -84,7 +85,7 @@ type SetResourcesOptions struct {
Requests
string
ResourceRequirements
v1
.
ResourceRequirements
UpdatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
UpdatePodSpecForObject
polymorphichelpers
.
UpdatePodSpecForObjectFunc
Resources
[]
string
genericclioptions
.
IOStreams
...
...
@@ -153,7 +154,7 @@ func (o *SetResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, ar
return
err
}
o
.
UpdatePodSpecForObject
=
f
.
UpdatePodSpecForObject
o
.
UpdatePodSpecForObject
=
polymorphichelpers
.
UpdatePodSpecForObjectFn
o
.
Output
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
o
.
DryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
...
...
pkg/kubectl/cmd/set/set_serviceaccount.go
View file @
087140ae
...
...
@@ -33,6 +33,7 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
)
...
...
@@ -67,7 +68,7 @@ type SetServiceAccountOptions struct {
all
bool
output
string
local
bool
updatePodSpecForObject
func
(
runtime
.
Object
,
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
updatePodSpecForObject
polymorphichelpers
.
UpdatePodSpecForObjectFunc
infos
[]
*
resource
.
Info
serviceAccountName
string
...
...
@@ -130,7 +131,7 @@ func (o *SetServiceAccountOptions) Complete(f cmdutil.Factory, cmd *cobra.Comman
o
.
shortOutput
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
==
"name"
o
.
dryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
o
.
output
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
o
.
updatePodSpecForObject
=
f
.
UpdatePodSpecForObject
o
.
updatePodSpecForObject
=
polymorphichelpers
.
UpdatePodSpecForObjectFn
if
o
.
dryRun
{
o
.
PrintFlags
.
Complete
(
"%s (dry run)"
)
...
...
pkg/kubectl/cmd/util/BUILD
View file @
087140ae
...
...
@@ -36,11 +36,9 @@ go_library(
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
...
...
pkg/kubectl/cmd/util/factory.go
View file @
087140ae
...
...
@@ -23,7 +23,6 @@ import (
"github.com/spf13/cobra"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
...
...
@@ -79,10 +78,6 @@ type ClientAccessFactory interface {
// and which implements the common patterns for CLI interactions with generic resources.
NewBuilder
()
*
resource
.
Builder
// UpdatePodSpecForObject will call the provided function on the pod spec this object supports,
// return false if no pod spec is supported, or return an error.
UpdatePodSpecForObject
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
// MapBasedSelectorForObject returns the map-based selector associated with the provided object. If a
// new set-based selector is provided, an error is returned if the selector cannot be converted to a
// map-based selector
...
...
pkg/kubectl/cmd/util/factory_client_access.go
View file @
087140ae
...
...
@@ -26,14 +26,11 @@ import (
"path/filepath"
"strings"
"k8s.io/api/core/v1"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
appsv1beta2
"k8s.io/api/apps/v1beta2"
batchv1
"k8s.io/api/batch/v1"
batchv1beta1
"k8s.io/api/batch/v1beta1"
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
...
...
@@ -129,67 +126,6 @@ func (f *ring0Factory) RESTClient() (*restclient.RESTClient, error) {
return
restclient
.
RESTClientFor
(
clientConfig
)
}
func
(
f
*
ring0Factory
)
UpdatePodSpecForObject
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
{
// TODO: replace with a swagger schema based approach (identify pod template via schema introspection)
switch
t
:=
obj
.
(
type
)
{
case
*
v1
.
Pod
:
return
true
,
fn
(
&
t
.
Spec
)
// ReplicationController
case
*
v1
.
ReplicationController
:
if
t
.
Spec
.
Template
==
nil
{
t
.
Spec
.
Template
=
&
v1
.
PodTemplateSpec
{}
}
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// Deployment
case
*
extensionsv1beta1
.
Deployment
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1beta1
.
Deployment
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1beta2
.
Deployment
:
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
)
case
*
appsv1beta2
.
DaemonSet
:
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
)
case
*
appsv1beta2
.
ReplicaSet
:
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
)
case
*
appsv1beta2
.
StatefulSet
:
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: %T"
,
t
)
}
}
func
(
f
*
ring0Factory
)
MapBasedSelectorForObject
(
object
runtime
.
Object
)
(
string
,
error
)
{
// TODO: replace with a swagger schema based approach (identify pod selector via schema introspection)
switch
t
:=
object
.
(
type
)
{
...
...
pkg/kubectl/polymorphichelpers/BUILD
View file @
087140ae
...
...
@@ -9,6 +9,7 @@ go_library(
"interface.go",
"logsforobject.go",
"statusviewer.go",
"updatepodspec.go",
],
importpath = "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers",
visibility = ["//visibility:public"],
...
...
@@ -27,6 +28,8 @@ go_library(
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
...
...
pkg/kubectl/polymorphichelpers/interface.go
View file @
087140ae
...
...
@@ -19,6 +19,7 @@ package polymorphichelpers
import
(
"time"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/rest"
...
...
@@ -50,3 +51,10 @@ type StatusViewerFunc func(restClientGetter genericclioptions.RESTClientGetter,
// StatusViewerFn gives a way to easily override the function for unit testing if needed
var
StatusViewerFn
StatusViewerFunc
=
statusViewer
// UpdatePodSpecForObjectFunc will call the provided function on the pod spec this object supports,
// return false if no pod spec is supported, or return an error.
type
UpdatePodSpecForObjectFunc
func
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
// UpdatePodSpecForObjectFn gives a way to easily override the function for unit testing if needed
var
UpdatePodSpecForObjectFn
UpdatePodSpecForObjectFunc
=
updatePodSpecForObject
pkg/kubectl/polymorphichelpers/updatepodspec.go
0 → 100644
View file @
087140ae
/*
Copyright 2018 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
polymorphichelpers
import
(
"fmt"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
appsv1beta2
"k8s.io/api/apps/v1beta2"
batchv1
"k8s.io/api/batch/v1"
batchv1beta1
"k8s.io/api/batch/v1beta1"
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
"k8s.io/api/core/v1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
"k8s.io/apimachinery/pkg/runtime"
)
func
updatePodSpecForObject
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
{
switch
t
:=
obj
.
(
type
)
{
case
*
v1
.
Pod
:
return
true
,
fn
(
&
t
.
Spec
)
// ReplicationController
case
*
v1
.
ReplicationController
:
if
t
.
Spec
.
Template
==
nil
{
t
.
Spec
.
Template
=
&
v1
.
PodTemplateSpec
{}
}
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
// Deployment
case
*
extensionsv1beta1
.
Deployment
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1beta1
.
Deployment
:
return
true
,
fn
(
&
t
.
Spec
.
Template
.
Spec
)
case
*
appsv1beta2
.
Deployment
:
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
)
case
*
appsv1beta2
.
DaemonSet
:
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
)
case
*
appsv1beta2
.
ReplicaSet
:
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
)
case
*
appsv1beta2
.
StatefulSet
:
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: %T"
,
t
)
}
}
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