mirror of
https://github.com/containers/podman.git
synced 2025-08-06 11:32:07 +08:00
libpod removal from main (phase 2)
this is phase 2 for the removal of libpod from main. Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
@ -156,7 +156,7 @@ func (c *Container) waitForExitFileAndSync() error {
|
||||
// Reset our state
|
||||
c.state.ExitCode = -1
|
||||
c.state.FinishedTime = time.Now()
|
||||
c.state.State = ContainerStateStopped
|
||||
c.state.State = define.ContainerStateStopped
|
||||
|
||||
if err2 := c.save(); err2 != nil {
|
||||
logrus.Errorf("Error saving container %s state: %v", c.ID(), err2)
|
||||
@ -241,9 +241,9 @@ func (c *Container) handleRestartPolicy(ctx context.Context) (restarted bool, er
|
||||
|
||||
// Is the container running again?
|
||||
// If so, we don't have to do anything
|
||||
if c.state.State == ContainerStateRunning || c.state.State == ContainerStatePaused {
|
||||
if c.state.State == define.ContainerStateRunning || c.state.State == define.ContainerStatePaused {
|
||||
return false, nil
|
||||
} else if c.state.State == ContainerStateUnknown {
|
||||
} else if c.state.State == define.ContainerStateUnknown {
|
||||
return false, errors.Wrapf(define.ErrInternal, "invalid container state encountered in restart attempt!")
|
||||
}
|
||||
|
||||
@ -267,13 +267,13 @@ func (c *Container) handleRestartPolicy(ctx context.Context) (restarted bool, er
|
||||
return false, err
|
||||
}
|
||||
|
||||
if c.state.State == ContainerStateStopped {
|
||||
if c.state.State == define.ContainerStateStopped {
|
||||
// Reinitialize the container if we need to
|
||||
if err := c.reinit(ctx, true); err != nil {
|
||||
return false, err
|
||||
}
|
||||
} else if c.state.State == ContainerStateConfigured ||
|
||||
c.state.State == ContainerStateExited {
|
||||
} else if c.state.State == define.ContainerStateConfigured ||
|
||||
c.state.State == define.ContainerStateExited {
|
||||
// Initialize the container
|
||||
if err := c.init(ctx, true); err != nil {
|
||||
return false, err
|
||||
@ -295,9 +295,9 @@ func (c *Container) syncContainer() error {
|
||||
}
|
||||
// If runtime knows about the container, update its status in runtime
|
||||
// And then save back to disk
|
||||
if (c.state.State != ContainerStateUnknown) &&
|
||||
(c.state.State != ContainerStateConfigured) &&
|
||||
(c.state.State != ContainerStateExited) {
|
||||
if (c.state.State != define.ContainerStateUnknown) &&
|
||||
(c.state.State != define.ContainerStateConfigured) &&
|
||||
(c.state.State != define.ContainerStateExited) {
|
||||
oldState := c.state.State
|
||||
// TODO: optionally replace this with a stat for the exit file
|
||||
if err := c.ociRuntime.updateContainerStatus(c, false); err != nil {
|
||||
@ -307,8 +307,8 @@ func (c *Container) syncContainer() error {
|
||||
if c.state.State != oldState {
|
||||
// Check for a restart policy match
|
||||
if c.config.RestartPolicy != RestartPolicyNone && c.config.RestartPolicy != RestartPolicyNo &&
|
||||
(oldState == ContainerStateRunning || oldState == ContainerStatePaused) &&
|
||||
(c.state.State == ContainerStateStopped || c.state.State == ContainerStateExited) &&
|
||||
(oldState == define.ContainerStateRunning || oldState == define.ContainerStatePaused) &&
|
||||
(c.state.State == define.ContainerStateStopped || c.state.State == define.ContainerStateExited) &&
|
||||
!c.state.StoppedByUser {
|
||||
c.state.RestartPolicyMatch = true
|
||||
}
|
||||
@ -336,7 +336,7 @@ func (c *Container) setupStorage(ctx context.Context) error {
|
||||
return errors.Wrapf(define.ErrCtrRemoved, "container %s is not valid", c.ID())
|
||||
}
|
||||
|
||||
if c.state.State != ContainerStateConfigured {
|
||||
if c.state.State != define.ContainerStateConfigured {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "container %s must be in Configured state to have storage set up", c.ID())
|
||||
}
|
||||
|
||||
@ -418,7 +418,7 @@ func (c *Container) setupStorage(ctx context.Context) error {
|
||||
|
||||
// Tear down a container's storage prior to removal
|
||||
func (c *Container) teardownStorage() error {
|
||||
if c.state.State == ContainerStateRunning || c.state.State == ContainerStatePaused {
|
||||
if c.state.State == define.ContainerStateRunning || c.state.State == define.ContainerStatePaused {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "cannot remove storage for container %s as it is running or paused", c.ID())
|
||||
}
|
||||
|
||||
@ -454,8 +454,8 @@ func resetState(state *ContainerState) error {
|
||||
state.PID = 0
|
||||
state.Mountpoint = ""
|
||||
state.Mounted = false
|
||||
if state.State != ContainerStateExited {
|
||||
state.State = ContainerStateConfigured
|
||||
if state.State != define.ContainerStateExited {
|
||||
state.State = define.ContainerStateConfigured
|
||||
}
|
||||
state.ExecSessions = make(map[string]*ExecSession)
|
||||
state.NetworkStatus = nil
|
||||
@ -609,7 +609,7 @@ func (c *Container) isStopped() (bool, error) {
|
||||
if err != nil {
|
||||
return true, err
|
||||
}
|
||||
return (c.state.State != ContainerStateRunning && c.state.State != ContainerStatePaused), nil
|
||||
return (c.state.State != define.ContainerStateRunning && c.state.State != define.ContainerStatePaused), nil
|
||||
}
|
||||
|
||||
// save container state to the database
|
||||
@ -625,10 +625,10 @@ func (c *Container) save() error {
|
||||
// Otherwise, this function will return with error if there are dependencies of this container that aren't running.
|
||||
func (c *Container) prepareToStart(ctx context.Context, recursive bool) (err error) {
|
||||
// Container must be created or stopped to be started
|
||||
if !(c.state.State == ContainerStateConfigured ||
|
||||
c.state.State == ContainerStateCreated ||
|
||||
c.state.State == ContainerStateStopped ||
|
||||
c.state.State == ContainerStateExited) {
|
||||
if !(c.state.State == define.ContainerStateConfigured ||
|
||||
c.state.State == define.ContainerStateCreated ||
|
||||
c.state.State == define.ContainerStateStopped ||
|
||||
c.state.State == define.ContainerStateExited) {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "container %s must be in Created or Stopped state to be started", c.ID())
|
||||
}
|
||||
|
||||
@ -654,13 +654,13 @@ func (c *Container) prepareToStart(ctx context.Context, recursive bool) (err err
|
||||
return err
|
||||
}
|
||||
|
||||
if c.state.State == ContainerStateStopped {
|
||||
if c.state.State == define.ContainerStateStopped {
|
||||
// Reinitialize the container if we need to
|
||||
if err := c.reinit(ctx, false); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if c.state.State == ContainerStateConfigured ||
|
||||
c.state.State == ContainerStateExited {
|
||||
} else if c.state.State == define.ContainerStateConfigured ||
|
||||
c.state.State == define.ContainerStateExited {
|
||||
// Or initialize it if necessary
|
||||
if err := c.init(ctx, false); err != nil {
|
||||
return err
|
||||
@ -763,7 +763,7 @@ func (c *Container) getAllDependencies(visited map[string]*Container) error {
|
||||
}
|
||||
// if the dependency is already running, we can assume its dependencies are also running
|
||||
// so no need to add them to those we need to start
|
||||
if status != ContainerStateRunning {
|
||||
if status != define.ContainerStateRunning {
|
||||
visited[depID] = dep
|
||||
if err := dep.getAllDependencies(visited); err != nil {
|
||||
return err
|
||||
@ -795,7 +795,7 @@ func (c *Container) checkDependenciesRunning() ([]string, error) {
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "error retrieving state of dependency %s of container %s", dep, c.ID())
|
||||
}
|
||||
if state != ContainerStateRunning {
|
||||
if state != define.ContainerStateRunning {
|
||||
notRunning = append(notRunning, dep)
|
||||
}
|
||||
depCtrs[dep] = depCtr
|
||||
@ -824,7 +824,7 @@ func (c *Container) checkDependenciesRunningLocked(depCtrs map[string]*Container
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if depCtr.state.State != ContainerStateRunning {
|
||||
if depCtr.state.State != define.ContainerStateRunning {
|
||||
notRunning = append(notRunning, dep)
|
||||
}
|
||||
}
|
||||
@ -875,7 +875,7 @@ func (c *Container) init(ctx context.Context, retainRetries bool) error {
|
||||
|
||||
c.state.ExitCode = 0
|
||||
c.state.Exited = false
|
||||
c.state.State = ContainerStateCreated
|
||||
c.state.State = define.ContainerStateCreated
|
||||
c.state.StoppedByUser = false
|
||||
c.state.RestartPolicyMatch = false
|
||||
|
||||
@ -906,7 +906,7 @@ func (c *Container) cleanupRuntime(ctx context.Context) error {
|
||||
|
||||
// If the container is not ContainerStateStopped or
|
||||
// ContainerStateCreated, do nothing.
|
||||
if c.state.State != ContainerStateStopped && c.state.State != ContainerStateCreated {
|
||||
if c.state.State != define.ContainerStateStopped && c.state.State != define.ContainerStateCreated {
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -922,10 +922,10 @@ func (c *Container) cleanupRuntime(ctx context.Context) error {
|
||||
// If we were Stopped, we are now Exited, as we've removed ourself
|
||||
// from the runtime.
|
||||
// If we were Created, we are now Configured.
|
||||
if c.state.State == ContainerStateStopped {
|
||||
c.state.State = ContainerStateExited
|
||||
} else if c.state.State == ContainerStateCreated {
|
||||
c.state.State = ContainerStateConfigured
|
||||
if c.state.State == define.ContainerStateStopped {
|
||||
c.state.State = define.ContainerStateExited
|
||||
} else if c.state.State == define.ContainerStateCreated {
|
||||
c.state.State = define.ContainerStateConfigured
|
||||
}
|
||||
|
||||
if c.valid {
|
||||
@ -964,16 +964,16 @@ func (c *Container) reinit(ctx context.Context, retainRetries bool) error {
|
||||
// Does not lock or check validity
|
||||
func (c *Container) initAndStart(ctx context.Context) (err error) {
|
||||
// If we are ContainerStateUnknown, throw an error
|
||||
if c.state.State == ContainerStateUnknown {
|
||||
if c.state.State == define.ContainerStateUnknown {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "container %s is in an unknown state", c.ID())
|
||||
}
|
||||
|
||||
// If we are running, do nothing
|
||||
if c.state.State == ContainerStateRunning {
|
||||
if c.state.State == define.ContainerStateRunning {
|
||||
return nil
|
||||
}
|
||||
// If we are paused, throw an error
|
||||
if c.state.State == ContainerStatePaused {
|
||||
if c.state.State == define.ContainerStatePaused {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "cannot start paused container %s", c.ID())
|
||||
}
|
||||
|
||||
@ -991,14 +991,14 @@ func (c *Container) initAndStart(ctx context.Context) (err error) {
|
||||
|
||||
// If we are ContainerStateStopped we need to remove from runtime
|
||||
// And reset to ContainerStateConfigured
|
||||
if c.state.State == ContainerStateStopped {
|
||||
if c.state.State == define.ContainerStateStopped {
|
||||
logrus.Debugf("Recreating container %s in OCI runtime", c.ID())
|
||||
|
||||
if err := c.reinit(ctx, false); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if c.state.State == ContainerStateConfigured ||
|
||||
c.state.State == ContainerStateExited {
|
||||
} else if c.state.State == define.ContainerStateConfigured ||
|
||||
c.state.State == define.ContainerStateExited {
|
||||
if err := c.init(ctx, false); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -1019,7 +1019,7 @@ func (c *Container) start() error {
|
||||
}
|
||||
logrus.Debugf("Started container %s", c.ID())
|
||||
|
||||
c.state.State = ContainerStateRunning
|
||||
c.state.State = define.ContainerStateRunning
|
||||
|
||||
if c.config.HealthCheckConfig != nil {
|
||||
if err := c.updateHealthStatus(HealthCheckStarting); err != nil {
|
||||
@ -1060,7 +1060,7 @@ func (c *Container) pause() error {
|
||||
|
||||
logrus.Debugf("Paused container %s", c.ID())
|
||||
|
||||
c.state.State = ContainerStatePaused
|
||||
c.state.State = define.ContainerStatePaused
|
||||
|
||||
return c.save()
|
||||
}
|
||||
@ -1073,20 +1073,20 @@ func (c *Container) unpause() error {
|
||||
|
||||
logrus.Debugf("Unpaused container %s", c.ID())
|
||||
|
||||
c.state.State = ContainerStateRunning
|
||||
c.state.State = define.ContainerStateRunning
|
||||
|
||||
return c.save()
|
||||
}
|
||||
|
||||
// Internal, non-locking function to restart a container
|
||||
func (c *Container) restartWithTimeout(ctx context.Context, timeout uint) (err error) {
|
||||
if c.state.State == ContainerStateUnknown || c.state.State == ContainerStatePaused {
|
||||
if c.state.State == define.ContainerStateUnknown || c.state.State == define.ContainerStatePaused {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "unable to restart a container in a paused or unknown state")
|
||||
}
|
||||
|
||||
c.newContainerEvent(events.Restart)
|
||||
|
||||
if c.state.State == ContainerStateRunning {
|
||||
if c.state.State == define.ContainerStateRunning {
|
||||
if err := c.stop(timeout); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -1102,13 +1102,13 @@ func (c *Container) restartWithTimeout(ctx context.Context, timeout uint) (err e
|
||||
return err
|
||||
}
|
||||
|
||||
if c.state.State == ContainerStateStopped {
|
||||
if c.state.State == define.ContainerStateStopped {
|
||||
// Reinitialize the container if we need to
|
||||
if err := c.reinit(ctx, false); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if c.state.State == ContainerStateConfigured ||
|
||||
c.state.State == ContainerStateExited {
|
||||
} else if c.state.State == define.ContainerStateConfigured ||
|
||||
c.state.State == define.ContainerStateExited {
|
||||
// Initialize the container
|
||||
if err := c.init(ctx, false); err != nil {
|
||||
return err
|
||||
@ -1482,12 +1482,12 @@ func (c *Container) copyWithTarFromImage(src, dest string) error {
|
||||
// If it is, we'll remove the container anyways.
|
||||
// Returns nil if safe to remove, or an error describing why it's unsafe if not.
|
||||
func (c *Container) checkReadyForRemoval() error {
|
||||
if c.state.State == ContainerStateUnknown {
|
||||
if c.state.State == define.ContainerStateUnknown {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "container %s is in invalid state", c.ID())
|
||||
}
|
||||
|
||||
if c.state.State == ContainerStateRunning ||
|
||||
c.state.State == ContainerStatePaused {
|
||||
if c.state.State == define.ContainerStateRunning ||
|
||||
c.state.State == define.ContainerStatePaused {
|
||||
return errors.Wrapf(define.ErrCtrStateInvalid, "cannot remove container %s as it is %s - running or paused containers cannot be removed", c.ID(), c.state.State.String())
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user