Commit Graph

464 Commits

Author SHA1 Message Date
OpenShift Merge Robot 3957058f29
Merge pull request #7753 from vrothberg/fix-7689
remote stats
2020-09-24 15:32:36 +00:00
Valentin Rothberg 19b955f099 stats: break out CLI options
Have a clear separation of concerns for the CLI-only options (and their
logic) from the backend.  The backend logic is now easier to understand
(e.g., `stream` instead of `noStream`).

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-24 14:28:10 +02:00
Valentin Rothberg 762b787fbf new endpoint: /libpod/containers/stats
Add a new endpoint for container stats allowing for batch operations on
more than one container.  The new endpoint deprecates the
single-container endpoint which will eventually be removed with the next
major release.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-24 14:09:55 +02:00
OpenShift Merge Robot 9765619787
Merge pull request #7761 from baude/interactive
set interactive mode with compat create endpoint
2020-09-24 09:46:46 +00:00
zhangguanzhang 873989f7a4 apiv2 container limit differ from docker-api
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-09-24 08:54:46 +08:00
baude 139100a1f4 set interactive mode with compat create endpoint
when creating a container using the compat endpoint, the interactive bool was being hard set to false and ignoring the user's input.

Signed-off-by: baude <bbaude@redhat.com>
2020-09-23 15:44:23 -05:00
OpenShift Merge Robot 4c48c71729
Merge pull request #7712 from baude/killreturn
add missing return for compat kill
2020-09-22 21:04:37 +00:00
Jhon Honce 23bd99623e Add Server header to API service responses
Aids in reading logs of different services

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-22 09:34:48 -07:00
baude cd65f133d5 add missing return for compat kill
on an error condition in kill for the compatibility layer, we were missing a return.

Signed-off-by: baude <bbaude@redhat.com>
2020-09-21 12:31:07 -05:00
Jhon Honce e06230c9d5 Restore 'id' stanza in pull results
id is the last image id from the set of id's returned via the images
stanza.

id may be deprecated in a future version of the API

Created test_rest_v2_0_0.py to reflect the bump in the API Version.

Fixes #7686

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-21 08:51:52 -07:00
OpenShift Merge Robot 051912c8e6
Merge pull request #7688 from vrothberg/fix-7521
remote stats fixes
2020-09-21 10:33:01 -04:00
Valentin Rothberg 3fdb83a2ee stats: log errors instead of sending 500
As 200 is already out the door, we cannot send 500s anymore.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-21 09:46:17 +02:00
Jhon Honce ed930d9d7c Evict containers before removing via V2 API
Fixes #7535

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-18 10:05:07 -07:00
OpenShift Merge Robot 5b7509c562
Merge pull request #7660 from ashley-cui/logs
Fix remote logs
2020-09-18 09:46:41 -04:00
Valentin Rothberg ae0e4dfd75 stats: detect closed client connection
Detect closed client connections and stop streaming.

Fixes: #7521
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-18 14:07:18 +02:00
Valentin Rothberg c6410076b0 stats endpoint: write OK header once
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-18 13:33:32 +02:00
Ashley Cui e1ac8d9aa2 WIP: Fix remote logs
Docker compatibility  - logs endpoint does not write stream headers if container has a tty

Signed-off-by: Ashley Cui <acui@redhat.com>
2020-09-16 13:53:15 -04:00
Jhon Honce 222cf74412 Refactor remote pull to provide progress
podman and podman-remote do not exactly match as the lower layer code
checks if the output is destined for a  TTY before creating the progress
bars.  A future PR for containers/images could change this behavior.

Fixes #7543

Tested with:

$ (echo '# start'; podman-remote pull nginx ) 2>&1 | ts '[%Y-%m-%d %H:%M:%.S]'
$ (echo '# start'; podman pull nginx ) 2>&1 | ts '[%Y-%m-%d %H:%M:%.S]'

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-16 10:44:26 -07:00
OpenShift Merge Robot 0d14d7b715
Merge pull request #7624 from QiWang19/policy-option
Supports import&run--signature-policy
2020-09-16 11:05:33 +02:00
OpenShift Merge Robot 26049193e0
Merge pull request #7642 from jwhonce/issues/7327-2
Refactor API version values
2020-09-16 04:06:30 +02:00
Qi Wang 2fcd1d7b4d Supports import&run--signature-policy
Enables podman create, pull, run, import to use --signature-policy option. Set it as hidden flag to be consistent with other commands.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-09-15 16:09:33 -04:00
Jhon Honce 8a8bae8299 Refactor API version values
* API-Version header now Major.Minor to support tools parsing this
   header
 * Libpod Version updated to 2.0.0 to reflect changes in API field
   values
 * API-Version and Libpod-API-Version headers are now included in all
   results

Fixes #7327

 * Header support tested against goland 2020.2 and
    https://www.jetbrains.com/help/idea/docker.html plugin

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-15 11:29:45 -07:00
OpenShift Merge Robot bec96ab034
Merge pull request #7638 from jwhonce/wip/archive
Correct HTTP methods for /containers/{id}/archive
2020-09-15 20:01:36 +02:00
OpenShift Merge Robot 0be5836e49
Merge pull request #7637 from vrothberg/fix-7263
events endpoint: header: do not wait for events
2020-09-15 17:19:45 +02:00
Jhon Honce e73db4b43a Correct HTTP methods for /containers/{id}/archive
Make methods align with Docker API

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-15 08:11:49 -07:00
Valentin Rothberg 0b7cb2c6b2 events endpoint: header: do not wait for events
Do not wait for events to occur before writing the OK header.
Events can take an unknown amount of time to occur and clients
do not need to wait until then to know if the connection is
good.

Fixes: #7263
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-15 14:28:38 +02:00
Jhon Honce 146c68f3ac Refactor API build endpoint to be more compliant
* Refactor/Rename channel.WriteCloser() to encapsulate the channel
* Refactor build endpoint to "live" stream buildah output channels
  over API rather then buffering output
* Refactor bindings/tunnel build because endpoint changes
  * building tar file now in bindings rather then depending on
    caller
* Cleanup initiating extra image engine
* Remove setting fields to zero values (less noise in code)
* Update tests to support remote builds

Fixes #7136
Fixes #7137

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-09-14 13:46:59 -07:00
Daniel J Walsh 526f01cdf5
Fix up errors found by codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-09-11 06:14:25 -04:00
OpenShift Merge Robot 3d33923374
Merge pull request #7536 from Luap99/api-network-filter
APIv2 Add network list filtering
2020-09-10 10:15:01 -04:00
OpenShift Merge Robot 9c4c883d79
Merge pull request #7572 from vrothberg/fix-7135
remote kill: don't wait for the container to stop
2020-09-09 12:22:08 -04:00
OpenShift Merge Robot 1b2b068ce8
Merge pull request #7569 from zhangguanzhang/fix-apiv2-top-response-two-value
fix APIv2 pods top of non-exist pod gets two response value
2020-09-09 09:12:40 -04:00
Valentin Rothberg 0533bc3588 compat kill: only wait for 0 signal and sigkill
Docker does not wait unconditionally.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-09 14:55:42 +02:00
Valentin Rothberg fce2eaa6ca remote kill: don't wait for the container to stop
Invert the branch logic to match the comment.  Docker seems to wait for
the container while Podman does not.

Enable the remote-disabled system test as well.

Fixes: #7135
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-09 14:38:28 +02:00
zhangguanzhang a4ffed91da fix APIv2 pods top of non-exist pod gets two response value
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-09-09 18:50:17 +08:00
Valentin Rothberg 7fea46752c support multi-image (docker) archives
Support loading and saving tarballs with more than one image.
Add a new `/libpod/images/export` endpoint to the rest API to
allow for exporting/saving multiple images into an archive.

Note that a non-release version of containers/image is vendored.
A release version must be vendored before cutting a new Podman
release.  We force the containers/image version via a replace in
the go.mod file; this way go won't try to match the versions.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-09-08 08:47:19 +02:00
Paul Holzinger ce7d2bba1f Fix typo in the remove network api doc
Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2020-09-07 15:40:05 +02:00
Paul Holzinger 5b8f3f2f1f APIv2 Add network list filtering
Add the filter option to the libpod endpoint.
Add support for the name filter on the docker endpoint.

Add apiv2 tests for the network list endpoints.
Enable podman network integration tests for remote.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2020-09-07 15:39:41 +02:00
Paul Holzinger ebfea2f4f8 APIv2 add generate systemd endpoint
Add support for generating systemd units
via the api and podman-remote.

Change the GenerateSystemdReport type to return the
units as map[string]string with the unit name as key.

Add `--format` flag to `podman generate systemd`
to allow the output to be formatted as json.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2020-09-02 22:06:19 +02:00
OpenShift Merge Robot 97780a110b
Merge pull request #7436 from rhatdan/variant
Add support for image pull overrides
2020-08-28 16:02:56 -04:00
OpenShift Merge Robot 0640cc7921
Merge pull request #7428 from mheon/apiv2_container_pod_errors
Ensure pod REST API endpoints include ctr errors
2020-08-28 09:59:37 -04:00
Daniel J Walsh 3c6603a2f8
Add support for variant when pulling images
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-08-28 09:36:11 -04:00
OpenShift Merge Robot e3edb7ba9d
Merge pull request #7416 from Luap99/fix-swagger-doc
[CI:DOCS] fix swagger api docs
2020-08-28 09:28:51 -04:00
Matthew Heon 580c39fea8 Ensure pod REST API endpoints include ctr errors
The APIv2 pod endpoints that operate on multiple containers, such
as Start, Kill, Pause, Unpause, do not report errors encountered
by individual containers, because they incorrectly assume that
any error is fatal. The documentation for the Libpod API calls
notes, however, that ErrPodPartialFail will *always* be returned
if any container failed; so we need to ignore that error and
continue to collating and returning container errors.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-08-27 15:04:22 -04:00
Ed Santiago b13af4537f
Merge pull request #7451 from mheon/fix_7195
Send HTTP Hijack headers after successful attach
2020-08-27 12:57:33 -06:00
Matthew Heon 2ea9dac5e1 Send HTTP Hijack headers after successful attach
Our previous flow was to perform a hijack before passing a
connection into Libpod, and then Libpod would attach to the
container's attach socket and begin forwarding traffic.

A problem emerges: we write the attach header as soon as the
attach complete. As soon as we write the header, the client
assumes that all is ready, and sends a Start request. This Start
may be processed *before* we successfully finish attaching,
causing us to lose output.

The solution is to handle hijacking inside Libpod. Unfortunately,
this requires a downright extensive refactor of the Attach and
HTTP Exec StartAndAttach code. I think the result is an
improvement in some places (a lot more errors will be handled
with a proper HTTP error code, before the hijack occurs) but
other parts, like the relocation of printing container logs, are
just *bad*. Still, we need this fixed now to get CI back into
good shape...

Fixes #7195

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-08-27 12:50:22 -04:00
zhangguanzhang fa6ba68026 fix apiv2 will create containers with incorrect commands
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-08-24 23:07:30 +08:00
Paul Holzinger b4adc17614 [CI:DOCS] fix swagger api docs
Separate the volume endpoints into compat and libpod,
as it is done for the other endpoints.

Move the libpod image push endpoint to images.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2020-08-23 15:10:22 +02:00
zhangguanzhang fb4977b936 fix /libpod/pods/json returns null when there are no pods
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-08-21 17:48:14 +08:00
OpenShift Merge Robot 8caed30574
Merge pull request #7283 from mheon/pod_infra_has_exit_cmd
Ensure pod infra containers have an exit command
2020-08-17 21:08:32 +02:00
Matthew Heon c4b2078508 Clean up pods before returning from Pod Stop API call
This should help alleviate races where the pod is not fully
cleaned up before subsequent API calls happen.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-08-17 11:04:26 -04:00
Valentin Rothberg 0f4e2be073 podman.service: use sdnotiy
Commit 2b6dd3fb43 set the killmode of the podman.service to the
systemd default which ultimately lead to the problem that systemd
will kill *all* processes inside the unit's cgroup and hence kill
all containers whenever the service is stopped.

Fix it by setting the type to sdnotify and the killmode to process.
`podman system service` will send the necessary notify messages
when the NOTIFY_SOCKET is set and unset it right after to prevent
the backend and container runtimes from jumping in between and send
messages as well.

Fixes: #7294
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-08-13 17:53:59 +02:00
Matthew Heon 569854d634 Unconditionally retrieve pod names via API
The ListContainers API previously had a Pod parameter, which
determined if pod name was returned (but, notably, not Pod ID,
which was returned unconditionally). This was fairly confusing,
so we decided to deprecate/remove the parameter and return it
unconditionally.

To do this without serious performance implications, we need to
avoid expensive JSON decodes of pod configuration in the DB. The
way our Bolt tables are structured, retrieving name given ID is
actually quite cheap, but we did not expose this via the Libpod
API. Add a new GetName API to do this.

Fixes #7214

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-08-10 10:15:51 -04:00
OpenShift Merge Robot 3173a18f6f
Merge pull request #7215 from vrothberg/flatten-the-curve
images: speed up lists
2020-08-08 07:14:37 -04:00
Valentin Rothberg 8827100b98 image list: speed up
Listing images has shown increasing performance penalties with an
increasing number of images.  Unless `--all` is specified, Podman
will filter intermediate images.  Determining intermediate images
has been done by finding (and comparing!) parent images which is
expensive.  We had to query the storage many times which turned it
into a bottleneck.

Instead, create a layer tree and assign one or more images to nodes that
match the images' top layer.  Determining the children of an image is
now exponentially faster as we already know the child images from the
layer graph and the images using the same top layer, which may also be
considered child images based on their history.

On my system with 510 images, a rootful image list drops from 6 secs
down to 0.3 secs.

Also use the tree to compute parent nodes, and to filter intermediate
images for pruning.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-08-07 12:14:11 +02:00
OpenShift Merge Robot 7eca5571dc
Merge pull request #7204 from baude/issue7197
Missing return after early exit
2020-08-04 14:16:40 +02:00
Brent Baude 246603041c docker-compose uses application/tar
even though the official documentation suggests that application/x-tar should be used for tar files, it seems docker-compose uses application/tar.  we now accept them and issue a warning.

Fixes: #7185

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-08-03 14:19:21 -05:00
Brent Baude ab77487814 Missing return after early exit
the exists code was plagued by a missing return statement meant to trigger an early exit.

Fixes: #7197

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-08-03 13:58:41 -05:00
OpenShift Merge Robot 70c75bc113
Merge pull request #7097 from QiWang19/usagedate
[CI:DOCS] apiv2 fix volumes not included field
2020-08-03 10:05:07 -04:00
OpenShift Merge Robot 96ece0ca56
Merge pull request #7188 from zhangguanzhang/network-404
API returns 500 in case network is not found instead of 404
2020-08-03 09:13:40 -04:00
OpenShift Merge Robot 41358f5ea0
Merge pull request #7158 from rhatdan/commit
Handle single character images
2020-08-03 09:08:02 -04:00
OpenShift Merge Robot bfd34542f4
Merge pull request #7141 from rhafer/image_descr_test
Add test case for description being present in search result
2020-08-03 03:06:24 -04:00
zhangguanzhang 45b100d21c API returns 500 in case network is not found instead of 404
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-08-02 22:21:28 +08:00
Jhon Honce cff727d488 Add versioned _ping endpoint
Fixes #7008

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-07-31 10:19:23 -07:00
Ralf Haferkamp 54256fbe78 Make `search --no-trunc` work for podman remote
The HTTP API for image search was still lacking support of the NoTrunc
parameter.

Signed-off-by: Ralf Haferkamp <rhafer@suse.com>
2020-07-31 15:39:57 +02:00
Ralf Haferkamp bcbb5f9963 API: Fix 'podman image search` missing description
`podman image search` returned wrong results for the image "Description" as
it was mapped to the wrong field ("ID") in the search results.
Basically cherry-picked into the api from
commit cf5c63b5c4.

Signed-off-by: Ralf Haferkamp <rhafer@suse.com>
2020-07-31 15:39:57 +02:00
Daniel J Walsh 0785d6af15
Handle single character images
Currently you can only specify multiple character for image names
when executing podman-remote commit

podman-remote commit a b
Will complete, but will save the image without a name.

podman-remote commit a bb
Works.

This PR fixes and now returns an error if the user doees not specify an
image name to commit to.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-07-30 17:42:15 -04:00
Daniel J Walsh 23294c9cf6
Return NamesHistory when returning remote images
We are returning bogus data in podman-remote images --format json.
This change will match the same data returned my podman images --format json.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-07-29 14:17:56 -04:00
Qi Wang 4dbfac6cde [CI:DOCS] apiv2 fix volumes not inculded field
Do not use volume from docker since UsageData field is not need. It's nullable in docker API and expensive to add.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-07-29 12:08:51 -04:00
OpenShift Merge Robot 288ebec6e7
Merge pull request #6909 from rhatdan/podman
Switch all references to github.com/containers/libpod -> podman
2020-07-28 10:12:55 -04:00
Daniel J Walsh a5e37ad280
Switch all references to github.com/containers/libpod -> podman
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-07-28 08:23:45 -04:00
Akihiro Suda f657e5551e
compat/info.go: TrimPrefix(CGroupsVersion, "v")
For compatibility with Docker: 846b7e24ba/api/swagger.yaml (L4528-L4534)

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2020-07-28 18:17:13 +09:00
Valentin Rothberg 5ee35ca783 API events: fix parsing error
Fix an error where an absent "filters" parameter led to JSON parsing
errors.

Fixes: #7078
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-07-27 10:02:55 +02:00
TomSweeneyRedHat ba6a182155 Remove 'experimental' from API doc
The v2.0 reference [page](http://docs.podman.io/en/latest/Reference.html)
lists the API as experimental.  Removed that word and reworked the first
paragraph a bit based on verbiage that @mheon put together for the
API intro blog.

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
2020-07-25 13:57:40 -04:00
OpenShift Merge Robot 417cc41398
Merge pull request #6742 from maybe-sybr/maybe/apiv2/fix-container-create-with-volumes
APIv2:fix: Get volumes from `Binds` when creating
2020-07-24 17:04:26 +02:00
OpenShift Merge Robot be5219ab95
Merge pull request #7035 from ashley-cui/api_gen
Fix Generate API swagger title/description
2020-07-21 11:21:59 -04:00
Ashley Cui 5d25d1808a Fix Generate API title/description
generate kube title and descritopn was same as play kube for apiv2 docs

Signed-off-by: Ashley Cui <acui@redhat.com>
2020-07-21 10:03:25 -04:00
Valentin Rothberg dea93c27d2 events endpoint: backwards compat to old type
The versions Docker that the compat endpoints currently support are
using another type for the `filters` parameter than later versions
of Docker, which the libpod/events endpoint is also using.

To prevent existing deplopyments from breaking while still achieving
backward compat, we now support both types for the filters parameter.

Tested manually.

Fixes: #6899
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-07-20 15:05:04 +02:00
Valentin Rothberg d856e87f40 events endpoint: fix panic and race condition
Fix a potential panic in the events endpoint when parsing the filters
parameter.  Values of the filters map might be empty, so we need to
account for that instead of uncondtitionally accessing the first item.

Also apply a similar for race conditions as done in commit f4a2d25c0fca:

	Fix a race that could cause read errors to be masked.  Masking
	such errors is likely to report red herrings since users don't
	see that reading failed for some reasons but that a given event
	could not be found.

Another race was the handler closing event channel, which could lead to
two kinds of panics: double close, send to close channel.  The backend
takes care of that.  However, make sure that the backend stops working
in case the context has been cancelled.

Fixes: #6899
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-07-20 11:37:05 +02:00
Matthew Heon fc81d2acea The compat create endpoint should 404 on no such image
This matches Docker behavior, and will make the Docker frontend
work with `podman system service` (Docker tries to create, then
if that fails with 404 sends a request to pull the image).

Fixes #6960

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-07-16 14:20:39 -04:00
Daniel J Walsh 6535c8b9e8
Fix handling of entrypoint
If a user specifies an entrypoint of "" then we should not use the images
entrypoint.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-07-14 13:10:03 -04:00
Korhonen Sami (Samlink) 324a02ec60 Fix: Correct connection counters for hijacked connections
This patch fixes connection counters for v2 endpoints

Idletracker was moved to a new package to prevent package cycle.
Hijacking code still remains in wrong place and should be moved
later to isolated package

Signed-off-by: Sami Korhonen <skorhone@gmail.com>
2020-07-09 22:17:27 +03:00
Korhonen Sami (Samlink) 8b07ae3278 Fix: Hijacking v2 endpoints to follow rfc 7230 semantics
After this patch v2 hijacking endpoints, exec/start and
containers/attach follow rfc 7230 specification.

Connection will only be upgraded, if client specifies upgrade
headers:

For tcp connections:

Connection: Upgrade
Upgrade: tcp

For unix socket connections:

Connection: Upgrade
Upgrade: sock

There are currently no checks if upgrade type actually matches with
available protocols. Implementation just protocol that client
requested

Signed-off-by: Sami Korhonen <skorhone@gmail.com>
2020-07-09 22:16:16 +03:00
Korhonen Sami (Samlink) cf64e3cad8 Remove hijacked connections from active connections list
StateHijacked is a terminal state. If hijacked connection
is registered as an active connection, connection will
never be unregistered. This causes two issues

First issue is that active connection counters are off.

Second issue is a resource leak caused by connection
object that is stored to a map.

After this patch hijacked connections are no longer
visible in counters. If a counter for hijacked
connections is required, podman must track
connections returned by Hijacker.Hijack()

It might make sense to develop abstraction layer for
hijacking - and move all hijacking related code to a
separate package. Hijacking code is prone to resource
leaks and it should be thoroughly tested.

Signed-off-by: Sami Korhonen <skorhone@gmail.com>
2020-07-09 22:16:07 +03:00
OpenShift Merge Robot 059bd37511
Merge pull request #6835 from zhangguanzhang/master
fix API: Create container with an invalid configuration
2020-07-09 19:28:38 +02:00
Valentin Rothberg 09dc77aedf log API: add context to allow for cancelling
Add a `context.Context` to the log APIs to allow for cancelling
streaming (e.g., via `podman logs -f`).  This fixes issues for
the remote API where some go routines of the server will continue
writing and produce nothing but heat and waste CPU cycles.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-07-09 15:13:07 +02:00
maybe-sybr 9fe3153c0c APIv2:fix: Get volumes from `Binds` when creating
This change ensures that we pull volume bind specification strings from
the correct spot in the POSTed data when creating containers. We should
probably canity check that the mapping keys in `Volumes` are a superset
of the binds listed in `HostConfig.Binds` but this cheap change removes
an annoying behaviour where named volumes or host mount would be
silently replaced with newly created anonymous volumes.

Signed-off-by: Matt Brindley <58414429+maybe-sybr@users.noreply.github.com>
2020-07-09 17:45:12 +10:00
zhangguanzhang 2086e22624 fix API: Create container with an invalid configuration
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-07-09 10:26:04 +08:00
Korhonen Sami (Samlink) 610118d9bf Add support for Filter query parameter to list images api
Docker api version 1.24 uses a query parameter named Filter
for filtering images by names. In more recent versions of
api name filter is in filters query parameter with other
filters

This patch adds a mapping that translates Filter query
parameter to Filters={"reference": [""]}

Signed-off-by: Sami Korhonen <skorhone@gmail.com>
2020-07-07 13:05:16 +03:00
Valentin Rothberg 8489dc4345 move go module to v2
With the advent of Podman 2.0.0 we crossed the magical barrier of go
modules.  While we were able to continue importing all packages inside
of the project, the project could not be vendored anymore from the
outside.

Move the go module to new major version and change all imports to
`github.com/containers/libpod/v2`.  The renaming of the imports
was done via `gomove` [1].

[1] https://github.com/KSubedi/gomove

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-07-06 15:50:12 +02:00
OpenShift Merge Robot 41ccc045fb
Merge pull request #6852 from skorhone/fix/6803_null_ports
Fix container inspect endpoint returning null for network settings / ports
2020-07-05 14:22:52 -04:00
Korhonen Sami (Samlink) e5bf56a48d Fix issue #6803 Container inspect endpoint returns null for NetworkSettings/Ports
Implement mapping for NetworkSettings/Ports for Container inspect endpoint

Signed-off-by: Sami Korhonen <skorhone@gmail.com>
2020-07-03 17:20:59 +03:00
OpenShift Merge Robot 22def2e2d9
Merge pull request #6838 from mheon/fix_panic_events
Fix `system service` panic from early hangup in events
2020-07-02 12:36:04 -04:00
Matthew Heon 9e4cf6ca51 Fix `system service` panic from early hangup in events
We weren't actually halting the goroutine that sent events, so it
would continue sending even when the channel closed (the most
notable cause being early hangup - e.g. Control-c on a curl
session). Use a context to cancel the events goroutine and stop
sending events.

Fixes #6805

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-07-02 09:57:39 -04:00
maybe-sybr 3aa22cb1be APIv2:fix: Handle docker volume force as expected
In response to input regarding the semantic difference for the `force`
parameter for volume removal between Docker and us, this change ensures
that we emulate the Dockr behaviour correctly when this parameter is
specified.

Signed-off-by: Matt Brindley <58414429+maybe-sybr@users.noreply.github.com>
2020-07-02 16:33:19 +10:00
maybe-sybr cb61a2d858 APIv2: Add docker compatible volume endpoints
This change implements docker compatibile endpoint for interacting with
volumes. The code is mostly lifted from the `libpod` API handlers but
decodes and constructs data using types defined in the docker API
package.

Some notable support caveats with the current implementation:
  * we don't return the nullable `Status` or `UsageData` keys when
    returning volume information for inspect and create endpoints
  * we don't support filters when pruning
  * we return a fixed `0` for the `SpaceReclaimed` key when pruning
    since we have no insight into how much space was freed from runtime

Signed-off-by: Matt Brindley <58414429+maybe-sybr@users.noreply.github.com>
2020-07-02 16:33:19 +10:00
Daniel J Walsh 50157b2d33
Created timestamp returned by imagelist should be in unix format
In the API, we are currently returning the image time of creation
as a string, in time.Time format. The API is for a 64 bit integer
representing Unix time.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-30 13:59:30 -04:00
OpenShift Merge Robot c2a0ccd394
Merge pull request #6747 from giuseppe/fix-user-volumes
container: move volume chown after spec generation
2020-06-30 12:01:40 -04:00
Giuseppe Scrivano b32172e20b
container: move volume chown after spec generation
move the chown for newly created volumes after the spec generation so
the correct UID/GID are known.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-06-29 17:58:50 +02:00
OpenShift Merge Robot cbae41f75f
Merge pull request #6763 from maxm123/master
Fix error handling problem in APIv2 network remove
2020-06-29 04:59:34 -04:00
Maximilian Müller babc64b44b Fix a bug with APIv2 compat network remove to log an ErrNetworkNotFound instead of nil
Signed-off-by: Maximilian Müller <maxm123@techie.com>
2020-06-27 15:02:55 +02:00