From 0ce3c43caa9ef5de20308deef51b828abe230791 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 30 Nov 2023 11:06:35 +0100 Subject: [PATCH] Fix README.md --- README.md | 283 ++++++++++++++++++-------------------- eclipse-ankaios/README.md | 25 ---- 2 files changed, 134 insertions(+), 174 deletions(-) delete mode 100644 eclipse-ankaios/README.md diff --git a/README.md b/README.md index a550e52..fd6b479 100644 --- a/README.md +++ b/README.md @@ -1,225 +1,210 @@ -# Maestro Challenge šŸš—šŸ’»šŸŽ¶ +# Ankaios Maestro challenge development environment -- [About](#about) -- [Sample Scenarios](#sample-scenarios) - - [Provided Sample Scenario](#provided-sample-scenario) - - [Other Sample Scenarios](#other-sample-scenarios) -- [Useful References for Creating and Enhancing Sample Scenarios](#useful-references-for-creating-and-enhancing-sample-scenarios) - - [In-Vehicle Stack](#in-vehicle-stack) - - [General](#general) - - [Eclipse Ankaios](#eclipse-ankaios) -- [Getting Started](#getting-started) - - [Need to know](#need-to-know) - - [Prebuilt Container Images](#prebuilt-container-images) - - [Eclipse Ankaios Orchestrator](#eclipse-ankaios-orchestrator) - - [Eclipse BlueChi Orchestrator](#eclipse-bluechi-orchestrator) - - [Azure Subscription](#azure-subscription) -- [In-Vehicle Software Stack Overview](#in-vehicle-software-stack-overview) -- [Projects Involved](#projects-involved) - - [In-Vehicle Software Stack](#in-vehicle-software-stack) - - [In-Vehicle Software Orchestrators](#in-vehicle-software-orchestrators) -- [Hack Coaches](#hack-coaches) +Don't feel like reading instructions? No problem, watch the video explaining the development environment and use the instructions as a reference. -**Do you want to be the next maestro of the next generation of vehicle software? The time is now!** +[![Eclipse Ankaios Development Environment Video](assets/ankaios-hackathon-youtube-image.png)](https://youtu.be/XQVlIctChkI) -Imagine yourself as the **maestro**. You are not just writing code. You are composing a masterpiece that will drive the future of transportation. Your work will ensure that every component, from the engine control unit to the infotainment system, works in perfect harmony. So, step up to the podium, take a deep breath, and let your creativity flow. The stage is set for you to become the maestro of in-vehicle software šŸš—šŸ’»šŸŽ¶. +## Architectural Overview -**Come hack with us!** +![Smart trailer blueprint](../docs/diagrams/ankaios.png) -![Maestro](docs/diagrams/orchestra_picture.jpg) ->Photo by [Manuel NƤgeli](https://unsplash.com/@gwundrig?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash). +This repository provides a starter template for solving the Maestro challenges using the [Ankaios](https://github.com/eclipse-ankaios/ankaios) workload orchestrator. +It contains a pre-configured devcontainer that makes it easy for you to start developing and building container applications managed by Ankaios. -## About +The container is designed to have an immediately running environment. Once triggered, all workloads are initially started and sample data is exchanged between them. -We supply an in-vehicle stack with software orchestrators. Your assignment is to utilize our in-vehicle stack and software orchestrators to construct your own scenario or replicate the scenarios provided in our [Sample Scenarios](#sample-scenarios). +## Links -The tech stack in this challenge showcases complex in-vehicle services and workloads, utilizing the vehicleā€™s computing resources and capabilities, as well as other in-vehicle applications. +- [Ankaios docs](https://eclipse-ankaios.github.io/ankaios/0.2/) +- [Ankaios quickstart](https://eclipse-ankaios.github.io/ankaios/0.2/usage/quickstart/) +- [Podman](https://docs.podman.io/en/v4.6.1/) +- [What are devcontainers?](https://containers.dev/) -Enjoy the process of bringing your vision to life! +## Prerequisites -## Sample Scenarios +- Docker [Installation instructions](https://docs.docker.com/get-docker/) -Here is a list of potential scenarios your team could develop. Feel free to invent your own scenarios too. Let your creativity shine ā˜€ļø and have fun! +## Development environment -### Provided Sample Scenario +The following is provided inside the devcontainer: -#### Smart Trailer Scenario Overview +- Ankaios executables (`ank-server`, `ank-agent` and `ank`) -The system detects that a smart trailer is being connected to the vehicle. A signal is raised to the orchestrator to start up the necessary providers and applications to manage the smart trailer. These include a Digital Twin Provider, which exposes signals from the trailer to higher-level applications, and a Smart Trailer application, which consumes these signals. The provided smart trailer application prints the value of a property it subscribes to, the `TrailerWeight`. +- Podman 4.6.2 -The first diagrams in the [Eclipse Ankaios](./eclipse-ankaios/README.md) and [Eclipse BlueChi](./eclipse-bluechi/README.md) depict this provided sample scenario. +- Pre-configured Ankaios startup config [startupState.yaml](./config/startupState.yaml) -The in-vehicle-stack is started with Eclipse Chariott, Ibeji, Agemo, Freyja, and an Eclipse Mosquitto MQTT broker inside the orchestrator environment. +- Automation scripts for starting and stopping all workloads of the challenge: + - run_maestro.sh + - shutdown_maestro.sh -#### Dynamic Orchestration +- REST API providing resource usage statistics for the sample scenario about intelligent orchestrator -This use case demonstrates a simple example of dynamic orchestration. A [script](./in-vehicle-stack/scenarios/smart_trailer_use_case/scripts/) (one implemented for each orchestrator) will be run to monitor Ibeji and detect when the trailer is connected. The script will continuously poll for the "Trailer Connected" Digital Twin Provider, and print "NotFound" until it is started. You can simulate the trailer being connected to the vehicle by starting the ["Trailer Connected" Digital Twin Provider](./in-vehicle-stack/scenarios/smart_trailer_use_case/digital_twin_providers/trailer_connected_provider/). This provider will register itself with Ibeji, the script will detect this change, and start up the ["Trailer Properties" Digital Twin Provider](./in-vehicle-stack/scenarios/smart_trailer_use_case/digital_twin_providers/trailer_properties_provider/) and the [Smart Trailer Application](./in-vehicle-stack/scenarios/smart_trailer_use_case/applications/smart_trailer_application/). This shows a simple example of reacting to an event in the vehicle by starting up other workloads. +- Exposed port: + - 25551: for optionally using the Ankaios CLI outside of the devcontainer -#### Trailer Applications +- [Ankaios Control Interface dependencies](#ankaios-control-interface-dependencies) -The Trailer Properties Provider supports the ManagedSubscribe operation so that the Smart Trailer Application can specify that it wants to receive the `TrailerWeight` property's value every 10 seconds. Using the provided configuration, Freyja is configured to sync the `TrailerWeight` every 3 seconds to a mocked cloud endpoint (which will log the signal data on standard output). See the [Cloud Connectivity Doc](./docs/in-vehicle-stack/azure-cloud-connection.md) for instructions to synchronize signals to an Azure Digital Twins instance in the cloud. The [Digital Twin Model](./in-vehicle-stack/scenarios/smart_trailer_use_case/digital-twin-model/dtdl/trailer.json) defines the digital twin model for the trailer, which is used as a reference for the Digital Twin Providers and Applications. +All services are running in the host network meaning those can be accessed by `localhost:`. We recommend that you set the network mode to host for all your developed workloads as well. -#### Run the use case +## Ankaios Control Interface dependencies -Once you've chosen an orchestrator and gone through their environment setup steps, please refer to [Ankaios's Dev Environment README](./eclipse-ankaios/README.md#startup-check-before-development) or [BlueChi's Dev Environment README](./eclipse-bluechi/README.md#running-the-smart-trailer-example-with-bluechis-devcontainer) for instructions on running this scenario. +The devcontainer includes also dependencies for developing applications using the [Ankaios Control Interface](https://eclipse-ankaios.github.io/ankaios/0.2/reference/control-interface/): -#### Hack Challenge - Extend the use case +- protobuf compiler +- grpcurl +- Ankaios protobuf file (under `/usr/local/lib/ankaios/ankaios.proto`) -Take a look at the source code for the Digital Twin Model, Digital Twin Providers, and Applications used in this example and add to them or use them as a reference to create your own! See the [references](#useful-references-for-creating-and-enhancing-sample-scenarios) to help guide you as well. +Those dependencies are needed for use-cases in which your app needs to use the [Ankaios Control Interface](https://eclipse-ankaios.github.io/ankaios/0.2/reference/control-interface/) to be able to communicate with the Ankaios cluster via the API. An example use-case would be to write a workload that shall request Ankaios to dynamically start another workload. You can find example workload applications written in various programming languages inside the Eclipse Ankaios repository [here](https://github.com/eclipse-ankaios/ankaios/tree/v0.2.0-rc1/examples). -When developing new workloads to run in the orchestrator environments, it is recommended to: +## Run devcontainer with VSCode -1. Write the code for your workload in the language of your choice. -1. Build a container image for it. -1. Push it to a container registry. You can create an [Azure Container Registry](./docs/azure/azure_container_registry_instructions.md#aditional-information) with your [Azure Subscription](./docs/azure/azure_code_redeem_instructions.md) -1. Follow the orchestrator-specific instructions for plugging your container image into the environments. - - If you are using Eclipse Ankaios, please see [Workload Development](./eclipse-ankaios/README.md#workload-development) section. - - If you are using Eclipse BlueChi, please see the [Managing Workloads](./eclipse-bluechi/README.md#managing-workloads) section. +### Prerequisites -If you need a basic template or idea about how to create an own containerized application for this challenge, checkout the [sample_trailer_connected_provider](in-vehicle-stack/sample_trailer_connected_provider/README.md) and treat is as a basic template for creating an own containerized application. You can extend the template with real logic and create your own application by modifying it. +- [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension installed in VSCode -Here are a few suggested ways to extend this use case, but feel free to use your imagination to come up with your own as well! +Open the subfolder containing this README file in VSCode: -- Extend the smart trailer application to adjust some body control or powertrain functions based on the weight of the trailer to ensure a smooth trip. +```shell +code . +``` -- Create a web UI that displays the signals which are synced to the cloud. +VSCode detects automatically that a `.devcontainer` folder exists inside this subfolder. +Please confirm the dialog to reopen VSCode inside the devcontainer. +Afterwards, open a new terminal inside the devcontainer in VSCode. -- Create your own application which leverages vehicle signals to implement a different use case, such as a data collector. +## Run devcontainer without VSCode -### Other Sample Scenarios +Navigate to the subfolder containing this README file and run the following command to build the devcontainer image: -- Leverage OpenAI to enhance the vehicleā€™s user experience. You could develop an application that uses OpenAIā€™s GPT model to power an in-vehicle virtual assistant. +```shell +docker build -t custom-ankaios-dev:0.1 --target dev -f .devcontainer/Dockerfile . +``` -- Consider using OpenAI to enhance our software orchestrators, effectively creating intelligent orchestrators! OpenAI could optimize workload placements across compute nodes and/or cloud based on factors such compute usage, memory usage, network coverage, and latency. +Start the devcontainer with the required mount points: -- Create a web user interface application, such as a dashboard, that displays the various workloads' health. +```shell +docker run -it --privileged --name custom_ankaios_dev -v /maestro-challenge/eclipse-ankaios:/workspaces/app -v /maestro-challenge/in-vehicle-stack:/workspaces/app/in-vehicle-stack -p 25551:25551 --workdir /workspaces/app custom-ankaios-dev:0.1 /bin/bash +``` -## Useful References for Creating and Enhancing Sample Scenarios +## Startup check before development -This section offers guidance for creating a new sample scenario or extending the [Provided Sample Scenario](#provided-sample-scenario). While it does not provide a comprehensive list of resources, it aims to steer you in the right direction. If this section does not provide the guidance you need, please refer to the respective projectā€™s documentation. See [Projects Involved](#projects-involved) for the project links. +Before starting active development we recommend you start once Ankaios with the current startup config [startupState.yaml](./config/startupState.yaml) and sample applications. -### In-Vehicle Stack +**Note:** If you have selected a sample scenario requiring resource usage statistics like cpu or memory usage, uncomment the `resource_monitor` config part in the Ankaios startup config [startupState.yaml](./config/startupState.yaml). If you are using MacOS, please remove the `--pid host` and `--cgroups enabled` parameters from the config part. For more details, see [here](../scenarios/intelligent_orchestrator_use_case/ankaios_resource_statistics_app/README.md). -If you are using the [In-Vehicle Stack](./in-vehicle-stack/README.md), these references may be useful. +1. Log in into the Microsoft container registry -- [How do I override a configuration file for a service in the in-vehicle stack?](./docs/in-vehicle-stack/config-overrides.md) -- What is Chariott's default Service Discovery's URI? - > The default URI for the Service Discovery is `http://0.0.0.0:50000`. Please see Chariott's FAQ for more info on [Service Discovery](#chariott). -- After I pushed a newly created image to my container registry, how do I get the orchestrator to start my container image? - > If you are using Eclipse Ankaios, please see [Workload Development](./eclipse-ankaios/README.md#workload-development) section. If you are using Eclipse BlueChi, please see the [Managing Workloads](./eclipse-bluechi/README.md#managing-workloads) section. -- After I created a new component or edited an existing component, why should I push its image to a container registry? - > Pushing an image to the container registry is the recommended approach because it enables the orchestrators to easily reference that image, pull it from the container registry and run it as a container. -- After I decided which orchestrator to use, why should I use run its devcontainer using VSCode? - > Running the devcontainer environment through VSCode offers an interactive approach for development. However, this is just a suggestion. You also have the option to use a devcontainer without VSCode. The devcontainer environment guarantees that you have the necessary tools to interact with each orchestrator and the in-vehicle software stack. While you can choose to develop on your local machine, you would need to install the required tools yourself. Please see [Install additional software](https://code.visualstudio.com/docs/devcontainers/create-dev-container#_install-additional-software) if you wish to install additional software into your VSCode devcontainer. -- After I edited the configuration file of a service, what should I do next? - > You will need to restart the smart trailer scenario. If you are using Eclipse Ankaios, please see [Workload Development](./eclipse-ankaios/README.md#workload-development) section. If you are using Eclipse BlueChi, please see the [Managing Workloads](./eclipse-bluechi/README.md#managing-workloads) section. + ```shell + podman login sdvblueprint.azurecr.io + ``` -### General +2. Start Ankaios with all workloads inside the startup config: -This section contains general references that may provide guidance to the scenario you choose. + ```shell + run_maestro.sh + ``` -#### Configuration Files +3. Next, use the Ankaios CLI to verify that all initial workloads are up and running: -- [Which configuration files can I override?](./docs/in-vehicle-stack/config-overrides.md#how-to-override-configuration-for-in-vehicle-stack-containers) + ```shell + ank get workloads + ``` -#### Ibeji +4. Verify that all initial workloads inside the startup config have execution state "Running". -- [How do I create an in-vehicle digital twin model?](https://github.com/eclipse-ibeji/ibeji/blob/main/docs/tutorials/in_vehicle_model/README.md) - > This helps you construct or enhance an in-vehicle digital twin model, and enables you to reference your in-vehicle digital twin model in your code. -- [How do I create a digital twin provider or add additional capabilities to an existing provider?](https://github.com/eclipse-ibeji/ibeji/blob/main/docs/tutorials/provider/README.md) - > A digital twin provider exposes a subset of the in-vehicle's hardware capabilities. This enables digital twin consumers to utilize that subset. Also you may find that you want to add additional capabilities, such as a new in-vehicle signal, to an existing digital twin provider. When you add new capabilities to a provider, such as a new in-vehicle signal, you will need to update the mapping client's configuration or the mapping service that you are using with Freyja. See the [Freyja FAQ](#freyja) for more details. Please see the digital twin provider [smart trailer properties' source code](./in-vehicle-stack/scenarios/smart_trailer_use_case/digital_twin_providers/trailer_properties_provider/src/main.rs) for a digital twin provider example. - - [How do I build a container image for my digital twin provider?](https://github.com/eclipse-ibeji/ibeji/blob/main/samples/container/README.md#provider) - > You will need to build a container image if you are updating the smart trailer digital twin provider's source code or creating your own digital twin provider. - - [If my digital twin provider is running in a container, how do I override its configuration file?](https://github.com/eclipse-ibeji/ibeji/blob/main/samples/container/README.md#run) - > You do not need to rebuild the container image if you are overriding your digital twin provider's configuration file. - - [How do I use the Managed Subscribe module?](https://github.com/eclipse-ibeji/ibeji/blob/main/samples/managed_subscribe/README.md) - > Using the Managed Subscribe module and dynamic topics in your digital twin provider allows your digital twin consumers to specify the frequency at which they want to receive updates. Please see the digital twin provider [smart trailer properties' source code](./in-vehicle-stack/scenarios/smart_trailer_use_case/digital_twin_providers/trailer_properties_provider/src/main.rs) for an example. -- [How do I create a digital twin consumer?](https://github.com/eclipse-ibeji/ibeji/blob/main/docs/tutorials/consumer/README.md) - > A digital twin consumer is a software entity that interfaces with the digital representation of the in-vehicle hardware components. Please see the digital twin consumer [smart trailer application's source code](./in-vehicle-stack/scenarios/smart_trailer_use_case/applications/smart_trailer_application/src/main.rs) for a digital twin consumer example. - - [How do I build a container image for my digital twin consumer?](https://github.com/eclipse-ibeji/ibeji/blob/main/samples/container/README.md#consumer) - > You will need to build a container image if you are updating the smart trailer digital twin consumer's source code or creating your own digital twin consumer. - - [If my digital twin consumer is running in a container, how do I override its configuration file?](./docs/in-vehicle-stack/config-overrides.md) - > You do not need to rebuild the container image if you are overriding your digital twin consumer's configuration file. + The output looks similar to the following: -#### Chariott + ```shell + WORKLOAD NAME AGENT RUNTIME EXECUTION STATE + digital_twin_cloud_sync agent_A podman Running + digital_twin_vehicle agent_A podman Running + dynamic_topic_management agent_A podman Running + mqtt_broker agent_A podman Running + service_discovery agent_A podman Running + ``` -- [How can I use the Service Discovery to register and discover other applications/services?](https://github.com/eclipse-chariott/chariott/blob/main/service_discovery/README.md) - > An application can utilize Chariott's Service Discovery to register with the system and enable other applications to discover it through the Service Discovery system. This can also be used to discover other components in the in-vehicle-stack like Ibeji. +5. Only for the **Smart Trailer scenario**, do the following extra steps: + - Inside the devcontainer, run the script `start_trailer_applications_ankaios.sh`: -#### Freyja + ```shell + start_trailer_applications_ankaios.sh + ``` -- [How do I configure new mappings for Freyja's in-memory mapping client?](https://github.com/eclipse-ibeji/freyja/blob/main/mapping_clients/in_memory_mock_mapping_client/README.md) - > Adding a new in-vehicle signal requires you to configure a new mapping for that in-vehicle signal. -- [How do I override the mapping configuration?](https://github.com/eclipse-ibeji/freyja/blob/main/docs/config-overrides.md) -- [How do I sync in-vehicle signals to the cloud?](./docs/in-vehicle-stack/azure-cloud-connection.md) - > You may want to sync your in-vehicle signals to a cloud digital representation of your in-vehicle. + - In another terminal window inside the devcontainer, add the following workload by using the Ankaios CLI to simulate the Smart Trailer connected signal: -### Eclipse Ankaios + ```shell + ank run workload trailer_connected_provider --runtime podman --config $'image: sdvblueprint.azurecr.io/sdvblueprint/in-vehicle-stack/trailer_connected_provider:0.1.0\ncommandOptions: ["--network", "host", "--name", "trailer_connected_provider"]' --agent agent_A + ``` -- [Quickstart](https://eclipse-ankaios.github.io/ankaios/0.2/usage/quickstart/) -- [User documentation](https://eclipse-ankaios.github.io/ankaios/0.2/) -- [Working with the startup configuration](https://eclipse-ankaios.github.io/ankaios/0.2/reference/startup-configuration/) -- [Architecture](https://eclipse-ankaios.github.io/ankaios/0.2/architecture/) -- [Control interface examples](https://github.com/eclipse-ankaios/ankaios/tree/v0.2.0-rc1/examples) -- [Suggestions for improvement & Feedback](https://github.com/eclipse-ankaios/ankaios/discussions) + - Verify the output of the terminal window of the `start_trailer_applications_ankaios.sh` script. The output should look like the following: -## Getting Started + ```shell + Trailer is connected! Starting workloads to manage it + Called Ankaios to start the Trailer Properties Digital Twin Provider and Smart Trailer Application + Check Ankaios status with 'ank get workloads' + ``` -Please note that it is not necessary to use both software orchestrators. You can choose either one to implement your scenario. + - Check the execution states of the newly added workloads by using the Ankaios CLI. -### Need to know + ```shell + ank get workloads + ``` -- You need basic knowledge about containerization technologies and tools (e.g. Docker, Podman), but if you have not dealt with it yet, don't worry, just check out a little tutorial () to get a basic understanding of containers and you are prepared. -- Basic skills to deal with distributed systems + - Run `podman logs -f smart_trailer_application` to check the sample data output of the Smart Trailer App. Feel free to check the logs of the other workloads too. -### Prebuilt Container Images +6. Stop Ankaios and clean up all workloads by running: -Please see the instructions on the [Azure Container Registry documentation](./docs/azure/azure_container_registry_instructions.md) for pulling prebuilt container images for the in-vehicle software stack. + ```shell + shutdown_maestro.sh + ``` -### Eclipse Ankaios Orchestrator +## Customizing Devcontainer -If you have decided to use Ankaios, you will find an easy to use development environment in the subfolder [eclipse-ankaios](./eclipse-ankaios/README.md), -which you can use for all maestro challenges. +You can customize the devcontainer depending on your preferred programming language, tools and frameworks. -### Eclipse BlueChi Orchestrator +To customize the devcontainer add your specific dev dependencies to `.devcontainer/Dockerfile` (starting from line 7). -If you have decided to use BlueChi, you will find an easy to use development environment in the subfolder [eclipse-bluechi](./eclipse-bluechi/README.md), -which you can use for all maestro challenges. +Rebuild the container image. -### Azure Subscription +## Workload development -Please see the [SDV Hackathon Azure Pass Code Instructions](./docs/azure/azure_code_redeem_instructions.md) for redeeming an Azure pass code if you are interested in using resources on Azure. +After customizing the devcontainer, start the development of your workload apps. -## In-Vehicle Software Stack Overview +- Write your code +- Write a [Dockerfile](https://docs.docker.com/engine/reference/builder/) for each workload +- Build a container image for each workload with [podman build](https://docs.podman.io/en/v4.6.1/markdown/podman-build.1.html) +- For the Smart Trailer scenario, replace the image URIs within the script [start_trailer_applications_ankaios.sh](../in-vehicle-stack/scenarios/smart_trailer_use_case/scripts/start_trailer_applications_ankaios.sh) +- If required, extend the Ankaios startup config [startupState.yaml](./config/startupState.yaml) by adding config parts for your workloads -The in-vehicle stack comprises Eclipse Ibeji, Eclipse Agemo, Eclipse Freyja, and Eclipse Chariott. This stack enables a universal vehicle model to be used across different vehicles, dynamic management of vehicle signal topics for publishing and subscribing, synchronization of in-vehicle signals to a cloud-based digital twin, and the development of applications without the need for specific knowledge about the location of the resources they use. +Start and stop all workloads according to the section [Startup check before development](#startup-check-before-development). +Use the Ankaios ClI to check the workload states. For more details display the help of Ankaios CLI by running: -We provide two software orchestrators, Ankaios and BlueChi, to orchestrate the in-vehicle stack. Feel free to choose either for this hackathon challenge. +```shell +ank --help +``` -## Projects Involved +Use the [podman logs](https://docs.podman.io/en/v4.6.1/markdown/podman-logs.1.html) command to check the logs of your container applications for debugging purposes. -### In-Vehicle Software Stack +```shell +podman ps -a +podman logs -f +``` -- [Eclipse Agemo](https://github.com/eclipse-chariott/Agemo): Agemo incorporates a Pub Sub Service, a [gRPC](https://grpc.io/docs/what-is-grpc/introduction/) service that facilitates publish/subscribe operations for in-vehicle applications, including but not limited to Eclipse Ibeji and Eclipse Chariott. This service has the capability to register with Chariott, enhancing its discoverability by other applications such as Eclipse Ibeji. It offers dynamic creation and management of topics. +## Ankaios logs -- [Eclipse Chariott](https://github.com/eclipse-chariott/chariott): Chariott operates as a [gRPC](https://grpc.io/docs/what-is-grpc/introduction/) service, offering a unified interface for application interaction. Chariott enables [Service Discovery](https://github.com/eclipse-chariott/chariott/blob/main/service_discovery/README.md), allowing provider applications to promote their capabilities by registering with Chariottā€™s service registry. Consumer applications in need of specific resources and capabilities can discover them via Chariottā€™s service registry. +There are log files for debugging purposes of Ankaios server and agent. -- [Eclipse Freyja](https://github.com/eclipse-ibeji/freyja/): Freyja enables seamless synchronization between the vehicleā€™s digital twin and its cloud-based digital twin. This synchronization allows for a consistent and unified digital representation of the vehicle across both platforms. +The Ankaios server logs can be viewed by executing the following command: -- [Eclipse Ibeji](https://github.com/eclipse-ibeji/ibeji): Ibeji is designed with the goal of enabling a digital depiction of the vehicleā€™s state and capabilities. It achieves this through an adaptable, open, and dynamic architecture that provides access to the vehicleā€™s hardware, sensors, and capabilities. This extensible framework allows for a comprehensive and accurate representation of the vehicleā€™s current status and potential functionalities. +```shell +tail -f /var/log/ankaios-server.log +``` -### In-Vehicle Software Orchestrators +The Ankaios agent logs can be viewed by executing the following command: -- [Eclipse Ankaios](https://eclipse-ankaios.github.io/ankaios): Ankaios provides workload and container orchestration for automotive High Performance Computing (HPC) software . While it can be used for various fields of applications, it is developed from scratch for automotive use cases and provides a slim yet powerful solution to manage containerized applications. It supports various container runtimes with Podman as the first one, but other container runtimes and even native applications can be supported. Eclipse Ankaios is independent of existing communication frameworks like SOME/IP, DDS, or REST API. +```shell +tail -f /var/log/ankaios-agent_A.log +``` -- [Eclipse BlueChi](https://github.com/containers/bluechi): BlueChi is a systemd service controller intended for multi-node environments with a predefined number of nodes and with a focus on highly regulated ecosystems such as those requiring functional safety. Potential use cases can be found in domains such as transportation, where services need to be controlled across different edge devices and where traditional orchestration tools are not compliant with regulatory requirements. - -## Hack Coaches - -Who can be contacted for this challenge for questions. (Slack-handle) - -- Eclipse Agemo, Chariott, Ibeji and Freyja: Jordan Chiu (Slack handle: @Jordan Chiu) -- Eclipse Agemo, Chariott, Ibeji and Freyja: Filipe Prezado (Slack handle: @fprezado) -- Eclipse Ankaios: Chatree Akasarn (Slack handle: @Chatree Akasarn) -- Eclipse Ankaios: Oliver Klapper (Slack handle: @Oliver Klapper) -- Eclipse BlueChi: Leonardo Rossetti (Slack handle: @Leonardo Rossetti) + diff --git a/eclipse-ankaios/README.md b/eclipse-ankaios/README.md deleted file mode 100644 index 188b29e..0000000 --- a/eclipse-ankaios/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Amadeus - -> This project shows how the (software) infrastructure of the car adapts to different environment settings - -Setting: Vehicle which is capable to get trailiers attached - -Question: Is it possible that the software in the car adapts to the attached trailiers - -Scenario: - -Two different trailers: One basic trailer and one with a fridge. - -- When a basic trailer is connected, the weight of the trailer is sent. -- When the trailer of the fridge is connected, additionaly, the temperature is sent. - -## CI-Checks - -- Basic Dockerfile build checks as well as integration tests: -- Linting of files: - -See for the current checks. - -## Links - -- The basic settinsg is written at .