virtcontainers: add rollback to remove sandbox network

If error occurs after sandbox network created successfully, we need to rollback
to remove the created sandbox network

Fixes: #297

Signed-off-by: flyflypeng <jiangpengfei9@huawei.com>
This commit is contained in:
flyflypeng 2018-06-20 07:33:45 +08:00
parent b244410443
commit daebbd1e93

View File

@ -39,6 +39,8 @@ func CreateSandbox(sandboxConfig SandboxConfig, factory Factory) (VCSandbox, err
}
func createSandboxFromConfig(sandboxConfig SandboxConfig, factory Factory) (*Sandbox, error) {
var err error
// Create the sandbox.
s, err := createSandbox(sandboxConfig, factory)
if err != nil {
@ -46,22 +48,29 @@ func createSandboxFromConfig(sandboxConfig SandboxConfig, factory Factory) (*San
}
// Create the sandbox network
if err := s.createNetwork(); err != nil {
if err = s.createNetwork(); err != nil {
return nil, err
}
// network rollback
defer func() {
if err != nil && s.networkNS.NetNsCreated {
s.removeNetwork()
}
}()
// Start the VM
if err := s.startVM(); err != nil {
if err = s.startVM(); err != nil {
return nil, err
}
// Create Containers
if err := s.createContainers(); err != nil {
if err = s.createContainers(); err != nil {
return nil, err
}
// The sandbox is completely created now, we can store it.
if err := s.storeSandbox(); err != nil {
if err = s.storeSandbox(); err != nil {
return nil, err
}