mirror of
https://github.com/containers/podman.git
synced 2025-08-06 03:19:52 +08:00
remove libpod from main
the compilation demands of having libpod in main is a burden for the remote client compilations. to combat this, we should move the use of libpod structs, vars, constants, and functions into the adapter code where it will only be compiled by the local client. this should result in cleaner code organization and smaller binaries. it should also help if we ever need to compile the remote client on non-Linux operating systems natively (not cross-compiled). Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
@ -3,6 +3,7 @@ package libpod
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
"github.com/containers/libpod/pkg/registrar"
|
||||
"github.com/containers/storage/pkg/truncindex"
|
||||
"github.com/pkg/errors"
|
||||
@ -99,12 +100,12 @@ func (s *InMemoryState) SetNamespace(ns string) error {
|
||||
// Container retrieves a container from its full ID
|
||||
func (s *InMemoryState) Container(id string) (*Container, error) {
|
||||
if id == "" {
|
||||
return nil, ErrEmptyID
|
||||
return nil, define.ErrEmptyID
|
||||
}
|
||||
|
||||
ctr, ok := s.containers[id]
|
||||
if !ok {
|
||||
return nil, errors.Wrapf(ErrNoSuchCtr, "no container with ID %s found", id)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchCtr, "no container with ID %s found", id)
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(ctr.ID(), ctr.Namespace()); err != nil {
|
||||
@ -122,7 +123,7 @@ func (s *InMemoryState) LookupContainer(idOrName string) (*Container, error) {
|
||||
)
|
||||
|
||||
if idOrName == "" {
|
||||
return nil, ErrEmptyID
|
||||
return nil, define.ErrEmptyID
|
||||
}
|
||||
|
||||
if s.namespace != "" {
|
||||
@ -130,7 +131,7 @@ func (s *InMemoryState) LookupContainer(idOrName string) (*Container, error) {
|
||||
if !ok {
|
||||
// We have no containers in the namespace
|
||||
// Return false
|
||||
return nil, errors.Wrapf(ErrNoSuchCtr, "no container found with name or ID %s", idOrName)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchCtr, "no container found with name or ID %s", idOrName)
|
||||
}
|
||||
nameIndex = nsIndex.nameIndex
|
||||
idIndex = nsIndex.idIndex
|
||||
@ -146,7 +147,7 @@ func (s *InMemoryState) LookupContainer(idOrName string) (*Container, error) {
|
||||
fullID, err = idIndex.Get(idOrName)
|
||||
if err != nil {
|
||||
if err == truncindex.ErrNotExist {
|
||||
return nil, errors.Wrapf(ErrNoSuchCtr, "no container found with name or ID %s", idOrName)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchCtr, "no container found with name or ID %s", idOrName)
|
||||
}
|
||||
return nil, errors.Wrapf(err, "error performing truncindex lookup for ID %s", idOrName)
|
||||
}
|
||||
@ -158,7 +159,7 @@ func (s *InMemoryState) LookupContainer(idOrName string) (*Container, error) {
|
||||
ctr, ok := s.containers[fullID]
|
||||
if !ok {
|
||||
// It's a pod, not a container
|
||||
return nil, errors.Wrapf(ErrNoSuchCtr, "name or ID %s is a pod, not a container", idOrName)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchCtr, "name or ID %s is a pod, not a container", idOrName)
|
||||
}
|
||||
|
||||
return ctr, nil
|
||||
@ -167,7 +168,7 @@ func (s *InMemoryState) LookupContainer(idOrName string) (*Container, error) {
|
||||
// HasContainer checks if a container with the given ID is present in the state
|
||||
func (s *InMemoryState) HasContainer(id string) (bool, error) {
|
||||
if id == "" {
|
||||
return false, ErrEmptyID
|
||||
return false, define.ErrEmptyID
|
||||
}
|
||||
|
||||
ctr, ok := s.containers[id]
|
||||
@ -182,15 +183,15 @@ func (s *InMemoryState) HasContainer(id string) (bool, error) {
|
||||
// Containers in a pod cannot be added to the state
|
||||
func (s *InMemoryState) AddContainer(ctr *Container) error {
|
||||
if !ctr.valid {
|
||||
return errors.Wrapf(ErrCtrRemoved, "container with ID %s is not valid", ctr.ID())
|
||||
return errors.Wrapf(define.ErrCtrRemoved, "container with ID %s is not valid", ctr.ID())
|
||||
}
|
||||
|
||||
if _, ok := s.containers[ctr.ID()]; ok {
|
||||
return errors.Wrapf(ErrCtrExists, "container with ID %s already exists in state", ctr.ID())
|
||||
return errors.Wrapf(define.ErrCtrExists, "container with ID %s already exists in state", ctr.ID())
|
||||
}
|
||||
|
||||
if ctr.config.Pod != "" {
|
||||
return errors.Wrapf(ErrInvalidArg, "cannot add a container that is in a pod with AddContainer, use AddContainerToPod")
|
||||
return errors.Wrapf(define.ErrInvalidArg, "cannot add a container that is in a pod with AddContainer, use AddContainerToPod")
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(ctr.ID(), ctr.Namespace()); err != nil {
|
||||
@ -204,12 +205,12 @@ func (s *InMemoryState) AddContainer(ctr *Container) error {
|
||||
for _, depID := range depCtrs {
|
||||
depCtr, ok := s.containers[depID]
|
||||
if !ok {
|
||||
return errors.Wrapf(ErrNoSuchCtr, "cannot depend on nonexistent container %s", depID)
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "cannot depend on nonexistent container %s", depID)
|
||||
} else if depCtr.config.Pod != "" {
|
||||
return errors.Wrapf(ErrInvalidArg, "cannot depend on container in a pod if not part of same pod")
|
||||
return errors.Wrapf(define.ErrInvalidArg, "cannot depend on container in a pod if not part of same pod")
|
||||
}
|
||||
if depCtr.config.Namespace != ctr.config.Namespace {
|
||||
return errors.Wrapf(ErrNSMismatch, "container %s is in namespace %s and cannot depend on container %s in namespace %s", ctr.ID(), ctr.config.Namespace, depID, depCtr.config.Namespace)
|
||||
return errors.Wrapf(define.ErrNSMismatch, "container %s is in namespace %s and cannot depend on container %s in namespace %s", ctr.ID(), ctr.config.Namespace, depID, depCtr.config.Namespace)
|
||||
}
|
||||
}
|
||||
|
||||
@ -270,12 +271,12 @@ func (s *InMemoryState) RemoveContainer(ctr *Container) error {
|
||||
deps, ok := s.ctrDepends[ctr.ID()]
|
||||
if ok && len(deps) != 0 {
|
||||
depsStr := strings.Join(deps, ", ")
|
||||
return errors.Wrapf(ErrCtrExists, "the following containers depend on container %s: %s", ctr.ID(), depsStr)
|
||||
return errors.Wrapf(define.ErrCtrExists, "the following containers depend on container %s: %s", ctr.ID(), depsStr)
|
||||
}
|
||||
|
||||
if _, ok := s.containers[ctr.ID()]; !ok {
|
||||
ctr.valid = false
|
||||
return errors.Wrapf(ErrNoSuchCtr, "no container exists in state with ID %s", ctr.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "no container exists in state with ID %s", ctr.ID())
|
||||
}
|
||||
|
||||
if err := s.idIndex.Delete(ctr.ID()); err != nil {
|
||||
@ -289,7 +290,7 @@ func (s *InMemoryState) RemoveContainer(ctr *Container) error {
|
||||
if ctr.config.Namespace != "" {
|
||||
nsIndex, ok := s.namespaceIndexes[ctr.config.Namespace]
|
||||
if !ok {
|
||||
return errors.Wrapf(ErrInternal, "error retrieving index for namespace %q", ctr.config.Namespace)
|
||||
return errors.Wrapf(define.ErrInternal, "error retrieving index for namespace %q", ctr.config.Namespace)
|
||||
}
|
||||
if err := nsIndex.idIndex.Delete(ctr.ID()); err != nil {
|
||||
return errors.Wrapf(err, "error removing container %s from namespace ID index", ctr.ID())
|
||||
@ -317,13 +318,13 @@ func (s *InMemoryState) RemoveContainer(ctr *Container) error {
|
||||
func (s *InMemoryState) UpdateContainer(ctr *Container) error {
|
||||
// If the container is invalid, return error
|
||||
if !ctr.valid {
|
||||
return errors.Wrapf(ErrCtrRemoved, "container with ID %s is not valid", ctr.ID())
|
||||
return errors.Wrapf(define.ErrCtrRemoved, "container with ID %s is not valid", ctr.ID())
|
||||
}
|
||||
|
||||
// If the container does not exist, return error
|
||||
if _, ok := s.containers[ctr.ID()]; !ok {
|
||||
ctr.valid = false
|
||||
return errors.Wrapf(ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
}
|
||||
|
||||
return s.checkNSMatch(ctr.ID(), ctr.Namespace())
|
||||
@ -336,13 +337,13 @@ func (s *InMemoryState) UpdateContainer(ctr *Container) error {
|
||||
func (s *InMemoryState) SaveContainer(ctr *Container) error {
|
||||
// If the container is invalid, return error
|
||||
if !ctr.valid {
|
||||
return errors.Wrapf(ErrCtrRemoved, "container with ID %s is not valid", ctr.ID())
|
||||
return errors.Wrapf(define.ErrCtrRemoved, "container with ID %s is not valid", ctr.ID())
|
||||
}
|
||||
|
||||
// If the container does not exist, return error
|
||||
if _, ok := s.containers[ctr.ID()]; !ok {
|
||||
ctr.valid = false
|
||||
return errors.Wrapf(ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
}
|
||||
|
||||
return s.checkNSMatch(ctr.ID(), ctr.Namespace())
|
||||
@ -351,13 +352,13 @@ func (s *InMemoryState) SaveContainer(ctr *Container) error {
|
||||
// ContainerInUse checks if the given container is being used by other containers
|
||||
func (s *InMemoryState) ContainerInUse(ctr *Container) ([]string, error) {
|
||||
if !ctr.valid {
|
||||
return nil, ErrCtrRemoved
|
||||
return nil, define.ErrCtrRemoved
|
||||
}
|
||||
|
||||
// If the container does not exist, return error
|
||||
if _, ok := s.containers[ctr.ID()]; !ok {
|
||||
ctr.valid = false
|
||||
return nil, errors.Wrapf(ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
return nil, errors.Wrapf(define.ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(ctr.ID(), ctr.Namespace()); err != nil {
|
||||
@ -389,14 +390,14 @@ func (s *InMemoryState) AllContainers() ([]*Container, error) {
|
||||
// Please read the full comment on it in state.go before using it.
|
||||
func (s *InMemoryState) RewriteContainerConfig(ctr *Container, newCfg *ContainerConfig) error {
|
||||
if !ctr.valid {
|
||||
return ErrCtrRemoved
|
||||
return define.ErrCtrRemoved
|
||||
}
|
||||
|
||||
// If the container does not exist, return error
|
||||
stateCtr, ok := s.containers[ctr.ID()]
|
||||
if !ok {
|
||||
ctr.valid = false
|
||||
return errors.Wrapf(ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "container with ID %s not found in state", ctr.ID())
|
||||
}
|
||||
|
||||
stateCtr.config = newCfg
|
||||
@ -409,14 +410,14 @@ func (s *InMemoryState) RewriteContainerConfig(ctr *Container, newCfg *Container
|
||||
// Please read the full comment on it in state.go before using it.
|
||||
func (s *InMemoryState) RewritePodConfig(pod *Pod, newCfg *PodConfig) error {
|
||||
if !pod.valid {
|
||||
return ErrPodRemoved
|
||||
return define.ErrPodRemoved
|
||||
}
|
||||
|
||||
// If the pod does not exist, return error
|
||||
statePod, ok := s.pods[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrNoSuchPod, "pod with ID %s not found in state", pod.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchPod, "pod with ID %s not found in state", pod.ID())
|
||||
}
|
||||
|
||||
statePod.config = newCfg
|
||||
@ -427,12 +428,12 @@ func (s *InMemoryState) RewritePodConfig(pod *Pod, newCfg *PodConfig) error {
|
||||
// Volume retrieves a volume from its full name
|
||||
func (s *InMemoryState) Volume(name string) (*Volume, error) {
|
||||
if name == "" {
|
||||
return nil, ErrEmptyID
|
||||
return nil, define.ErrEmptyID
|
||||
}
|
||||
|
||||
vol, ok := s.volumes[name]
|
||||
if !ok {
|
||||
return nil, errors.Wrapf(ErrNoSuchCtr, "no volume with name %s found", name)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchCtr, "no volume with name %s found", name)
|
||||
}
|
||||
|
||||
return vol, nil
|
||||
@ -441,7 +442,7 @@ func (s *InMemoryState) Volume(name string) (*Volume, error) {
|
||||
// HasVolume checks if a volume with the given name is present in the state
|
||||
func (s *InMemoryState) HasVolume(name string) (bool, error) {
|
||||
if name == "" {
|
||||
return false, ErrEmptyID
|
||||
return false, define.ErrEmptyID
|
||||
}
|
||||
|
||||
_, ok := s.volumes[name]
|
||||
@ -455,11 +456,11 @@ func (s *InMemoryState) HasVolume(name string) (bool, error) {
|
||||
// AddVolume adds a volume to the state
|
||||
func (s *InMemoryState) AddVolume(volume *Volume) error {
|
||||
if !volume.valid {
|
||||
return errors.Wrapf(ErrVolumeRemoved, "volume with name %s is not valid", volume.Name())
|
||||
return errors.Wrapf(define.ErrVolumeRemoved, "volume with name %s is not valid", volume.Name())
|
||||
}
|
||||
|
||||
if _, ok := s.volumes[volume.Name()]; ok {
|
||||
return errors.Wrapf(ErrVolumeExists, "volume with name %s already exists in state", volume.Name())
|
||||
return errors.Wrapf(define.ErrVolumeExists, "volume with name %s already exists in state", volume.Name())
|
||||
}
|
||||
|
||||
s.volumes[volume.Name()] = volume
|
||||
@ -473,12 +474,12 @@ func (s *InMemoryState) RemoveVolume(volume *Volume) error {
|
||||
deps, ok := s.volumeDepends[volume.Name()]
|
||||
if ok && len(deps) != 0 {
|
||||
depsStr := strings.Join(deps, ", ")
|
||||
return errors.Wrapf(ErrVolumeExists, "the following containers depend on volume %s: %s", volume.Name(), depsStr)
|
||||
return errors.Wrapf(define.ErrVolumeExists, "the following containers depend on volume %s: %s", volume.Name(), depsStr)
|
||||
}
|
||||
|
||||
if _, ok := s.volumes[volume.Name()]; !ok {
|
||||
volume.valid = false
|
||||
return errors.Wrapf(ErrVolumeRemoved, "no volume exists in state with name %s", volume.Name())
|
||||
return errors.Wrapf(define.ErrVolumeRemoved, "no volume exists in state with name %s", volume.Name())
|
||||
}
|
||||
|
||||
delete(s.volumes, volume.Name())
|
||||
@ -489,13 +490,13 @@ func (s *InMemoryState) RemoveVolume(volume *Volume) error {
|
||||
// VolumeInUse checks if the given volume is being used by at least one container
|
||||
func (s *InMemoryState) VolumeInUse(volume *Volume) ([]string, error) {
|
||||
if !volume.valid {
|
||||
return nil, ErrVolumeRemoved
|
||||
return nil, define.ErrVolumeRemoved
|
||||
}
|
||||
|
||||
// If the volume does not exist, return error
|
||||
if _, ok := s.volumes[volume.Name()]; !ok {
|
||||
volume.valid = false
|
||||
return nil, errors.Wrapf(ErrNoSuchVolume, "volume with name %s not found in state", volume.Name())
|
||||
return nil, errors.Wrapf(define.ErrNoSuchVolume, "volume with name %s not found in state", volume.Name())
|
||||
}
|
||||
|
||||
arr, ok := s.volumeDepends[volume.Name()]
|
||||
@ -519,12 +520,12 @@ func (s *InMemoryState) AllVolumes() ([]*Volume, error) {
|
||||
// Pod retrieves a pod from the state from its full ID
|
||||
func (s *InMemoryState) Pod(id string) (*Pod, error) {
|
||||
if id == "" {
|
||||
return nil, ErrEmptyID
|
||||
return nil, define.ErrEmptyID
|
||||
}
|
||||
|
||||
pod, ok := s.pods[id]
|
||||
if !ok {
|
||||
return nil, errors.Wrapf(ErrNoSuchPod, "no pod with id %s found", id)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchPod, "no pod with id %s found", id)
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -543,7 +544,7 @@ func (s *InMemoryState) LookupPod(idOrName string) (*Pod, error) {
|
||||
)
|
||||
|
||||
if idOrName == "" {
|
||||
return nil, ErrEmptyID
|
||||
return nil, define.ErrEmptyID
|
||||
}
|
||||
|
||||
if s.namespace != "" {
|
||||
@ -551,7 +552,7 @@ func (s *InMemoryState) LookupPod(idOrName string) (*Pod, error) {
|
||||
if !ok {
|
||||
// We have no containers in the namespace
|
||||
// Return false
|
||||
return nil, errors.Wrapf(ErrNoSuchCtr, "no container found with name or ID %s", idOrName)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchCtr, "no container found with name or ID %s", idOrName)
|
||||
}
|
||||
nameIndex = nsIndex.nameIndex
|
||||
idIndex = nsIndex.idIndex
|
||||
@ -567,7 +568,7 @@ func (s *InMemoryState) LookupPod(idOrName string) (*Pod, error) {
|
||||
fullID, err = idIndex.Get(idOrName)
|
||||
if err != nil {
|
||||
if err == truncindex.ErrNotExist {
|
||||
return nil, errors.Wrapf(ErrNoSuchPod, "no pod found with name or ID %s", idOrName)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchPod, "no pod found with name or ID %s", idOrName)
|
||||
}
|
||||
return nil, errors.Wrapf(err, "error performing truncindex lookup for ID %s", idOrName)
|
||||
}
|
||||
@ -579,7 +580,7 @@ func (s *InMemoryState) LookupPod(idOrName string) (*Pod, error) {
|
||||
pod, ok := s.pods[fullID]
|
||||
if !ok {
|
||||
// It's a container not a pod
|
||||
return nil, errors.Wrapf(ErrNoSuchPod, "id or name %s is a container not a pod", idOrName)
|
||||
return nil, errors.Wrapf(define.ErrNoSuchPod, "id or name %s is a container not a pod", idOrName)
|
||||
}
|
||||
|
||||
return pod, nil
|
||||
@ -588,7 +589,7 @@ func (s *InMemoryState) LookupPod(idOrName string) (*Pod, error) {
|
||||
// HasPod checks if a pod with the given ID is present in the state
|
||||
func (s *InMemoryState) HasPod(id string) (bool, error) {
|
||||
if id == "" {
|
||||
return false, ErrEmptyID
|
||||
return false, define.ErrEmptyID
|
||||
}
|
||||
|
||||
pod, ok := s.pods[id]
|
||||
@ -602,11 +603,11 @@ func (s *InMemoryState) HasPod(id string) (bool, error) {
|
||||
// PodHasContainer checks if the given pod has a container with the given ID
|
||||
func (s *InMemoryState) PodHasContainer(pod *Pod, ctrID string) (bool, error) {
|
||||
if !pod.valid {
|
||||
return false, errors.Wrapf(ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
return false, errors.Wrapf(define.ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
}
|
||||
|
||||
if ctrID == "" {
|
||||
return false, ErrEmptyID
|
||||
return false, define.ErrEmptyID
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -616,7 +617,7 @@ func (s *InMemoryState) PodHasContainer(pod *Pod, ctrID string) (bool, error) {
|
||||
podCtrs, ok := s.podContainers[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return false, errors.Wrapf(ErrNoSuchPod, "no pod with ID %s found in state", pod.ID())
|
||||
return false, errors.Wrapf(define.ErrNoSuchPod, "no pod with ID %s found in state", pod.ID())
|
||||
}
|
||||
|
||||
_, ok = podCtrs[ctrID]
|
||||
@ -626,7 +627,7 @@ func (s *InMemoryState) PodHasContainer(pod *Pod, ctrID string) (bool, error) {
|
||||
// PodContainersByID returns the IDs of all containers in the given pod
|
||||
func (s *InMemoryState) PodContainersByID(pod *Pod) ([]string, error) {
|
||||
if !pod.valid {
|
||||
return nil, errors.Wrapf(ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
return nil, errors.Wrapf(define.ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -636,7 +637,7 @@ func (s *InMemoryState) PodContainersByID(pod *Pod) ([]string, error) {
|
||||
podCtrs, ok := s.podContainers[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return nil, errors.Wrapf(ErrNoSuchPod, "no pod with ID %s found in state", pod.ID())
|
||||
return nil, errors.Wrapf(define.ErrNoSuchPod, "no pod with ID %s found in state", pod.ID())
|
||||
}
|
||||
|
||||
length := len(podCtrs)
|
||||
@ -655,7 +656,7 @@ func (s *InMemoryState) PodContainersByID(pod *Pod) ([]string, error) {
|
||||
// PodContainers retrieves the containers from a pod
|
||||
func (s *InMemoryState) PodContainers(pod *Pod) ([]*Container, error) {
|
||||
if !pod.valid {
|
||||
return nil, errors.Wrapf(ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
return nil, errors.Wrapf(define.ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -665,7 +666,7 @@ func (s *InMemoryState) PodContainers(pod *Pod) ([]*Container, error) {
|
||||
podCtrs, ok := s.podContainers[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return nil, errors.Wrapf(ErrNoSuchPod, "no pod with ID %s found in state", pod.ID())
|
||||
return nil, errors.Wrapf(define.ErrNoSuchPod, "no pod with ID %s found in state", pod.ID())
|
||||
}
|
||||
|
||||
length := len(podCtrs)
|
||||
@ -684,7 +685,7 @@ func (s *InMemoryState) PodContainers(pod *Pod) ([]*Container, error) {
|
||||
// AddPod adds a given pod to the state
|
||||
func (s *InMemoryState) AddPod(pod *Pod) error {
|
||||
if !pod.valid {
|
||||
return errors.Wrapf(ErrPodRemoved, "pod %s is not valid and cannot be added", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodRemoved, "pod %s is not valid and cannot be added", pod.ID())
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -692,11 +693,11 @@ func (s *InMemoryState) AddPod(pod *Pod) error {
|
||||
}
|
||||
|
||||
if _, ok := s.pods[pod.ID()]; ok {
|
||||
return errors.Wrapf(ErrPodExists, "pod with ID %s already exists in state", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodExists, "pod with ID %s already exists in state", pod.ID())
|
||||
}
|
||||
|
||||
if _, ok := s.podContainers[pod.ID()]; ok {
|
||||
return errors.Wrapf(ErrPodExists, "pod with ID %s already exists in state", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodExists, "pod with ID %s already exists in state", pod.ID())
|
||||
}
|
||||
|
||||
if err := s.nameIndex.Reserve(pod.Name(), pod.ID()); err != nil {
|
||||
@ -746,15 +747,15 @@ func (s *InMemoryState) RemovePod(pod *Pod) error {
|
||||
|
||||
if _, ok := s.pods[pod.ID()]; !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
}
|
||||
podCtrs, ok := s.podContainers[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
}
|
||||
if len(podCtrs) != 0 {
|
||||
return errors.Wrapf(ErrCtrExists, "pod %s is not empty and cannot be removed", pod.ID())
|
||||
return errors.Wrapf(define.ErrCtrExists, "pod %s is not empty and cannot be removed", pod.ID())
|
||||
}
|
||||
|
||||
if err := s.idIndex.Delete(pod.ID()); err != nil {
|
||||
@ -767,7 +768,7 @@ func (s *InMemoryState) RemovePod(pod *Pod) error {
|
||||
if pod.config.Namespace != "" {
|
||||
nsIndex, ok := s.namespaceIndexes[pod.config.Namespace]
|
||||
if !ok {
|
||||
return errors.Wrapf(ErrInternal, "error retrieving index for namespace %q", pod.config.Namespace)
|
||||
return errors.Wrapf(define.ErrInternal, "error retrieving index for namespace %q", pod.config.Namespace)
|
||||
}
|
||||
if err := nsIndex.idIndex.Delete(pod.ID()); err != nil {
|
||||
return errors.Wrapf(err, "error removing container %s from namespace ID index", pod.ID())
|
||||
@ -784,7 +785,7 @@ func (s *InMemoryState) RemovePod(pod *Pod) error {
|
||||
// Will only remove containers if no dependencies outside of the pod are present
|
||||
func (s *InMemoryState) RemovePodContainers(pod *Pod) error {
|
||||
if !pod.valid {
|
||||
return errors.Wrapf(ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -795,7 +796,7 @@ func (s *InMemoryState) RemovePodContainers(pod *Pod) error {
|
||||
podCtrs, ok := s.podContainers[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
}
|
||||
|
||||
// Go through container dependencies. Check to see if any are outside the pod.
|
||||
@ -804,7 +805,7 @@ func (s *InMemoryState) RemovePodContainers(pod *Pod) error {
|
||||
if ok {
|
||||
for _, dep := range ctrDeps {
|
||||
if _, ok := podCtrs[dep]; !ok {
|
||||
return errors.Wrapf(ErrCtrExists, "container %s has dependency %s outside of pod %s", ctr, dep, pod.ID())
|
||||
return errors.Wrapf(define.ErrCtrExists, "container %s has dependency %s outside of pod %s", ctr, dep, pod.ID())
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -830,18 +831,18 @@ func (s *InMemoryState) RemovePodContainers(pod *Pod) error {
|
||||
// state
|
||||
func (s *InMemoryState) AddContainerToPod(pod *Pod, ctr *Container) error {
|
||||
if !pod.valid {
|
||||
return errors.Wrapf(ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodRemoved, "pod %s is not valid", pod.ID())
|
||||
}
|
||||
if !ctr.valid {
|
||||
return errors.Wrapf(ErrCtrRemoved, "container %s is not valid", ctr.ID())
|
||||
return errors.Wrapf(define.ErrCtrRemoved, "container %s is not valid", ctr.ID())
|
||||
}
|
||||
|
||||
if ctr.config.Pod != pod.ID() {
|
||||
return errors.Wrapf(ErrInvalidArg, "container %s is not in pod %s", ctr.ID(), pod.ID())
|
||||
return errors.Wrapf(define.ErrInvalidArg, "container %s is not in pod %s", ctr.ID(), pod.ID())
|
||||
}
|
||||
|
||||
if ctr.config.Namespace != pod.config.Namespace {
|
||||
return errors.Wrapf(ErrNSMismatch, "container %s is in namespace %s and pod %s is in namespace %s",
|
||||
return errors.Wrapf(define.ErrNSMismatch, "container %s is in namespace %s and pod %s is in namespace %s",
|
||||
ctr.ID(), ctr.config.Namespace, pod.ID(), pod.config.Namespace)
|
||||
}
|
||||
|
||||
@ -853,12 +854,12 @@ func (s *InMemoryState) AddContainerToPod(pod *Pod, ctr *Container) error {
|
||||
podCtrs, ok := s.podContainers[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrPodRemoved, "pod %s not found in state", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodRemoved, "pod %s not found in state", pod.ID())
|
||||
}
|
||||
|
||||
// Is the container already in the pod?
|
||||
if _, ok = podCtrs[ctr.ID()]; ok {
|
||||
return errors.Wrapf(ErrCtrExists, "container with ID %s already exists in pod %s", ctr.ID(), pod.ID())
|
||||
return errors.Wrapf(define.ErrCtrExists, "container with ID %s already exists in pod %s", ctr.ID(), pod.ID())
|
||||
}
|
||||
|
||||
// There are potential race conditions with this
|
||||
@ -867,20 +868,20 @@ func (s *InMemoryState) AddContainerToPod(pod *Pod, ctr *Container) error {
|
||||
depCtrs := ctr.Dependencies()
|
||||
for _, depCtr := range depCtrs {
|
||||
if _, ok = s.containers[depCtr]; !ok {
|
||||
return errors.Wrapf(ErrNoSuchCtr, "cannot depend on nonexistent container %s", depCtr)
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "cannot depend on nonexistent container %s", depCtr)
|
||||
}
|
||||
depCtrStruct, ok := podCtrs[depCtr]
|
||||
if !ok {
|
||||
return errors.Wrapf(ErrInvalidArg, "cannot depend on container %s as it is not in pod %s", depCtr, pod.ID())
|
||||
return errors.Wrapf(define.ErrInvalidArg, "cannot depend on container %s as it is not in pod %s", depCtr, pod.ID())
|
||||
}
|
||||
if depCtrStruct.config.Namespace != ctr.config.Namespace {
|
||||
return errors.Wrapf(ErrNSMismatch, "container %s is in namespace %s and cannot depend on container %s in namespace %s", ctr.ID(), ctr.config.Namespace, depCtr, depCtrStruct.config.Namespace)
|
||||
return errors.Wrapf(define.ErrNSMismatch, "container %s is in namespace %s and cannot depend on container %s in namespace %s", ctr.ID(), ctr.config.Namespace, depCtr, depCtrStruct.config.Namespace)
|
||||
}
|
||||
}
|
||||
|
||||
// Add container to state
|
||||
if _, ok = s.containers[ctr.ID()]; ok {
|
||||
return errors.Wrapf(ErrCtrExists, "container with ID %s already exists in state", ctr.ID())
|
||||
return errors.Wrapf(define.ErrCtrExists, "container with ID %s already exists in state", ctr.ID())
|
||||
}
|
||||
|
||||
if err := s.nameIndex.Reserve(ctr.Name(), ctr.ID()); err != nil {
|
||||
@ -928,10 +929,10 @@ func (s *InMemoryState) AddContainerToPod(pod *Pod, ctr *Container) error {
|
||||
// The container is also removed from the state
|
||||
func (s *InMemoryState) RemoveContainerFromPod(pod *Pod, ctr *Container) error {
|
||||
if !pod.valid {
|
||||
return errors.Wrapf(ErrPodRemoved, "pod %s is not valid and containers cannot be removed", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodRemoved, "pod %s is not valid and containers cannot be removed", pod.ID())
|
||||
}
|
||||
if !ctr.valid {
|
||||
return errors.Wrapf(ErrCtrRemoved, "container %s is not valid and cannot be removed from the pod", ctr.ID())
|
||||
return errors.Wrapf(define.ErrCtrRemoved, "container %s is not valid and cannot be removed from the pod", ctr.ID())
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(ctr.ID(), ctr.Namespace()); err != nil {
|
||||
@ -942,30 +943,30 @@ func (s *InMemoryState) RemoveContainerFromPod(pod *Pod, ctr *Container) error {
|
||||
deps, ok := s.ctrDepends[ctr.ID()]
|
||||
if ok && len(deps) != 0 {
|
||||
depsStr := strings.Join(deps, ", ")
|
||||
return errors.Wrapf(ErrCtrExists, "the following containers depend on container %s: %s", ctr.ID(), depsStr)
|
||||
return errors.Wrapf(define.ErrCtrExists, "the following containers depend on container %s: %s", ctr.ID(), depsStr)
|
||||
}
|
||||
|
||||
// Retrieve pod containers
|
||||
podCtrs, ok := s.podContainers[pod.ID()]
|
||||
if !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrPodRemoved, "pod %s has been removed", pod.ID())
|
||||
return errors.Wrapf(define.ErrPodRemoved, "pod %s has been removed", pod.ID())
|
||||
}
|
||||
|
||||
// Does the container exist?
|
||||
if _, ok := s.containers[ctr.ID()]; !ok {
|
||||
ctr.valid = false
|
||||
return errors.Wrapf(ErrNoSuchCtr, "container %s does not exist in state", ctr.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "container %s does not exist in state", ctr.ID())
|
||||
}
|
||||
|
||||
// Is the container in the pod?
|
||||
if _, ok := podCtrs[ctr.ID()]; !ok {
|
||||
return errors.Wrapf(ErrNoSuchCtr, "container with ID %s not found in pod %s", ctr.ID(), pod.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "container with ID %s not found in pod %s", ctr.ID(), pod.ID())
|
||||
}
|
||||
|
||||
// Remove container from state
|
||||
if _, ok := s.containers[ctr.ID()]; !ok {
|
||||
return errors.Wrapf(ErrNoSuchCtr, "no container exists in state with ID %s", ctr.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchCtr, "no container exists in state with ID %s", ctr.ID())
|
||||
}
|
||||
|
||||
if err := s.idIndex.Delete(ctr.ID()); err != nil {
|
||||
@ -980,7 +981,7 @@ func (s *InMemoryState) RemoveContainerFromPod(pod *Pod, ctr *Container) error {
|
||||
if ctr.config.Namespace != "" {
|
||||
nsIndex, ok := s.namespaceIndexes[ctr.config.Namespace]
|
||||
if !ok {
|
||||
return errors.Wrapf(ErrInternal, "error retrieving index for namespace %q", ctr.config.Namespace)
|
||||
return errors.Wrapf(define.ErrInternal, "error retrieving index for namespace %q", ctr.config.Namespace)
|
||||
}
|
||||
if err := nsIndex.idIndex.Delete(ctr.ID()); err != nil {
|
||||
return errors.Wrapf(err, "error removing container %s from namespace ID index", ctr.ID())
|
||||
@ -1001,7 +1002,7 @@ func (s *InMemoryState) RemoveContainerFromPod(pod *Pod, ctr *Container) error {
|
||||
// This is a no-op as there is no backing store
|
||||
func (s *InMemoryState) UpdatePod(pod *Pod) error {
|
||||
if !pod.valid {
|
||||
return ErrPodRemoved
|
||||
return define.ErrPodRemoved
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -1010,7 +1011,7 @@ func (s *InMemoryState) UpdatePod(pod *Pod) error {
|
||||
|
||||
if _, ok := s.pods[pod.ID()]; !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
}
|
||||
|
||||
return nil
|
||||
@ -1020,7 +1021,7 @@ func (s *InMemoryState) UpdatePod(pod *Pod) error {
|
||||
// This is a no-op at there is no backing store
|
||||
func (s *InMemoryState) SavePod(pod *Pod) error {
|
||||
if !pod.valid {
|
||||
return ErrPodRemoved
|
||||
return define.ErrPodRemoved
|
||||
}
|
||||
|
||||
if err := s.checkNSMatch(pod.ID(), pod.Namespace()); err != nil {
|
||||
@ -1029,7 +1030,7 @@ func (s *InMemoryState) SavePod(pod *Pod) error {
|
||||
|
||||
if _, ok := s.pods[pod.ID()]; !ok {
|
||||
pod.valid = false
|
||||
return errors.Wrapf(ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
return errors.Wrapf(define.ErrNoSuchPod, "no pod exists in state with ID %s", pod.ID())
|
||||
}
|
||||
|
||||
return nil
|
||||
@ -1133,7 +1134,7 @@ func (s *InMemoryState) removeCtrFromVolDependsMap(depCtrID, volName string) {
|
||||
// namespaces.
|
||||
func (s *InMemoryState) checkNSMatch(id, ns string) error {
|
||||
if s.namespace != "" && s.namespace != ns {
|
||||
return errors.Wrapf(ErrNSMismatch, "cannot access %s as it is in namespace %q and we are in namespace %q",
|
||||
return errors.Wrapf(define.ErrNSMismatch, "cannot access %s as it is in namespace %q and we are in namespace %q",
|
||||
id, ns, s.namespace)
|
||||
}
|
||||
return nil
|
||||
|
Reference in New Issue
Block a user