/core
contains the basic functionality for managing the life-cycle of several Trial Networks in a single Testbed.
It also implements the TNLCM API. A description of the API is accessible via Swagger, when accessing to the root
endpoint
/frontend
contains the initial implementation of a management dashboard for the TNLCM, which makes use of the
API provided by /core
to operate.
/shared
contains several classes that are useful for more than one component. These include the creation of log files,
access to CLI, or management of threads, among others.
/shared/data
contains data structures, particularly the TrialNetwork
, Entity
, TrialNetworkDescriptor
and EntityDescriptor
. These data structures encapsulate the usage of Trial Network Descriptors and the runtime
status of a Trial Network.
- Ensure that Python 3.11 is installed in your system.
- Create a Python virtual environment. All components can share the same virtual environment.
python -m venv <virtualenv name>
- Activate the virtual environment.
- Install the requirements in the virtual environment.
pip install -r requirements.txt
- Activate the virtual environment.
- Navigate to the
/core
folder - Run
python app.py
./core
will start listening for connections on port 5000.
- Activate the virtual environment.
- Navigate to the
/frontend
folder - Run
python app.py
./frontend
will start listening for connections on port 5001.
The format of Trial Network Descriptors has not been finalized and is expected to change in the future.
Trial Network Descriptors are yaml files with a set of expected fields and structure. This repository contains two examples of descriptors, both describing the same Trial Network:
sample_descriptor.yml
describes the network as an additional component inside the infrastructure.sample_descriptor_2.yml
uses separate sections for networks and infrastructure.
It is expected that the second example will be more representative of the final Trial Network Descriptor format,
however, the current implementation expects the format on sample_descriptor.yml
, which the following section
will describe.
Infrastructure: # Mandatory, contains the description of all entities in the Trial Network
<Entity1>: # A unique identifier for each entity in the Trial Network
Type: # Mandatory, reference to the corresponding component type in the 6G-Library
Model: # Optional, reference to a specific physical device or subtype of component
Expose: # Optional, list runtime values that should be provided to experimenters, such as ids, credentials or interfaces for accessing the entity
Parameters: # Optional, dictionary of values that further customize the entity. The available values are specified as part of the component's entry in the 6G-Library
<Parameter1>: <Value1>
# ...
Connections: # Optional, for each connection that the entity may have (as specified in the 6G-Library), to which <component>.<interface> it should be connected.
<Connection1>: <EntityN>.<Interface1>
# ...
Monitor: # Optional, for probes, list of entities to monitor
- EntityN
Store: # Optional, list of values to keep after deletion of the Trial Network