diff options
author | Miloslav Trmač <mitr@redhat.com> | 2018-07-25 04:19:58 +0200 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-07-26 20:47:31 +0000 |
commit | eba6bf0018157e9594f43f1d2baeee3f56eb9cef (patch) | |
tree | a8951ecaf437b3dc6099d96d5419774cbcf66ecc /libpod | |
parent | 24fe6e950c5c384a052b320b3473b1fa70c088f9 (diff) | |
download | podman-eba6bf0018157e9594f43f1d2baeee3f56eb9cef.tar.gz podman-eba6bf0018157e9594f43f1d2baeee3f56eb9cef.tar.bz2 podman-eba6bf0018157e9594f43f1d2baeee3f56eb9cef.zip |
Split parseNetNSBoltData from BoltState.getContainerFromDB
This is the actual platform-specific part of getContainerFromDB.
Factor it out, unchanged, on Linux. On other platforms, introduce
a stub which fails if any data exists; this stub is not yet called.
Should not change behavior.
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
Closes: #1115
Approved by: rhatdan
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/boltdb_state_linux.go | 31 | ||||
-rw-r--r-- | libpod/boltdb_state_unsupported.go | 11 |
2 files changed, 31 insertions, 11 deletions
diff --git a/libpod/boltdb_state_linux.go b/libpod/boltdb_state_linux.go index 7c0e08fb3..9c0e2b348 100644 --- a/libpod/boltdb_state_linux.go +++ b/libpod/boltdb_state_linux.go @@ -13,6 +13,24 @@ import ( "github.com/sirupsen/logrus" ) +// parseNetNSBoltData sets ctr.state.NetNS, if any, from netNSBytes. +// Returns true if the data is valid. +func parseNetNSBoltData(ctr *Container, netNSBytes []byte) bool { + // The container may not have a network namespace, so it's OK if this is + // nil + if netNSBytes != nil { + nsPath := string(netNSBytes) + netNS, err := joinNetNS(nsPath) + if err == nil { + ctr.state.NetNS = netNS + } else { + logrus.Errorf("error joining network namespace for container %s", ctr.ID()) + return false + } + } + return true +} + func (s *BoltState) getContainerFromDB(id []byte, ctr *Container, ctrsBkt *bolt.Bucket) error { valid := true ctrBkt := ctrsBkt.Bucket(id) @@ -47,17 +65,8 @@ func (s *BoltState) getContainerFromDB(id []byte, ctr *Container, ctrsBkt *bolt. return errors.Wrapf(err, "error unmarshalling container %s state", string(id)) } - // The container may not have a network namespace, so it's OK if this is - // nil - if netNSBytes != nil { - nsPath := string(netNSBytes) - netNS, err := joinNetNS(nsPath) - if err == nil { - ctr.state.NetNS = netNS - } else { - logrus.Errorf("error joining network namespace for container %s", ctr.ID()) - valid = false - } + if !parseNetNSBoltData(ctr, netNSBytes) { + valid = false } // Get the lock diff --git a/libpod/boltdb_state_unsupported.go b/libpod/boltdb_state_unsupported.go index 8d3749881..f6faaa378 100644 --- a/libpod/boltdb_state_unsupported.go +++ b/libpod/boltdb_state_unsupported.go @@ -4,8 +4,19 @@ package libpod import ( "github.com/boltdb/bolt" + "github.com/sirupsen/logrus" ) +// parseNetNSBoltData sets ctr.state.NetNS, if any, from netNSBytes. +// Returns true if the data is valid. +func parseNetNSBoltData(ctr *Container, netNSBytes []byte) bool { + if netNSBytes != nil { + logrus.Errorf("error loading %s: network namespaces are not supported on this platform", ctr.ID()) + return false + } + return true +} + func (s *BoltState) getContainerFromDB(id []byte, ctr *Container, ctrsBkt *bolt.Bucket) error { return ErrNotImplemented } |