Merge pull request #1012 from sameo/topic/sandbox-simplification

First createSandboxFromConfig simplification
This commit is contained in:
Eric Ernst 2019-01-07 19:30:49 -08:00 committed by GitHub
commit 87570b78eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 28 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
}
@ -234,12 +220,8 @@ func StartSandbox(ctx context.Context, sandboxID string) (VCSandbox, error) {
}
defer s.releaseStatelessSandbox()
return startSandbox(s)
}
func startSandbox(s *Sandbox) (*Sandbox, error) {
// Start it
err := s.Start()
err = s.Start()
if err != nil {
return nil, err
}
@ -285,6 +267,7 @@ func RunSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Factor
span, ctx := trace(ctx, "RunSandbox")
defer span.Finish()
// Create the sandbox
s, err := createSandboxFromConfig(ctx, sandboxConfig, factory)
if err != nil {
return nil, err
@ -297,7 +280,13 @@ func RunSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Factor
}
defer unlockSandbox(lockFile)
return startSandbox(s)
// Start the sandbox
err = s.Start()
if err != nil {
return nil, err
}
return s, nil
}
// ListSandbox is the virtcontainers sandbox listing entry point.

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,12 @@ func (s *Sandbox) stopVM() error {
span, _ := s.trace("stopVM")
defer span.Finish()
s.Logger().Info("Stopping sandbox in the VM")
if err := s.agent.stopSandbox(s); err != nil {
s.Logger().WithError(err).WithField("sandboxid", s.id).Warning("Agent did not stop sandbox")
}
s.Logger().Info("Stopping VM")
return s.hypervisor.stopSandbox()
}
@ -1579,12 +1594,7 @@ func (s *Sandbox) Stop() error {
}
}
if err := s.agent.stopSandbox(s); err != nil {
return err
}
s.Logger().Info("Stopping VM")
if err := s.hypervisor.stopSandbox(); err != nil {
if err := s.stopVM(); err != nil {
return err
}