Merge pull request #8363 from AlbanBedel/play-kube-create-only

Add an option to control if play kube should start the pod
This commit is contained in:
OpenShift Merge Robot
2020-11-17 22:40:28 +01:00
committed by GitHub
8 changed files with 53 additions and 12 deletions

View File

@ -23,8 +23,10 @@ func PlayKube(w http.ResponseWriter, r *http.Request) {
Network string `schema:"reference"`
TLSVerify bool `schema:"tlsVerify"`
LogDriver string `schema:"logDriver"`
Start bool `schema:"start"`
}{
TLSVerify: true,
Start: true,
}
if err := decoder.Decode(&query, r.URL.Query()); err != nil {
@ -73,6 +75,9 @@ func PlayKube(w http.ResponseWriter, r *http.Request) {
if _, found := r.URL.Query()["tlsVerify"]; found {
options.SkipTLSVerify = types.NewOptionalBool(!query.TLSVerify)
}
if _, found := r.URL.Query()["start"]; found {
options.Start = types.NewOptionalBool(query.Start)
}
report, err := containerEngine.PlayKube(r.Context(), tmpfile.Name(), options)
if err != nil {

View File

@ -29,6 +29,11 @@ func (s *APIServer) registerPlayHandlers(r *mux.Router) error {
// name: logDriver
// type: string
// description: Logging driver for the containers in the pod.
// - in: query
// name: start
// type: boolean
// default: true
// description: Start the pod after creating it.
// - in: body
// name: request
// description: Kubernetes YAML file.

View File

@ -32,6 +32,9 @@ func Kube(ctx context.Context, path string, options entities.PlayKubeOptions) (*
if options.SkipTLSVerify != types.OptionalBoolUndefined {
params.Set("tlsVerify", strconv.FormatBool(options.SkipTLSVerify != types.OptionalBoolTrue))
}
if options.Start != types.OptionalBoolUndefined {
params.Set("start", strconv.FormatBool(options.Start == types.OptionalBoolTrue))
}
// TODO: have a global system context we can pass around (1st argument)
header, err := auth.Header(nil, auth.XRegistryAuthHeader, options.Authfile, options.Username, options.Password)

View File

@ -28,6 +28,8 @@ type PlayKubeOptions struct {
ConfigMaps []string
// LogDriver for the container. For example: journald
LogDriver string
// Start - don't start the pod if false
Start types.OptionalBool
}
// PlayKubePod represents a single pod and associated containers created by play kube

View File

@ -297,20 +297,22 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
containers = append(containers, ctr)
}
//start the containers
podStartErrors, err := pod.Start(ctx)
if err != nil {
return nil, err
}
if options.Start != types.OptionalBoolFalse {
//start the containers
podStartErrors, err := pod.Start(ctx)
if err != nil {
return nil, err
}
// Previous versions of playkube started containers individually and then
// looked for errors. Because we now use the uber-Pod start call, we should
// iterate the map of possible errors and return one if there is a problem. This
// keeps the behavior the same
// Previous versions of playkube started containers individually and then
// looked for errors. Because we now use the uber-Pod start call, we should
// iterate the map of possible errors and return one if there is a problem. This
// keeps the behavior the same
for _, e := range podStartErrors {
if e != nil {
return nil, e
for _, e := range podStartErrors {
if e != nil {
return nil, e
}
}
}