Commit Graph

1314 Commits

Author SHA1 Message Date
OpenShift Merge Robot c9078936dd
Merge pull request #3419 from baude/removelibpodfrommainphase1
remove libpod from main
2019-06-26 02:36:06 +02:00
baude dd81a44ccf 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>
2019-06-25 13:51:24 -05:00
OpenShift Merge Robot a488e197a6
Merge pull request #3417 from mheon/fix_play_kube_ports
Only include ports in one container in Kube YAML
2019-06-25 20:21:24 +02:00
OpenShift Merge Robot 21978c9908
Merge pull request #3332 from rhatdan/cgroupmanager
Correctly identify the defaults for cgroup-manager
2019-06-25 14:54:28 +02:00
OpenShift Merge Robot d8b18a9879
Merge pull request #3401 from mheon/templating_is_dumb
Fix inspect --format '{{.Mounts}}.
2019-06-25 00:20:25 +02:00
Matthew Heon ebf48ff459 Only include ports in one container in Kube YAML
This likely broke when we made containers able to detect that
they shared a network namespace and grab ports from the
dependency container - prior to that, we could grab ports without
concern for conflict, only the infra container had them. Now, all
containers in a pod will return the same ports, so we have to
work around this.

Fixes #3408

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-24 14:27:47 -04:00
OpenShift Merge Robot a1a4a75abe
Merge pull request #3412 from mheon/fix_ps_sync_segfault
Fix a segfault in 'podman ps --sync'
2019-06-24 18:36:20 +02:00
Matthew Heon de75b1a277 Fix a segfault in 'podman ps --sync'
We weren't properly populating the container's OCI Runtime in
Batch(), causing segfaults on attempting to access it. Add a test
to make sure we actually catch cases like this in the future.

Fixes #3411

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-24 09:26:03 -04:00
Giuseppe Scrivano bd5e113b71
rootless: add an entry to /etc/hosts when using slirp4netns
Closes: https://github.com/containers/libpod/issues/3405

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-24 10:12:33 +02:00
OpenShift Merge Robot 5787f88042
Merge pull request #3399 from astronouth7303/patch-1
Add /usr/local/{s,}bin to conmon paths
2019-06-22 12:18:06 +02:00
Matthew Heon c233a12772 Add additional debugging when refreshing locks
Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-06-21 16:00:39 -04:00
Matthew Heon 7625d28c82 Fix gofmt
Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-06-21 15:25:06 -04:00
Matthew Heon 7d76548b41 Adjust names to match struct tags in Inspect
In Go templating, we use the names of fields, not the JSON struct
tags. To ensure templating works are expected, we need the two to
match.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-06-21 15:09:59 -04:00
Matthew Heon 778a634daa Fix inspect --format '{{.Mounts}}.
Go templating is incapable of dealing with pointers, so when we
moved to Docker compatible mounts JSON, we broke it. The solution
is to not use pointers in this part of inspect.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-06-21 15:00:30 -04:00
Jamie Bliss e2b0587c21 runtime.go: Add /usr/local/{s,}bin
Signed-off-by: Jamie Bliss <jamie@ivyleav.es>
2019-06-21 14:38:29 -04:00
OpenShift Merge Robot 7d8aba9248
Merge pull request #3378 from mheon/multiple_runtimes
Begin adding support for multiple OCI runtimes
2019-06-21 14:46:54 +02:00
Sascha Grunert 4bfbc355de
Build cgo files with -Wall -Werror
To avoid unnecessary warnings and errors in the future I'd like to
propose building all cgo related sources with `-Wall -Werror`. This
commit fixes some warnings which came up in `shm_lock.c`, too.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-06-21 10:14:19 +02:00
Matthew Heon 2ee2404683 Properly initialize container OCI runtime
Use name of the default runtime, instead of the OCIRuntime config
option, which may include a full path.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-20 16:19:49 -04:00
Matthew Heon df43bfe53d Handle containers whose OCIRuntime fields are paths
Try and locate the right runtime by using the basename of the
path.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-20 15:14:28 -04:00
Matthew Heon 7377870641 Properly handle OCI runtime being set to a path
This is done by the --runtime flag, and as such, by all our CI.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-20 15:07:46 -04:00
Matthew Heon a3bcfac461 Make configuration validation not require a DB commit
If there are missing fields, we still require a commit, but that
should not happen often.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-20 14:04:16 -04:00
Matthew Heon 0106acbf7e Avoid a read-write transaction on DB init
Instead, use a less expensive read-only transaction to see if the
DB is ready for use (it probably is), and only fire the expensive
RW transaction if absolutely necessary.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-06-20 10:17:38 -04:00
Matthew Heon 3d78085d52 Print container's OCI runtime in `inspect`
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-19 17:19:29 -04:00
Matthew Heon fa0e48f21a Make a missing OCI runtime nonfatal
We may want to ship configurations including more than one
runtime configuration - for example, crun and runc and kata, all
configured. However, we don't want to make these extra runtimes
hard requirements, so let's not fatally error when we can't find
their executables.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-19 17:14:15 -04:00
Matthew Heon 92bae8d308 Begin adding support for multiple OCI runtimes
Allow Podman containers to request to use a specific OCI runtime
if multiple runtimes are configured. This is the first step to
properly supporting containers in a multi-runtime environment.

The biggest changes are that all OCI runtimes are now initialized
when Podman creates its runtime, and containers now use the
runtime requested in their configuration (instead of always the
default runtime).

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-19 17:08:43 -04:00
Peter Hunt 11fbd20f5d Spoof json-file logging support
For docker scripting compatibility, allow for json-file logging when creating args for conmon. That way, when json-file is supported, that case can be easily removed.

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-06-19 10:13:41 -04:00
OpenShift Merge Robot 9dd9705c2f
Merge pull request #3358 from mheon/use_disk_spec
Swap to using the on-disk spec for inspect mounts
2019-06-18 23:10:06 +02:00
OpenShift Merge Robot 3cabd81045
Merge pull request #3352 from mheon/inspect_config_to_libpod
Move the Config portion of Inspect into libpod
2019-06-18 20:34:30 +02:00
Matthew Heon dc4d20b573 Swap to using the on-disk spec for inspect mounts
When available, using the on-disk spec will show full mount
options in use when the container is running, which can differ
from mount options provided in the original spec - on generating
the final spec, for example, we ensure that some form of root
propagation is set.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-18 09:38:01 -04:00
OpenShift Merge Robot 6ee0f3e99f
Merge pull request #3257 from weirdwiz/load
Add warning while untagging an image podman-load
2019-06-17 22:14:26 +02:00
Matthew Heon 33b71944c0 Move the Config portion of Inspect into libpod
While we're at it, rewrite how we populate it. There were several
potential segfaults in the optional spec.Process block, and a few
fields not being populated correctly versus 'docker inspect'.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-06-17 15:36:55 -04:00
OpenShift Merge Robot bce4a93575
Merge pull request #3297 from rhatdan/systemd
Accidently removed /run/lock from systemd mounts
2019-06-17 21:26:33 +02:00
OpenShift Merge Robot 29be1764b4
Merge pull request #3348 from vrothberg/kill-error
kill: print ID and state for non-running containers
2019-06-17 15:31:51 +02:00
Valentin Rothberg 04858a218f stop/kill: inproper state errors: s/in state/is in state/
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2019-06-17 14:31:55 +02:00
Valentin Rothberg 0f75410e1c kill: print ID and state for non-running containers
Extend kill's error message to include the container's ID and state.
This address cases where error messages caused by other containers
may confuse users.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2019-06-17 10:55:54 +02:00
Daniel J Walsh 53c3720de9
Correctly identify the defaults for cgroup-manager
Currently we report cgroupmanager default as systemd, even if the user modified
the libpod.conf.  Also cgroupmanager does not work in rootless mode.  This
PR correctly identifies the default cgroup manager or reports it is not supported.

Also add homeDir to correctly get the homedir if the $HOME is not set.  Will
attempt to get Homedir out of /etc/passwd.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-06-15 09:51:47 -04:00
Lawrence Chan 7baa6b6266 Remove unnecessary var type to fix lint warning
Signed-off-by: Lawrence Chan <element103@gmail.com>
2019-06-14 17:42:05 -05:00
Lawrence Chan 373048aaca Move installPrefix and etcDir into runtime.go
Signed-off-by: Lawrence Chan <element103@gmail.com>
2019-06-14 17:42:05 -05:00
Lawrence Chan 6ea12e3028 Improve DESTDIR/PREFIX/ETCDIR handling
- PREFIX is now passed saved in the binary at build-time so that default
  paths match installation paths.
- ETCDIR is also overridable in a similar way.
- DESTDIR is now applied on top of PREFIX for install/uninstall steps.
  Previously, a DESTDIR=/foo PREFIX=/bar make would install into /bar,
  rather than /foo/bar.

Signed-off-by: Lawrence Chan <element103@gmail.com>
2019-06-14 17:42:05 -05:00
Matthew Heon 49e696642d Add --storage flag to 'podman rm' (local only)
This flag switches to removing containers directly from c/storage
and is mostly used to remove orphan containers.

It's a superior solution to our former one, which attempted
removal from storage under certain circumstances and could, under
some conditions, not trigger.

Also contains the beginning of support for storage in `ps` but
wiring that in is going to be a much bigger pain.

Fixes #3329.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-13 17:02:20 -04:00
OpenShift Merge Robot 2784cf3ca3
Merge pull request #3312 from mheon/podman_inspect_fixes_cont
Further fixes for podman inspect
2019-06-13 18:28:33 +02:00
OpenShift Merge Robot 031280cfe4
Merge pull request #3319 from mheon/purge_easyjson
Purge all use of easyjson and ffjson in libpod
2019-06-13 18:12:40 +02:00
Matthew Heon 7b7853d8c7 Purge all use of easyjson and ffjson in libpod
We're no longer using either of these JSON libraries, dropped
them in favor of jsoniter. We can't completely remove ffjson as
c/storage uses it and can't easily migrate, but we can make sure
that libpod itself isn't doing anything with them anymore.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-13 11:03:20 -04:00
Matthew Heon bcd95f9ddc Split mount options in inspect further
Docker only uses Mode for :z/:Z, so move other options out into a
new field.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-13 09:34:56 -04:00
Giuseppe Scrivano 13e1afdb02
oci: allow to specify what runtimes support JSON
add a new configuration `runtime_supports_json` to list what OCI
runtimes support the --log-format=json option.  If the runtime is not
listed here, libpod will redirect stdout/stderr from the runtime
process.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-13 14:21:13 +02:00
Giuseppe Scrivano 6e4ce54d33
oci: use json formatted errors from the runtime
request json formatted error messages from the OCI runtime so that we
can nicely print them.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-13 10:27:06 +02:00
Matthew Heon 4e7e5f5cbd Make Inspect's mounts struct accurate to Docker
We were formerly dumping spec.Mount structs, with no care as to
whether it was user-generated or not - a relic of the very early
days when we didn't know whether a user made a mount or not.

Now that we do, match our output to Docker's dedicated mount
struct.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-12 17:14:21 -04:00
Matthew Heon 0084b04aca Provide OCI spec path in `podman inspect` output
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-12 15:53:41 -04:00
OpenShift Merge Robot 77d1cf0a32
Merge pull request #3305 from giuseppe/slirp-dns-first
rootless: use the slirp4netns builtin DNS first
2019-06-12 16:30:34 +02:00
Daniel J Walsh 3bbb692d80
If container is not in correct state podman exec should exit with 126
This way a tool can determine if the container exists or not, but is in the
wrong state.

Since 126 is documeted as:
**_126_** if the **_contained command_** cannot be invoked

It makes sense that the container would exit with this state.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-06-12 05:15:58 -04:00