mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-22 08:44:25 +01:00
Instead of pausing the sanbox, this patch just pauses the container allowing the communication with the agent. The communication with the agent should be still possible even if all containers are paused, because of we don't know when a new container can be created in the same sandbox. Depends-on: github.com/kata-containers/agent#246 fixes #317 Signed-off-by: Julio Montes <julio.montes@intel.com>
60 lines
1.4 KiB
Go
60 lines
1.4 KiB
Go
// Copyright (c) 2014,2015,2016 Docker, Inc.
|
|
// Copyright (c) 2017 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package main
|
|
|
|
import (
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
var noteText = `Use "` + name + ` list" to identify container statuses.`
|
|
|
|
var pauseCLICommand = cli.Command{
|
|
Name: "pause",
|
|
Usage: "suspend all processes in a container",
|
|
ArgsUsage: `<container-id>
|
|
|
|
Where "<container-id>" is the container name to be paused.`,
|
|
Description: `The pause command suspends all processes in a container.
|
|
|
|
` + noteText,
|
|
Action: func(context *cli.Context) error {
|
|
return toggleContainerPause(context.Args().First(), true)
|
|
},
|
|
}
|
|
|
|
var resumeCLICommand = cli.Command{
|
|
Name: "resume",
|
|
Usage: "unpause all previously paused processes in a container",
|
|
ArgsUsage: `<container-id>
|
|
|
|
Where "<container-id>" is the container name to be resumed.`,
|
|
Description: `The resume command unpauses all processes in a container.
|
|
|
|
` + noteText,
|
|
Action: func(context *cli.Context) error {
|
|
return toggleContainerPause(context.Args().First(), false)
|
|
},
|
|
}
|
|
|
|
func toggleContainerPause(containerID string, pause bool) (err error) {
|
|
// Checks the MUST and MUST NOT from OCI runtime specification
|
|
status, sandboxID, err := getExistingContainerInfo(containerID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
containerID = status.ID
|
|
|
|
if pause {
|
|
err = vci.PauseContainer(sandboxID, containerID)
|
|
} else {
|
|
err = vci.ResumeContainer(sandboxID, containerID)
|
|
}
|
|
|
|
return err
|
|
}
|