You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ccon: Add '--socket PATH' to support a create/start split
Along the lines of the create/start split we've been discussing for
the OCI [1,2]. Pull some common functionality into a libccon,
although I don't intend to make that a more than an internal helper.
Post-error cleanup in ccon-cli is pretty slim, since the process is
just about to die anyway. I'll probably go back through and add
proper cleanup later.
serve_socket gets too deeply nested for my taste, but it's not quite
to the point where I'd pull out the request handling into a
handle_start_request helper or some such. Mostly because I'd have to
either setup a new buf/iov/msg in the helper's stack or pass that all
through from serve_socket ;).
A few notes on the tests:
I don't have a stand-alone 'wait' on my system (it's built into most
shells [3]), but I've added an explicit check for it because POSIX
doesn't require it to be built in.
The waiting in the create/start tests is a bit awkward, but here's the
reasoning for the various steps:
* Put the socket in a 'sock' subdirectory so we don't have to mess
with inotifywait's --exclude (when what we really want is an
--include). In most cases, the socket would be the first thing
created in the test directory, but the process.host test will create
a pivot-root.* before creating the socket.
* Clear a 'wait' file before launching the inotifywait/start subshell
and append to it from that subshell so grep has something to look at
(even if it racily starts looking before the subshell processes the
inotifywait line).
* Block on a busy-wait grep until inotifywait sets up its watcher.
This ensures we don't call ccon and create the socket before the
watcher is looking.
The zero-second sleep while we wait for inotifywait to setup its
watcher is busy, but POSIX doesn't require 'sleep' to support
non-integer times [4].
All of these issues could be abstracted out into an 'event' command
[5], but they're fine for a proof-of-concept create/start split.
[1]: https://groups.google.com/a/opencontainers.org/d/msg/dev/qWHoKs8Fsrk/k55FQrBzBgAJ
Subject: Re: Splitting Start into create() and run()
Date: Thu, 24 Mar 2016 15:04:14 -0700
Message-ID: <[email protected]>
[2]: opencontainers/runtime-spec#384
Subject: Split create and start
[3]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_06
[4]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sleep.html
[5]: opencontainers/runtime-spec#508
Subject: runtime: Add an 'event' operation for subscribing to
pushes
0 commit comments