This guide contains all the steps that need to be taken for introducing a MEC service as a new feature in the MEC Sandbox frontend and the AdvantEDGE backend.
These steps can be summarized as the following sequence of events. More details about each stage are provided in their respective sections.
- Understanding the Software Architecture of MEC Sandbox (particularly the AdvantEDGE backend)
- Feature Development for the new MEC Service
- Integrating the new MEC Service as a microservice in AdvantEDGE
- Creation of network scenarios for the new MEC service
- Enhancements in the MEC Sandbox frontend to faciliate usage of the new MEC service
1. Understanding the Software Architecture of MEC Sandbox (particularly the AdvantEDGE backend)
1. Feature Development for the new MEC Service
1. Integrating the new MEC Service as a microservice in AdvantEDGE
1. Creation of network scenarios for the new MEC service
1. Enhancements in the MEC Sandbox frontend to faciliate usage of the new MEC service
## Understanding the Software Architecture
@@ -21,33 +28,40 @@ After having gone through the provided documentation, it is recommended to deplo
## Feature Development
>**(yann + hammad + rehan)**
_// these steps will be refined later_
- Code generation for server-side implementation using OpenAPI specifications of MEC Service API (code_gen)
- Emulation logic in the server side (/go-apps)
- Client-side (/go-packages)
- Test cases (/cypress)
- UI (/api)
- containerization (/)
Emulation logic for the MEC service under development will vary from service to service. However, baseline criterion which is applicable for every MEC service is summarized in the [Development Guide](./development-guide.md) here. Main steps for developing a minimal emulation logic are:
A detailed description of the aforementioned steps is provided in this [Development Guide](./development-guide.md).
- Setting up a development environment
- Generating server and client side code
- Development of Emulation Logic
- Unit and integration tests for the new service
- Dockerization
## Integrating the new microservice in AdvantEDGE
>**(yann + hammad + rehan)**
_// steps to be written here later_
After developing the minimal emulation logic described in [Development Guide](./development-guide.md), the new service can be integrated in the AdvantEDGE as a new microservice. The integration-related aspects can be summarized as below:
- Code integration
- meepctl configurations for AdvantEDGE
- meepctl configurations for MEC Sandbox
- Helm charts configurations
- MEC Sandbox Redeployment
- Validation
See [Backend Integration](./backend-integration.md) for details on how to integrate the new feature into AdvantEDGE.
## Network Scenario Creation
>**(rehan + hammad)**
_// steps to be written here later_
See [Network Scenario](./network-scenario.md) for details on how to integrate the new feature into AdvantEDGE.
There may be a need for adding the new feature (MEC service) in an existing network scenario or create a custom network scenario altogether for the new MEC service. See [Network Scenarios](./network-scenarios.md) for details on how to do that.
## Frontend Enhancements
>**(rehan + yann)**
_// steps to be written here later_
There are three main aspects that need to be taken care of regarding MEC Sandbox Frontend for a new MEC service.
- Pull downs for the new service in the frontend
- Swagger UI integration
- Grafana dashboard for monitoring service-related metrics
See [Frontend Enhancement](./frontend-enhancement.md) for details on how to integrate the new feature into AdvantEDGE.
-[2. Communication with the common message bus](#2-communication-with-the-common-message-bus)
-[3. Successful responses from the service API](#3-successful-responses-from-the-service-api)
-[4. Swagger UI for the new service](#4-swagger-ui-for-the-new-service)
[AdvantEDGE repository](https://github.com/InterDigitalInc/AdvantEDGE) or its fork is used for the backend part during a MEC Sandbox deployment. Therfore, it is recommended to use a fork of AdvantEDGE repo during feature development and then clone that fork instead of the main AdvantEDGE repo during testing or deployment.
The steps for integrating a new MEC service into the AdvantEDGE backend can be summarized as below:
1- [Code integration](#code-integration)
2- [meepctl configurations for AdvantEDGE](#meepctl-configuration-for-advantedge)
3- [meepctl configurations for MEC Sandbox](#meepctl-configuration-for-mec-sandbox)
>**NOTE:** These settings will enable the `meep-virt-engine` to deploy the new service by default upon each user sandbox creation. For configuring the new service to only get deployed upon selection of a certain network scenrio, see [network scenario](./network-scenario.md).
>**NOTE:** These settings will enable the `meep-virt-engine` to deploy the new service by default upon each user sandbox creation. For configuring the new service to only get deployed upon selection of a certain network scenrio, see [Network Scenarios](./network-scenarios.md).
- Add client for the new service in `repo.packages.go-packages` section if one is available/required
- Add information for the new service in the monitoring engine `repo.sandbox.go-apps.meep-mon-engine.sandbox-pods`
-[Setting up a development environment](#setting-up-a-development-environment)
-[Generating server and client side code](#generating-server-and-client-side-code)
-[Server stubs](#server-stubs)
-[Client SDK](#client-sdk)
-[Development of Emulation Logic](#development-of-emulation-logic)
-[Server-side](#server-side)
-[Client-side](#client-side)
-[Code organization](#code-organization)
-[Unit tests for the new micro-service](#unit-tests-for-the-new-micro-service)
-[Integration tests for the new micro-service](#integration-tests-for-the-new-micro-service)
-[Executing a test campaign](#executing-a-test-campaign)
-[Dockerization](#dockerization)
-[Creating a Dockerfile](#creating-a-dockerfile)
This guide gives a high-level overview of all the steps that need to be taken for introducing a new MEC Service in the MEC Sandbox. It documents the overall development-related aspects that need to be covered while introducing a new service in the AdvantEDGE backend. The integration aspects for feature-development are listed in [Backend Integration](./backend-integration.md).
The steps can be summarized as below:
1- [Setting up a development environment](#setting-up-a-development-environment)
2- [Generating server and client side code](#generating-server-and-client-side-code)
3- [Development of Emulation Logic](#development-of-emulation-logic)
4- [Unit and integration tests for the new service](#unit-and-integration-tests-for-the-new-service)
5- [Building the UI for the new service](#building-the-ui-for-the-new-service)
6- [Dockerization](#dockerization)
1. Setting up a development environment
2. Generating server and client side code
3. Development of Emulation Logic
4. Unit and integration tests for the new service
5. Dockerization
>_This guide is not specific to any particular MEC service and the steps listed here may vary depending on the intended feature or a specific MEC service._
This guide contains all frontend-related aspects that need to be enhanced for integrating a new service in the MEC Sandbox. These include:
3- [Grafana dashboard for monitoring service-related metrics](#grafana-dashboard-for-monitoring-service-related-metrics)
1. Pull downs for the new service in the frontend
1. Swagger UI integration
1. Grafana dashboard for monitoring service-related metrics
## Pull downs for the new service in the frontend
For adding the new service in the [MEC API dropdown](../Sandbox-User-Interface/README.md#sbox05a), the following file in the [MEC Sandbox repository](https://forge.etsi.org/rep/mec/mec-sandbox) needs to be modified.
-[MEC Sandbox without Long-term Storage](#mec-sandbox-without-long-term-storage)
-[User Provisioning](#user-provisioning)
-[Usage and Monitoring](#usage-and-monitoring)
-[Monitoring Dashboards](#monitoring-dashboards)
This guide provides a step-by-step procedure to deploy MEC Sandbox in a lab environment for learning and educational purposes. There are two modes of deployment:
1.[MEC Sandbox integrated with a seperate long-term storage VM](#mec-sandbox-with-long-term-storage)
@@ -301,7 +311,7 @@ This deployment configuration does not store metrics in a seperate Storage VM. I
## User Provisioning
Users can be provisioned as admins for priviliged rights to configure and create network scenarios (see [network scenario](./network-scenario.md)) and have access to the monitoring dashboard. A step-by-step procedure to provision admin users is given below:
Users can be provisioned as admins for priviliged rights to configure and create network scenarios (see [Network Scenarios](./network-scenarios.md)) and have access to the monitoring dashboard. A step-by-step procedure to provision admin users is given below:
1. Sign into the MEC Sandbox UI
1. On the _MEC Sandbox_ VM, note down or save the namespace in which new pods are being created by running `kubectl get pods -A`