diff --git a/cli/config.go b/cli/config.go index c859f2cbd3..3a26210fd6 100644 --- a/cli/config.go +++ b/cli/config.go @@ -428,8 +428,9 @@ func updateRuntimeConfig(configPath string, tomlConf tomlConfig, config *oci.Run case kataAgentTableType: config.AgentType = kataAgentTableType - config.AgentConfig = vc.KataAgentConfig{} - + config.AgentConfig = vc.KataAgentConfig{ + UseVSock: config.HypervisorConfig.UseVSock, + } } } diff --git a/virtcontainers/agent_test.go b/virtcontainers/agent_test.go index a1fa120db3..2c75a6f206 100644 --- a/virtcontainers/agent_test.go +++ b/virtcontainers/agent_test.go @@ -128,7 +128,7 @@ func TestNewAgentConfigFromHyperstartAgentType(t *testing.T) { } func TestNewAgentConfigFromKataAgentType(t *testing.T) { - agentConfig := KataAgentConfig{} + agentConfig := KataAgentConfig{UseVSock: true} sandboxConfig := SandboxConfig{ AgentType: KataContainersAgent, diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index 45ff34c64b..5519315f86 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -60,6 +60,7 @@ var ( // to reach the Kata Containers agent. type KataAgentConfig struct { LongLiveConn bool + UseVSock bool } type kataVSOCK struct { @@ -128,8 +129,13 @@ func (k *kataAgent) getSharePath(id string) string { } func (k *kataAgent) generateVMSocket(id string, c KataAgentConfig) error { - cid, port, err := parseVSOCKAddr(c.GRPCSocket) - if err != nil { + if c.UseVSock { + // We want to go through VSOCK. The VM VSOCK endpoint will be our gRPC. + k.Logger().Debug("agent: Using vsock VM socket endpoint") + // We dont know yet the context ID - set empty vsock configuration + k.vmSocket = kataVSOCK{} + } else { + k.Logger().Debug("agent: Using unix socket form VM socket endpoint") // We need to generate a host UNIX socket path for the emulated serial port. kataSock, err := utils.BuildSocketPath(k.getVMPath(id), defaultKataSocketName) if err != nil { @@ -142,12 +148,6 @@ func (k *kataAgent) generateVMSocket(id string, c KataAgentConfig) error { HostPath: kataSock, Name: defaultKataChannel, } - } else { - // We want to go through VSOCK. The VM VSOCK endpoint will be our gRPC. - k.vmSocket = kataVSOCK{ - contextID: cid, - port: port, - } } return nil diff --git a/virtcontainers/kata_agent_test.go b/virtcontainers/kata_agent_test.go index 5ba39d0008..b221df02ca 100644 --- a/virtcontainers/kata_agent_test.go +++ b/virtcontainers/kata_agent_test.go @@ -676,6 +676,7 @@ func TestAgentPathAPI(t *testing.T) { _, ok := k1.vmSocket.(Socket) assert.True(ok) + c.UseVSock = true err = k2.generateVMSocket(id, c) assert.Nil(err) _, ok = k2.vmSocket.(kataVSOCK)