Commit graph

2712 commits

Author SHA1 Message Date
Matthew Heon
7a358e4277 Address first round of review comments
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
fc95f68247 Set namespace for new pods/containers based on runtime
New containers and pods will default to the namespace of the
runtime, but this can be overridden by With... options if
desired.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
3ae0c80806 Add --namespace flag to Podman
Allows joining libpod to a specific namespace when running a
Podman command.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
8f91678a49 Update documentation for the State interface
Include details on how namespaces interact with the
state.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
84afa32493 Ensure pods are part of the set namespace when added
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
7b30659629 Enforce namespace checks on container add
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
572fd75d22 Add tests for state namespacing
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
92e6bd01a8 Add namespaces to in memory state
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
2705344634 Untested implementation of namespaced BoltDB access
All BoltDB access and update functions now understand namespaces.
Accessing containers outside of your namespace will produce
errors, except for Lookup and All functions, which will perform
their tasks only on containers within your namespace.

The "" namespace remains a reserved, no-restrictions namespace.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
e838dcb4bf Add constraint that dependencies must be in the same ns
Dependency containers must be in the same namespace, to ensure
there are never problems resolving a dependency.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
ab9bc21877 Add namespaces and initial constraints to database
Add basic awareness of namespaces to the database. As part of
this, add constraints so containers can only be added to pods in
the same namespace.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
2445787336 Add container and pod namespaces to configs
Libpod namespaces are a way to logically separate groups of pods
and containers within the state.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-07-24 16:12:31 -04:00
Matthew Heon
3c5ce9b8bf Update container Mounted() and Mountpoint() functions
Addresses a regression in `podman mount` due to our mount changes
to allow concurrency by letting c/storage handle mounting and
unmounting.

Combine Mounted() and Mountpoint() into one function and query
c/storage directly to ensure we get accurate information.

Fixes: #1143

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>

Closes: #1144
Approved by: baude
2018-07-24 02:25:11 +00:00
Miloslav Trmač
8ff0eb53cb Use the result of reference.Parse when checking for digests.
No need to do a separate string search when reference.Parse has already
determined this.

Changes behavior: non-SHA256 digest formats are now recognized as well.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
38842bd407 Make refNamesFromPossiblyUnqualifiedName independent from Image
... which finally makes it very easy to add comprehensive tests; so do that.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
3b964a4d9a Make Image.HasShaInInputName to an independent local function
The functionality only depends on Image.InputName, and we will want
to make the only user of this independent of the fairly complex Image type.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
347ba2cc25 Split createNamesToPull into ref{Names,Pairs}FromPossiblyUnqualifiedName
One part creates []*pullRefName; the other just trivially converts it
into []*pullRefPair.

Also use much more explicit names to explain the functionality.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
b500f9275e Rename local variables in Runtime.pullRefPairsFromRefNames
... to be more conventional.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
4e285b52c1 Split Runtime.pullRefPairsFromRefNames from Image.createNamesToPull
This will have another user shortly.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
e20409d427 Rename nameToPull to pullRefName
We will use it not only in createNamesToPull, but also in
getPullListFromRef soon.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
de4a41d821 Rename pullStruct to pullRefPair
"Struct" is meaningless, and we will need the "reference pair"
mentioned to distinguish srcRef+dstRef from srcRef+dstName.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
729e72ef48 Replace optional nameToPull.shaPullName with mandatory dstName
This consolidates the shaPullName logic into a single place,
(and eliminates the unclear shaPullName member name completely).
The resulting nameToPull will shortly be more generally useful.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
775eb78f6b Introduce nameToPull, move shaPullName in there
shaPullName is only used internally in createNamesToPull; so, introduce
a nameToPull as a variant of pullStruct which has shaPullName (and does not
have destRef).

Eventually, we want to split pullStruct preparation into easily-testable
store-independent name preparation, and a store-dependent and difficult-to-test
but trivial conversion using StorageTransport.ParseStoreReference.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
70589c326c Split normalizeTag from Image.TagImage
... so that it can be tested without side effects, and add the tests.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
501acd460e Remove Image.isShortName
It has no users, and it depends on the incorrect imageParts.hasRegistry.
So, just drop it instead of worrying whether it is OK to change its semantics.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
014b3dcc35 Inline getTags into its only user
This also eliminates a duplicate call to reference.Parse() and
removes an impossible erorr path.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Miloslav Trmač
e8bc914134 Add unit tests for imageParts
Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1112
Approved by: rhatdan
2018-07-23 12:44:38 +00:00
Matthew Heon
6cae4a0e94
Merge pull request #1103 from haircommander/load_dockerless
Podman load/tag/save prepends localhost when no registry is present
2018-07-20 12:50:18 -04:00
Matthew Heon
7944bca468
Merge pull request #1104 from rhatdan/mounting
Let containers/storage keep track of mounts
2018-07-20 12:31:32 -04:00
haircommander
0fecfeee63 Podman load/tag/save prepend localhost when no repository is present
Instead of having docker.io/library as its repository. Test included.

Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-20 11:46:11 -04:00
Giuseppe Scrivano
06a5cc41bf
pull: get registries using the registries pkg
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-07-20 11:00:51 +02:00
Daniel J Walsh
85db3f09bf
Let containers/storage keep track of mounts
Currently we unmount storage that is still in use.
We should not be unmounting storeage that we mounted
via a different command or by podman mount. This
change relies on containers/storage to umount keep track of
how many times the storage was mounted before really unmounting
it from the system.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2018-07-19 17:01:07 -04:00
Valentin Rothberg
ba1871dac0 podman-top: use containers/psgo
Use github.com/containers/psgo instead of execing `ps (1)`.  The psgo
library enables a much more flexible interface with respect to which
data to be printed (e.g., capabilities, seccomp mode, PID, PCPU, etc.)
while the output can be parsed reliably.  The library does not use
ps (1) but parses /proc and /dev instead.  To list the processes of a
given container, psgo will join the mount namespace of the given
container and extract all data from there.

Notice that this commit breaks compatibility with docker-top.

Signed-off-by: Valentin Rothberg <vrothberg@suse.com>

Closes: #1113
Approved by: rhatdan
2018-07-19 20:47:52 +00:00
Daniel J Walsh
98703eb204 Vendor in latest code for storage,image, buildah
vendor in containers/storage
vendor in containers/image
vendor in projectatomic/buildah

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1114
Approved by: mheon
2018-07-19 18:43:32 +00:00
Miloslav Trmač
c020db8cd2 Abort a test on nil containers, so that future tests don't panic
Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1111
Approved by: baude
2018-07-19 16:12:49 +00:00
Miloslav Trmač
cedb4576a4 Fix TestPostDeleteHooks on macOS
os.TempDir() is /var/folders/.../T/ on macOS, not /tmp.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1111
Approved by: baude
2018-07-19 16:12:49 +00:00
Miloslav Trmač
930660c36b Use ... for a regexp constant to improve readability
Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1111
Approved by: baude
2018-07-19 16:12:48 +00:00
Giuseppe Scrivano
9ae7b1a5b1 oci: keep exposed ports busy and leak the fd into conmon
Bind all the specified TCP and UDP ports so that another process
cannot reuse them.  The fd of the listener is then leaked into conmon
so that the socket is kept busy until the container exits.

Closes: https://github.com/projectatomic/libpod/issues/210

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>

Closes: #1100
Approved by: mheon
2018-07-19 13:21:50 +00:00
Matthew Heon
028374b99e Record whether the container has exited
Use this to supplement exit codes returned from containers, to
make sure we know when exit codes are invalid (as the container
has not yet exited)

Signed-off-by: Matthew Heon <mheon@redhat.com>
2018-07-13 14:28:41 -04:00
Daniel J Walsh
673465a747
Merge pull request #1075 from giuseppe/rootless-no-symlinks-into-storage-path
rootless: fix usage on Fedora Silverblue/CoreOS
2018-07-13 14:15:54 -04:00
Daniel J Walsh
827359c8e6
Merge pull request #1065 from haircommander/pod-start-create-rm
Podman pod create/rm/ps commands with man pages and tests
2018-07-13 13:57:04 -04:00
baude
6f1dd44b29 fix pull image that includes a sha
when pulling an image that includes a sha such as:

centos/nginx-112-centos7@sha256:42330f7f29ba1ad67819f4ff3ae2472f62de13a827a74736a5098728462212e7

the final image name in libpod should not contain portions of the sha itself nor the sha
identifier.  and like docker, we provide a 'none' tag as well.

this should fix #877

Signed-off-by: baude <bbaude@redhat.com>

Closes: #1085
Approved by: mheon
2018-07-13 13:37:49 +00:00
haircommander
a04a8d1dd4 Added full podman pod ps, with tests and man page
Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-13 09:17:33 -04:00
haircommander
1aad3fd96b Podman pod create/rm commands with man page and tests.
Includes a very stripped down version of podman pod ps, just for testing

Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-13 09:05:03 -04:00
haircommander
a2dde5a50d Added created time to pod state
Signed-off-by: haircommander <pehunt@redhat.com>

Closes: #1079
Approved by: rhatdan
2018-07-12 22:13:52 +00:00
baude
4f699db8da Support multiple networks
This is a refresh of Dan William's PR #974 with a rebase and proper
vendoring of ocicni and containernetworking/cni.  It adds the ability
to define multiple networks as so:

podman run --network=net1,net2,foobar ...

Signed-off-by: baude <bbaude@redhat.com>

Closes: #1082
Approved by: baude
2018-07-12 21:45:47 +00:00
umohnani8
4f188aa191 podman rmi should only untag image if parent of another
podman rmi was deleting an image even if it was a parent of
another image. This fix just untags the image instead.
This also fixes podman rmi to remove intermediate images of
an image when the image is removed.

Signed-off-by: umohnani8 <umohnani@redhat.com>

Closes: #1055
Approved by: mheon
2018-07-12 18:56:33 +00:00
Giuseppe Scrivano
0066374fc3
runtime: delete unused function
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-07-11 09:38:43 +02:00
Giuseppe Scrivano
340becf542
rootless: propagate errors from GetRootlessRuntimeDir()
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-07-11 09:38:04 +02:00
Matthew Heon
4f9b1ae625 Allow Init() on stopped containers
Signed-off-by: Matthew Heon <mheon@redhat.com>

Closes: #1068
Approved by: baude
2018-07-09 20:33:09 +00:00