mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-10 20:32:54 +00:00
persist: move "newstore" out of experimental
Fixes #803 Move "newstore" features out of experimental feature list, from this commit "newstore" will be default enabled. Signed-off-by: Wei Zhang <weizhang555@gmail.com>
This commit is contained in:
parent
3ea3d3201b
commit
687f2dbe84
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,6 +9,7 @@
|
|||||||
/cli/config/configuration-nemu.toml
|
/cli/config/configuration-nemu.toml
|
||||||
/cli/config/configuration-qemu.toml
|
/cli/config/configuration-qemu.toml
|
||||||
/cli/config/configuration-qemu-virtiofs.toml
|
/cli/config/configuration-qemu-virtiofs.toml
|
||||||
|
/cli/config/configuration-clh.toml
|
||||||
/cli/config-generated.go
|
/cli/config-generated.go
|
||||||
/cli/coverage.html
|
/cli/coverage.html
|
||||||
/containerd-shim-kata-v2
|
/containerd-shim-kata-v2
|
||||||
|
@ -231,9 +231,7 @@ sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@
|
|||||||
|
|
||||||
# Enabled experimental feature list, format: ["a", "b"].
|
# Enabled experimental feature list, format: ["a", "b"].
|
||||||
# Experimental features are features not stable enough for production,
|
# Experimental features are features not stable enough for production,
|
||||||
# They may break compatibility, and are prepared for a big version bump.
|
# they may break compatibility, and are prepared for a big version bump.
|
||||||
# Supported experimental features:
|
# Supported experimental features:
|
||||||
# 1. "newstore": new persist storage driver which breaks backward compatibility,
|
|
||||||
# expected to move out of experimental in 2.0.0.
|
|
||||||
# (default: [])
|
# (default: [])
|
||||||
experimental=@DEFAULTEXPFEATURES@
|
experimental=@DEFAULTEXPFEATURES@
|
||||||
|
@ -207,9 +207,7 @@ sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@
|
|||||||
|
|
||||||
# Enabled experimental feature list, format: ["a", "b"].
|
# Enabled experimental feature list, format: ["a", "b"].
|
||||||
# Experimental features are features not stable enough for production,
|
# Experimental features are features not stable enough for production,
|
||||||
# They may break compatibility, and are prepared for a big version bump.
|
# they may break compatibility, and are prepared for a big version bump.
|
||||||
# Supported experimental features:
|
# Supported experimental features:
|
||||||
# 1. "newstore": new persist storage driver which breaks backward compatibility,
|
|
||||||
# expected to move out of experimental in 2.0.0.
|
|
||||||
# (default: [])
|
# (default: [])
|
||||||
experimental=@DEFAULTEXPFEATURES@
|
experimental=@DEFAULTEXPFEATURES@
|
||||||
|
@ -333,9 +333,7 @@ sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@
|
|||||||
|
|
||||||
# Enabled experimental feature list, format: ["a", "b"].
|
# Enabled experimental feature list, format: ["a", "b"].
|
||||||
# Experimental features are features not stable enough for production,
|
# Experimental features are features not stable enough for production,
|
||||||
# They may break compatibility, and are prepared for a big version bump.
|
# they may break compatibility, and are prepared for a big version bump.
|
||||||
# Supported experimental features:
|
# Supported experimental features:
|
||||||
# 1. "newstore": new persist storage driver which breaks backward compatibility,
|
|
||||||
# expected to move out of experimental in 2.0.0.
|
|
||||||
# (default: [])
|
# (default: [])
|
||||||
experimental=@DEFAULTEXPFEATURES@
|
experimental=@DEFAULTEXPFEATURES@
|
||||||
|
@ -435,9 +435,7 @@ sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@
|
|||||||
|
|
||||||
# Enabled experimental feature list, format: ["a", "b"].
|
# Enabled experimental feature list, format: ["a", "b"].
|
||||||
# Experimental features are features not stable enough for production,
|
# Experimental features are features not stable enough for production,
|
||||||
# They may break compatibility, and are prepared for a big version bump.
|
# they may break compatibility, and are prepared for a big version bump.
|
||||||
# Supported experimental features:
|
# Supported experimental features:
|
||||||
# 1. "newstore": new persist storage driver which breaks backward compatibility,
|
|
||||||
# expected to move out of experimental in 2.0.0.
|
|
||||||
# (default: [])
|
# (default: [])
|
||||||
experimental=@DEFAULTEXPFEATURES@
|
experimental=@DEFAULTEXPFEATURES@
|
||||||
|
@ -430,9 +430,7 @@ sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@
|
|||||||
|
|
||||||
# Enabled experimental feature list, format: ["a", "b"].
|
# Enabled experimental feature list, format: ["a", "b"].
|
||||||
# Experimental features are features not stable enough for production,
|
# Experimental features are features not stable enough for production,
|
||||||
# They may break compatibility, and are prepared for a big version bump.
|
# they may break compatibility, and are prepared for a big version bump.
|
||||||
# Supported experimental features:
|
# Supported experimental features:
|
||||||
# 1. "newstore": new persist storage driver which breaks backward compatibility,
|
|
||||||
# expected to move out of experimental in 2.0.0.
|
|
||||||
# (default: [])
|
# (default: [])
|
||||||
experimental=@DEFAULTEXPFEATURES@
|
experimental=@DEFAULTEXPFEATURES@
|
||||||
|
@ -16,6 +16,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ktu "github.com/kata-containers/runtime/pkg/katatestutils"
|
ktu "github.com/kata-containers/runtime/pkg/katatestutils"
|
||||||
|
"github.com/kata-containers/runtime/virtcontainers/persist/fs"
|
||||||
"github.com/kata-containers/runtime/virtcontainers/pkg/annotations"
|
"github.com/kata-containers/runtime/virtcontainers/pkg/annotations"
|
||||||
"github.com/kata-containers/runtime/virtcontainers/pkg/mock"
|
"github.com/kata-containers/runtime/virtcontainers/pkg/mock"
|
||||||
vcTypes "github.com/kata-containers/runtime/virtcontainers/pkg/types"
|
vcTypes "github.com/kata-containers/runtime/virtcontainers/pkg/types"
|
||||||
@ -517,12 +518,12 @@ func TestStatusSandboxSuccessfulStateReady(t *testing.T) {
|
|||||||
expectedStatus := SandboxStatus{
|
expectedStatus := SandboxStatus{
|
||||||
ID: testSandboxID,
|
ID: testSandboxID,
|
||||||
State: types.SandboxState{
|
State: types.SandboxState{
|
||||||
State: types.StateReady,
|
State: types.StateReady,
|
||||||
|
PersistVersion: 2,
|
||||||
},
|
},
|
||||||
Hypervisor: MockHypervisor,
|
Hypervisor: MockHypervisor,
|
||||||
HypervisorConfig: hypervisorConfig,
|
HypervisorConfig: hypervisorConfig,
|
||||||
Agent: NoopAgentType,
|
Agent: NoopAgentType,
|
||||||
Annotations: sandboxAnnotations,
|
|
||||||
ContainersStatus: []ContainerStatus{
|
ContainersStatus: []ContainerStatus{
|
||||||
{
|
{
|
||||||
ID: containerID,
|
ID: containerID,
|
||||||
@ -576,12 +577,12 @@ func TestStatusSandboxSuccessfulStateRunning(t *testing.T) {
|
|||||||
expectedStatus := SandboxStatus{
|
expectedStatus := SandboxStatus{
|
||||||
ID: testSandboxID,
|
ID: testSandboxID,
|
||||||
State: types.SandboxState{
|
State: types.SandboxState{
|
||||||
State: types.StateRunning,
|
State: types.StateRunning,
|
||||||
|
PersistVersion: 2,
|
||||||
},
|
},
|
||||||
Hypervisor: MockHypervisor,
|
Hypervisor: MockHypervisor,
|
||||||
HypervisorConfig: hypervisorConfig,
|
HypervisorConfig: hypervisorConfig,
|
||||||
Agent: NoopAgentType,
|
Agent: NoopAgentType,
|
||||||
Annotations: sandboxAnnotations,
|
|
||||||
ContainersStatus: []ContainerStatus{
|
ContainersStatus: []ContainerStatus{
|
||||||
{
|
{
|
||||||
ID: containerID,
|
ID: containerID,
|
||||||
@ -616,6 +617,8 @@ func TestStatusSandboxSuccessfulStateRunning(t *testing.T) {
|
|||||||
assert.Exactly(status, expectedStatus)
|
assert.Exactly(status, expectedStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*FIXME: replace DeleteAll with newstore.Destroy
|
||||||
|
|
||||||
func TestStatusSandboxFailingFetchSandboxConfig(t *testing.T) {
|
func TestStatusSandboxFailingFetchSandboxConfig(t *testing.T) {
|
||||||
defer cleanUp()
|
defer cleanUp()
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
@ -650,7 +653,7 @@ func TestStatusPodSandboxFailingFetchSandboxState(t *testing.T) {
|
|||||||
|
|
||||||
_, err = StatusSandbox(ctx, p.ID())
|
_, err = StatusSandbox(ctx, p.ID())
|
||||||
assert.Error(err)
|
assert.Error(err)
|
||||||
}
|
}*/
|
||||||
|
|
||||||
func newTestContainerConfigNoop(contID string) ContainerConfig {
|
func newTestContainerConfigNoop(contID string) ContainerConfig {
|
||||||
// Define the container command and bundle.
|
// Define the container command and bundle.
|
||||||
@ -708,7 +711,7 @@ func TestCreateContainerFailingNoSandbox(t *testing.T) {
|
|||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.NotNil(p)
|
assert.NotNil(p)
|
||||||
|
|
||||||
sandboxDir := store.SandboxConfigurationRootPath(p.ID())
|
sandboxDir := filepath.Join(fs.RunStoragePath(), p.ID())
|
||||||
_, err = os.Stat(sandboxDir)
|
_, err = os.Stat(sandboxDir)
|
||||||
assert.Error(err)
|
assert.Error(err)
|
||||||
|
|
||||||
@ -1243,6 +1246,7 @@ func TestStatusContainerStateRunning(t *testing.T) {
|
|||||||
assert.Exactly(status, expectedStatus)
|
assert.Exactly(status, expectedStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME: replace DeleteAll with newstore.Destroy
|
||||||
func TestStatusContainerFailing(t *testing.T) {
|
func TestStatusContainerFailing(t *testing.T) {
|
||||||
defer cleanUp()
|
defer cleanUp()
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
@ -1260,7 +1264,7 @@ func TestStatusContainerFailing(t *testing.T) {
|
|||||||
|
|
||||||
_, err = StatusContainer(ctx, p.ID(), contID)
|
_, err = StatusContainer(ctx, p.ID(), contID)
|
||||||
assert.Error(err)
|
assert.Error(err)
|
||||||
}
|
}*/
|
||||||
|
|
||||||
func TestStatsContainerFailing(t *testing.T) {
|
func TestStatsContainerFailing(t *testing.T) {
|
||||||
defer cleanUp()
|
defer cleanUp()
|
||||||
|
11
virtcontainers/factory/cache/cache_test.go
vendored
11
virtcontainers/factory/cache/cache_test.go
vendored
@ -8,6 +8,7 @@ package cache
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@ -34,10 +35,14 @@ func TestTemplateFactory(t *testing.T) {
|
|||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
var savedStorePath = store.VCStorePrefix
|
ConfigStoragePathSaved := store.ConfigStoragePath
|
||||||
store.VCStorePrefix = testDir
|
RunStoragePathSaved := store.RunStoragePath
|
||||||
|
// allow the tests to run without affecting the host system.
|
||||||
|
store.ConfigStoragePath = func() string { return filepath.Join(testDir, store.StoragePathSuffix, "config") }
|
||||||
|
store.RunStoragePath = func() string { return filepath.Join(testDir, store.StoragePathSuffix, "run") }
|
||||||
defer func() {
|
defer func() {
|
||||||
store.VCStorePrefix = savedStorePath
|
store.ConfigStoragePath = ConfigStoragePathSaved
|
||||||
|
store.RunStoragePath = RunStoragePathSaved
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// New
|
// New
|
||||||
|
@ -444,12 +444,7 @@ func (c *Container) Restore() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Sandbox) supportNewStore() bool {
|
func (s *Sandbox) supportNewStore() bool {
|
||||||
for _, f := range s.config.Experimental {
|
return true
|
||||||
if f == persist.NewStoreFeature && exp.Get("newstore") != nil {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadSandboxConfig(id string) (*SandboxConfig, error) {
|
func loadSandboxConfig(id string) (*SandboxConfig, error) {
|
||||||
|
@ -7,7 +7,6 @@ package virtcontainers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@ -19,47 +18,6 @@ import (
|
|||||||
"github.com/kata-containers/runtime/virtcontainers/types"
|
"github.com/kata-containers/runtime/virtcontainers/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func testCreateExpSandbox() (*Sandbox, error) {
|
|
||||||
sconfig := SandboxConfig{
|
|
||||||
ID: "test-exp",
|
|
||||||
HypervisorType: MockHypervisor,
|
|
||||||
HypervisorConfig: newHypervisorConfig(nil, nil),
|
|
||||||
AgentType: NoopAgentType,
|
|
||||||
NetworkConfig: NetworkConfig{},
|
|
||||||
Volumes: nil,
|
|
||||||
Containers: nil,
|
|
||||||
Experimental: []exp.Feature{persist.NewStoreFeature},
|
|
||||||
}
|
|
||||||
|
|
||||||
// support experimental
|
|
||||||
sandbox, err := createSandbox(context.Background(), sconfig, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("Could not create sandbox: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := sandbox.agent.startSandbox(sandbox); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return sandbox, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSupportNewStore(t *testing.T) {
|
|
||||||
assert := assert.New(t)
|
|
||||||
hConfig := newHypervisorConfig(nil, nil)
|
|
||||||
sandbox, err := testCreateSandbox(t, testSandboxID, MockHypervisor, hConfig, NoopAgentType, NetworkConfig{}, nil, nil)
|
|
||||||
assert.NoError(err)
|
|
||||||
defer cleanUp()
|
|
||||||
|
|
||||||
// not support experimental
|
|
||||||
assert.False(sandbox.supportNewStore())
|
|
||||||
|
|
||||||
// support experimental
|
|
||||||
sandbox, err = testCreateExpSandbox()
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.True(sandbox.supportNewStore())
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSandboxRestore(t *testing.T) {
|
func TestSandboxRestore(t *testing.T) {
|
||||||
var err error
|
var err error
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
|
@ -677,19 +677,7 @@ func unlockSandbox(ctx context.Context, sandboxID, token string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func supportNewStore(ctx context.Context) bool {
|
func supportNewStore(ctx context.Context) bool {
|
||||||
if exp.Get("newstore") == nil {
|
return true
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if client context enabled "newstore" feature
|
|
||||||
exps := exp.ExpFromContext(ctx)
|
|
||||||
for _, v := range exps {
|
|
||||||
if v == "newstore" {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fetchSandbox fetches a sandbox config from a sandbox ID and returns a sandbox.
|
// fetchSandbox fetches a sandbox config from a sandbox ID and returns a sandbox.
|
||||||
@ -812,6 +800,12 @@ func (s *Sandbox) Delete() error {
|
|||||||
|
|
||||||
s.agent.cleanup(s)
|
s.agent.cleanup(s)
|
||||||
|
|
||||||
|
if s.supportNewStore() {
|
||||||
|
if err := s.newStore.Destroy(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return s.store.Delete()
|
return s.store.Delete()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user