1238 Commits

Author SHA1 Message Date
46e0cf0ef8 runtime: add /usr/libexec/podman/conmon to the conmon paths
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-06-01 16:43:35 +02:00
62ea88fa19 varlink build
Add the endpoint and methods for build so users can build an image
with varlink.  build can also use the more method for streaming
output back more regularily; however, it looks like a bug in buildah
does not output all build output to the writer provided.

Tidy up some create fixes and add endpoint for GetImage requested by
jhonce.

Signed-off-by: baude <bbaude@redhat.com>
2018-06-01 09:13:31 -05:00
29c831f9d6 Add OnBuild support for podman build
Only supported for docker formated images. OCI Does not support this flag.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2018-06-01 10:08:56 -04:00
ff3b46e769 Merge pull request #867 from wking/release-script
hack/release.sh: Add a release script
2018-06-01 09:40:48 -04:00
8f14f966be return all inspect info for varlink containerinspect
when obtaining the inspect information for a container through varlink, we need
to extract more container related information by parsing the data through the
method 'GetCtrInspectInfo' which was previously only in podman's main.

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

Closes: #866
Approved by: rhatdan
2018-06-01 08:37:55 +00:00
34886a79d6 hooks/exec: Allow successful reaps for 0s post-kill timeouts
I'd been getting the failed-to-reap errors locally, but on an
unrelated pull-request the FAH27 suite successfully reaped that hook
[1]:

  --- FAIL: TestRunKillTimeout (0.50s)
  	assertions.go:226:

  	Error Trace:	exec_test.go:210

  	Error:      	Expect "signal: killed" to match "^failed to reap process within 0s of the kill signal$"
  FAIL

The successful-reap cases limit our coverage, but I don't think that's
a big enough problem to be worth repeated polling or similar until we
do get the failed-to-reap error.

[1]: 96c1535fdc.0.1527811547665239762/output.log

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #868
Approved by: rhatdan
2018-06-01 08:28:06 +00:00
8405ff9baa hack/release.sh: Add a release script
Matthew had expressed interest in a lovely release script on IRC.
Here's my attempt to encode the changes from the v0.5.4 release
branch.  I've also added tag signing, so you may be prompted for your
passphrase during that step.

The version scheme for 0.x.y is 0.${month}.${count_that_month} [1].
We could automatically calculate those with a dozen or so lines of
shell script, but we don't think that's worth the maintenance burden
when it's easy enough for the caller to think them up on their own
[2].

The spec sed also bumps the Python package version to match, which
seems like the intended behavior until 1.0 when the Python code will
move into its own repository [3].

[1]: https://github.com/projectatomic/libpod/pull/867#issuecomment-393731907
[2]: https://github.com/projectatomic/libpod/pull/867#issuecomment-393743295
[3]: https://github.com/projectatomic/libpod/issues/786#issuecomment-390682012

Signed-off-by: W. Trevor King <wking@tremily.us>
2018-05-31 21:04:46 -07:00
2cb881fa58 Implement container attach
Signed-off-by: Jhon Honce <jhonce@redhat.com>
2018-05-31 20:13:35 -07:00
a9e9fd4f5b If user specifies UIDMapSlice without GIDMapSlice, set them equal
We need to map slices set for both UID and GID maps to be equivalent if
not specified by user.  Currently if you do not specify both the containers
are not running.

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

Closes: #865
Approved by: baude
2018-05-31 22:30:16 +00:00
0eda60957d fix panic with podman pull
when there are no registries configured for the system and the user provided
a short image name, we panic'd due a logic bug in recent image pull changes.

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

Closes: #841
Approved by: rhatdan
2018-05-31 22:07:15 +00:00
81d6f082f3 pkg/hooks/exec: Add a new package for local hook execution
This wraps os/exec to:

* Clear the environment when the hook doesn't set 'env'.  The runtime
  spec has [1]:

  > * env (array of strings, OPTIONAL) with the same semantics as IEEE
  >   Std 1003.1-2008's environ.

  And running execle or similar with NULL env results in an empty
  environment:

    $ cat test.c
    #include <unistd.h>

    int main()
    {
      return execle("/usr/bin/env", "env", NULL, NULL);
    }
    $ cc -o test test.c
    $ ./test
    ...no output...

  Go's Cmd.Env, on the other hand, has [2]:

  > If Env is nil, the new process uses the current process's environment.

  This commit works around that by setting []string{} in those cases
  to avoid leaking the runtime environment into the hooks.

* Roll the 'timeout' value (if set) into the passed context.  There's
  no need for two separate ways to cancel hook execution.

* Add a configurable timeout on abandoning a post-kill wait.  The
  waiting goroutine will continue and eventually reap the process, but
  this avoids blocking the Run() call when that takes inordinately
  long (for example, if a GPU cleanup hook is stuck in I/O sleep [3]).

The 'env' output format is specified in POSIX [4].

[1]: https://github.com/opencontainers/runtime-spec/blob/v1.0.1/config.md#posix-platform-hooks
[2]: https://golang.org/pkg/os/exec/#Cmd
[3]: https://github.com/projectatomic/libpod/pull/857#discussion_r192191002
[4]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #857
Approved by: mheon
2018-05-31 21:45:27 +00:00
824ea4da33 Remove --net flag and make it an alias for --network
Signed-off-by: Matthew Heon <mheon@redhat.com>

Closes: #862
Approved by: rhatdan
2018-05-31 20:09:38 +00:00
d6b8f62dd6 Catch does not exist error
There was a new line at the end of does not exist
which was causing this to fail.

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

Closes: #863
Approved by: baude
2018-05-31 19:28:00 +00:00
4dfe0d60f3 hooks: Rename Hooks() output to extensionStageHooks
To more clearly distinguish between the extensionStages input to New()
(a slice of strings) and the map output from Hooks().

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #855
Approved by: rhatdan
2018-05-31 14:11:52 +00:00
7c1434c2f7 hooks: Allow local control of OCI stages via extensionStages
This allows callers to avoid delegating to OCI runtimes for cases
where they feel that the runtime hook handling is unreliable [1].

[1]: https://github.com/projectatomic/libpod/issues/730#issuecomment-392959938

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #855
Approved by: rhatdan
2018-05-31 14:11:52 +00:00
7c6034e161 We need to change the SELinux label of the conmon process to s0
If SELinux is enabled, we are leaking in pipes into the container
owned by conmon.  The container processes are not allowed to use
these pipes, if the calling process is fully ranged.  By changing
the level of the conmon process to s0, this allows container processes
to use the pipes.

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

Closes: #854
Approved by: mheon
2018-05-31 13:51:11 +00:00
bae80a0b66 Clear all caps, except the bounding set, when --user is specified.
Currently we are giving all caps to users when running with podman run --user,
They should get none by default.  If the command line includes --cap-add, then
we need to run with those capabilties.  Similarly we need to drop caps from
bounding set, if user specifies --cap-drop

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

Closes: #851
Approved by: mheon
2018-05-31 13:46:08 +00:00
e6b088fc6e Makefile: Add stderr redirect to HAS_PYTHON3 definition
For two reasons:

* When a system is missing python3, we don't need to spam them with
  "Command not found" in their stderr.

* Without the redirect, GNU Make (at least version 4.2.1) is overly
  clever and tries to invoke the command itself, not realizing that
  it's a shell builtin [1].

    $ make --version
    GNU Make 4.2.1
    Built for aarch64-unknown-linux-gnu
    Copyright (C) 1988-2016 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    $ cat Makefile
    PYTHON3_A := $(shell command -v python3)
    PYTHON3_B := $(shell command -v python3 2>/dev/null)

    test:
            @echo "SHELL: '$(SHELL)'"
            @echo "PYTHON3_A: '$(PYTHON3_A)'"
            @echo "PYTHON3_B: '$(PYTHON3_B)'"
    $ make
    make: command: Command not found
    SHELL: '/bin/sh'
    PYTHON3_A: ''
    PYTHON3_B: '/usr/bin/python3'

  By adding the redirect we actually hit the shell and can
  successfully invoke command.

[1]: https://stackoverflow.com/a/17550243

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #856
Approved by: rhatdan
2018-05-31 12:57:34 +00:00
a127b4f312 Force update of API.md
Signed-off-by: Matthew Heon <mheon@redhat.com>

Closes: #849
Approved by: rhatdan
2018-05-30 18:41:54 +00:00
6d90259999 do not allow port related args to be used with --network=container:
we cannot set additional ports on an existing container namespace, so we should
not allow --network=container with publish or publish-all.

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

Closes: #853
Approved by: baude
2018-05-30 18:40:46 +00:00
66a5bc0b72 Update .gitignore for Varlink code and gopathok
Signed-off-by: Matthew Heon <mheon@redhat.com>

Closes: #847
Approved by: rhatdan
2018-05-30 17:06:22 +00:00
9ace06e0c2 sort containers and images by create time
When running podman ps or podman images, the containers and images should
be sorted by newest to oldest.

Resolves: #830

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

Closes: #848
Approved by: mheon
2018-05-30 16:30:20 +00:00
71487466fb Cleanup man pages
Format md files to work properly when converted to man pages.
Add sed command to cleanup table in podman man page.

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

Closes: #842
Approved by: mheon
2018-05-30 13:49:45 +00:00
8ee0f2bf91 add go generate varlink to copr spec
Now that we make the varlink .go file on the fly, we need to have the
spec call go generate on it to build properly.

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

Closes: #843
Approved by: baude
2018-05-29 20:59:08 +00:00
8b3f8076c7 Remove varlink's generated Go file
Signed-off-by: baude <bbaude@redhat.com>

Closes: #840
Approved by: baude
2018-05-29 20:25:10 +00:00
44d1c1c631 Merge pull request #834 from mheon/bump_0_5_4
Bump 0 5 4
2018-05-25 13:54:33 -04:00
a9f200065c Bump gitvalidation epoch
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-05-25 13:49:19 -04:00
70672652b6 Bump to v0.6.1-dev
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
2018-05-25 13:48:56 -04:00
1f2e2a25bf Bump to v0.5.4
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
v0.5.4
2018-05-25 13:46:50 -04:00
1930f5d709 Vendor in latest projectatomic/buildah
buildah fixed its probelm where it was not pulling in
the ENV of the base image. This pulls that change into
libpod as well.

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

Closes: #832
Approved by: mheon
2018-05-25 17:03:09 +00:00
8fcf1aaa29 Rename addFIPSsModeSecret to addFIPSModeSecret
Signed-off-by: Jhon Honce <jhonce@redhat.com>

Closes: #833
Approved by: mheon
2018-05-25 16:37:34 +00:00
de13777e71 Make references to the Process part of Spec conditional
The OCI runtime spec does not require Process to be passed (IE,
it can be nil). Make most of our references to it conditional on
it existing.

Signed-off-by: Matthew Heon <mheon@redhat.com>

Closes: #828
Approved by: mheon
2018-05-25 15:32:47 +00:00
c8b72e57a7 save and load should support multi-tag for docker-archive
The docker-archive tar files can have multiple tags for the same
image stored in it. Load pulls all the tags found in the archive
when loading a tar file. Save can oush multiple tags of the same
image to a tar archive.

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

Closes: #819
Approved by: rhatdan
2018-05-25 15:15:47 +00:00
0a4ade1c17 Implement python podman create and start
- Added alias 'container()' to image model for CreateContainer()
- Fixed return in containers_create.go to wrap error in varlink
  exception
- Added a wait time to container.kill(), number of seconds to wait
  for the container to change state
- Refactored cached_property() to use system libraries
- Refactored tests to speed up performance

Signed-off-by: Jhon Honce <jhonce@redhat.com>

Closes: #821
Approved by: rhatdan
2018-05-25 09:31:21 +00:00
684b544e9c Spell check strings and comments
Signed-off-by: Jhon Honce <jhonce@redhat.com>

Closes: #831
Approved by: rhatdan
2018-05-25 08:45:15 +00:00
a7180cd545 hooks/1.0.0: Error on empty process.args instead of panicking
The process property is optional [1], which this package already
handled appropriately, although I've added a new test here to guard
against regressions.

The process.args entry is required when process is set [2], and it's
also required to contain at least one entry [3].  The previous
implementation here assumed that would always be satisfied, and
panicked on empty process.args.  With this commit, we avoid the panic
and instead return an error message explaining why the input was
invalid.

[1]: https://github.com/opencontainers/runtime-spec/blame/v1.0.1/config.md#L145
[2]: https://github.com/opencontainers/runtime-spec/blame/v1.0.1/config.md#L157
[3]: https://github.com/opencontainers/runtime-spec/blame/v1.0.1/config.md#L158

Reported-by: Brent Baude <bbaude@redhat.com>
Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #829
Approved by: mheon
2018-05-24 21:27:05 +00:00
b09fca74af Set Entrypoint from image only if not already set
Signed-off-by: Matthew Heon <mheon@redhat.com>

Closes: #827
Approved by: rhatdan
2018-05-24 17:36:37 +00:00
915364034f Update podman build to match buildah bud functionality
Add --label, --annotations, --idfile, --squash

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

Closes: #824
Approved by: TomSweeneyRedHat
2018-05-23 22:38:17 +00:00
d252fa710e Fix test_runner call of podman varlink
- Updated some tests due to slippage between tests and code
- Skipped tests will be reinstated in a separate PR

Signed-off-by: Jhon Honce <jhonce@redhat.com>

Closes: #825
Approved by: rhatdan
2018-05-23 19:46:23 +00:00
05bc77f0cb Fix handling of command in images
Currently we are dropping the command entry from the create
line and using the image Cmd.  This change will only use the
image Cmd if the user did not specify a Cmd.

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

Closes: #823
Approved by: umohnani8
2018-05-23 18:39:06 +00:00
5f0d4b10e9 Add support for Zulu timestamp parsing
- Improve error message when podman varlink service is not running

Signed-off-by: Jhon Honce <jhonce@redhat.com>

Closes: #800
Approved by: rhatdan
2018-05-23 17:54:09 +00:00
c1efde20e0 Clarify using podman build with a URL, Git repo, or archive.
Signed-off-by: Joe Doss <joe@solidadmin.com>

Closes: #822
Approved by: rhatdan
2018-05-23 17:40:25 +00:00
926d07d0aa Vendor in latest container/storage for devicemapper support
container/storage now supports devicemapper options that allow you to
configure it.

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

Closes: #808
Approved by: mheon
2018-05-22 16:20:25 +00:00
ae7c45968d set varlink timeout to 1 seconds
Add option to varlink for --timeout.  Input for this option is in milliseconds

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

Closes: #814
Approved by: baude
2018-05-22 13:50:10 +00:00
82feafecdd podman create, start, getattachsocket
First pass at implement API endpoints for create and start.

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

Closes: #805
Approved by: baude
2018-05-21 19:26:56 +00:00
687b165a73 use $GO env-var instead of hard-coded go binary
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>

Closes: #817
Approved by: TomSweeneyRedHat
2018-05-21 17:53:07 +00:00
390bd16d37 tidy up the copr spec
on os's (like centos) where python3 might not be installed, do not attempt to build
the python3 varlink client.  varlink python is only supported on python3.

also, change the conditions for f28 to match the fedora official specs.

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

Closes: #813
Approved by: baude
2018-05-21 17:19:14 +00:00
ca1c6ef5be honor multiple change values
In the case where changes are made to Env, Expose, Volumes, or labels, we should
honor that multiple values are valid.

Resolves: #795

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

Closes: #815
Approved by: mheon
2018-05-21 16:13:16 +00:00
31e3a50ddd hooks/README: Fix some Markdown typos (e.g. missing runc target)
I'd accidentally introduced these typos in ea415610 (hooks/docs: Add
oci-hooks.5 and per-package man page building, 2018-05-15, #772).

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #810
Approved by: mheon
2018-05-21 14:09:25 +00:00
fb628380a2 oci-hooks.5: Discuss directory precedence and monitoring
We've had this functionality since 68eb128f (pkg/hooks: Version the
hook structure and add 1.0.0 hooks, 2018-04-27, #686), but didn't have
any user-facing docs for it.

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #811
Approved by: mheon
2018-05-21 13:36:17 +00:00