mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-27 15:57:09 +00:00
state: Refactor code to move all the state load code
Refactor so that all code to load state, devices, network takes place at one place. This is in line with the experimental api for new storage that also loads all the necessary items here all at once. Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
This commit is contained in:
parent
fa4acad4aa
commit
f6a10bcae7
@ -477,31 +477,12 @@ func createSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Fac
|
||||
s.Logger().WithField("features", s.config.Experimental).Infof("Enable experimental features")
|
||||
}
|
||||
|
||||
if s.supportNewStore() {
|
||||
// Restored successfully from newstore before.
|
||||
if s.state.State != "" {
|
||||
return s, nil
|
||||
}
|
||||
} else {
|
||||
// Fetch sandbox network to be able to access it from the sandbox structure.
|
||||
var networkNS NetworkNamespace
|
||||
if err := s.store.Load(store.Network, &networkNS); err == nil {
|
||||
s.networkNS = networkNS
|
||||
}
|
||||
|
||||
devices, err := s.store.LoadDevices()
|
||||
if err != nil {
|
||||
s.Logger().WithError(err).WithField("sandboxid", s.id).Warning("load sandbox devices failed")
|
||||
}
|
||||
s.devManager = deviceManager.NewDeviceManager(sandboxConfig.HypervisorConfig.BlockDeviceDriver, devices)
|
||||
|
||||
// Sandbox state has been loaded from storage.
|
||||
// If the Stae is not empty, this is a re-creation, i.e.
|
||||
// we don't need to talk to the guest's agent, but only
|
||||
// want to create the sandbox and its containers in memory.
|
||||
if s.state.State != "" {
|
||||
return s, nil
|
||||
}
|
||||
// Sandbox state has been loaded from storage.
|
||||
// If the Stae is not empty, this is a re-creation, i.e.
|
||||
// we don't need to talk to the guest's agent, but only
|
||||
// want to create the sandbox and its containers in memory.
|
||||
if s.state.State != "" {
|
||||
return s, nil
|
||||
}
|
||||
|
||||
// Below code path is called only during create, because of earlier check.
|
||||
@ -586,6 +567,18 @@ func newSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Factor
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
// Fetch sandbox network to be able to access it from the sandbox structure.
|
||||
var networkNS NetworkNamespace
|
||||
if err = s.store.Load(store.Network, &networkNS); err == nil {
|
||||
s.networkNS = networkNS
|
||||
}
|
||||
|
||||
devices, err := s.store.LoadDevices()
|
||||
if err != nil {
|
||||
s.Logger().WithError(err).WithField("sandboxid", s.id).Warning("load sandbox devices failed")
|
||||
}
|
||||
s.devManager = deviceManager.NewDeviceManager(sandboxConfig.HypervisorConfig.BlockDeviceDriver, devices)
|
||||
|
||||
// Load sandbox state. The hypervisor.createSandbox call, may need to access statei.
|
||||
state, err := s.store.LoadState()
|
||||
if err == nil {
|
||||
|
Loading…
Reference in New Issue
Block a user