Introduce a CheckContainer to remove duplication
Some methods need to get a container *and* validate some conditon on these (is the container running, …). The CheckContainer allows to do that and helps remove some duplication. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
This commit is contained in:
parent
a620c0172c
commit
12485d62ee
2 changed files with 26 additions and 14 deletions
|
@ -55,6 +55,16 @@ func (daemon *Daemon) GetContainer(prefixOrName string) (*container.Container, e
|
|||
return daemon.containers.Get(containerID), nil
|
||||
}
|
||||
|
||||
// checkContainer make sure the specified container validates the specified conditions
|
||||
func (daemon *Daemon) checkContainer(container *container.Container, conditions ...func(*container.Container) error) error {
|
||||
for _, condition := range conditions {
|
||||
if err := condition(container); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Exists returns a true if a container of the specified ID or name exists,
|
||||
// false otherwise.
|
||||
func (daemon *Daemon) Exists(id string) bool {
|
||||
|
|
|
@ -58,32 +58,34 @@ func (daemon *Daemon) setupLinkedContainers(container *container.Container) ([]s
|
|||
|
||||
func (daemon *Daemon) getIpcContainer(container *container.Container) (*container.Container, error) {
|
||||
containerID := container.HostConfig.IpcMode.Container()
|
||||
c, err := daemon.GetContainer(containerID)
|
||||
container, err := daemon.GetContainer(containerID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrapf(err, "cannot join IPC of a non running container: %s", container.ID)
|
||||
}
|
||||
if !c.IsRunning() {
|
||||
return nil, fmt.Errorf("cannot join IPC of a non running container: %s", containerID)
|
||||
}
|
||||
if c.IsRestarting() {
|
||||
return nil, errContainerIsRestarting(container.ID)
|
||||
}
|
||||
return c, nil
|
||||
return container, daemon.checkContainer(container, containerIsRunning, containerIsNotRestarting)
|
||||
}
|
||||
|
||||
func (daemon *Daemon) getPidContainer(container *container.Container) (*container.Container, error) {
|
||||
containerID := container.HostConfig.PidMode.Container()
|
||||
c, err := daemon.GetContainer(containerID)
|
||||
container, err := daemon.GetContainer(containerID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrapf(err, "cannot join PID of a non running container: %s", container.ID)
|
||||
}
|
||||
return container, daemon.checkContainer(container, containerIsRunning, containerIsNotRestarting)
|
||||
}
|
||||
|
||||
func containerIsRunning(c *container.Container) error {
|
||||
if !c.IsRunning() {
|
||||
return nil, fmt.Errorf("cannot join PID of a non running container: %s", containerID)
|
||||
return errors.Errorf("container %s is not running", c.ID)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func containerIsNotRestarting(c *container.Container) error {
|
||||
if c.IsRestarting() {
|
||||
return nil, errContainerIsRestarting(container.ID)
|
||||
return errContainerIsRestarting(c.ID)
|
||||
}
|
||||
return c, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (daemon *Daemon) setupIpcDirs(c *container.Container) error {
|
||||
|
|
Loading…
Add table
Reference in a new issue