leda-contrib-vehicle-update-manager

module
v0.0.0-...-1d8dca5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2022 License: Apache-2.0

README

Vehicle Update Manager

This repository contains the vehicle update manager component used in the Software Defined Vehicle EDGE stack.

The vehicle update manager (VUM) is a component responsible for the orchestration of OTA Updates towards the vehicle. It is an extended and adapted version of the Eclipse Kanto's Container Manager that is being able to handle new desired state for the software on the whole vehicle.

The desired state comes in a descriptive way as a multi document YAML content, a.k.a desired state manifest, and it includes a list of Kubernetes resources (Deployments, Pods, Services, ConfigMaps, custom resources, etc.).

VUM detects the system-level update custom resource and passes it for further processing to the Self Update Agent. The remaining resources are forwarded to a Kubernetes control plane and handled like the well-known kubectl command - creating new resources, updating existing ones or deleting old ones that are no longer present in the desired state manifest. VUM also monitors the self-update agent and the control plane, and compiles and report the current state of the device, again as a list of Kubernetes resources.

Build

Build prerequisites

The following libraries need to be available on the build host:

  • GNU Make
  • Go 1.17.2 (or higher)

Performing a build

Navigate to the updatem directory and call (no super user privileges required) :

make clean && make build-targets-archive

Install

Runtime prerequisites

  • Kubernetes distribution, e.g. k3s

Configuration prerequisites

As the Vehicle update manager is an extended and adapted version of the Eclipse Kanto's Container Manager, it is represented to the outside world as a Ditto Thing and it needs the proper configuration of its Ditto Features.

The following configuration must be set in /etc/updatemanagerd/updatemanagerd-config.json:

{
   "things": {
        "features" : ["UpdateOrchestrator"]
   }
}

Performing an installation

After a successful build has been performed, from the same updatem directory call:

sudo make install

Run

Start the updatemanagerd daemon:

sudo systemctl daemon-reload
sudo systemctl enable updatemanagerd.service
sudo systemctl start updatemanagerd.service

Containerized version

A containerized version of the VUM binary can be built and run as well. The Eclipse Leda distribution makes use of VUM as a container running through a Kuberneter deployment.

Contributing

If you want to contribute bug reports or feature requests, please use GitHub Issues. For details, please see our contributing guidelines

Data privacy notice

Please see our data privacy notice

This program and the accompanying materials are made available under the terms of the Apache License 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0

For details, please see our license LICENSE

Directories

Path Synopsis
updatem
pkg/testutil/mocks/events
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
pkg/testutil/mocks/mqtt
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
pkg/testutil/mocks/orchestration
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
pkg/testutil/mocks/things
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
pkg/testutil/mocks/updateorchestrator
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL