Merge pull request #2628 from bergwolf/runtime-reorg

runtime: refactor commandline code directory
This commit is contained in:
Hui Zhu 2021-09-17 10:37:22 +08:00 committed by GitHub
commit fff82b4ef5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
85 changed files with 171 additions and 204 deletions

View File

@ -14,7 +14,7 @@ through the [CRI-O\*](https://github.com/kubernetes-incubator/cri-o) and
Kata Containers creates a QEMU\*/KVM virtual machine for pod that `kubelet` (Kubernetes) creates respectively. Kata Containers creates a QEMU\*/KVM virtual machine for pod that `kubelet` (Kubernetes) creates respectively.
The [`containerd-shim-kata-v2` (shown as `shimv2` from this point onwards)](../../src/runtime/containerd-shim-v2) The [`containerd-shim-kata-v2` (shown as `shimv2` from this point onwards)](../../src/runtime/cmd/containerd-shim-kata-v2/)
is the Kata Containers entrypoint, which is the Kata Containers entrypoint, which
implements the [Containerd Runtime V2 (Shim API)](https://github.com/containerd/containerd/tree/master/runtime/v2) for Kata. implements the [Containerd Runtime V2 (Shim API)](https://github.com/containerd/containerd/tree/master/runtime/v2) for Kata.
@ -259,7 +259,7 @@ With `RuntimeClass`, users can define Kata Containers as a `RuntimeClass` and th
## DAX ## DAX
Kata Containers utilizes the Linux kernel DAX [(Direct Access filesystem)](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/dax.txt) Kata Containers utilizes the Linux kernel DAX [(Direct Access filesystem)](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/dax.rst?h=v5.14)
feature to efficiently map some host-side files into the guest VM space. feature to efficiently map some host-side files into the guest VM space.
In particular, Kata Containers uses the QEMU NVDIMM feature to provide a In particular, Kata Containers uses the QEMU NVDIMM feature to provide a
memory-mapped virtual device that can be used to DAX map the virtual machine's memory-mapped virtual device that can be used to DAX map the virtual machine's

View File

@ -39,7 +39,7 @@ use `RuntimeClass` instead of the deprecated annotations.
### Containerd Runtime V2 API: Shim V2 API ### Containerd Runtime V2 API: Shim V2 API
The [`containerd-shim-kata-v2` (short as `shimv2` in this documentation)](../../src/runtime/containerd-shim-v2) The [`containerd-shim-kata-v2` (short as `shimv2` in this documentation)](../../src/runtime/cmd/containerd-shim-kata-v2/)
implements the [Containerd Runtime V2 (Shim API)](https://github.com/containerd/containerd/tree/master/runtime/v2) for Kata. implements the [Containerd Runtime V2 (Shim API)](https://github.com/containerd/containerd/tree/master/runtime/v2) for Kata.
With `shimv2`, Kubernetes can launch Pod and OCI-compatible containers with one shim per Pod. Prior to `shimv2`, `2N+1` With `shimv2`, Kubernetes can launch Pod and OCI-compatible containers with one shim per Pod. Prior to `shimv2`, `2N+1`
shims (i.e. a `containerd-shim` and a `kata-shim` for each container and the Pod sandbox itself) and no standalone `kata-proxy` shims (i.e. a `containerd-shim` and a `kata-shim` for each container and the Pod sandbox itself) and no standalone `kata-proxy`

View File

@ -5,16 +5,10 @@ coverage.txt
coverage.html coverage.html
.git-commit .git-commit
.git-commit.tmp .git-commit.tmp
/cli/config/configuration-acrn.toml /config/*.toml
/cli/config/configuration-clh.toml config-generated.go
/cli/config/configuration-fc.toml
/cli/config/configuration-qemu.toml
/cli/config/configuration-clh.toml
/cli/config-generated.go
/cli/containerd-shim-kata-v2/config-generated.go
/cli/coverage.html
/containerd-shim-kata-v2 /containerd-shim-kata-v2
/containerd-shim-v2/monitor_address /cmd/containerd-shim-v2/monitor_address
/data/kata-collect-data.sh /data/kata-collect-data.sh
/kata-monitor /kata-monitor
/kata-netmon /kata-netmon

View File

@ -51,12 +51,13 @@ PROJECT_DIR = $(PROJECT_TAG)
IMAGENAME = $(PROJECT_TAG).img IMAGENAME = $(PROJECT_TAG).img
TARGET = $(BIN_PREFIX)-runtime TARGET = $(BIN_PREFIX)-runtime
TARGET_OUTPUT = $(CURDIR)/$(TARGET) RUNTIME_OUTPUT = $(CURDIR)/$(TARGET)
RUNTIME_DIR = $(CLI_DIR)/$(TARGET)
BINLIST += $(TARGET) BINLIST += $(TARGET)
NETMON_DIR = netmon NETMON_DIR = $(CLI_DIR)/netmon
NETMON_TARGET = $(PROJECT_TYPE)-netmon NETMON_TARGET = $(PROJECT_TYPE)-netmon
NETMON_TARGET_OUTPUT = $(CURDIR)/$(NETMON_TARGET) NETMON_RUNTIME_OUTPUT = $(CURDIR)/$(NETMON_TARGET)
BINLIBEXECLIST += $(NETMON_TARGET) BINLIBEXECLIST += $(NETMON_TARGET)
DESTDIR ?= / DESTDIR ?= /
@ -200,7 +201,7 @@ FEATURE_SELINUX ?= check
SED = sed SED = sed
CLI_DIR = cli CLI_DIR = cmd
SHIMV2 = containerd-shim-kata-v2 SHIMV2 = containerd-shim-kata-v2
SHIMV2_OUTPUT = $(CURDIR)/$(SHIMV2) SHIMV2_OUTPUT = $(CURDIR)/$(SHIMV2)
SHIMV2_DIR = $(CLI_DIR)/$(SHIMV2) SHIMV2_DIR = $(CLI_DIR)/$(SHIMV2)
@ -225,7 +226,7 @@ ifneq (,$(QEMUCMD))
KNOWN_HYPERVISORS += $(HYPERVISOR_QEMU) KNOWN_HYPERVISORS += $(HYPERVISOR_QEMU)
CONFIG_FILE_QEMU = configuration-qemu.toml CONFIG_FILE_QEMU = configuration-qemu.toml
CONFIG_QEMU = $(CLI_DIR)/config/$(CONFIG_FILE_QEMU) CONFIG_QEMU = config/$(CONFIG_FILE_QEMU)
CONFIG_QEMU_IN = $(CONFIG_QEMU).in CONFIG_QEMU_IN = $(CONFIG_QEMU).in
CONFIG_PATH_QEMU = $(abspath $(CONFDIR)/$(CONFIG_FILE_QEMU)) CONFIG_PATH_QEMU = $(abspath $(CONFDIR)/$(CONFIG_FILE_QEMU))
@ -248,7 +249,7 @@ ifneq (,$(CLHCMD))
KNOWN_HYPERVISORS += $(HYPERVISOR_CLH) KNOWN_HYPERVISORS += $(HYPERVISOR_CLH)
CONFIG_FILE_CLH = configuration-clh.toml CONFIG_FILE_CLH = configuration-clh.toml
CONFIG_CLH = $(CLI_DIR)/config/$(CONFIG_FILE_CLH) CONFIG_CLH = config/$(CONFIG_FILE_CLH)
CONFIG_CLH_IN = $(CONFIG_CLH).in CONFIG_CLH_IN = $(CONFIG_CLH).in
CONFIG_PATH_CLH = $(abspath $(CONFDIR)/$(CONFIG_FILE_CLH)) CONFIG_PATH_CLH = $(abspath $(CONFDIR)/$(CONFIG_FILE_CLH))
@ -271,7 +272,7 @@ ifneq (,$(FCCMD))
KNOWN_HYPERVISORS += $(HYPERVISOR_FC) KNOWN_HYPERVISORS += $(HYPERVISOR_FC)
CONFIG_FILE_FC = configuration-fc.toml CONFIG_FILE_FC = configuration-fc.toml
CONFIG_FC = $(CLI_DIR)/config/$(CONFIG_FILE_FC) CONFIG_FC = config/$(CONFIG_FILE_FC)
CONFIG_FC_IN = $(CONFIG_FC).in CONFIG_FC_IN = $(CONFIG_FC).in
CONFIG_PATH_FC = $(abspath $(CONFDIR)/$(CONFIG_FILE_FC)) CONFIG_PATH_FC = $(abspath $(CONFDIR)/$(CONFIG_FILE_FC))
@ -294,7 +295,7 @@ ifneq (,$(ACRNCMD))
KNOWN_HYPERVISORS += $(HYPERVISOR_ACRN) KNOWN_HYPERVISORS += $(HYPERVISOR_ACRN)
CONFIG_FILE_ACRN = configuration-acrn.toml CONFIG_FILE_ACRN = configuration-acrn.toml
CONFIG_ACRN = $(CLI_DIR)/config/$(CONFIG_FILE_ACRN) CONFIG_ACRN = config/$(CONFIG_FILE_ACRN)
CONFIG_ACRN_IN = $(CONFIG_ACRN).in CONFIG_ACRN_IN = $(CONFIG_ACRN).in
CONFIG_PATH_ACRN = $(abspath $(CONFDIR)/$(CONFIG_FILE_ACRN)) CONFIG_PATH_ACRN = $(abspath $(CONFDIR)/$(CONFIG_FILE_ACRN))
@ -522,12 +523,12 @@ containerd-shim-v2: $(SHIMV2_OUTPUT)
monitor: $(MONITOR_OUTPUT) monitor: $(MONITOR_OUTPUT)
netmon: $(NETMON_TARGET_OUTPUT) netmon: $(NETMON_RUNTIME_OUTPUT)
$(NETMON_TARGET_OUTPUT): $(SOURCES) VERSION $(NETMON_RUNTIME_OUTPUT): $(SOURCES) VERSION
$(QUIET_BUILD)(cd $(NETMON_DIR) && go build $(BUILDFLAGS) -o $@ -ldflags "-X main.version=$(VERSION)" $(KATA_LDFLAGS)) $(QUIET_BUILD)(cd $(NETMON_DIR) && go build $(BUILDFLAGS) -o $@ -ldflags "-X main.version=$(VERSION)" $(KATA_LDFLAGS))
runtime: $(TARGET_OUTPUT) $(CONFIGS) runtime: $(RUNTIME_OUTPUT) $(CONFIGS)
.DEFAULT: default .DEFAULT: default
build: default build: default
@ -558,16 +559,12 @@ define MAKE_KERNEL_VIRTIOFS_NAME
$(if $(findstring uncompressed,$1),vmlinux-virtiofs.container,vmlinuz-virtiofs.container) $(if $(findstring uncompressed,$1),vmlinux-virtiofs.container,vmlinuz-virtiofs.container)
endef endef
GENERATED_CONFIG = $(abspath $(CLI_DIR)/config-generated.go)
GENERATED_FILES += $(GENERATED_CONFIG)
GENERATED_FILES += pkg/katautils/config-settings.go GENERATED_FILES += pkg/katautils/config-settings.go
$(TARGET_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) | show-summary $(RUNTIME_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) | show-summary
$(QUIET_BUILD)(cd $(CLI_DIR) && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) $(QUIET_BUILD)(cd $(RUNTIME_DIR) && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .)
$(SHIMV2_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) $(SHIMV2_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST)
$(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && ln -fs $(GENERATED_CONFIG))
$(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) $(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .)
$(MONITOR_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) .git-commit $(MONITOR_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) .git-commit
@ -610,7 +607,6 @@ ifeq ($(shell id -u), 0)
endif endif
go-test: $(GENERATED_FILES) go-test: $(GENERATED_FILES)
$(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && ln -fs $(GENERATED_CONFIG))
go clean -testcache go clean -testcache
go test -v -mod=vendor ./... go test -v -mod=vendor ./...
@ -619,7 +615,6 @@ check-go-static:
$(QUIET_CHECK)../../ci/go-no-os-exit.sh ./virtcontainers $(QUIET_CHECK)../../ci/go-no-os-exit.sh ./virtcontainers
coverage: coverage:
$(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && ln -fs $(GENERATED_CONFIG))
go test -v -mod=vendor -covermode=atomic -coverprofile=coverage.txt ./... go test -v -mod=vendor -covermode=atomic -coverprofile=coverage.txt ./...
go tool cover -html=coverage.txt -o coverage.html go tool cover -html=coverage.txt -o coverage.html
@ -666,7 +661,6 @@ clean:
$(NETMON_TARGET) \ $(NETMON_TARGET) \
$(MONITOR) \ $(MONITOR) \
$(SHIMV2) \ $(SHIMV2) \
$(SHIMV2_DIR)/$(notdir $(GENERATED_CONFIG)) \
$(TARGET) \ $(TARGET) \
.git-commit .git-commit.tmp .git-commit .git-commit.tmp

View File

@ -1,40 +0,0 @@
//
// Copyright (c) 2018-2019 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0
//
// WARNING: This file is auto-generated - DO NOT EDIT!
//
// Note that some variables are "var" to allow them to be modified
// by the tests.
package main
// name is the name of the runtime
const name = "@RUNTIME_NAME@"
// name of the project
const project = "@PROJECT_NAME@"
// prefix used to denote non-standard CLI commands and options.
const projectPrefix = "@PROJECT_TYPE@"
// original URL for this project
const projectURL = "@PROJECT_URL@"
// Project URL's organisation name
const projectORG = "@PROJECT_ORG@"
const defaultRootDirectory = "@PKGRUNDIR@"
// commit is the git commit the runtime is compiled from.
var commit = "@COMMIT@"
// version is the runtime version.
var version = "@VERSION@"
// Default config file used by stateless systems.
var defaultRuntimeConfiguration = "@CONFIG_PATH@"
// Alternate config file that takes precedence over
// defaultRuntimeConfiguration.
var defaultSysConfRuntimeConfiguration = "@SYSCONFIG@"

View File

@ -1,30 +0,0 @@
// Copyright (c) 2018 HyperHQ Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
package main
import (
"fmt"
"os"
"github.com/containerd/containerd/runtime/v2/shim"
containerdshim "github.com/kata-containers/kata-containers/src/runtime/containerd-shim-v2"
"github.com/kata-containers/kata-containers/src/runtime/pkg/types"
)
func shimConfig(config *shim.Config) {
config.NoReaper = true
config.NoSubreaper = true
}
func main() {
if len(os.Args) == 2 && os.Args[1] == "--version" {
fmt.Printf("%s containerd shim: id: %q, version: %s, commit: %v\n", project, types.DefaultKataRuntimeName, version, commit)
os.Exit(0)
}
shim.Run(types.DefaultKataRuntimeName, containerdshim.New, shimConfig)
}

View File

@ -0,0 +1,32 @@
// Copyright (c) 2018 HyperHQ Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
package main
import (
"fmt"
"os"
shimapi "github.com/containerd/containerd/runtime/v2/shim"
shim "github.com/kata-containers/kata-containers/src/runtime/pkg/containerd-shim-v2"
"github.com/kata-containers/kata-containers/src/runtime/pkg/katautils"
"github.com/kata-containers/kata-containers/src/runtime/pkg/types"
)
func shimConfig(config *shimapi.Config) {
config.NoReaper = true
config.NoSubreaper = true
}
func main() {
if len(os.Args) == 2 && os.Args[1] == "--version" {
fmt.Printf("%s containerd shim: id: %q, version: %s, commit: %v\n", katautils.PROJECT, types.DefaultKataRuntimeName, katautils.VERSION, katautils.COMMIT)
os.Exit(0)
}
shimapi.Run(types.DefaultKataRuntimeName, shim.New, shimConfig)
}

View File

@ -61,9 +61,9 @@ type vmContainerCapableDetails struct {
const ( const (
moduleParamDir = "parameters" moduleParamDir = "parameters"
successMessageCapable = "System is capable of running " + project successMessageCapable = "System is capable of running " + katautils.PROJECT
successMessageCreate = "System can currently create " + project successMessageCreate = "System can currently create " + katautils.PROJECT
failMessage = "System is not capable of running " + project failMessage = "System is not capable of running " + katautils.PROJECT
kernelPropertyCorrect = "Kernel property value correct" kernelPropertyCorrect = "Kernel property value correct"
// these refer to fields in the procCPUINFO file // these refer to fields in the procCPUINFO file
@ -313,7 +313,7 @@ func genericHostIsVMContainerCapable(details vmContainerCapableDetails) error {
var kataCheckCLICommand = cli.Command{ var kataCheckCLICommand = cli.Command{
Name: "check", Name: "check",
Aliases: []string{"kata-check"}, Aliases: []string{"kata-check"},
Usage: "tests if system can run " + project, Usage: "tests if system can run " + katautils.PROJECT,
Flags: []cli.Flag{ Flags: []cli.Flag{
cli.BoolFlag{ cli.BoolFlag{
Name: "check-version-only", Name: "check-version-only",
@ -372,14 +372,14 @@ EXAMPLES:
$ %s check --only-list-releases --include-all-releases $ %s check --only-list-releases --include-all-releases
`, `,
project, katautils.PROJECT,
noNetworkEnvVar, noNetworkEnvVar,
name, katautils.NAME,
name, katautils.NAME,
name, katautils.NAME,
name, katautils.NAME,
name, katautils.NAME,
name, katautils.NAME,
), ),
Action: func(context *cli.Context) error { Action: func(context *cli.Context) error {
@ -398,7 +398,7 @@ EXAMPLES:
if os.Geteuid() == 0 { if os.Geteuid() == 0 {
kataLog.Warn("Not running network checks as super user") kataLog.Warn("Not running network checks as super user")
} else { } else {
err := HandleReleaseVersions(cmd, version, context.Bool("include-all-releases")) err := HandleReleaseVersions(cmd, katautils.VERSION, context.Bool("include-all-releases"))
if err != nil { if err != nil {
return err return err
} }

View File

@ -13,14 +13,16 @@ import (
"strings" "strings"
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/prometheus/procfs"
"github.com/urfave/cli"
"github.com/kata-containers/kata-containers/src/runtime/pkg/katautils"
"github.com/kata-containers/kata-containers/src/runtime/pkg/utils" "github.com/kata-containers/kata-containers/src/runtime/pkg/utils"
vc "github.com/kata-containers/kata-containers/src/runtime/virtcontainers" vc "github.com/kata-containers/kata-containers/src/runtime/virtcontainers"
exp "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/experimental" exp "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/experimental"
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/oci" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/oci"
vcUtils "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" vcUtils "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/prometheus/procfs"
"github.com/urfave/cli"
) )
// Semantic version for the output of the command. // Semantic version for the output of the command.
@ -169,8 +171,8 @@ func getMetaInfo() MetaInfo {
} }
func getRuntimeInfo(configFile string, config oci.RuntimeConfig) RuntimeInfo { func getRuntimeInfo(configFile string, config oci.RuntimeConfig) RuntimeInfo {
runtimeVersionInfo := constructVersionInfo(version) runtimeVersionInfo := constructVersionInfo(katautils.VERSION)
runtimeVersionInfo.Commit = commit runtimeVersionInfo.Commit = katautils.COMMIT
runtimeVersion := RuntimeVersionInfo{ runtimeVersion := RuntimeVersionInfo{
Version: runtimeVersionInfo, Version: runtimeVersionInfo,

View File

@ -314,8 +314,8 @@ func getExpectedKernel(config oci.RuntimeConfig) KernelInfo {
func getExpectedRuntimeDetails(config oci.RuntimeConfig, configFile string) RuntimeInfo { func getExpectedRuntimeDetails(config oci.RuntimeConfig, configFile string) RuntimeInfo {
runtimePath, _ := os.Executable() runtimePath, _ := os.Executable()
runtimeVersionInfo := constructVersionInfo(version) runtimeVersionInfo := constructVersionInfo(katautils.VERSION)
runtimeVersionInfo.Commit = commit runtimeVersionInfo.Commit = katautils.COMMIT
return RuntimeInfo{ return RuntimeInfo{
Version: RuntimeVersionInfo{ Version: RuntimeVersionInfo{
Version: runtimeVersionInfo, Version: runtimeVersionInfo,

View File

@ -39,18 +39,18 @@ const arch = goruntime.GOARCH
var usage = fmt.Sprintf(`%s runtime var usage = fmt.Sprintf(`%s runtime
%s is a command line program for running applications packaged %s is a command line program for running applications packaged
according to the Open Container Initiative (OCI).`, name, name) according to the Open Container Initiative (OCI).`, katautils.NAME, katautils.NAME)
var notes = fmt.Sprintf(` var notes = fmt.Sprintf(`
NOTES: NOTES:
- Commands starting "%s-" and options starting "--%s-" are `+project+` extensions. - Commands starting "%s-" and options starting "--%s-" are `+katautils.PROJECT+` extensions.
URL: URL:
The canonical URL for this project is: %s The canonical URL for this project is: %s
`, projectPrefix, projectPrefix, projectURL) `, katautils.PROJECTPREFIX, katautils.PROJECTPREFIX, katautils.PROJECTURL)
// kataLog is the logger used to record all messages // kataLog is the logger used to record all messages
var kataLog *logrus.Entry var kataLog *logrus.Entry
@ -82,7 +82,7 @@ var defaultErrorFile = os.Stderr
var runtimeFlags = []cli.Flag{ var runtimeFlags = []cli.Flag{
cli.StringFlag{ cli.StringFlag{
Name: "config, kata-config", Name: "config, kata-config",
Usage: project + " config file path", Usage: katautils.PROJECT + " config file path",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "log", Name: "log",
@ -96,7 +96,7 @@ var runtimeFlags = []cli.Flag{
}, },
cli.StringFlag{ cli.StringFlag{
Name: "root", Name: "root",
Value: defaultRootDirectory, Value: katautils.DEFAULTROOTDIRECTORY,
Usage: "root directory for storage of container state (this should be located in tmpfs)", Usage: "root directory for storage of container state (this should be located in tmpfs)",
}, },
cli.StringFlag{ cli.StringFlag{
@ -145,7 +145,7 @@ var savedCLIErrWriter = cli.ErrWriter
func init() { func init() {
kataLog = logrus.WithFields(logrus.Fields{ kataLog = logrus.WithFields(logrus.Fields{
"name": name, "name": katautils.NAME,
"source": "runtime", "source": "runtime",
"arch": arch, "arch": arch,
"pid": os.Getpid(), "pid": os.Getpid(),
@ -222,7 +222,7 @@ func beforeSubcommands(c *cli.Context) error {
var runtimeConfig oci.RuntimeConfig var runtimeConfig oci.RuntimeConfig
var err error var err error
katautils.SetConfigOptions(name, defaultRuntimeConfiguration, defaultSysConfRuntimeConfiguration) katautils.SetConfigOptions(katautils.NAME, katautils.DEFAULTRUNTIMECONFIGURATION, katautils.DEFAULTSYSCONFRUNTIMECONFIGURATION)
handleShowConfig(c) handleShowConfig(c)
@ -302,8 +302,8 @@ func beforeSubcommands(c *cli.Context) error {
args := strings.Join(c.Args(), " ") args := strings.Join(c.Args(), " ")
fields := logrus.Fields{ fields := logrus.Fields{
"version": version, "version": katautils.VERSION,
"commit": commit, "commit": katautils.COMMIT,
"arguments": `"` + args + `"`, "arguments": `"` + args + `"`,
} }
@ -365,14 +365,14 @@ func commandNotFound(c *cli.Context, command string) {
func makeVersionString() string { func makeVersionString() string {
v := make([]string, 0, 3) v := make([]string, 0, 3)
versionStr := version versionStr := katautils.VERSION
if versionStr == "" { if versionStr == "" {
versionStr = unknown versionStr = unknown
} }
v = append(v, name+" : "+versionStr) v = append(v, katautils.NAME+" : "+versionStr)
commitStr := commit commitStr := katautils.COMMIT
if commitStr == "" { if commitStr == "" {
commitStr = unknown commitStr = unknown
} }
@ -411,7 +411,7 @@ func setCLIGlobals() {
func createRuntimeApp(ctx context.Context, args []string) error { func createRuntimeApp(ctx context.Context, args []string) error {
app := cli.NewApp() app := cli.NewApp()
app.Name = name app.Name = katautils.NAME
app.Writer = defaultOutputFile app.Writer = defaultOutputFile
app.Usage = usage app.Usage = usage
app.CommandNotFound = runtimeCommandNotFound app.CommandNotFound = runtimeCommandNotFound

View File

@ -57,19 +57,19 @@ var (
var testingImpl = &vcmock.VCMock{} var testingImpl = &vcmock.VCMock{}
func init() { func init() {
if version == "" { if katautils.VERSION == "" {
panic("ERROR: invalid build: version not set") panic("ERROR: invalid build: version not set")
} }
if commit == "" { if katautils.COMMIT == "" {
panic("ERROR: invalid build: commit not set") panic("ERROR: invalid build: commit not set")
} }
if defaultSysConfRuntimeConfiguration == "" { if katautils.DEFAULTSYSCONFRUNTIMECONFIGURATION == "" {
panic("ERROR: invalid build: defaultSysConfRuntimeConfiguration not set") panic("ERROR: invalid build: defaultSysConfRuntimeConfiguration not set")
} }
if defaultRuntimeConfiguration == "" { if katautils.DEFAULTRUNTIMECONFIGURATION == "" {
panic("ERROR: invalid build: defaultRuntimeConfiguration not set") panic("ERROR: invalid build: defaultRuntimeConfiguration not set")
} }
@ -82,7 +82,7 @@ func init() {
var err error var err error
fmt.Printf("INFO: creating test directory\n") fmt.Printf("INFO: creating test directory\n")
testDir, err = ioutil.TempDir("", fmt.Sprintf("%s-", name)) testDir, err = ioutil.TempDir("", fmt.Sprintf("%s-", katautils.NAME))
if err != nil { if err != nil {
panic(fmt.Sprintf("ERROR: failed to create test directory: %v", err)) panic(fmt.Sprintf("ERROR: failed to create test directory: %v", err))
} }
@ -153,8 +153,8 @@ func runUnitTests(m *testing.M) {
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
// If the test binary name is kata-runtime.coverage, we've are being asked to // If the test binary name is kata-runtime.coverage, we've are being asked to
// run the coverage-instrumented kata-runtime. // run the coverage-instrumented kata-runtime.
if path.Base(os.Args[0]) == name+".coverage" || if path.Base(os.Args[0]) == katautils.NAME+".coverage" ||
path.Base(os.Args[0]) == name { path.Base(os.Args[0]) == katautils.NAME {
main() main()
exit(0) exit(0)
} }
@ -666,9 +666,9 @@ func TestMainBeforeSubCommandsShowCCConfigPaths(t *testing.T) {
for i, line := range lines { for i, line := range lines {
switch i { switch i {
case 0: case 0:
assert.Equal(line, defaultSysConfRuntimeConfiguration) assert.Equal(line, katautils.DEFAULTSYSCONFRUNTIMECONFIGURATION)
case 1: case 1:
assert.Equal(line, defaultRuntimeConfiguration) assert.Equal(line, katautils.DEFAULTRUNTIMECONFIGURATION)
} }
} }
} }
@ -715,7 +715,7 @@ func testVersionString(assert *assert.Assertions, versionString, expectedVersion
foundCommit := false foundCommit := false
foundOCIVersion := false foundOCIVersion := false
versionRE := regexp.MustCompile(fmt.Sprintf(`%s\s*:\s*%v`, name, expectedVersion)) versionRE := regexp.MustCompile(fmt.Sprintf(`%s\s*:\s*%v`, katautils.NAME, expectedVersion))
commitRE := regexp.MustCompile(fmt.Sprintf(`%s\s*:\s*%v`, "commit", expectedCommit)) commitRE := regexp.MustCompile(fmt.Sprintf(`%s\s*:\s*%v`, "commit", expectedCommit))
ociRE := regexp.MustCompile(fmt.Sprintf(`%s\s*:\s*%v`, "OCI specs", expectedOCIVersion)) ociRE := regexp.MustCompile(fmt.Sprintf(`%s\s*:\s*%v`, "OCI specs", expectedOCIVersion))
@ -753,37 +753,37 @@ func TestMainMakeVersionString(t *testing.T) {
v := makeVersionString() v := makeVersionString()
testVersionString(assert, v, version, commit, specs.Version) testVersionString(assert, v, katautils.VERSION, katautils.COMMIT, specs.Version)
} }
func TestMainMakeVersionStringNoVersion(t *testing.T) { func TestMainMakeVersionStringNoVersion(t *testing.T) {
assert := assert.New(t) assert := assert.New(t)
savedVersion := version savedVersion := katautils.VERSION
version = "" katautils.VERSION = ""
defer func() { defer func() {
version = savedVersion katautils.VERSION = savedVersion
}() }()
v := makeVersionString() v := makeVersionString()
testVersionString(assert, v, unknown, commit, specs.Version) testVersionString(assert, v, unknown, katautils.COMMIT, specs.Version)
} }
func TestMainMakeVersionStringNoCommit(t *testing.T) { func TestMainMakeVersionStringNoCommit(t *testing.T) {
assert := assert.New(t) assert := assert.New(t)
savedCommit := commit savedCommit := katautils.COMMIT
commit = "" katautils.COMMIT = ""
defer func() { defer func() {
commit = savedCommit katautils.COMMIT = savedCommit
}() }()
v := makeVersionString() v := makeVersionString()
testVersionString(assert, v, version, unknown, specs.Version) testVersionString(assert, v, katautils.VERSION, unknown, specs.Version)
} }
func TestMainMakeVersionStringNoOCIVersion(t *testing.T) { func TestMainMakeVersionStringNoOCIVersion(t *testing.T) {
@ -798,7 +798,7 @@ func TestMainMakeVersionStringNoOCIVersion(t *testing.T) {
v := makeVersionString() v := makeVersionString()
testVersionString(assert, v, version, commit, unknown) testVersionString(assert, v, katautils.VERSION, katautils.COMMIT, unknown)
} }
func TestMainCreateRuntimeApp(t *testing.T) { func TestMainCreateRuntimeApp(t *testing.T) {
@ -824,7 +824,7 @@ func TestMainCreateRuntimeApp(t *testing.T) {
defaultOutputFile = savedOutputFile defaultOutputFile = savedOutputFile
}() }()
args := []string{name} args := []string{katautils.NAME}
err = createRuntimeApp(context.Background(), args) err = createRuntimeApp(context.Background(), args)
assert.NoError(err, "%v", args) assert.NoError(err, "%v", args)
@ -849,7 +849,7 @@ func TestMainCreateRuntimeAppInvalidSubCommand(t *testing.T) {
}() }()
// calls fatal() so no return // calls fatal() so no return
_ = createRuntimeApp(context.Background(), []string{name, "i-am-an-invalid-sub-command"}) _ = createRuntimeApp(context.Background(), []string{katautils.NAME, "i-am-an-invalid-sub-command"})
assert.NotEqual(exitStatus, 0) assert.NotEqual(exitStatus, 0)
} }
@ -869,7 +869,7 @@ func TestMainCreateRuntime(t *testing.T) {
savedBefore := runtimeBeforeSubcommands savedBefore := runtimeBeforeSubcommands
savedCommands := runtimeCommands savedCommands := runtimeCommands
os.Args = []string{name, cmd} os.Args = []string{katautils.NAME, cmd}
exitFunc = func(status int) { exitStatus = status } exitFunc = func(status int) { exitStatus = status }
// disable // disable
@ -920,10 +920,10 @@ func TestMainVersionPrinter(t *testing.T) {
setCLIGlobals() setCLIGlobals()
err = createRuntimeApp(context.Background(), []string{name, "--version"}) err = createRuntimeApp(context.Background(), []string{katautils.NAME, "--version"})
assert.NoError(err) assert.NoError(err)
err = grep(fmt.Sprintf(`%s\s*:\s*%s`, name, version), output) err = grep(fmt.Sprintf(`%s\s*:\s*%s`, katautils.NAME, katautils.VERSION), output)
assert.NoError(err) assert.NoError(err)
} }
@ -968,7 +968,7 @@ func TestMainFatalWriter(t *testing.T) {
setCLIGlobals() setCLIGlobals()
err := createRuntimeApp(context.Background(), []string{name, cmd}) err := createRuntimeApp(context.Background(), []string{katautils.NAME, cmd})
assert.Error(err) assert.Error(err)
re := regexp.MustCompile( re := regexp.MustCompile(

View File

@ -16,6 +16,8 @@ import (
"strings" "strings"
"github.com/blang/semver" "github.com/blang/semver"
"github.com/kata-containers/kata-containers/src/runtime/pkg/katautils"
) )
type ReleaseCmd int type ReleaseCmd int
@ -29,7 +31,7 @@ type releaseDetails struct {
const ( const (
// A release URL is expected to be prefixed with this value // A release URL is expected to be prefixed with this value
projectAPIURL = "https://api.github.com/repos/" + projectORG projectAPIURL = "https://api.github.com/repos/" + katautils.PROJECTORG
releasesSuffix = "/releases" releasesSuffix = "/releases"
downloadsSuffix = releasesSuffix + "/download" downloadsSuffix = releasesSuffix + "/download"
@ -37,12 +39,12 @@ const (
// Kata 1.x // Kata 1.x
kata1xRepo = "runtime" kata1xRepo = "runtime"
kataLegacyReleaseURL = projectAPIURL + "/" + kata1xRepo + releasesSuffix kataLegacyReleaseURL = projectAPIURL + "/" + kata1xRepo + releasesSuffix
kataLegacyDownloadURL = projectURL + "/" + kata1xRepo + downloadsSuffix kataLegacyDownloadURL = katautils.PROJECTURL + "/" + kata1xRepo + downloadsSuffix
// Kata 2.x or newer // Kata 2.x or newer
kata2xRepo = "kata-containers" kata2xRepo = "kata-containers"
kataReleaseURL = projectAPIURL + "/" + kata2xRepo + releasesSuffix kataReleaseURL = projectAPIURL + "/" + kata2xRepo + releasesSuffix
kataDownloadURL = projectURL + "/" + kata2xRepo + downloadsSuffix kataDownloadURL = katautils.PROJECTURL + "/" + kata2xRepo + downloadsSuffix
// Environment variable that can be used to override a release URL // Environment variable that can be used to override a release URL
ReleaseURLEnvVar = "KATA_RELEASE_URL" ReleaseURLEnvVar = "KATA_RELEASE_URL"
@ -377,7 +379,7 @@ func HandleReleaseVersions(cmd ReleaseCmd, currentVersion string, includeAll boo
currentSemver, err := semver.Make(currentVersion) currentSemver, err := semver.Make(currentVersion)
if err != nil { if err != nil {
return fmt.Errorf("BUG: Current version of %s (%s) has invalid SemVer version: %v", name, currentVersion, err) return fmt.Errorf("BUG: Current version of %s (%s) has invalid SemVer version: %v", katautils.NAME, currentVersion, err)
} }
releaseURL, err := getReleaseURL(currentSemver) releaseURL, err := getReleaseURL(currentSemver)

View File

@ -12,6 +12,7 @@ import (
"testing" "testing"
"github.com/blang/semver" "github.com/blang/semver"
"github.com/kata-containers/kata-containers/src/runtime/pkg/katautils"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -20,7 +21,7 @@ var expectedReleasesURL string
func init() { func init() {
var err error var err error
currentSemver, err = semver.Make(version) currentSemver, err = semver.Make(katautils.VERSION)
if err != nil { if err != nil {
panic(fmt.Sprintf("failed to create semver for testing: %v", err)) panic(fmt.Sprintf("failed to create semver for testing: %v", err))
@ -307,7 +308,7 @@ func TestDownloadURLIsValid(t *testing.T) {
{"foo", true}, {"foo", true},
{"foo bar", true}, {"foo bar", true},
{"https://google.com", true}, {"https://google.com", true},
{projectURL, true}, {katautils.PROJECTURL, true},
{validKata1xDownload, false}, {validKata1xDownload, false},
{validKata2xDownload, false}, {validKata2xDownload, false},
} }

View File

@ -7,12 +7,13 @@ package katamonitor
import ( import (
"fmt" "fmt"
cdshim "github.com/containerd/containerd/runtime/v2/shim"
"io" "io"
"net" "net"
"net/http" "net/http"
shim "github.com/kata-containers/kata-containers/src/runtime/containerd-shim-v2" cdshim "github.com/containerd/containerd/runtime/v2/shim"
shim "github.com/kata-containers/kata-containers/src/runtime/pkg/containerd-shim-v2"
) )
func serveError(w http.ResponseWriter, status int, txt string) { func serveError(w http.ResponseWriter, status int, txt string) {

View File

@ -13,7 +13,8 @@ import (
"time" "time"
cdshim "github.com/containerd/containerd/runtime/v2/shim" cdshim "github.com/containerd/containerd/runtime/v2/shim"
shim "github.com/kata-containers/kata-containers/src/runtime/containerd-shim-v2"
shim "github.com/kata-containers/kata-containers/src/runtime/pkg/containerd-shim-v2"
) )
const ( const (

View File

@ -1,5 +1,6 @@
// Copyright (c) 2018 Intel Corporation // Copyright (c) 2018 Intel Corporation
// Copyright (c) 2018 HyperHQ Inc. // Copyright (c) 2018 HyperHQ Inc.
// Copyright (c) 2021 Ant Group
// //
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// //
@ -8,6 +9,35 @@
package katautils package katautils
// name is the name of the runtime
var NAME = "@RUNTIME_NAME@"
// name of the project
const PROJECT = "@PROJECT_NAME@"
// prefix used to denote non-standard CLI commands and options.
const PROJECTPREFIX = "@PROJECT_TYPE@"
// original URL for this project
const PROJECTURL = "@PROJECT_URL@"
// Project URL's organisation name
const PROJECTORG = "@PROJECT_ORG@"
const DEFAULTROOTDIRECTORY = "@PKGRUNDIR@"
// commit is the git commit the runtime is compiled from.
var COMMIT = "@COMMIT@"
// version is the runtime version.
var VERSION = "@VERSION@"
// Default config file used by stateless systems.
var DEFAULTRUNTIMECONFIGURATION = "@CONFIG_PATH@"
// Alternate config file that takes precedence over
// defaultRuntimeConfiguration.
var DEFAULTSYSCONFRUNTIMECONFIGURATION = "@SYSCONFIG@"
var defaultHypervisorPath = "/usr/bin/qemu-system-x86_64" var defaultHypervisorPath = "/usr/bin/qemu-system-x86_64"
var defaultHypervisorCtlPath = "/usr/bin/acrnctl" var defaultHypervisorCtlPath = "/usr/bin/acrnctl"
var defaultJailerPath = "/usr/bin/jailer" var defaultJailerPath = "/usr/bin/jailer"
@ -65,9 +95,4 @@ const defaultVMCacheEndpoint string = "/var/run/kata-containers/cache.sock"
// Default config file used by stateless systems. // Default config file used by stateless systems.
var defaultRuntimeConfiguration = "@CONFIG_PATH@" var defaultRuntimeConfiguration = "@CONFIG_PATH@"
// Alternate config file that takes precedence over
// defaultRuntimeConfiguration.
var defaultSysConfRuntimeConfiguration = "@SYSCONFIG@"
var name = "kata"
var defaultNetmonPath = "/usr/libexec/kata-containers/kata-netmon" var defaultNetmonPath = "/usr/libexec/kata-containers/kata-netmon"

View File

@ -1343,7 +1343,7 @@ func checkHypervisorConfig(config vc.HypervisorConfig) error {
func GetDefaultConfigFilePaths() []string { func GetDefaultConfigFilePaths() []string {
return []string{ return []string{
// normally below "/etc" // normally below "/etc"
defaultSysConfRuntimeConfiguration, DEFAULTSYSCONFRUNTIMECONFIGURATION,
// normally below "/usr/share" // normally below "/usr/share"
defaultRuntimeConfiguration, defaultRuntimeConfiguration,
@ -1371,7 +1371,7 @@ func getDefaultConfigFile() (string, error) {
// SetConfigOptions will override some of the defaults settings. // SetConfigOptions will override some of the defaults settings.
func SetConfigOptions(n, runtimeConfig, sysRuntimeConfig string) { func SetConfigOptions(n, runtimeConfig, sysRuntimeConfig string) {
if n != "" { if n != "" {
name = n NAME = n
} }
if runtimeConfig != "" { if runtimeConfig != "" {
@ -1379,6 +1379,6 @@ func SetConfigOptions(n, runtimeConfig, sysRuntimeConfig string) {
} }
if sysRuntimeConfig != "" { if sysRuntimeConfig != "" {
defaultSysConfRuntimeConfiguration = sysRuntimeConfig DEFAULTSYSCONFRUNTIMECONFIGURATION = sysRuntimeConfig
} }
} }

View File

@ -250,7 +250,7 @@ func testLoadConfiguration(t *testing.T, dir string,
// override // override
defaultRuntimeConfiguration = testConfig.ConfigPath defaultRuntimeConfiguration = testConfig.ConfigPath
defaultSysConfRuntimeConfiguration = "" DEFAULTSYSCONFRUNTIMECONFIGURATION = ""
for _, file := range configFiles { for _, file := range configFiles {
var err error var err error
@ -1193,24 +1193,24 @@ func TestGetDefaultConfigFile(t *testing.T) {
assert.NoError(err) assert.NoError(err)
savedConf := defaultRuntimeConfiguration savedConf := defaultRuntimeConfiguration
savedSysConf := defaultSysConfRuntimeConfiguration savedSysConf := DEFAULTSYSCONFRUNTIMECONFIGURATION
defaultRuntimeConfiguration = confDirConfig.ConfigPath defaultRuntimeConfiguration = confDirConfig.ConfigPath
defaultSysConfRuntimeConfiguration = sysConfDirConfig.ConfigPath DEFAULTSYSCONFRUNTIMECONFIGURATION = sysConfDirConfig.ConfigPath
defer func() { defer func() {
defaultRuntimeConfiguration = savedConf defaultRuntimeConfiguration = savedConf
defaultSysConfRuntimeConfiguration = savedSysConf DEFAULTSYSCONFRUNTIMECONFIGURATION = savedSysConf
}() }()
got, err := getDefaultConfigFile() got, err := getDefaultConfigFile()
assert.NoError(err) assert.NoError(err)
// defaultSysConfRuntimeConfiguration has priority over defaultRuntimeConfiguration // DEFAULTSYSCONFRUNTIMECONFIGURATION has priority over defaultRuntimeConfiguration
assert.Equal(got, defaultSysConfRuntimeConfiguration) assert.Equal(got, DEFAULTSYSCONFRUNTIMECONFIGURATION)
// force defaultRuntimeConfiguration to be returned // force defaultRuntimeConfiguration to be returned
os.Remove(defaultSysConfRuntimeConfiguration) os.Remove(DEFAULTSYSCONFRUNTIMECONFIGURATION)
got, err = getDefaultConfigFile() got, err = getDefaultConfigFile()
assert.NoError(err) assert.NoError(err)

View File

@ -161,7 +161,7 @@ func findLastParam(key string, params []vc.Param) (string, error) {
} }
} }
return "", fmt.Errorf("no param called %q found", name) return "", fmt.Errorf("no param called %q found", NAME)
} }
func TestSetEphemeralStorageType(t *testing.T) { func TestSetEphemeralStorageType(t *testing.T) {

View File

@ -61,7 +61,7 @@ func (h *sysLogHook) Fire(e *logrus.Entry) (err error) {
} }
func newSystemLogHook(network, raddr string) (*sysLogHook, error) { func newSystemLogHook(network, raddr string) (*sysLogHook, error) {
hook, err := lSyslog.NewSyslogHook(network, raddr, syslog.LOG_INFO, name) hook, err := lSyslog.NewSyslogHook(network, raddr, syslog.LOG_INFO, NAME)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -45,7 +45,7 @@ func init() {
var err error var err error
fmt.Printf("INFO: creating test directory\n") fmt.Printf("INFO: creating test directory\n")
testDir, err = ioutil.TempDir("", fmt.Sprintf("%s-", name)) testDir, err = ioutil.TempDir("", fmt.Sprintf("%s-", NAME))
if err != nil { if err != nil {
panic(fmt.Sprintf("ERROR: failed to create test directory: %v", err)) panic(fmt.Sprintf("ERROR: failed to create test directory: %v", err))
} }

View File

@ -689,18 +689,3 @@ func TestConfigValid(t *testing.T) {
result = config.valid() result = config.valid()
assert.True(result) assert.True(result)
} }
func TestStoreContainer(t *testing.T) {
hConfig := newHypervisorConfig(nil, nil)
sandbox, err := testCreateSandbox(t, testSandboxID, MockHypervisor, hConfig, NetworkConfig{}, nil, nil)
assert.NoError(t, err)
defer cleanUp()
container := &Container{
sandbox: sandbox,
}
err = container.storeContainer()
assert.Nil(t, err, "store container should succeed")
}