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
d00cb23c
Unverified
Commit
d00cb23c
authored
Nov 13, 2018
by
k8s-ci-robot
Committed by
GitHub
Nov 13, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #71006 from liggitt/kubectl-run-apps-v1
update kubectl run to generate apps/v1 deployments
parents
89698c58
03f26e46
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
104 additions
and
5 deletions
+104
-5
run.go
pkg/kubectl/cmd/run/run.go
+1
-1
generator.go
pkg/kubectl/generate/versioned/generator.go
+10
-0
run.go
pkg/kubectl/generate/versioned/run.go
+89
-0
run.sh
test/cmd/run.sh
+4
-4
No files found.
pkg/kubectl/cmd/run/run.go
View file @
d00cb23c
...
@@ -316,7 +316,7 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
...
@@ -316,7 +316,7 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
if
len
(
generatorName
)
==
0
{
if
len
(
generatorName
)
==
0
{
switch
restartPolicy
{
switch
restartPolicy
{
case
corev1
.
RestartPolicyAlways
:
case
corev1
.
RestartPolicyAlways
:
generatorName
=
generateversioned
.
DeploymentAppsV1
Beta1
GeneratorName
generatorName
=
generateversioned
.
DeploymentAppsV1GeneratorName
case
corev1
.
RestartPolicyOnFailure
:
case
corev1
.
RestartPolicyOnFailure
:
generatorName
=
generateversioned
.
JobV1GeneratorName
generatorName
=
generateversioned
.
JobV1GeneratorName
case
corev1
.
RestartPolicyNever
:
case
corev1
.
RestartPolicyNever
:
...
...
pkg/kubectl/generate/versioned/generator.go
View file @
d00cb23c
...
@@ -51,6 +51,7 @@ const (
...
@@ -51,6 +51,7 @@ const (
HorizontalPodAutoscalerV1GeneratorName
=
"horizontalpodautoscaler/v1"
HorizontalPodAutoscalerV1GeneratorName
=
"horizontalpodautoscaler/v1"
DeploymentV1Beta1GeneratorName
=
"deployment/v1beta1"
DeploymentV1Beta1GeneratorName
=
"deployment/v1beta1"
DeploymentAppsV1Beta1GeneratorName
=
"deployment/apps.v1beta1"
DeploymentAppsV1Beta1GeneratorName
=
"deployment/apps.v1beta1"
DeploymentAppsV1GeneratorName
=
"deployment/apps.v1"
DeploymentBasicV1Beta1GeneratorName
=
"deployment-basic/v1beta1"
DeploymentBasicV1Beta1GeneratorName
=
"deployment-basic/v1beta1"
DeploymentBasicAppsV1Beta1GeneratorName
=
"deployment-basic/apps.v1beta1"
DeploymentBasicAppsV1Beta1GeneratorName
=
"deployment-basic/apps.v1beta1"
DeploymentBasicAppsV1GeneratorName
=
"deployment-basic/apps.v1"
DeploymentBasicAppsV1GeneratorName
=
"deployment-basic/apps.v1"
...
@@ -105,6 +106,7 @@ func DefaultGenerators(cmdName string) map[string]generate.Generator {
...
@@ -105,6 +106,7 @@ func DefaultGenerators(cmdName string) map[string]generate.Generator {
RunPodV1GeneratorName
:
BasicPod
{},
RunPodV1GeneratorName
:
BasicPod
{},
DeploymentV1Beta1GeneratorName
:
DeploymentV1Beta1
{},
DeploymentV1Beta1GeneratorName
:
DeploymentV1Beta1
{},
DeploymentAppsV1Beta1GeneratorName
:
DeploymentAppsV1Beta1
{},
DeploymentAppsV1Beta1GeneratorName
:
DeploymentAppsV1Beta1
{},
DeploymentAppsV1GeneratorName
:
DeploymentAppsV1
{},
JobV1GeneratorName
:
JobV1
{},
JobV1GeneratorName
:
JobV1
{},
CronJobV2Alpha1GeneratorName
:
CronJobV2Alpha1
{},
CronJobV2Alpha1GeneratorName
:
CronJobV2Alpha1
{},
CronJobV1Beta1GeneratorName
:
CronJobV1Beta1
{},
CronJobV1Beta1GeneratorName
:
CronJobV1Beta1
{},
...
@@ -146,6 +148,14 @@ func FallbackGeneratorNameIfNecessary(
...
@@ -146,6 +148,14 @@ func FallbackGeneratorNameIfNecessary(
cmdErr
io
.
Writer
,
cmdErr
io
.
Writer
,
)
(
string
,
error
)
{
)
(
string
,
error
)
{
switch
generatorName
{
switch
generatorName
{
case
DeploymentAppsV1GeneratorName
:
hasResource
,
err
:=
HasResource
(
discoveryClient
,
appsv1
.
SchemeGroupVersion
.
WithResource
(
"deployments"
))
if
err
!=
nil
{
return
""
,
err
}
if
!
hasResource
{
return
FallbackGeneratorNameIfNecessary
(
DeploymentAppsV1Beta1GeneratorName
,
discoveryClient
,
cmdErr
)
}
case
DeploymentAppsV1Beta1GeneratorName
:
case
DeploymentAppsV1Beta1GeneratorName
:
hasResource
,
err
:=
HasResource
(
discoveryClient
,
appsv1beta1
.
SchemeGroupVersion
.
WithResource
(
"deployments"
))
hasResource
,
err
:=
HasResource
(
discoveryClient
,
appsv1beta1
.
SchemeGroupVersion
.
WithResource
(
"deployments"
))
if
err
!=
nil
{
if
err
!=
nil
{
...
...
pkg/kubectl/generate/versioned/run.go
View file @
d00cb23c
...
@@ -21,6 +21,7 @@ import (
...
@@ -21,6 +21,7 @@ import (
"strconv"
"strconv"
"strings"
"strings"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
batchv1
"k8s.io/api/batch/v1"
batchv1
"k8s.io/api/batch/v1"
batchv1beta1
"k8s.io/api/batch/v1beta1"
batchv1beta1
"k8s.io/api/batch/v1beta1"
...
@@ -210,6 +211,94 @@ func (DeploymentAppsV1Beta1) Generate(genericParams map[string]interface{}) (run
...
@@ -210,6 +211,94 @@ func (DeploymentAppsV1Beta1) Generate(genericParams map[string]interface{}) (run
return
&
deployment
,
nil
return
&
deployment
,
nil
}
}
type
DeploymentAppsV1
struct
{}
func
(
DeploymentAppsV1
)
ParamNames
()
[]
generate
.
GeneratorParam
{
return
[]
generate
.
GeneratorParam
{
{
Name
:
"labels"
,
Required
:
false
},
{
Name
:
"default-name"
,
Required
:
false
},
{
Name
:
"name"
,
Required
:
true
},
{
Name
:
"replicas"
,
Required
:
true
},
{
Name
:
"image"
,
Required
:
true
},
{
Name
:
"image-pull-policy"
,
Required
:
false
},
{
Name
:
"port"
,
Required
:
false
},
{
Name
:
"hostport"
,
Required
:
false
},
{
Name
:
"stdin"
,
Required
:
false
},
{
Name
:
"tty"
,
Required
:
false
},
{
Name
:
"command"
,
Required
:
false
},
{
Name
:
"args"
,
Required
:
false
},
{
Name
:
"env"
,
Required
:
false
},
{
Name
:
"requests"
,
Required
:
false
},
{
Name
:
"limits"
,
Required
:
false
},
{
Name
:
"serviceaccount"
,
Required
:
false
},
}
}
func
(
DeploymentAppsV1
)
Generate
(
genericParams
map
[
string
]
interface
{})
(
runtime
.
Object
,
error
)
{
args
,
err
:=
getArgs
(
genericParams
)
if
err
!=
nil
{
return
nil
,
err
}
envs
,
err
:=
getEnvs
(
genericParams
)
if
err
!=
nil
{
return
nil
,
err
}
params
,
err
:=
getParams
(
genericParams
)
if
err
!=
nil
{
return
nil
,
err
}
name
,
err
:=
getName
(
params
)
if
err
!=
nil
{
return
nil
,
err
}
labels
,
err
:=
getLabels
(
params
,
name
)
if
err
!=
nil
{
return
nil
,
err
}
count
,
err
:=
strconv
.
Atoi
(
params
[
"replicas"
])
if
err
!=
nil
{
return
nil
,
err
}
podSpec
,
err
:=
makePodSpec
(
params
,
name
)
if
err
!=
nil
{
return
nil
,
err
}
imagePullPolicy
:=
v1
.
PullPolicy
(
params
[
"image-pull-policy"
])
if
err
=
updatePodContainers
(
params
,
args
,
envs
,
imagePullPolicy
,
podSpec
);
err
!=
nil
{
return
nil
,
err
}
if
err
:=
updatePodPorts
(
params
,
podSpec
);
err
!=
nil
{
return
nil
,
err
}
count32
:=
int32
(
count
)
deployment
:=
appsv1
.
Deployment
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
name
,
Labels
:
labels
,
},
Spec
:
appsv1
.
DeploymentSpec
{
Replicas
:
&
count32
,
Selector
:
&
metav1
.
LabelSelector
{
MatchLabels
:
labels
},
Template
:
v1
.
PodTemplateSpec
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Labels
:
labels
,
},
Spec
:
*
podSpec
,
},
},
}
return
&
deployment
,
nil
}
// getLabels returns map of labels.
// getLabels returns map of labels.
func
getLabels
(
params
map
[
string
]
string
,
name
string
)
(
map
[
string
]
string
,
error
)
{
func
getLabels
(
params
map
[
string
]
string
,
name
string
)
(
map
[
string
]
string
,
error
)
{
labelString
,
found
:=
params
[
"labels"
]
labelString
,
found
:=
params
[
"labels"
]
...
...
test/cmd/run.sh
View file @
d00cb23c
...
@@ -45,17 +45,17 @@ run_kubectl_run_tests() {
...
@@ -45,17 +45,17 @@ run_kubectl_run_tests() {
# Post-Condition: Deployment "nginx" is created
# Post-Condition: Deployment "nginx" is created
kube::test::get_object_assert deployment.extensions
"{{range.items}}{{
$id_field
}}:{{end}}"
'nginx-extensions:'
kube::test::get_object_assert deployment.extensions
"{{range.items}}{{
$id_field
}}:{{end}}"
'nginx-extensions:'
# new generator was used
# new generator was used
output_message
=
$(
kubectl get deployment.
extension
s/nginx-extensions
-o
jsonpath
=
'{.spec.revisionHistoryLimit}'
)
output_message
=
$(
kubectl get deployment.
app
s/nginx-extensions
-o
jsonpath
=
'{.spec.revisionHistoryLimit}'
)
kube::test::if_has_string
"
${
output_message
}
"
'
2
'
kube::test::if_has_string
"
${
output_message
}
"
'
10
'
# Clean up
# Clean up
kubectl delete deployment nginx-extensions
"
${
kube_flags
[@]
}
"
kubectl delete deployment nginx-extensions
"
${
kube_flags
[@]
}
"
# Command
# Command
kubectl run nginx-apps
"--image=
$IMAGE_NGINX
"
--generator
=
deployment/apps.v1
beta1
"
${
kube_flags
[@]
}
"
kubectl run nginx-apps
"--image=
$IMAGE_NGINX
"
--generator
=
deployment/apps.v1
"
${
kube_flags
[@]
}
"
# Post-Condition: Deployment "nginx" is created
# Post-Condition: Deployment "nginx" is created
kube::test::get_object_assert deployment.apps
"{{range.items}}{{
$id_field
}}:{{end}}"
'nginx-apps:'
kube::test::get_object_assert deployment.apps
"{{range.items}}{{
$id_field
}}:{{end}}"
'nginx-apps:'
# and new generator was used, iow. new defaults are applied
# and new generator was used, iow. new defaults are applied
output_message
=
$(
kubectl get deployment/nginx-apps
-o
jsonpath
=
'{.spec.revisionHistoryLimit}'
)
output_message
=
$(
kubectl get deployment/nginx-apps
-o
jsonpath
=
'{.spec.revisionHistoryLimit}'
)
kube::test::if_has_string
"
${
output_message
}
"
'
2
'
kube::test::if_has_string
"
${
output_message
}
"
'
10
'
# Clean up
# Clean up
kubectl delete deployment nginx-apps
"
${
kube_flags
[@]
}
"
kubectl delete deployment nginx-apps
"
${
kube_flags
[@]
}
"
...
...
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