virtcontainers: Call agent startSandbox from startVM

We always ask the agent to start the sandbox when we start the VM, so we
should simply call agent.startSandbox from startVM instead of open
coding those.
This slightly simplifies the complex createSandboxFromConfig routine.

Fixes: #1011

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
This commit is contained in:
Samuel Ortiz 2018-12-09 19:24:33 +01:00 committed by Eric Ernst
parent ebf8547c38
commit acf833cb4a
2 changed files with 15 additions and 16 deletions

View File

@ -105,21 +105,7 @@ func createSandboxFromConfig(ctx context.Context, sandboxConfig SandboxConfig, f
}
}()
// Once startVM is done, we want to guarantee
// that the sandbox is manageable. For that we need
// to start the sandbox inside the VM.
if err = s.agent.startSandbox(s); err != nil {
return nil, err
}
// rollback to stop sandbox in VM
defer func() {
if err != nil {
s.agent.stopSandbox(s)
}
}()
if err = s.getAndStoreGuestDetails(); err != nil {
if err := s.getAndStoreGuestDetails(); err != nil {
return nil, err
}

View File

@ -1234,9 +1234,18 @@ func (s *Sandbox) startVM() error {
}
}
// Store the network
s.Logger().Info("VM started")
// Once the hypervisor is done starting the sandbox,
// we want to guarantee that it is manageable.
// For that we need to ask the agent to start the
// sandbox inside the VM.
if err := s.agent.startSandbox(s); err != nil {
return err
}
s.Logger().Info("Agent started in the sandbox")
return nil
}
@ -1245,6 +1254,10 @@ func (s *Sandbox) stopVM() error {
span, _ := s.trace("stopVM")
defer span.Finish()
if err := s.agent.stopSandbox(s); err != nil {
s.Logger().WithError(err).WithField("sandboxid", s.id).Warning("Agent did not stop sandbox")
}
return s.hypervisor.stopSandbox()
}