Commit Graph

15384 Commits

Author SHA1 Message Date
z00280905
44b9214141 devices: fix typo
Fix typo.

Signed-off-by: z00280905 <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
f474af1660 devices: add some test cases
Add test cases for device manager reworks.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
b7464899ec devices: address some comments
Address some review comments:
* remove unnecessary rollback logics
* add vfio hot unplug handling.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Zhang Wei
44c37bf774 devices: rename VFIODrive to VFIODev
Rename VFIODrive to VFIODev, also rename device interface "GetDeviceDrive()" to
"GetDeviceInfo()".

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Zhang Wei
7d9d66d782 devices: remove unused functions
cleanup: remove ununsed device interface function "GetDeviceInfo()"

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
a93e2d0421 unit-tests: fix unit tests
Fix #50

Fix unit tests

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
f905c16f21 device-manager: refactor device manger
Fixes #50

This commit imports a big logic change:
* host device to be attached or appended now is sandbox level resources,
one device should bind to sandbox/hypervisor first, then container could
reference it via device's unique ID.
* attach or detach device should go through the device manager interface
instead of the device interface.
* allocate device ID in global device mapper to guarantee every device
has a uniq device ID and there won't be any ID collision.

With this change, there will some changes on data format on disk for sandbox
and container, these changes also make a breakage of backward compatibility.

New persist data format:
* every sandbox will get a new "devices.json" file under "/run/vc/sbs/<sid>/"
which saves detailed device information, this also conforms to the concept that
device should be sandbox level resource.
* every container uses a "devices.json" file but with new data format:
```
[
  {
    "ID": "b80d4736e70a471f",
    "ContainerPath": "/dev/zero"
  },
  {
    "ID": "6765a06e0aa0897d",
    "ContainerPath": "/dev/null"
  }
]
```
`ID` should reference to a device in a sandbox, `ContainerPath` indicates device
path inside a container.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-31 10:03:57 +08:00
Wei Zhang
eec7fa394f devices: don't use drivers package directly.
Instead of using drivers.XXXDevice directly, we should use exported
struct from device structure. package drivers should be internal struct
and other package should avoid read it's struct content directly.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 09:59:29 +08:00
Wei Zhang
5db5f42b71 devices: remove interface VhostUserDevice
The interface "VhostUserDevice" has duplicate functions and fields with
Device, so we can merge them into one interface and manage them with one
group of interfaces.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 09:59:29 +08:00
Wei Zhang
1194154309 devices: use device manager to manage all devices
Fixes #50

Previously the devices are created with device manager and laterly
attached to hypervisor with "device.Attach()", this could work, but
there's no way to remember the reference count for every device, which
means if we plug one device to hypervisor twice, it's truly inserted
twice, but actually we only need to insert once but use it in many
places.

Use device manager as a consolidated entrypoint of device management can
give us a way to handle many "references" to single device, because it
can save all devices and remember it's use count.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 09:59:29 +08:00
James O. D. Hunt
f0e1d9dc4d
Merge pull request #110 from nitkon/build_kernel
build_image.sh: OPTIND prevent unwanted word-splitting
2018-07-30 15:42:48 +01:00
James O. D. Hunt
c5e2c0fe88 tests: Add more messages
Add a few more informational messages to help with debugging.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
9f2da28bb9 docs: Updated for new test options
Created a new README for the tests and updated the top-level README
with brief details on how to run tests.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
0cd64fb5c9 build: Added targets to run tests
Updated the `Makefile` to provide the following new targets:

```
make test              # Run all tests.
make test-image-only   # Only run image tests.
make test-initrd-only  # Only run initrd tests.
```

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
0ea8ef76f0 tests: Rename test script
Renamed the test script to provide a more meaningful one.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
c679cae92c tests: Add ability to restrict which tests run
Added options to the test script to allow:

- all tests for a specific distro (`--distro $distro`).
- all image tests (`--test-images-only`).
- all initrd tests (`--test-initrds-only`).

Any combination of the above is also permitted. By default, all tests
will be run.

Fixes #142.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
80e1997721 tests: Create new function to launch tests
Move the calls to the individual distro tests into a separate
function called from `main()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
f077e6efdc tests: Rename distro test functions
Give the distro test function names a better prefix.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:17 +01:00
James O. D. Hunt
c270496937 docs: Add initcall_debug to dev guide debug section
https://github.com/kata-containers/runtime/pull/527 Removed the
hard-coded `initcall_debug` kernel option (as it generates a lot of
kernel output at boot).

Add the `initcall_debug` option to the "Enable full debug" section to
allow users to enable these potentially useful messages when debugging.

Fixes #204.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:34:52 +01:00
James O. D. Hunt
763a1b6265 logging: Remove unnecessary fields and use standard names
Ensure the entire codebase uses `"sandbox"` and `"container"` log
fields for the sandboxID and containerID respectively.

Simplify code where fields can be dropped.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01: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
James O. D. Hunt
58448bbcb8 logging: Allow SetLogger to be called multiple times
Now that the `SetLogger()` functions accept a `logrus.Entry`, they can
access the fields that have already been set for the logger and
re-apply them if `SetLogger()` is called multiple times.

This fixes a bug whereby the logger functions -- which are necessarily
called multiple times [1] -- previously ended up applying any new fields
the specified logger contained, but erroneously removing any additional
fields added since `SetLogger()` was last called.

Partially fixes #519.

--
[1] - https://github.com/kata-containers/runtime/pull/468

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
029e7ca680 api: Change logger functions to accept a log entry
Rather than accepting a `logrus.FieldLogger` interface type, change all
the `SetLogger()` functions to accept a `logrus.Entry`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
dfb758a82d logging: Remove duplicate arch field in vc
As of #521, the runtime now adds the `arch` log field so
`virtcontainers` doesn't need to set it too.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
acdd0b8e68 logging: Split logging source into two fields
Don't use slash-delimited values in log fields - create two separate
log fields (`source` and `subsystem`) for clarity.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
c59394d3ed network: Make better use of log fields
Add key log information as log fields rather than free-format text.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
a0be57f64f network: Always call network logger function
Rather than using the virtcontainers logger, always call the network
logger function.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:40 +01:00
Nitesh Konkar
eedacc1572 build_image.sh: OPTIND prevent unwanted word-splitting
shift $((OPTIND-1)) can be unsafe.To prevent unwanted
word-splitting all parameter expansions should be
double-quoted. Use the safe form for the command:
shift "$((OPTIND-1))"

Fixes: #109

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-07-30 19:55:37 +05:30
James O. D. Hunt
7897760a1c
Merge pull request #200 from jodh-intel/dev-guide-add-standalone-details
docs: Add standalone details to dev guide
2018-07-30 14:24:58 +01:00
James O. D. Hunt
d4f233eca7
Merge pull request #105 from Weichen81/master
configs: Update arm64 kernel config to latest 4.14.x kernel
2018-07-30 14:02:24 +01:00
James O. D. Hunt
b9c2598a63 docs: Add standalone details to dev guide
Explain how to create an OCI bundle and launch the runtime directly.

Fixes #199.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 10:17:11 +01:00
Graham Whaley
0b63ec0b1e Dev: debug console: minor grammatical cleanups
Minor rewords, that read better to my eyes.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-28 10:27:29 +01:00
Graham Whaley
e90eabd454 Dev: console socket: Update the path to the socket
The debug console socket path looks to have moved from
the `sbs` dir to the `vm` dir. Update the docs to reflect
this.

Fixes: #202

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-28 10:20:13 +01:00
Eric Ernst
596bf31bdf
Merge pull request #195 from morph027/docker-daemon-json
docs: add kata-runtime to Docker daemon.json
2018-07-27 19:19:02 -07:00
Eric Ernst
f4a7712795
Merge pull request #530 from kata-containers/revert-301-pre-addstorage-based-devmanager
revert: "virtcontainers: support pre-add storage for frakti"
2018-07-27 13:02:57 -07:00
Sebastien Boeuf
927487c142 revert: "virtcontainers: support pre-add storage for frakti"
This PR got merged while it had some issues with some shim processes
being left behind after k8s testing. And because those issues were
real issues introduced by this PR (not some random failures), now
the master branch is broken and new pull requests cannot get the
CI passing. That's the reason why this commit revert the changes
introduced by this PR so that we can fix the master branch.

Fixes #529

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-07-27 09:39:56 -07:00
morph027
6ef28deb96 docs: add kata-runtime to Docker daemon.json
Fixes: #484

Signed-off-by: Stefan Heitmüller <morphsen@gmx.com>
2018-07-27 12:20:20 +02:00
Peng Tao
cfbc974fec
Merge pull request #521 from bergwolf/log
factory: add SetLogger API
2018-07-27 15:52:24 +08:00
zhangwei_cs
2c3215c018
Merge pull request #301 from WeiZhang555/pre-addstorage-based-devmanager
virtcontainers: support pre-add storage for frakti
2018-07-27 15:19:30 +08:00
Wei Chen
65315e9eba kernel: Trace kernel change of aarch64 config file
Update kata_config_version to trace the change of aarch64
config file update.

Change-Id: Ic70cf4bf2288fe3d9113e21c1d100cd51e4cc6a6
Signed-off-by: Wei Chen <wei.chen@arm.com>
2018-07-27 03:18:19 +00:00
Wei Chen
79c8eb20ff configs: Update arm64 kernel config to latest 4.14.x kernel
After upgrading the kernel to latest 4.14.x kernel, there are new
kconfig options that need users to select in install-kata-kernel.sh.
the prompt will block the script. We update this config file to give
user a good defined default config.

The new kconfig options are about, “Meltdown” and “Spectre”. So I
selected them to yes by default in this config file:
CONFIG_ARM64_ERRATUM_1024718=y
CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
CONFIG_UNMAP_KERNEL_AT_EL0=y
CONFIG_HARDEN_BRANCH_PREDICTOR=y
CONFIG_ARM64_SSBD=y

Fixed #106

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-07-27 03:18:19 +00:00
z00280905
b3015dda26 devices: fix typo
Fix typo.

Signed-off-by: z00280905 <zhangwei555@huawei.com>
2018-07-27 09:33:50 +08:00
Eric Ernst
2a670ce022
Merge pull request #522 from chavafg/topic/update-docker-version
versions: Update docker-ce to 18.06
2018-07-26 16:15:50 -07:00
Eric Ernst
8ed7e397e1
Merge pull request #90 from jcvenegas/build-image-fixes.sh
image build: Improve image generation
2018-07-26 11:36:44 -07:00
Jose Carlos Venegas Munoz
6fa5b7945e pkgs: image: Get image version from version.yaml
Build image with agent and osbuilder with master by default.

If want to build a release tag just use -v <version> and
will use that osbuilder and agent tag.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-26 13:04:23 -05:00
Salvador Fuentes
da77124898 versions: Update docker-ce to 18.06
Docker 18.06 was released last week, update our
supported docker to this new version.

Fixes: #510

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-07-26 10:52:43 -05:00
Sebastien Boeuf
c5075d08ed
Merge pull request #517 from jcvenegas/issue-516-timeout-centos
agent: Increase timeout for check request.
2018-07-26 06:59:37 -07:00
James O. D. Hunt
5d2a95b515
Merge pull request #94 from Pennyzct/qemu
ci: refine qemu-options for arm64
2018-07-26 14:58:48 +01: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