Make attach sockets directory an argument in Conmon
This is required to enable ongoing work in libpod Signed-off-by: Matthew Heon <mheon@redhat.com>
This commit is contained in:
parent
e95f75e8f2
commit
ae5fc471ea
3 changed files with 12 additions and 3 deletions
|
@ -111,6 +111,7 @@ static char *opt_log_path = NULL;
|
||||||
static char *opt_exit_dir = NULL;
|
static char *opt_exit_dir = NULL;
|
||||||
static int opt_timeout = 0;
|
static int opt_timeout = 0;
|
||||||
static int64_t opt_log_size_max = -1;
|
static int64_t opt_log_size_max = -1;
|
||||||
|
static char *opt_socket_path = NULL;
|
||||||
static GOptionEntry opt_entries[] =
|
static GOptionEntry opt_entries[] =
|
||||||
{
|
{
|
||||||
{ "terminal", 't', 0, G_OPTION_ARG_NONE, &opt_terminal, "Terminal", NULL },
|
{ "terminal", 't', 0, G_OPTION_ARG_NONE, &opt_terminal, "Terminal", NULL },
|
||||||
|
@ -128,6 +129,7 @@ static GOptionEntry opt_entries[] =
|
||||||
{ "log-path", 'l', 0, G_OPTION_ARG_STRING, &opt_log_path, "Log file path", NULL },
|
{ "log-path", 'l', 0, G_OPTION_ARG_STRING, &opt_log_path, "Log file path", NULL },
|
||||||
{ "timeout", 'T', 0, G_OPTION_ARG_INT, &opt_timeout, "Timeout in seconds", NULL },
|
{ "timeout", 'T', 0, G_OPTION_ARG_INT, &opt_timeout, "Timeout in seconds", NULL },
|
||||||
{ "log-size-max", 0, 0, G_OPTION_ARG_INT64, &opt_log_size_max, "Maximum size of log file", NULL },
|
{ "log-size-max", 0, 0, G_OPTION_ARG_INT64, &opt_log_size_max, "Maximum size of log file", NULL },
|
||||||
|
{ "socket-path", 0, 0, G_OPTION_ARG_STRING, &opt_socket_path, "Location of container attach sockets", NULL },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -989,14 +991,14 @@ static char *setup_attach_socket(void)
|
||||||
* Create a symlink so we don't exceed unix domain socket
|
* Create a symlink so we don't exceed unix domain socket
|
||||||
* path length limit.
|
* path length limit.
|
||||||
*/
|
*/
|
||||||
attach_symlink_dir_path = g_build_filename("/var/run/crio", opt_cuuid, NULL);
|
attach_symlink_dir_path = g_build_filename(opt_socket_path, opt_cuuid, NULL);
|
||||||
if (unlink(attach_symlink_dir_path) == -1 && errno != ENOENT)
|
if (unlink(attach_symlink_dir_path) == -1 && errno != ENOENT)
|
||||||
pexit("Failed to remove existing symlink for attach socket directory");
|
pexit("Failed to remove existing symlink for attach socket directory");
|
||||||
|
|
||||||
if (symlink(opt_bundle_path, attach_symlink_dir_path) == -1)
|
if (symlink(opt_bundle_path, attach_symlink_dir_path) == -1)
|
||||||
pexit("Failed to create symlink for attach socket");
|
pexit("Failed to create symlink for attach socket");
|
||||||
|
|
||||||
attach_sock_path = g_build_filename("/var/run/crio", opt_cuuid, "attach", NULL);
|
attach_sock_path = g_build_filename(opt_socket_path, opt_cuuid, "attach", NULL);
|
||||||
ninfo("attach sock path: %s", attach_sock_path);
|
ninfo("attach sock path: %s", attach_sock_path);
|
||||||
|
|
||||||
strncpy(attach_addr.sun_path, attach_sock_path, sizeof(attach_addr.sun_path) - 1);
|
strncpy(attach_addr.sun_path, attach_sock_path, sizeof(attach_addr.sun_path) - 1);
|
||||||
|
@ -1157,6 +1159,9 @@ int main(int argc, char *argv[])
|
||||||
if (opt_log_path == NULL)
|
if (opt_log_path == NULL)
|
||||||
nexit("Log file path not provided. Use --log-path");
|
nexit("Log file path not provided. Use --log-path");
|
||||||
|
|
||||||
|
if (opt_socket_path == NULL)
|
||||||
|
nexit("Socket path not provided. Use --socket-path");
|
||||||
|
|
||||||
start_pipe_fd = get_pipe_fd_from_env("_OCI_STARTPIPE");
|
start_pipe_fd = get_pipe_fd_from_env("_OCI_STARTPIPE");
|
||||||
if (start_pipe_fd >= 0) {
|
if (start_pipe_fd >= 0) {
|
||||||
/* Block for an initial write to the start pipe before
|
/* Block for an initial write to the start pipe before
|
||||||
|
|
|
@ -40,6 +40,8 @@ const (
|
||||||
SystemdCgroupsManager = "systemd"
|
SystemdCgroupsManager = "systemd"
|
||||||
// ContainerExitsDir is the location of container exit dirs
|
// ContainerExitsDir is the location of container exit dirs
|
||||||
ContainerExitsDir = "/var/run/crio/exits"
|
ContainerExitsDir = "/var/run/crio/exits"
|
||||||
|
// ContainerAttachSocketDir is the location for container attach sockets
|
||||||
|
ContainerAttachSocketDir = "/var/run/crio"
|
||||||
|
|
||||||
// killContainerTimeout is the timeout that we wait for the container to
|
// killContainerTimeout is the timeout that we wait for the container to
|
||||||
// be SIGKILLed.
|
// be SIGKILLed.
|
||||||
|
@ -177,6 +179,7 @@ func (r *Runtime) CreateContainer(c *Container, cgroupParent string) (err error)
|
||||||
args = append(args, "-p", filepath.Join(c.bundlePath, "pidfile"))
|
args = append(args, "-p", filepath.Join(c.bundlePath, "pidfile"))
|
||||||
args = append(args, "-l", c.logPath)
|
args = append(args, "-l", c.logPath)
|
||||||
args = append(args, "--exit-dir", r.containerExitsDir)
|
args = append(args, "--exit-dir", r.containerExitsDir)
|
||||||
|
args = append(args, "--socket-path", ContainerAttachSocketDir)
|
||||||
if r.logSizeMax >= 0 {
|
if r.logSizeMax >= 0 {
|
||||||
args = append(args, "--log-size-max", fmt.Sprintf("%v", r.logSizeMax))
|
args = append(args, "--log-size-max", fmt.Sprintf("%v", r.logSizeMax))
|
||||||
}
|
}
|
||||||
|
@ -434,6 +437,7 @@ func (r *Runtime) ExecSync(c *Container, command []string, timeout int64) (resp
|
||||||
args = append(args, fmt.Sprintf("%d", timeout))
|
args = append(args, fmt.Sprintf("%d", timeout))
|
||||||
}
|
}
|
||||||
args = append(args, "-l", logPath)
|
args = append(args, "-l", logPath)
|
||||||
|
args = append(args, "--socket-path", ContainerAttachSocketDir)
|
||||||
|
|
||||||
pspec := rspec.Process{
|
pspec := rspec.Process{
|
||||||
Env: r.conmonEnv,
|
Env: r.conmonEnv,
|
||||||
|
|
|
@ -67,7 +67,7 @@ func (ss streamService) Attach(containerID string, inputStream io.Reader, output
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
attachSocketPath := filepath.Join("/var/run/crio", c.ID(), "attach")
|
attachSocketPath := filepath.Join(oci.ContainerAttachSocketDir, c.ID(), "attach")
|
||||||
conn, err := net.DialUnix("unixpacket", nil, &net.UnixAddr{Name: attachSocketPath, Net: "unixpacket"})
|
conn, err := net.DialUnix("unixpacket", nil, &net.UnixAddr{Name: attachSocketPath, Net: "unixpacket"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to connect to container %s attach socket: %v", c.ID(), err)
|
return fmt.Errorf("failed to connect to container %s attach socket: %v", c.ID(), err)
|
||||||
|
|
Loading…
Reference in a new issue