Merge pull request #1597 from devimc/topic/virtcontainers/ShimPrintsAgentLogs

virtcontainers: Use shim to print the agent logs if there is no proxy
This commit is contained in:
James O. D. Hunt
2019-05-01 14:47:48 +01:00
committed by GitHub
3 changed files with 34 additions and 20 deletions

View File

@@ -498,7 +498,7 @@ func (k *kataAgent) exec(sandbox *Sandbox, c Container, cmd types.Cmd) (*Process
}
return prepareAndStartShim(sandbox, k.shim, c.id, req.ExecId,
k.state.URL, cmd, []ns.NSType{}, enterNSList)
k.state.URL, "", cmd, []ns.NSType{}, enterNSList)
}
func (k *kataAgent) updateInterface(ifc *vcTypes.Interface) (*vcTypes.Interface, error) {
@@ -1214,8 +1214,17 @@ func (k *kataAgent) createContainer(sandbox *Sandbox, c *Container) (p *Process,
})
}
// Ask to the shim to print the agent logs, if it's the process who monitors the sandbox and use_vsock is true (no proxy)
var consoleURL string
if sandbox.config.HypervisorConfig.UseVSock && c.GetAnnotations()[vcAnnotations.ContainerTypeKey] == string(PodSandbox) {
consoleURL, err = sandbox.hypervisor.getSandboxConsole(sandbox.id)
if err != nil {
return nil, err
}
}
return prepareAndStartShim(sandbox, k.shim, c.id, req.ExecId,
k.state.URL, c.config.Cmd, createNSList, enterNSList)
k.state.URL, consoleURL, c.config.Cmd, createNSList, enterNSList)
}
// handleEphemeralStorage handles ephemeral storages by

View File

@@ -48,6 +48,9 @@ func (s *kataShim) start(sandbox *Sandbox, params ShimParams) (int, error) {
if config.Debug {
args = append(args, "-log", "debug")
if params.ConsoleURL != "" {
args = append(args, "-agent-logs-socket", params.ConsoleURL)
}
}
if config.Trace {

View File

@@ -42,6 +42,7 @@ type ShimParams struct {
Token string
URL string
Console string
ConsoleURL string
Terminal bool
Detach bool
PID int
@@ -147,7 +148,7 @@ func stopShim(pid int) error {
return nil
}
func prepareAndStartShim(sandbox *Sandbox, shim shim, cid, token, url string, cmd types.Cmd,
func prepareAndStartShim(sandbox *Sandbox, shim shim, cid, token, url, consoleURL string, cmd types.Cmd,
createNSList []ns.NSType, enterNSList []ns.Namespace) (*Process, error) {
process := &Process{
Token: token,
@@ -163,6 +164,7 @@ func prepareAndStartShim(sandbox *Sandbox, shim shim, cid, token, url string, cm
Detach: cmd.Detach,
CreateNS: createNSList,
EnterNS: enterNSList,
ConsoleURL: consoleURL,
}
pid, err := shim.start(sandbox, shimParams)