Commit Graph

126 Commits

Author SHA1 Message Date
Jose Carlos Venegas Munoz
41619e4f83 vc: qemu: Add option to change entropy source
This adds a config option to choose the VM entropy
source.

Fixes: #702

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-25 17:54:32 -05:00
Jose Carlos Venegas Munoz
19801bf784 config: Add Memory slots configuration.
Add configuration to decide the amount of slots that will be used in a VM

- This will limit the amount of times that memory can be hotplugged.
- Use memory slots provided by user.
- tests: aling struct

cli: kata-env: Add memory slots info.

- Show the slots to be added to the VM.

```diff
[Hypervisor]
  MachineType = "pc"
  Version = "QEMU ..."
  Path = "/opt/kata/bin/qemu-system-x86_64"
  BlockDeviceDriver = "virtio-scsi"
  Msize9p = 8192
+  MemorySlots = 10
  Debug = false
  UseVSock = false
```

Fixes: #751

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-21 10:57:00 -05:00
Peng Tao
76b0c3c7d3 Merge pull request #747 from devimc/topic/systemdCgroup
cli: add systemd-cgroup option
2018-09-20 11:38:57 +08:00
Sebastien Boeuf
1675410256 pkg: signals: Factorize signals handling through a Go package
In order to reuse the same scheme across several components of the
runtime repository, we need to factorize the code handling signalling
through a common package.

The immediate use case will be to use this package from both the CLI
and the network monitor.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-18 23:09:32 -07:00
Julio Montes
00751754a9 cli: add systemd-cgroup option
Add support for cgroup driver systemd.
systemd cgroup is not applied in the VM since in some cases like initrd images
there is no systemd running and nobody can update a systemd cgroup using
systemctl.

fixes #596

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-18 15:55:17 -05:00
Sebastien Boeuf
0ffe81cb71 cli: config: Make netmon configurable
In order to choose if the network monitor should be used or not, this
patch makes it configurable from the configuration.toml file.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Peng Tao
d6e4a98387 Merge pull request #706 from caoruidong/vhost
cli: add configuration option to enable/disable vhost_net
2018-09-14 10:17:00 +08:00
Frank Cao
22aedc4fb6 Merge pull request #588 from nitkon/master
cli: Error out if initrd/rootfs not define in config file
2018-09-14 00:20:18 +08:00
Ruidong
225e10cfc4 cli: add configuration option to enable/disable vhost_net
Add `disable_vhost_net` option to enable or disable the use of
vhost_net. Vhost_net can improve network performance.

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-09-14 00:14:03 +08:00
Nitesh Konkar
bce6859af0 cli: Error out if initrd/rootfs not define in config file
If neither initrd nor rootfs path is mentioned in
the configuration.toml file, then error out stating
the same

Fixes: #587

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-09-13 20:14:05 +05:30
James O. D. Hunt
23a35c84c9 kata-env: Fix display of debug options
The runtime and hypervisor `Debug` options were always showing as
`false` (although all debug options in `configuration.toml` were
correctly honoured).

Note: Also moved location of `FactoryConfig` in `RuntimeConfig` as the
`malign` linter was complaining:

```
virtcontainers/pkg/oci/utils.go:102:20⚠️ struct of size 408 could be 400 (maligned)
```

Fixes #724.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-09-13 11:15:43 +01:00
Peng Tao
13254440c6 cli: fix build
Sadly CI failed to catch the broken line due to the fact that it is introduced by a different
PR that passed w/o the naming PR.

./config.go:604:27: config.DefaultMemSz undefined (type virtcontainers.HypervisorConfig has no field or method DefaultMemSz)
Makefile:331: recipe for target '/golang/src/github.com/kata-containers/runtime/kata-runtime' failed
make: *** [/golang/src/github.com/kata-containers/runtime/kata-runtime] Error 2

Fixes: #709

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-11 11:04:07 +08:00
Archana Shinde
52394c3c18 Merge pull request #693 from bergwolf/memory
virtcontainers: remove sandboxConfig.VMConfig
2018-09-10 15:26:18 -07:00
Jose Carlos Venegas Munoz
ec3cab5fea Merge pull request #639 from jodh-intel/fail-if-mem-smaller-than-image
config: Detect if VM memory smaller than image
2018-09-06 16:47:41 -05:00
Peng Tao
a1537a5271 hypervisor: rename DefaultVCPUs and DefaultMemSz
Now that we only use hypervisor config to set them, they
are not overridden by other configs. So drop the default prefix.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-06 21:04:56 +08:00
Peng Tao
7af8e6c641 ut: fix hypervisor path
Otherwise UT fails when there is no file at defaultHypervisorPath.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-06 14:15:56 +08:00
Peng Tao
ce288652d5 virtcontainers: remove sandboxConfig.VMConfig
We can just use hyprvisor config to specify the memory size
of a guest. There is no need to maintain the extra place just
for memory size.

Fixes: #692

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-06 14:15:56 +08:00
Peng Tao
b982373813 Merge pull request #623 from sboeuf/move_hooks
network: Move OCI hooks and network namespace creation out of virtcontainers
2018-08-31 15:46:12 +08:00
James O. D. Hunt
35d7672d73 kata-env: Fix amd64 VM container capable check
Fix nasty bug which resulted in `kata-env` showing
`VMContainerCapable = true` even on amd64 systems without virtualisation
support (thankfully `kata-check` still showed the correct results).

Added arch-specific tests to avoid any possibility of regression.

Fixes #660.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-30 09:41:24 +01:00
James O. D. Hunt
b5ea753ff4 config: Detect if VM memory smaller than image
Add a heuristic to ensure the amount of memory allocated to the
hypervisor is bigger than the size of the image.

This catches simple configuration issues where `default_memory=` is set
to a smaller value than the size of either the `image=` or `initrd=`
files.

If the configured image type is `initrd`, fail but only warn in the
logs for `image` as although it seems a highly unlikely scenario, it is
permitted.

Update tests to ensure that created resources have `>0` bytes.

Fixes #636.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-28 16:21:36 +01:00
James O. D. Hunt
1ba4841865 config: Fix test that was using system files
The `TestMinimalRuntimeConfig` should not be using the real
resource files that might be installed on a system so make temporary
files instead to better control the test.

Split out `TestMinimalRuntimeConfigWithVsock` to reduce cyclomatic
complexity (along with dropping the config file delete at the end - not
required as the entire test-specific directory gets auto-deleted).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-28 16:21:34 +01:00
Sebastien Boeuf
9c6ed93f80 hook: Move OCI hooks handling to the CLI
The CLI being the implementation of the OCI specification, and the
hooks being OCI specific, it makes sense to move the handling of any
OCI hooks to the CLI level. This changes allows the Kata API to
become OCI agnostic.

Fixes #599

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-24 15:07:27 -07:00
Sebastien Boeuf
cb351dca10 network: Create network namespace from the CLI
This commit moves the network namespace creation out of virtcontainers
in order to anticipate the move of the OCI hooks to the CLI through a
follow up commit.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-24 14:19:23 -07:00
James O. D. Hunt
d0679a6fd1 tracing: Add tracing support to virtcontainers
Add additional `context.Context` parameters and `struct` fields to allow
trace spans to be created by the `virtcontainers` internal functions,
objects and sub-packages.

Note that not every function is traced; we can add more traces as
desired.

Fixes #566.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
c200b28dc7 tracing: Add context to virtcontainers API
Add a `context.Context` parameter to all the virtcontainers API's to
support tracing.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
f0073bec2f tracing: Create trace function
Simplify code slightly be creating a `trace()` function.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
a193366b3d tracing: Add subsystem tag to runtime
Set a tag on the root span to denote the subsystem refers to the
runtime.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
Julio Montes
d6a773c90c Merge pull request #595 from amshinde/use-main-bus-for-hotplug
vfio: Add configuration to support VFIO hotplug on root bus
2018-08-21 11:09:49 -05:00
Archana Shinde
31e2925a9a vfio: Add configuration to support VFIO hotplug on root bus
We need this configuration due to a limitation in seabios
firmware in handling hotplug for PCI devices with large BARS.
Long term, this needs to be fixed in the firmware.

Fixes #594

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-20 11:36:21 -07:00
Julio Montes
88d79f3517 cli: kata-env: show if vsocks are supported
Add a new field in `HostInfo` structure to show if vsocks are
supported in the host.

fixes #589

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-16 15:36:36 -05:00
Sebastien Boeuf
26f31071ca Merge pull request #287 from caoruidong/hotplug
api: add sandbox hotplug network
2018-08-16 08:19:37 -07:00
Ruidong Cao
7beb309faf test: add UTs for network hotplug
add UTs for network hotplug related fuctions

Fixes #113

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-16 21:31:20 +08:00
Ruidong Cao
72df219306 cli: add network commands
Add update and list commands for notwork hotplug

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-16 16:10:29 +08:00
Archana Shinde
3424444be3 Merge pull request #578 from grahamwhaley/20180813_env_runtime_path
cli: kata-env: add runtime path to output
2018-08-15 10:13:21 -07:00
Graham Whaley
dd2acd26eb Merge pull request #565 from jodh-intel/support-opentracing
tracing: Add initial opentracing support
2018-08-14 10:32:52 +01:00
Graham Whaley
8b69c75144 cli: kata-env: add runtime path to output
`kata-env` did not include the path to the runtime exe itself.
Add that into the Runtime section.

Fixes: #577

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-08-13 14:08:02 +01:00
James O. D. Hunt
3a1bbd0271 tracing: Add initial opentracing support
Add initial support for opentracing by using the `jaeger` package.
Since opentracing uses the `context` package, add a `context.Context`
as the first parameter to all the functions that we might want to
trace. Trace "spans" (trace points) are then added by extracting the
trace details from the specified context parameter.

Notes:

- Although the tracer is created in `main()`, the "root span"
  (aka the first trace point) is not added until `beforeSubcommands()`.

  This is by design and is a compromise: by delaying the creation of the
  root span, the spans become much more readable since using the web-based
  JaegerUI, you will see traces like this:

  ```
  kata-runtime: kata-runtime create
  ------------  -------------------
       ^                ^
       |                |
  Trace name        First span name
                    (which clearly shows the CLI command that was run)
  ```

  Creating the span earlier means it is necessary to expand 'n' spans in
  the UI before you get to see the name of the CLI command that was run.
  In adding support, this became very tedious, hence my design decision to
  defer the creation of the root span until after signal handling has been
  setup and after CLI options have been parsed, but still very early in
  the code path.

  - At this stage, the tracing stops at the `virtcontainers` call
  boundary.

- Tracing is "always on" as there doesn't appear to be a way to toggle
  it. However, its resolves to a "nop" unless the tracer can talk to a
  jaeger agent.

Note that this commit required a bit of rework to `beforeSubcommands()`
to reduce the cyclomatic complexity.

Fixes #557.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-10 16:13:48 +01:00
James O. D. Hunt
0ede467256 tests: Add cli.Context helper functions
Created two new helper functions to create a `cli.Context` with and without a
`cli.App`.

Calling these functions simplifies a lot of test code.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-10 15:25:00 +01:00
James O. D. Hunt
41d1c14c68 tests: Move assert closer to function call
Move a test assertion which seemed to have become separated from its
correct location.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-10 15:25:00 +01:00
Nitesh Konkar
bee8d66ead cli: Make message of using initrd OR rootfs clearer
When starting a kata container, if both initrd and rootfs
are provided in the configuration file then the error message
presented is "cannot specify an image and an initrd in
configuration file" which might be a bit confusing. This
fix makes the error message more explicit.

Fixes:  #563

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-10 17:38:18 +05:30
Peng Tao
024a38bcb1 cli: print to defaultOutputFile in factory.go
To follow the same rule as other commands.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-03 00:41:53 +08:00
Peng Tao
03f2459388 cli: support factory status command
It checks vm factory status and prints the result.

Fixes: #545

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-03 00:26:55 +08:00
Peng Tao
0541a5fc77 cli: fix factory assignment
A stupid typo...

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-01 11:17:56 +08:00
Julio Montes
33643797ad virtcontainers: Use vsock if host support it
When the hypervisor option `use_vsock` is true the runtime will check for vsock
support. If vsock is supported, not proxy will be used and the shims
will connect to the VM using VSOCKS. This flag is true by default, so will use
VSOCK when possible and no proxy will be started.

fixes #383

Signed-off-by: Jose Carlos Venegas Munoz jose.carlos.venegas.munoz@intel.com
Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 15:38:45 -05:00
Julio Montes
1515bd07a1 virtcontainers: update KataAgentConfig to support vsocks
add extra field in KataAgentConfig structure to specify if the
kata agent have to use a vsock instead of serial port.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 13:52:44 -05:00
Julio Montes
4680e58e08 cli: add configuration option to enable/disable vsocks
Add `use_vsock` option to enable or disable the use of vsocks
for communication between host and guest.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 13:52:43 -05:00
James O. D. Hunt
3323c087c5 logging: Add cid logging to update command
PR #468 neglected to update the `update` command.

Fixes #519.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
3d5ed6669c logging: Improve cid+sid logging
Refine the changes made on #468 by adding the containerID log field as
soon as possible (before *any* virtcontainers calls). This requires
that `setExternalLoggers()` be called more times, but it's essential to
ensure the correct log fields are available as early as possible.

Partially fixes #519.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
Peng Tao
cfbc974fec Merge pull request #521 from bergwolf/log
factory: add SetLogger API
2018-07-27 15:52:24 +08:00
Peng Tao
9a497fedf5 factory: add SetLogger API
So that we actually use the same logger as other packages when being
invoked by CLI.

Fixes: #520

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-26 20:56:31 +08:00