2014-07-09 01:17:05 +08:00
/ *
NOTE : The API is in flux and mainly not implemented . Proceed with caution until further notice .
* /
2014-02-19 08:56:11 +08:00
package libcontainer
2014-10-23 01:35:29 +08:00
type ContainerInfo interface {
2014-08-26 23:18:13 +08:00
// Returns the ID of the container
ID ( ) string
2014-07-09 01:17:05 +08:00
// Returns the current run state of the container.
//
2014-09-04 07:03:41 +08:00
// Errors:
// ContainerDestroyed - Container no longer exists,
// SystemError - System error.
RunState ( ) ( * RunState , Error )
2014-07-09 01:17:05 +08:00
// Returns the current config of the container.
Config ( ) * Config
2014-10-23 01:35:29 +08:00
// Returns the PIDs inside this container. The PIDs are in the namespace of the calling process.
2014-07-17 09:02:29 +08:00
//
2014-09-04 07:03:41 +08:00
// Errors:
// ContainerDestroyed - Container no longer exists,
// SystemError - System error.
2014-07-09 01:17:05 +08:00
//
2014-10-23 01:35:29 +08:00
// Some of the returned PIDs may no longer refer to processes in the Container, unless
// the Container state is PAUSED in which case every PID in the slice is valid.
Processes ( ) ( [ ] int , Error )
// Returns statistics for the container.
2014-07-09 01:17:05 +08:00
//
2014-09-04 07:03:41 +08:00
// Errors:
2014-10-23 01:35:29 +08:00
// ContainerDestroyed - Container no longer exists,
2014-09-04 07:03:41 +08:00
// SystemError - System error.
2014-10-23 01:35:29 +08:00
Stats ( ) ( * ContainerStats , Error )
}
2014-07-09 01:17:05 +08:00
2014-10-23 01:35:29 +08:00
// A libcontainer container object.
//
// Each container is thread-safe within the same process. Since a container can
// be destroyed by a separate process, any function may return that the container
// was not found.
type Container interface {
ContainerInfo
// Start a process inside the container. Returns the PID of the new process (in the caller process's namespace) and a channel that will return the exit status of the process whenever it dies.
2014-07-09 01:17:05 +08:00
//
2014-09-04 07:03:41 +08:00
// Errors:
// ContainerDestroyed - Container no longer exists,
2014-10-23 01:35:29 +08:00
// ConfigInvalid - config is invalid,
// ContainerPaused - Container is paused,
2014-09-04 07:03:41 +08:00
// SystemError - System error.
2014-10-23 01:35:29 +08:00
Start ( config * ProcessConfig ) ( pid int , exitChan chan int , err Error )
2014-07-09 01:17:05 +08:00
2014-10-23 01:35:29 +08:00
// Destroys the container after killing all running processes.
//
// Any event registrations are removed before the container is destroyed.
// No error is returned if the container is already destroyed.
2014-07-09 01:17:05 +08:00
//
2014-09-04 07:03:41 +08:00
// Errors:
// SystemError - System error.
2014-10-23 01:35:29 +08:00
Destroy ( ) Error
2014-07-09 01:17:05 +08:00
// If the Container state is RUNNING or PAUSING, sets the Container state to PAUSING and pauses
// the execution of any user processes. Asynchronously, when the container finished being paused the
// state is changed to PAUSED.
// If the Container state is PAUSED, do nothing.
//
2014-09-04 07:03:41 +08:00
// Errors:
// ContainerDestroyed - Container no longer exists,
// SystemError - System error.
Pause ( ) Error
2014-07-09 01:17:05 +08:00
// If the Container state is PAUSED, resumes the execution of any user processes in the
// Container before setting the Container state to RUNNING.
// If the Container state is RUNNING, do nothing.
//
2014-09-04 07:03:41 +08:00
// Errors:
// ContainerDestroyed - Container no longer exists,
// SystemError - System error.
Resume ( ) Error
2014-05-17 15:06:29 +08:00
}