Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
virtcontainers: Call agent startSandbox from startVM
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Eric Ernst <[email protected]>
  • Loading branch information
Samuel Ortiz authored and Eric Ernst committed Jan 7, 2019
1 parent ebf8547 commit acf833c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 16 deletions.
16 changes: 1 addition & 15 deletions virtcontainers/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
15 changes: 14 additions & 1 deletion virtcontainers/sandbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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()
}

Expand Down

0 comments on commit acf833c

Please sign in to comment.