Commit Graph

194 Commits

Author SHA1 Message Date
lifupan
628ea46c58 virtcontainers: change container's rootfs from string to mount alike struct
container's rootfs is a string type, which cannot represent a
block storage backed rootfs which hasn't been mounted.
Change it to a mount alike struct as below:
    RootFs struct {
            // Source specify the BlockDevice path
            Source string
            // Target specify where the rootfs is mounted if it has been mounted
            Target string
            // Type specifies the type of filesystem to mount.
            Type string
            // Options specifies zero or more fstab style mount options.
            Options []string
            // Mounted specifies whether the rootfs has be mounted or not
            Mounted bool
     }

If the container's rootfs has been mounted as before, then this struct can be
initialized as: RootFs{Target: <rootfs>, Mounted: true} to be compatible with
previous case.

Fixes:#1158

Signed-off-by: lifupan <lifupan@gmail.com>
2019-04-02 10:54:05 +08:00
Hui Zhu
0f8b2ad007 VMCache: Update factory to run as a VMCache server
When VMCache is enabled, factory init will run as a VMcache server.

Fixes: #52

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-08 10:06:38 +08:00
Hui Zhu
90704c8bb6 VMCache: the core and the client
VMCache is a new function that creates VMs as caches before using it.
It helps speed up new container creation.
The function consists of a server and some clients communicating
through Unix socket.  The protocol is gRPC in protocols/cache/cache.proto.
The VMCache server will create some VMs and cache them by factory cache.
It will convert the VM to gRPC format and transport it when gets
requestion from clients.
Factory grpccache is the VMCache client.  It will request gRPC format
VM and convert it back to a VM.  If VMCache function is enabled,
kata-runtime will request VM from factory grpccache when it creates
a new sandbox.

VMCache has two options.
vm_cache_number specifies the number of caches of VMCache:
unspecified or == 0   --> VMCache is disabled
> 0                   --> will be set to the specified number
vm_cache_endpoint specifies the address of the Unix socket.

This commit just includes the core and the client of VMCache.

Currently, VM cache still cannot work with VM templating and vsock.
And just support qemu.

Fixes: #52

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-08 10:05:59 +08:00
Penny Zheng
35672b5896 unit-test: fix undefined struct field SupportVSocks on arm64
Since arch-specific func getExpectedHostDetails holds undefined struct
field SupportVSocks on arm64, unit test TestEnvGetEnvInfoSetsCPUType,
TestEnvGetHostInfo and so on failed.
I'm trying to use generic func genericgetExpectedHostDetails on arm64
to avoid similar issues.

Fixes: #1287

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-03-01 15:13:15 +08:00
Peng Tao
22cee2d0cd Merge pull request #1220 from jcvenegas/delete-force-not-fail-non-container
delete: force: Do not fail on non exiting container
2019-02-19 12:23:51 +08:00
Jose Carlos Venegas Munoz
c78d6b057e delete: force: Do not fail on non exiting container
When a container does not exist, runc does not fail.  Lets mimic this
behavior, sometimes kuberentes will try to force delete containers that
could not be created and gets confused if delete --force fails.

Fixes: #1219

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-02-18 11:39:25 -06:00
Penny Zheng
23c554ee96 unit-test: refine func TestGetCPUDetails
refine struct testData in func TestGetCPUDetails to remove redundant
/unused struct field expectedVendor and expectedModel

Fixes: #1200

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 15:14:27 +08:00
Penny Zheng
1b967a4a6a unit-test: add nolint comment to avoid unused warning
since all generic* could bring unused linter warnings, which lead to
CI crash, we add nolint comment to avoid them.

Fixes: #1200

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 14:56:42 +08:00
Penny Zheng
44e2b9aa0a unit-test: struct TestDataa should be included in arch-indenpedent .go file
argument struct TestDataa in generic func genericTestGetCPUDetails is repeatedly
defined in almost all arch-dependent .go file, cli/kata-check_amd64_test.go,
cli/kata-check_ppc64le_test.go, etcm, except arm64. let's only declare it once in
cli/kata-check_test.go. change its name to testCPUDetail for better understanding.

Fixes: #1200

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 11:34:05 +08:00
Yang Bo
4f51687550 kata-env: kata-env error out when there is no VERSION_ID.
For example, under debian buster/sid. Those information should be
provide with best effort instead of error out. Set name and version
to "<<unknown>>" if they are not defined.

Fixes: #1177

Signed-off-by: Yang Bo <bo@hyper.sh>
2019-01-31 14:05:51 +08:00
Julio Montes
68043b5ca6 cli: set config options before showing config paths
Config paths are set correctly but they must be set before handleShowConfig

fixes #1185

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-28 08:29:29 -06:00
James O. D. Hunt
6f2c036601 Merge pull request #1164 from liwei/fix-factory-status
factory: do not destroy vm factory when checking status
2019-01-23 11:48:18 +00:00
James O. D. Hunt
1353499e74 Merge pull request #1115 from nitkon/P9SMT
runtime: Fix TestCCCheckCLIFunction on P9 system
2019-01-23 10:34:21 +00:00
Wei Li
d78a62da87 factory: do not destroy vm factory when checking status
Fixes: #1163

Signed-off-by: Wei Li <liwei@anbutu.com>
2019-01-23 15:57:04 +08:00
Nitesh Konkar
c93aa53187 runtime: Check SMT=on/off only for P8 or lesser
Set testCPUInfoTemplate to systems /proc/cpuinfo
and check if SMT is on/off only on P8 and lower
systems as Power 9 systems support virtualization
irrespective of SMT being on/off.

Fixes: #1114

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-22 22:04:52 +05:30
Eric Ernst
d7b02c502e Merge pull request #1109 from jodh-intel/create-fc-config
Add build support for the firecracker hypervisor
2019-01-17 21:46:47 -08:00
Frank Cao
6c3277e013 Merge pull request #1126 from jcvenegas/allow-update-on-ready
update: allow do update on ready.
2019-01-18 11:03:12 +08:00
Jose Carlos Venegas Munoz
7228bab79b container: update: Allow updates once container is created
Before, we would only allow for a container-update command
to proceed if the container was in the running state. So
long as the container is created, this should be allowed.

This was found using the `static` policy for Kubernetes CPU
manager[1]. Where the `update` command is called after the
`create` runtime command (when the container state is `ready`).

[1] https://github.com/kubernetes/community/blob/95a4a1/contributors/design-proposals/node/cpu-manager.md#example-scenarios-and-interactions

Fixes: #1083

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-16 17:15:00 -05:00
Archana Shinde
9b9ff2b7e6 Merge pull request #1019 from shaojiaxue/master
cli: fix parameter order error in cli/ps.go
2019-01-16 11:21:51 -08:00
James O. D. Hunt
6c3e0a9c06 build: Add support for building firecracker hypervisor
Support building with `make HYPERVISOR=firecracker`.

Notes:

- Firecracker is currently only supported on x86_64, hence the
  architecture check.

- The template file `cli/config/configuration-fc.toml.in` is based
  on `cli/config/configuration.toml.in`.

Fixes #1105.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 16:55:01 +00:00
James O. D. Hunt
6fcb76cb37 build: Handle qemu explicitly
Improve the build to:

- Encapsulate the qemu configuration.
- Validate the chosen hypervisor.
- Display hypervisor details for `make help`.

This lays the groundwork to build configurations for multiple
hypervisors.

Notes:

- Variables that are hypervisor specific have now been suffixed with `_QEMU`.

- `make install` now installs `configuration-qemu.toml`.

  To maintain compatibility with existing installations, a symbolic link
  to this file called `configuration.toml` is created.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 16:54:57 +00:00
fli
4fda493384 Merge pull request #1107 from teawater/move_SetKernelParams
katautils: Move SetKernelParams from CreateSandbox to updateRuntimeCo…
2019-01-14 10:18:43 +08:00
Hui Zhu
42a89d0dcd katautils: Move SetKernelParams from CreateSandbox to updateRuntimeConfig
Function SetKernelParams is just to update the runtimeConfig according to itself.
It just around the configuration.
So this patch moves it to updateRuntimeConfig.

Fixes: #1106

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-01-11 08:25:42 +08:00
Frank Cao
b7ebc276aa Merge pull request #1090 from nitkon/kataenv
kata-runtime: Return correct kata-env on ppc64le
2019-01-09 20:34:05 +08:00
Nitesh Konkar
db33d71102 Kata-runtime: Use correct model name for TestGetCPUDetails
Use the correct model name for ppc64le TestGetCPUDetails
model name.

Fixes: #1089

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-09 15:19:22 +05:30
Nitesh Konkar
11e24aa42d kata-runtime: Return correct kata-env on ppc64le
The contents of /proc/cpuinfo were
trimmed and hence the "model" field could
not be parsed despite being a field in
/proc/cpuinfo. Fix this issue.

Fixes: #1089

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-09 15:18:09 +05:30
Samuel Ortiz
b05dbe3886 runtime: Convert to the new internal types package
We can now remove all the sandbox shared types and convert the rest of
the code to using the new internal types package.

This commit includes virtcontainers, cli and containerd-shim changes in
one atomic change in order to not break bisect'ibility.

Fixes: #1095

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 14:43:33 +01:00
Samuel Ortiz
3ab7d077d1 virtcontainers: Alias for pkg/types
Since we're going to have both external and internal types packages, we
alias the external one as vcTypes. And the internal one will be usable
through the types namespace.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 14:24:06 +01:00
James O. D. Hunt
36c267a1d2 Merge pull request #1085 from bergwolf/containerd
cli: allow to kill a stopped container and sandbox
2019-01-08 08:44:10 +00:00
Nitesh Konkar
c2c9c844e2 virtcontainers: Conditionally pass seccomp profile
Pass Seccomp profile to the agent only if
the configuration.toml allows it to be passed
and the agent/image is seccomp capable.

Fixes: #688

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-08 10:22:23 +05:30
Peng Tao
bf2813fee8 cli: allow to kill a stopped container and sandbox
cri containerd calls kill on stopped sandbox and if we
fail the call, it can cause `cri stopp` command to fail
too.

Fixes: #1084

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-01-08 11:19:25 +08:00
Hui Zhu
dd28ff5986 memory: Add new option memory_offset
This value will be plused to max memory of hypervisor.
It is the memory address space for the NVDIMM devie.
If set block storage driver (block_device_driver) to "nvdimm",
should set memory_offset to the size of block device.

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-24 15:36:25 +08:00
Hui Zhu
ef75c3d19e block: Add new block storage driver "nvdimm"
Set block_device_driver to "nvdimm" will make the hypervisor use
the block device as NVDIMM disk.

Fixes: #1032

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-24 15:32:33 +08:00
x00464843
08f1c05144 Module: fix parameter order error in cli/ps.go
Fixes: #1017
reason: when calls vci.ProcessListContainer, fix wrong parameter order

Signed-off-by: x00464843 <xueshaojia@huawei.com>
2018-12-14 09:08:54 +08:00
Peng Tao
971fb677b2 Merge pull request #1004 from lifupan/fixchildreap
shimv2: fix the error of reaping qemu process mistakenly
2018-12-12 12:31:13 +08:00
Julio Montes
976f5b2a6e Merge pull request #990 from alicefr/s390x
s390x: add support for s390x
2018-12-11 10:57:27 -06:00
Alice Frosi
6f83061139 s390x: add support for s390x
The PR adds the support for s390x.

In the case of CCW devices, the vhost-user devices are not supported.
See #659. An error message is thrown if they tried to be used.

Memory hotplug is not supported on s390 yet and an error message is thrown.

The VirtioNetPCI has been changed to VirtioNet. The generalization
allows to set the VirtioNet to the correct CCW device for s390x.

Fixes: #666

Co-authored-by: Yash D Jain ydjainopensource@gmail.com
Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-11 12:32:17 +01:00
fupan
df8b7db3ae shimv2: fix the issue of reaping child mistakenly
For kata shimv2, the sub-reaper isn't needed, otherwise
it will break the cmd.Run() calling in govmmQemu.LaunchQemu().

Fixes: #939

Signed-off-by: fupan <lifupan@gmail.com>
2018-12-11 03:12:31 +00:00
Hui Zhu
6024088ca0 config: Add cache-related options for block devices
Add block_device_cache_set, block_device_cache_direct
and block_device_cache_noflush.

Fixes: #997

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-09 18:10:39 +08:00
James O. D. Hunt
ea74b981d9 shim: Add trace config option
Add a new `enable_tracing` option to `configuration.toml` to enable
shim tracing.

Fixes #934.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-12-05 15:20:13 +00:00
James O. D. Hunt
0bf29c8207 config: Check factory config
If VM factory templating is enabled (`enable_template=true`), error if
the configured image is not an `initrd=` one.

Also add a note to the config file explaining that a normal image cannot
be used - only initrd images are supported.

Fixes #948.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-29 08:33:15 +00:00
Sebastien Boeuf
e06c8aafdc Merge pull request #572 from hyperhq/shimv2
Implement containerd shim v2 API for Kata Containers
2018-11-28 16:37:10 +00:00
James O. D. Hunt
c2eea35b18 Merge pull request #865 from nitkon/kata-env
ppc64le: kata-env fails due to missing vendor field
2018-11-28 09:22:47 +00:00
fupan
02f8b29837 containerd-shim-kata-v2: add building of shimv2 into Makefile
Add the Makefile target of building shimv2.

Fixes: #485

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
Nitesh Konkar
ca58bb4ca1 ppc64le: kata-env fails due to missing vendor field
There is no vendor field in /proc/cpuinfo contents
on ppc64le. Make sure to return "" for vendor field
for ppc64le and fix all the corresponding testcases
as well.

Fixes: #864

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-11-27 15:26:33 +05:30
fupan
d6c4ca5fe5 container-shim-kata-v2: The init containerd shim v2 support
This patch is the init codes of the shimv2 for
containerd.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-27 17:17:43 +08:00
fupan
f0cb0c7ef7 cli: refactor to align with katautils package
refactor the cli codes which can be shared with shimv2.

Signed-off-by: fupan <lifupan@gmail.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-11-27 17:17:31 +08:00
James O. D. Hunt
2931f8db08 Merge pull request #819 from bergwolf/nested
kata-check: do not require nested vt
2018-11-27 08:16:29 +00:00
James O. D. Hunt
9984636f5a kata-env: Show runtime trace setting
Show whether runtime tracing is enabled in the output of `kata-env`.

Fixes #936.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-23 16:29:30 +00:00
Alice Frosi
bf5685860a cli: Fix console for big endian architecture
The function ioctl can lead to a big endian bug.
Issue already solved in containerd/console:
dbd69c59b8

Fixes: #921

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-19 10:16:09 +00:00