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
44f8bb11
Commit
44f8bb11
authored
Sep 04, 2017
by
zhengjiajin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove todo(#42787)Add fallback for cronjobs, and move some useful function to cmdutil
parent
156c4b44
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
54 additions
and
56 deletions
+54
-56
BUILD
pkg/kubectl/cmd/BUILD
+0
-3
create_deployment.go
pkg/kubectl/cmd/create_deployment.go
+1
-32
run.go
pkg/kubectl/cmd/run.go
+4
-21
BUILD
pkg/kubectl/cmd/util/BUILD
+2
-0
factory_client_access.go
pkg/kubectl/cmd/util/factory_client_access.go
+47
-0
No files found.
pkg/kubectl/cmd/BUILD
View file @
44f8bb11
...
@@ -106,10 +106,8 @@ go_library(
...
@@ -106,10 +106,8 @@ go_library(
"//vendor/github.com/renstrom/dedent:go_default_library",
"//vendor/github.com/renstrom/dedent:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
"//vendor/k8s.io/api/batch/v1: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/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/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1: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/errors:go_default_library",
...
@@ -134,7 +132,6 @@ go_library(
...
@@ -134,7 +132,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library",
"//vendor/k8s.io/client-go/discovery:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/portforward:go_default_library",
"//vendor/k8s.io/client-go/tools/portforward:go_default_library",
...
...
pkg/kubectl/cmd/create_deployment.go
View file @
44f8bb11
...
@@ -22,8 +22,6 @@ import (
...
@@ -22,8 +22,6 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/cobra"
appsv1beta1
"k8s.io/api/apps/v1beta1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
@@ -63,35 +61,6 @@ func NewCmdCreateDeployment(f cmdutil.Factory, cmdOut, cmdErr io.Writer) *cobra.
...
@@ -63,35 +61,6 @@ func NewCmdCreateDeployment(f cmdutil.Factory, cmdOut, cmdErr io.Writer) *cobra.
return
cmd
return
cmd
}
}
// fallbackGeneratorNameIfNecessary returns the name of the old generator
// (v1beta1) if server does not support apps/v1beta1 deployments. Otherwise, the
// generator string is returned unchanged.
//
// If the generator name is changed, print a warning message to let the user
// know.
func
fallbackGeneratorNameIfNecessary
(
generatorName
string
,
resourcesList
[]
*
metav1
.
APIResourceList
,
cmdErr
io
.
Writer
,
)
string
{
if
generatorName
==
cmdutil
.
DeploymentBasicAppsV1Beta1GeneratorName
&&
!
contains
(
resourcesList
,
appsv1beta1
.
SchemeGroupVersion
.
WithResource
(
"deployments"
))
{
fmt
.
Fprintf
(
cmdErr
,
"WARNING: New deployments generator %q specified, "
+
"but apps/v1beta1.Deployments are not available. "
+
"Falling back to %q.
\n
"
,
cmdutil
.
DeploymentBasicAppsV1Beta1GeneratorName
,
cmdutil
.
DeploymentBasicV1Beta1GeneratorName
,
)
return
cmdutil
.
DeploymentBasicV1Beta1GeneratorName
}
return
generatorName
}
// generatorFromName returns the appropriate StructuredGenerator based on the
// generatorFromName returns the appropriate StructuredGenerator based on the
// generatorName. If the generatorName is unrecognized, then return (nil,
// generatorName. If the generatorName is unrecognized, then return (nil,
// false).
// false).
...
@@ -150,7 +119,7 @@ func createDeployment(f cmdutil.Factory, cmdOut, cmdErr io.Writer,
...
@@ -150,7 +119,7 @@ func createDeployment(f cmdutil.Factory, cmdOut, cmdErr io.Writer,
// It is possible we have to modify the user-provided generator name if
// It is possible we have to modify the user-provided generator name if
// the server does not have support for the requested generator.
// the server does not have support for the requested generator.
generatorName
=
f
allbackGeneratorNameIfNecessary
(
generatorName
,
resourcesList
,
cmdErr
)
generatorName
=
cmdutil
.
F
allbackGeneratorNameIfNecessary
(
generatorName
,
resourcesList
,
cmdErr
)
imageNames
:=
cmdutil
.
GetFlagStringSlice
(
cmd
,
"image"
)
imageNames
:=
cmdutil
.
GetFlagStringSlice
(
cmd
,
"image"
)
generator
,
ok
:=
generatorFromName
(
generatorName
,
imageNames
,
deploymentName
)
generator
,
ok
:=
generatorFromName
(
generatorName
,
imageNames
,
deploymentName
)
...
...
pkg/kubectl/cmd/run.go
View file @
44f8bb11
...
@@ -25,15 +25,12 @@ import (
...
@@ -25,15 +25,12 @@ import (
batchv1
"k8s.io/api/batch/v1"
batchv1
"k8s.io/api/batch/v1"
batchv1beta1
"k8s.io/api/batch/v1beta1"
batchv1beta1
"k8s.io/api/batch/v1beta1"
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
conditions
"k8s.io/kubernetes/pkg/client/unversioned"
conditions
"k8s.io/kubernetes/pkg/client/unversioned"
...
@@ -226,7 +223,7 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
...
@@ -226,7 +223,7 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
generatorName
:=
cmdutil
.
GetFlagString
(
cmd
,
"generator"
)
generatorName
:=
cmdutil
.
GetFlagString
(
cmd
,
"generator"
)
schedule
:=
cmdutil
.
GetFlagString
(
cmd
,
"schedule"
)
schedule
:=
cmdutil
.
GetFlagString
(
cmd
,
"schedule"
)
if
len
(
schedule
)
!=
0
&&
len
(
generatorName
)
==
0
{
if
len
(
schedule
)
!=
0
&&
len
(
generatorName
)
==
0
{
if
contains
(
resourcesList
,
batchv1beta1
.
SchemeGroupVersion
.
WithResource
(
"cronjobs"
))
{
if
c
mdutil
.
C
ontains
(
resourcesList
,
batchv1beta1
.
SchemeGroupVersion
.
WithResource
(
"cronjobs"
))
{
generatorName
=
cmdutil
.
CronJobV1Beta1GeneratorName
generatorName
=
cmdutil
.
CronJobV1Beta1GeneratorName
}
else
{
}
else
{
generatorName
=
cmdutil
.
CronJobV2Alpha1GeneratorName
generatorName
=
cmdutil
.
CronJobV2Alpha1GeneratorName
...
@@ -237,13 +234,13 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
...
@@ -237,13 +234,13 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
case
api
.
RestartPolicyAlways
:
case
api
.
RestartPolicyAlways
:
// TODO: we need to deprecate this along with extensions/v1beta1.Deployments
// TODO: we need to deprecate this along with extensions/v1beta1.Deployments
// in favor of the new generator for apps/v1beta1.Deployments
// in favor of the new generator for apps/v1beta1.Deployments
if
contains
(
resourcesList
,
extensionsv1beta1
.
SchemeGroupVersion
.
WithResource
(
"deployments"
))
{
if
c
mdutil
.
C
ontains
(
resourcesList
,
extensionsv1beta1
.
SchemeGroupVersion
.
WithResource
(
"deployments"
))
{
generatorName
=
cmdutil
.
DeploymentV1Beta1GeneratorName
generatorName
=
cmdutil
.
DeploymentV1Beta1GeneratorName
}
else
{
}
else
{
generatorName
=
cmdutil
.
RunV1GeneratorName
generatorName
=
cmdutil
.
RunV1GeneratorName
}
}
case
api
.
RestartPolicyOnFailure
:
case
api
.
RestartPolicyOnFailure
:
if
contains
(
resourcesList
,
batchv1
.
SchemeGroupVersion
.
WithResource
(
"jobs"
))
{
if
c
mdutil
.
C
ontains
(
resourcesList
,
batchv1
.
SchemeGroupVersion
.
WithResource
(
"jobs"
))
{
generatorName
=
cmdutil
.
JobV1GeneratorName
generatorName
=
cmdutil
.
JobV1GeneratorName
}
else
{
}
else
{
generatorName
=
cmdutil
.
RunPodV1GeneratorName
generatorName
=
cmdutil
.
RunPodV1GeneratorName
...
@@ -253,13 +250,7 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
...
@@ -253,13 +250,7 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
}
}
}
}
// TODO: this should be removed alongside with extensions/v1beta1 depployments generator
generatorName
=
cmdutil
.
FallbackGeneratorNameIfNecessary
(
generatorName
,
resourcesList
,
cmdErr
)
generatorName
=
fallbackGeneratorNameIfNecessary
(
generatorName
,
resourcesList
,
cmdErr
)
if
generatorName
==
cmdutil
.
CronJobV2Alpha1GeneratorName
&&
!
contains
(
resourcesList
,
batchv2alpha1
.
SchemeGroupVersion
.
WithResource
(
"cronjobs"
))
{
return
fmt
.
Errorf
(
"CronJob generator specified, but batch/v2alpha1.CronJobs are not available"
)
}
generators
:=
f
.
Generators
(
"run"
)
generators
:=
f
.
Generators
(
"run"
)
generator
,
found
:=
generators
[
generatorName
]
generator
,
found
:=
generators
[
generatorName
]
...
@@ -407,14 +398,6 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
...
@@ -407,14 +398,6 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
return
nil
return
nil
}
}
// TODO turn this into reusable method checking available resources
func
contains
(
resourcesList
[]
*
metav1
.
APIResourceList
,
resource
schema
.
GroupVersionResource
)
bool
{
resources
:=
discovery
.
FilteredBy
(
discovery
.
ResourcePredicateFunc
(
func
(
gv
string
,
r
*
metav1
.
APIResource
)
bool
{
return
resource
.
GroupVersion
()
.
String
()
==
gv
&&
resource
.
Resource
==
r
.
Name
}),
resourcesList
)
return
len
(
resources
)
!=
0
}
// waitForPod watches the given pod until the exitCondition is true
// waitForPod watches the given pod until the exitCondition is true
func
waitForPod
(
podClient
coreclient
.
PodsGetter
,
ns
,
name
string
,
exitCondition
watch
.
ConditionFunc
)
(
*
api
.
Pod
,
error
)
{
func
waitForPod
(
podClient
coreclient
.
PodsGetter
,
ns
,
name
string
,
exitCondition
watch
.
ConditionFunc
)
(
*
api
.
Pod
,
error
)
{
w
,
err
:=
podClient
.
Pods
(
ns
)
.
Watch
(
metav1
.
SingleObject
(
metav1
.
ObjectMeta
{
Name
:
name
}))
w
,
err
:=
podClient
.
Pods
(
ns
)
.
Watch
(
metav1
.
SingleObject
(
metav1
.
ObjectMeta
{
Name
:
name
}))
...
...
pkg/kubectl/cmd/util/BUILD
View file @
44f8bb11
...
@@ -47,6 +47,8 @@ go_library(
...
@@ -47,6 +47,8 @@ go_library(
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/api/apps/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/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors: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/api/meta:go_default_library",
...
...
pkg/kubectl/cmd/util/factory_client_access.go
View file @
44f8bb11
...
@@ -32,7 +32,10 @@ import (
...
@@ -32,7 +32,10 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/spf13/pflag"
appsv1beta1
"k8s.io/api/apps/v1beta1"
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/schema"
utilflag
"k8s.io/apiserver/pkg/util/flag"
utilflag
"k8s.io/apiserver/pkg/util/flag"
...
@@ -571,6 +574,50 @@ func DefaultGenerators(cmdName string) map[string]kubectl.Generator {
...
@@ -571,6 +574,50 @@ func DefaultGenerators(cmdName string) map[string]kubectl.Generator {
return
generator
return
generator
}
}
// fallbackGeneratorNameIfNecessary returns the name of the old generator
// if server does not support new generator. Otherwise, the
// generator string is returned unchanged.
//
// If the generator name is changed, print a warning message to let the user
// know.
func
FallbackGeneratorNameIfNecessary
(
generatorName
string
,
resourcesList
[]
*
metav1
.
APIResourceList
,
cmdErr
io
.
Writer
,
)
string
{
switch
generatorName
{
case
DeploymentBasicAppsV1Beta1GeneratorName
:
if
!
Contains
(
resourcesList
,
appsv1beta1
.
SchemeGroupVersion
.
WithResource
(
"deployments"
))
{
warning
(
cmdErr
,
DeploymentBasicAppsV1Beta1GeneratorName
,
DeploymentBasicV1Beta1GeneratorName
)
return
DeploymentBasicV1Beta1GeneratorName
}
case
CronJobV2Alpha1GeneratorName
:
if
!
Contains
(
resourcesList
,
batchv2alpha1
.
SchemeGroupVersion
.
WithResource
(
"cronjobs"
))
{
warning
(
cmdErr
,
CronJobV2Alpha1GeneratorName
,
JobV1GeneratorName
)
return
JobV1GeneratorName
}
}
return
generatorName
}
func
warning
(
cmdErr
io
.
Writer
,
newGeneratorName
,
oldGeneratorName
string
)
{
fmt
.
Fprintf
(
cmdErr
,
"WARNING: New deployments generator %q specified, "
+
"but it isn't available. "
+
"Falling back to %q.
\n
"
,
newGeneratorName
,
oldGeneratorName
,
)
}
func
Contains
(
resourcesList
[]
*
metav1
.
APIResourceList
,
resource
schema
.
GroupVersionResource
)
bool
{
resources
:=
discovery
.
FilteredBy
(
discovery
.
ResourcePredicateFunc
(
func
(
gv
string
,
r
*
metav1
.
APIResource
)
bool
{
return
resource
.
GroupVersion
()
.
String
()
==
gv
&&
resource
.
Resource
==
r
.
Name
}),
resourcesList
)
return
len
(
resources
)
!=
0
}
func
(
f
*
ring0Factory
)
Generators
(
cmdName
string
)
map
[
string
]
kubectl
.
Generator
{
func
(
f
*
ring0Factory
)
Generators
(
cmdName
string
)
map
[
string
]
kubectl
.
Generator
{
return
DefaultGenerators
(
cmdName
)
return
DefaultGenerators
(
cmdName
)
}
}
...
...
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