Commit Graph

1167 Commits

Author SHA1 Message Date
baude 3b247d0e20 clean up shared/parse/parse.go
prune unused functions and add unit tests for a number of the remaining
ones.

Signed-off-by: baude <bbaude@redhat.com>
2019-05-02 16:13:26 -05:00
OpenShift Merge Robot 139eeb3eb3
Merge pull request #3051 from mheon/podman_migrate_fixes
Small fixes for #2950
2019-05-02 22:48:12 +02:00
baude c18ad2bfd9 Generate systemd unit files for containers
the podman generate systemd command will generate a systemd unit file
based on the attributes of an existing container and user inputs.  the
command outputs the unit file to stdout for the user to copy or
redirect.  it is enabled for the remote client as well.

users can set a restart policy as well as define a stop timeout
override for the container.

Signed-off-by: baude <bbaude@redhat.com>
2019-05-02 14:35:53 -05:00
OpenShift Merge Robot ccf28a89bd
Merge pull request #3039 from mheon/podman_init
Add podman init command
2019-05-02 20:45:44 +02:00
OpenShift Merge Robot 3cec403268
Merge pull request #3058 from TomSweeneyRedHat/dev/tsweeney/buidah1.8.1
Bump Buildah to v1.8.1, ImageBuilder to v1.1.0
2019-05-02 20:23:16 +02:00
OpenShift Merge Robot f4f06be9f2
Merge pull request #3035 from baude/remoteport
podman-remote port
2019-05-02 19:58:19 +02:00
Matthew Heon 1e6413e3fd Add an InvalidState varlink error for Init
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-02 13:13:32 -04:00
TomSweeneyRedHat 9e620ba89e Bump Buildah to v1.8.1, ImageBuilder to v1.1.0
As the title suggests.

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
2019-05-02 12:27:50 -04:00
Qi Wang a477a8ff75 Add variable for global flags to runlabel
use $GLOBAL_OPTS to pass global flags to the runlabel command.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-05-02 12:14:51 -04:00
OpenShift Merge Robot bd5d029889
Merge pull request #3047 from jamescassell/http-proxy-fixup
http-proxy: improve docs
2019-05-02 17:47:29 +02:00
Chris Evich 7f157dbe46
Remove two bits of dead code
Signed-off-by: Chris Evich <cevich@redhat.com>
2019-05-02 09:26:06 -04:00
James Cassell cf982f1480 http-proxy: improve docs
Signed-off-by: James Cassell <code@james.cassell.me>
2019-05-01 20:56:57 -04:00
Matthew Heon 416cc20c68 Small fixes for #2950
We merged #2950 with some nits still remaining, as Giuseppe was
going on PTO. This addresses those small requested changes.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-01 15:07:30 -04:00
Matthew Heon 0b2c9c2acc Add basic structure of podman init command
As part of this, rework the number of workers used by various
Podman tasks to match original behavior - need an explicit
fallthrough in the switch statement for that block to work as
expected.

Also, trivial change to Podman cleanup to work on initialized
containers - we need to reset to a different state after cleaning
up the OCI runtime.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-01 11:12:24 -04:00
OpenShift Merge Robot ad68036a88
Merge pull request #3031 from baude/remotewindows
enable podman-remote on windows
2019-05-01 16:20:41 +02:00
Matthew Heon 2e00d417dd Migrate unit tests from cmd/podman into pkg/spec
Several changes made in the interface of pkg/spec make
interacting with it without a runtime difficult to impossible,
so move the existing limited testing from cmd/podman (which
mostly tested pkg/spec) into pkg/spec itself where we can call
individual functions that don't break things.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-01 10:19:05 -04:00
Matthew Heon 9ee50fe2c7 Migrate to unified volume handling code
Unify handling for the --volume, --mount, --volumes-from, --tmpfs
and --init flags into a single file and set of functions. This
will greatly improve readability and maintainability.

Further, properly handle superceding and conflicting mounts. Our
current patchwork has serious issues when mounts conflict, or
when a mount from --volumes-from or an image volume should be
overwritten by a user volume or named volume.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-01 10:19:05 -04:00
Matthew Heon 71f65ab07f Always pass pod into MakeContainerConfig
Play kube was passing the pod, but CreateConfig was not. Unify it
so they both do, so we can remove some unnecessary duplicate
lookup code.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-01 10:16:23 -04:00
Matthew Heon 4540458a5e Remove non-config fields from CreateConfig
The goal here is to keep only the configuration directly used to
build the container in CreateConfig, and scrub temporary state
and helpers that we need to generate. We'll keep those internally
in MakeContainerConfig.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-01 10:16:23 -04:00
Matthew Heon 869466eb25 Add a new function for converting a CreateConfig
Right now, there are two major API calls necessary to turn a
filled-in CreateConfig into the options and OCI spec necessary to
make a libpod Container. I'm intending on refactoring both of
these extensively to unify a few things, so make a common
frontend to both that will prevent API changes from leaking out
of the package.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-01 10:16:23 -04:00
baude adbc41a3f7 podman-remote port
add the port command to the remote client.  this allows users to displa
port information about their host system from the remote client

Signed-off-by: baude <bbaude@redhat.com>
2019-05-01 09:13:18 -05:00
James Cassell 354d80626a auto pass http_proxy into container
Signed-off-by: James Cassell <code@james.cassell.me>
2019-04-30 17:29:29 -04:00
baude 0b6bb6a3d3 enable podman-remote on windows
build a podman-remote binary for windows that allows users to use the
remote client on windows and interact with podman on linux system.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-30 15:28:39 -05:00
Jhon Honce 1b2419ceb1 Refactor container cleanup to use latest functions
Signed-off-by: Jhon Honce <jhonce@redhat.com>
2019-04-30 08:21:14 -07:00
OpenShift Merge Robot 084e4e16a1
Merge pull request #2982 from baude/remotecontainerprune
podman-remote prune containers
2019-04-30 15:16:29 +02:00
baude 151c8487a3 podman-remote stop
add stop to the container subcommands for the remote client. the stop
function is already done.  this is a graphical change only.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-29 12:18:11 -05:00
OpenShift Merge Robot 4e5b39650d
Merge pull request #3015 from QiWang19/credsH
fix login supports credHelpers config
2019-04-29 07:29:36 -07:00
OpenShift Merge Robot e0312334cc
Merge pull request #3025 from rhatdan/read-only
Add --read-only-tmpfs options
2019-04-29 02:38:14 -07:00
Giuseppe Scrivano f49e0c19ed
runtime: pass down the context
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-26 22:23:49 +02:00
Giuseppe Scrivano 525f0b30ac
system: add new subcommand "migrate"
it is useful to migrate existing containers to a new version of
podman.  Currently, it is needed to migrate rootless containers that
were created with podman <= 1.2 to a newer version which requires all
containers to be running in the same user namespace.

Closes: https://github.com/containers/libpod/issues/2935

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-26 22:23:45 +02:00
Daniel J Walsh 3a4be4b66c
Add --read-only-tmpfs options
The --read-only-tmpfs option caused podman to mount tmpfs on /run, /tmp, /var/tmp
if the container is running int read-only mode.

The default is true, so you would need to execute a command like

--read-only --read-only-tmpfs=false to turn off this behaviour.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-04-26 12:29:10 -04:00
baude 2e800d63aa podman-remote prune containers
enable the ability to prune containers from the remote-command.  this
also includes the system prune command.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-26 10:15:09 -05:00
baude c4dd7c5813 enable podman remote top
add the ability for the remote client to display a container's running
processes.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-25 14:44:14 -05:00
OpenShift Merge Robot 01e79477ca
Merge pull request #2850 from baude/eventsjournald
journald event logging
2019-04-25 12:20:39 -07:00
Qi Wang 6f08e6c3d1 fix login supports credHelpers config
Skip the error if login can't find credentials in credHelpers with credHelpers configed in auth.json and podman login will store the credentials in credHelpers later.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-04-25 13:48:55 -04:00
Nalin Dahyabhai 5c81a117f1 images: add context to GetParent/IsParent/Remove/Prune...
Add a context.Context parameter to Image.GetParent(), Image.IsParent(),
Image.GetChildren(), Image.Remove(), and Runtime.PruneImages().

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2019-04-25 08:57:58 -04:00
baude 7bf7c177ab journald event logging
add the ability for podman to read and write events to journald instead
of just a logfile.  This can be controlled in libpod.conf with the
`events_logger` attribute of `journald` or `file`.  The default will be
set to `journald`.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-24 16:00:04 -05:00
OpenShift Merge Robot b01fdcbbd5
Merge pull request #2973 from baude/remoterestart
podman remote-client restart containers
2019-04-24 13:59:06 -07:00
baude 18d66136c1 podman remote-client restart containers
add the ability to restart containers with the remote-client

Signed-off-by: baude <bbaude@redhat.com>
2019-04-24 13:30:18 -05:00
Valentin Rothberg b90a5107e9 pull: special case all-tags semantics
Supporting the all-tags semantics added some non-trivial code to the
pull command which does not make use of `registries.conf` and introduced
some regressions such as not adhering to the configured search registries.

Speacial case the all-tags flags to let existing users of all-tags
continue working while others can work again.  This implies that the
all-tags pull does not adhere to configured search registries while the
default (non-all-tags) pull does.

Note that this is a purely symptomaic fix.  A final solution should
include Buildah and the c/image library to avoid redundant and
error-prone code across the projects.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1701922
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2019-04-24 19:33:12 +02:00
OpenShift Merge Robot a2487aec67
Merge pull request #2933 from haircommander/kube-clean
Clean up after play kube failure
2019-04-22 13:31:27 -07:00
Jhon Honce 69962682e9 Refactor of 'podman prune' to better support remote
* Push iterations into the service not the client
* Add e2e tests
* Refactor to use new frameworks

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2019-04-18 15:13:56 -07:00
OpenShift Merge Robot e4947e5fd6
Merge pull request #2948 from baude/remotepause
podman-remote pause|unpause
2019-04-18 14:17:41 -07:00
baude 55e630e787 podman-remote pause|unpause
Add the ability to pause and unpause containers with the remote client.

Also turned on the pause tests!

Signed-off-by: baude <bbaude@redhat.com>
2019-04-18 13:42:27 -05:00
Peter Hunt 8c478f94f9 Add header to play kube output
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-04-18 09:18:53 -04:00
Peter Hunt 47c1017cf8 Clean up after play kube failure
Before, we would half create a pod in play kube and error out if we fail.
Rather, let's clean up after our failure so the user doesn't have to delete the pod themselves.

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-04-18 09:18:53 -04:00
Daniel J Walsh 6b3d4abb07
Fix podman command --change CMD
Currently in Docker if you commit with --change 'CMD a b c'
The command that gets added is

[/bin/sh -c "a b c"]

If you commit --change 'CMD ["a","b","c"]'

You get
[a b c]

This patch set makes podman match this behaviour.

Similar change required for Entrypoint.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-04-17 15:44:50 -04:00
OpenShift Merge Robot bf5ffdafb4
Merge pull request #2917 from baude/remotestart
podman-remote start
2019-04-17 10:13:18 -07:00
baude 3c0147e559 podman-remote start
enable the ability to start containers from the remote-client.  also,
enable start integration tests for remote testing.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-17 11:08:54 -05:00
OpenShift Merge Robot 799d4667c1
Merge pull request #2936 from haircommander/pod-prune
Add podman pod prune
2019-04-17 08:55:59 -07:00
OpenShift Merge Robot a87cf6fef8
Merge pull request #2949 from baude/remotecontainercommands
podman-remote container commands
2019-04-16 09:38:35 -07:00
Peter Hunt 4319552cf8 Added remote pod prune
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-04-16 11:23:18 -04:00
Peter Hunt 0b34b4a59c Add podman pod prune
podman system prune would leave pods be, and not prune them if they were stopped.
Fix this by adding a `podman pod prune` command that prunes stopped pods similarly to containers.

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-04-16 11:23:18 -04:00
baude 7cea949f04 podman-remote container commands
Several container commands were ported to the remote client but had not
been updated on the container submenu yet.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-16 10:22:50 -05:00
OpenShift Merge Robot a2e9626d92
Merge pull request #2934 from haircommander/kube-file
Add File mounts to play kube
2019-04-16 08:05:44 -07:00
OpenShift Merge Robot 713839cf83
Merge pull request #2946 from baude/segs
Fix segfaults attribute to missing options
2019-04-16 06:25:41 -07:00
baude 6fb0a706af Fix segfaults attribute to missing options
In cases where the remote client culls options to a command, we need to
be sure that the lookup for that flag does not result in a nil pointer.
To do so, we add a Remote attribute to the podman struct and then cli
helper funcs are now aware they are remote.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-15 12:21:51 -05:00
OpenShift Merge Robot c1e2b583c8
Merge pull request #2944 from mheon/fix_renumber
Call the runtime with WithRenumber() when asked by 'system renumber' command
2019-04-15 09:39:17 -07:00
Matthew Heon 936537cfe7 Call the runtime with WithRenumber() when asked
We must have lost this at some point, rendering system renumber
useless.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-04-15 10:36:19 -04:00
Peter Hunt 2f804ea9a2 Add File mounts to play kube
Both File and FileOrCreate options are supported.

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-04-15 09:27:36 -04:00
Giuseppe Scrivano 187de9f98e
cmd, pkg: drop commented code
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-15 13:00:54 +02:00
Giuseppe Scrivano a09b6bf77d
pod: drop dead code
we always create a user namespace now, so no need to check if we are
running as non root.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-15 12:59:46 +02:00
Giuseppe Scrivano ffd8999421
rootless, mount: not create namespace
we need to check if we are able to mount the container as part of the
mount command itself.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-15 12:57:19 +02:00
Peter Hunt e61838bc3b Incorporate image and default environment variables in play kube
Also put Environment variable parsing from image data into a helper function

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-04-14 16:27:52 -04:00
OpenShift Merge Robot 4daf788022
Merge pull request #2830 from baude/remotecheckpoint
remote-client checkpoint/restore
2019-04-13 03:23:42 -07:00
OpenShift Merge Robot 15723671b3
Merge pull request #2911 from giuseppe/fix-pull-errors
pull: fix a couple of issues
2019-04-12 12:40:51 -07:00
OpenShift Merge Robot 89ffcf9df9
Merge pull request #2903 from baude/remotegenkube
podman-remote generate kube
2019-04-12 11:03:20 -07:00
baude 80b2c097fe podman-remote generate kube
Allow the ability to generate kube YAML from the podman remote-client.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-12 12:05:09 -05:00
Giuseppe Scrivano fcea6fda82
pull: exit with error if the image is not found
Closes: https://github.com/containers/libpod/issues/2785

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-12 15:24:22 +02:00
Giuseppe Scrivano 6f3d2edc2b
pull: remove cryptic error message
we were printing something like:

(0x1840f00,0xc00041bba0)

Closes: https://github.com/containers/libpod/issues/2710

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-12 14:23:52 +02:00
OpenShift Merge Robot cb2b019d5d
Merge pull request #2885 from kunalkushwaha/image-dangling-filter-fix
imagefilter dangling handling corrected
2019-04-11 14:15:49 -07:00
OpenShift Merge Robot 272f10f1bb
Merge pull request #2902 from baude/remoteattachfixes
Fixes for podman-remote run and attach
2019-04-11 13:06:39 -07:00
baude 495f2ce515 Fixes for podman-remote run and attach
Fixes the ability to run (create,start) a container and attach to its
console correctly.  We can now also exit from the console without
hanging the remote client.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-11 13:51:50 -05:00
OpenShift Merge Robot 745993b592
Merge pull request #2895 from mheon/commit_no_default_include_volumes
Add --include-volumes flag to 'podman commit'
2019-04-11 09:59:52 -07:00
OpenShift Merge Robot ab259987ee
Merge pull request #2879 from mheon/header_on_no_images
Print header for 'podman images' even with no images present
2019-04-11 09:59:44 -07:00
baude 72d08d4c61 remote-client checkpoint/restore
add the ability for the remote client to be able to checkpoint and
restore containers.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-11 10:13:58 -05:00
Matthew Heon aef09ce031 Add --include-volumes flag to 'podman commit'
The 'docker commit' will never include a container's volumes when
committing, without an explicit request through '--change'.

Podman, however, defaulted to including user volumes as image
volumes.

Make this behavior depend on a new flag, '--include-volumes',
and make the default behavior match Docker.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-04-11 09:55:24 -04:00
OpenShift Merge Robot f9ae2d4830
Merge pull request #2883 from baude/remoteclifixes
Initial remote flag clean up
2019-04-11 01:06:56 -07:00
Kunal Kushwaha 034cc8a5ae imagefilter dangling handling corrected
imagefilter dangling=<value> shall not be ignored.
this PR handles the value and returns images accordingly.

Signed-off-by: Kunal Kushwaha <kushwaha_kunal_v7@lab.ntt.co.jp>
2019-04-11 09:18:31 +09:00
OpenShift Merge Robot 6cd6eb6768
Merge pull request #2892 from edsantiago/healthcheck_typo_fix
(minor): fix misspelled 'Healthcheck'
2019-04-10 11:28:57 -07:00
baude 7f10672486 Initial remote flag clean up
The remote client should not honor most of the local podman "global"
options.  Many of them are only applicable to where the podman backend
is actually running.

Also, removing some options for push and pull that also are not
applicable to the remote client environment.

Additionally, take some of the code from main and pop it into functions
that can be called whether local or not.  This helps the remote client
and darwin builds.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-10 12:43:19 -05:00
Ed Santiago a07b2c2c60 (minor): fix misspelled 'Healthcheck'
Signed-off-by: Ed Santiago <santiago@redhat.com>
2019-04-10 09:43:56 -06:00
baude fbcda7772d Add the ability to attach remotely to a container
Also, you can now podman-remote run -it.  There are some bugs that need
to be ironed out but I would prefer to merge this so we can make both
progress on start and exec as well as the bugs.

* when doing podman-remote run -it foo /bin/bash, you have to press
enter to get the prompt to display. with the localized podman, we had to
teach it connect to the console first and then start the container so we
did not miss anything.

* when executing "exit" in the console, we get a hard lockup likely
because nobody knows what to do.

* custom detach keys are not supported

* podman-remote run -it alpine ls does not currently work.  only
dropping to a shell works.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-10 08:59:28 -05:00
Matthew Heon ba4a1bb9bd Print header for 'podman images' even with no images
Fixes #2877

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-04-10 09:55:55 -04:00
OpenShift Merge Robot 2f2c7660c3
Merge pull request #2882 from baude/remoteps
podman-remote ps
2019-04-10 04:24:56 -07:00
OpenShift Merge Robot 60ef8f8da9
Merge pull request #2663 from jwhonce/wip/remote_umount
Implement podman-remote umount and rm command
2019-04-09 17:46:28 -07:00
baude 23cd1928ec podman-remote ps
add the ability to run ps on containers using the remote client.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-09 15:00:35 -05:00
Jhon Honce 09ff62429a Implement podman-remote rm
* refactor command output to use one function
* Add new worker pool parallel operations
* Implement podman-remote umount
* Refactored podman wait to use printCmdOutput()

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2019-04-09 11:55:26 -07:00
Ed Santiago cebb7ebbee ps: now works with --size and nonroot
Revert the error check from #2832. This is not strictly
necessary, since 'podman ps --size' now works perfectly
fine in nonroot because some recent change (Giuseppe's,
presumably) masked os.Geteuid() return 0... but removing
for maintainability's sake.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2019-04-09 12:55:19 -06:00
OpenShift Merge Robot 8eb03d3e53
Merge pull request #2746 from baude/remotecreate
podman-remote create|run
2019-04-08 10:16:34 -07:00
OpenShift Merge Robot 7f8e9bd54c
Merge pull request #2845 from QiWang19/cpdir
fix bug podman cp directory
2019-04-08 07:48:54 -07:00
baude ba65301c95 podman-remote create|run
add the ability to create and run containers via the podman-remote
client.

we now create an intermediate layer from the the create/run cli flags.
the intermediate layer can be converted into a createconfig or into a
varlink struct.  Once transported, the varlink struct can be converted
back to an intermediate layer and then to a createconfig.

remote terminals are not supported yet.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-08 09:05:31 -05:00
Brent Baude 23602de816 Revert "Switch to golangci-lint"
Signed-off-by: baude <bbaude@redhat.com>
2019-04-05 20:09:45 -05:00
Daniel J Walsh bc320be00b
Merge pull request #2742 from openSUSE/golangci-lint
Switch to golangci-lint
2019-04-05 11:02:41 -04:00
OpenShift Merge Robot ed8bd80d3f
Merge pull request #2856 from haircommander/kube-entrypoint
Respect image entrypoint in play kube
2019-04-05 05:56:29 -07:00
Giuseppe Scrivano ebc8999fcf
podman: enable kube for rootless
Closes: https://github.com/containers/libpod/issues/2852

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-05 09:34:23 +02:00
Giuseppe Scrivano 990bf271c2
kube: correctly set the default for MemorySwappiness
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-05 09:34:22 +02:00
Peter Hunt 65372ee3ab Respect image entrypoint in play kube
Before we ignored an entrypoint specified in an image, which lead to crashes when a user assumed the entrypoint would be used

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-04-04 22:31:36 -04:00
baude dc94dbd3c1 podman-remote image tree
add the ability for the podman-remote client to be able to print an
image tree.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-04 14:41:50 -05:00
Qi Wang 84620021b0 fix bug podman cp directory
`podman cp` used to copy the contents under the source directory to the destination. But according to the specification in podman-cp.md. it should copy the whole directory to the destination if the destination directory already exists.
- src dir ends with /., copy the contents to dest dir
- src dir does not end with /.
 - dest dir /home does not exist, copy the contents
 - dest dir /home exists, copy the directory

```
$ sudo podman cp /home/qiwan/Documents/empty 7c47:/home
$ sudo podman exec -it 7c47 ls /home
$

$ sudo podman cp /home/qiwan/Documents/empty 7c47:/home
$ sudo podman exec -it 7c47 ls /home
empty

```

Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-04-04 12:45:12 -04:00
OpenShift Merge Robot 1759eb09e1
Merge pull request #2706 from giuseppe/rootless-single-usernamespace
rootless: single user namespace
2019-04-04 09:21:09 -07:00
Sascha Grunert 81a4451fea
Add deadcode linter
Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-04-04 09:07:05 +02:00
Sascha Grunert ab4d70d55c
Update run tests to be skipped when not supported
Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-04-04 08:49:52 +02:00
OpenShift Merge Robot 4bda5378b1
Merge pull request #2832 from mheon/rootless_size_errors
--size does not work with rootless at present
2019-04-03 16:29:30 -07:00
OpenShift Merge Robot 7a2bca54f0
Merge pull request #2651 from mheon/prevent_null_deref
Fix a potential segfault in podman search
2019-04-03 13:51:40 -07:00
Matthew Heon c6255537d9 Fix a potential segfault in podman search
When generating headers for search, we unconditionally
access element 0 of an array, and I saw this segfault in our CI.
There's no reason we have to do this, we're just going through it
to get field names with reflect, so just make a new copy of the
struct in question.

Also, move this code, which is only for CLI display, into
cmd/podman from libpod/image.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-04-03 15:11:08 -04:00
Matthew Heon c1cd9a3c6d --size does not work with rootless at present
We'd need to join multiple container's user namespaces, which is
not possible for now. The rootless single userns patches under
development by Giuseppe will fix this, but won't land in 1.2.x.

For now, disable --size as rootless.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-04-03 10:57:03 -04:00
baude 576a80b0d7 add remote-client diff
the remote client now can run the diff command to report changes,
modifications, and deletions in an image or container.

Signed-off-by: baude <bbaude@redhat.com>
2019-04-03 09:52:38 -05:00
Giuseppe Scrivano 72382a12a7
rootless: use a single user namespace
simplify the rootless implementation to use a single user namespace
for all the running containers.

This makes the rootless implementation behave more like root Podman,
where each container is created in the host environment.

There are multiple advantages to it: 1) much simpler implementation as
there is only one namespace to join.  2) we can join namespaces owned
by different containers.  3) commands like ps won't be limited to what
container they can access as previously we either had access to the
storage from a new namespace or access to /proc when running from the
host.  4) rootless varlink works.  5) there are only two ways to enter
in a namespace, either by creating a new one if no containers are
running or joining the existing one from any container.

Containers created by older Podman versions must be restarted.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-01 15:32:58 +02:00
Giuseppe Scrivano ed326206f2
rootless: remove SkipStorageSetup()
in the few places where we care about skipping the storage
initialization, we can simply use the process effective UID, instead
of relying on a global boolean flag.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-04-01 13:24:04 +02:00
Daniel J Walsh 33da2d4890
Capitalize global options help information
--trace, --help and --version were not capatilized like the rest of the
global options.  This patch fixes this problem.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-03-30 05:54:53 -04:00
OpenShift Merge Robot f4d90a96cb
Merge pull request #2691 from baude/psdynamic
Add watch mode to podman ps
2019-03-29 07:59:11 -07:00
OpenShift Merge Robot 8b5f101726
Merge pull request #2635 from rhatdan/cache
Set blob cache directory based on GraphDriver
2019-03-29 07:59:04 -07:00
OpenShift Merge Robot 9b789359f1
Merge pull request #2575 from haircommander/hotfix_play_kube
Default to SELinux private label for play kube mounts
2019-03-29 05:47:02 -07:00
Daniel J Walsh 6b0ac2301b
Cleanup image2 -> image for imports
Remove references to image2 in source code.  Makes the code
slightly more readable.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-03-29 08:27:47 -04:00
Daniel J Walsh c37589f503
Set blob cache directory based on GraphDriver
Currently in rootless containers, we end up not using the blob cache.
We also don't store the blob cache based on the users specified graph
storage.  This change will cause the cache directory to be stored with
the rest of the containe images.

While doing this patch, I found that we had duplicated GetSystemContext in
two places in libpod. I cleaned this up.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-03-29 08:27:33 -04:00
OpenShift Merge Robot df5b6e29a6
Merge pull request #2784 from QiWang19/digest
fix bug remote-podman images --digests
2019-03-28 16:51:31 -07:00
OpenShift Merge Robot 9085898ce2
Merge pull request #2773 from QiWang19/bug
fix bug `system df` add a space to the output
2019-03-28 09:21:48 -07:00
Valentin Rothberg a5443a532b vendor buildah, image, storage, cni
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2019-03-28 15:12:26 +01:00
OpenShift Merge Robot e7a2eecf5f
Merge pull request #2760 from mheon/misc_small_changes
Remove ulele/deepcopier in favor of JSON deep copy
2019-03-28 07:06:31 -07:00
Peter Hunt 0d0ad59641 Default to SELinux private label for play kube mounts
Before, there were SELinux denials when a volume was bind-mounted by podman play kube.
Partially fix this by setting the default private label for mounts created by play kube (with DirectoryOrCreate)
For volumes mounted as Directory, the user will have to set their own SELinux permissions on the mount point

also remove left over debugging print statement

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-03-28 09:54:31 -04:00
baude 3423c5a8c9 Add watch mode to podman ps
allows users to "watch" the output of podman ps on a set interval in
seconds. in watch mode, the screen is cleared between intervals as well.

podman -ps -w1 watches on 1 second intervals

Signed-off-by: baude <bbaude@redhat.com>
2019-03-28 08:34:27 -05:00
Qi Wang 2729695892 fix bug `system df` add blank space to the output
fix typo in Containers space usage: of podman system df -v, add a space for created time Change format string to const

Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-03-28 09:13:40 -04:00
Qi Wang fd7a9c4a96 fix bug remote-podman images --digests
Add `digest` field to Image struct and update API.md
Show image digests when using --digests in podman-remote.

```
$ PODMAN_VARLINK_ADDRESS="tcp:127.0.0.1:1234" sudo bin/podman-remote images --digests
REPOSITORY                  TAG      DIGEST                                                                    IMAGE ID       CREATED       SIZE
docker.io/library/alpine    latest   sha256:d05ecd4520cab5d9e5d877595fb0532aadcd6c90f4bbc837bc11679f704c4c82   5cb3aa00f899   2 weeks ago   5.79 MB
docker.io/library/busybox   latest   sha256:4415a904b1aca178c2450fd54928ab362825e863c0ad5452fd020e92f7a6a47e   d8233ab899d4   5 weeks ago   1.42 MB
```

Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-03-27 23:09:35 -04:00
OpenShift Merge Robot 850326cc19
Merge pull request #2777 from edsantiago/system_df_invalid_arg
system df: reject invalid arguments
2019-03-27 17:03:51 -07:00
Matthew Heon 179a66f1a0 Use spaces instead of tab for JSON marshal indent
The jsoniterator library believes that panic() is a reasonable
response to being told to indent JSON with a tab. So use spaces
instead.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-03-27 20:00:31 -04:00
Matthew Heon 589486e3e5 Fix gofmt
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-03-27 20:00:31 -04:00
Matthew Heon 5ed62991dc Remove ulele/deepcopier in favor of JSON deep copy
We have a very high performance JSON library that doesn't need to
perform code generation. Let's use it instead of our questionably
performant, reflection-dependent deep copy library.

Most changes because some functions can now return errors.

Also converts cmd/podman to use jsoniter, instead of pkg/json,
for increased performance.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-03-27 20:00:31 -04:00
OpenShift Merge Robot 340eeec1b6
Merge pull request #2747 from mheon/dns_none
Add --dns=none
2019-03-27 10:49:42 -07:00
Matthew Heon 0cd92eae65 Resolve review comments
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-03-27 10:12:18 -04:00
Matthew Heon 236300d028 Add --no-hosts flag to disable management of /etc/hosts
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-03-27 10:12:18 -04:00
Ed Santiago bf75ecd4d1 system df: reject invalid arguments
Signed-off-by: Ed Santiago <santiago@redhat.com>
2019-03-27 07:58:42 -06:00
Giuseppe Scrivano aacc5a8632
rootless: fix regression when using exec on old containers
fallback to the previous behavior of joining only the user namespace,
when we cannot join the conmon userns+mount namespaces.

Closes: https://github.com/containers/libpod/issues/2673

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-27 14:04:35 +01:00
baude 7f2221d48f size is optional for container inspection
on the remote client, if a user wants to know the rootfs size of a
container, a -s should be passed.  this corrects a behavior where size
was shown by default.

Fixes #2765

Signed-off-by: baude <bbaude@redhat.com>
2019-03-26 10:14:58 -05:00
OpenShift Merge Robot 60b009af4e
Merge pull request #2758 from baude/eventsDied
Add "died" event
2019-03-26 07:09:17 -07:00
OpenShift Merge Robot 9e556530d2
Merge pull request #2498 from QiWang19/sysdf
podman system df- show podman disk usage
2019-03-26 04:51:06 -07:00
Qi Wang 25e0f87069 system df to show podman disk usage
Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-03-25 15:05:26 -04:00
baude e730fc6093 Add "died" event
We have a new event for container 'Exited' which has been renamed to
'died'.

also removed the stream bool from the varlink endpoint for events
because it can be determined by the varlink more value.

Signed-off-by: baude <bbaude@redhat.com>
2019-03-25 10:28:50 -05:00
baude bb69004b8c podman health check phase3
podman will not start a transient service and timer for healthchecks.
this handles the tracking of the timing for health checks.

added the 'started' status which represents the time that a container is
in its start-period.

the systemd timing can be disabled with an env variable of
DISABLE_HC_SYSTEMD="true".

added filter for ps where --filter health=[starting, healthy, unhealthy]
can now be used.

Signed-off-by: baude <bbaude@redhat.com>
2019-03-22 14:58:44 -05:00
Giuseppe Scrivano e31a3d3841
utils: drop dead function
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-21 20:14:40 +01:00
Matthew Heon 9516f28808 Make "stopped" a valid state that maps to "exited"
Fixes #2526

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-03-21 10:00:25 -04:00
Giuseppe Scrivano a53c768409
podman: do not split --env on comma
if --env "a=b,c" is used, do not split into a=b and c=.

Closes: https://github.com/containers/libpod/issues/2712

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-20 23:22:22 +01:00
Giuseppe Scrivano ab576e8577
rootless: implement pod restart
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-19 15:01:53 +01:00
Giuseppe Scrivano ffc08860ce
rootless: reimplement restart with rootless.Argument()
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-19 15:01:52 +01:00
Giuseppe Scrivano 4ab7462add
rootless, rm: fix retcode when the container is not found
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-19 15:01:50 +01:00
Giuseppe Scrivano 3f96d3617b
rootless: fix ps command
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-19 15:01:50 +01:00
Giuseppe Scrivano 69593923e0
rootless: fix pod kill
we don't need to access the storage

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-03-19 15:01:49 +01:00
OpenShift Merge Robot ac523cbe2b
Merge pull request #2688 from baude/issue2671
support GO template {{ json . }}
2019-03-18 15:51:31 -07:00
OpenShift Merge Robot 7ed8366834
Merge pull request #2696 from haircommander/play-kube-dash-u
Incorporate image inspect data in play kube
2019-03-18 14:16:16 -07:00
OpenShift Merge Robot 07e10d9dd6
Merge pull request #2700 from edsantiago/podman_umount_args
podman umount: error out if called with no args
2019-03-18 14:01:43 -07:00