Skip to content
Snippets Groups Projects
Commit 835a8e7a authored by Shayan Hajipour's avatar Shayan Hajipour
Browse files

feat:ofc25 camara e2e test added

parent d83a80d7
No related branches found
No related tags found
2 merge requests!359Release TeraFlowSDN 5.0,!321Resolve: "(CTTC) CAMARA Demo Integration tests"
Showing
with 4296 additions and 0 deletions
clab-*/
images/
*.clab.yml.bak
*.tar
*.tar.gz
# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Build, tag, and push the Docker images to the GitLab Docker registry
build ofc25:
variables:
TEST_NAME: 'ofc25'
NCE_NAME: 'nce'
AGG_NET_NAME: 'agg_net'
NCE_PORT: '9090'
AGG_NET_PORT: '9091'
stage: build
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- HOST_IP=$(kubectl get nodes -o json | jq -r '.items[].status.addresses[] | select(.type=="InternalIP") | .address')
- sed -i "s/AGG_NET_IP/${HOST_IP}/g" src/tests/${TEST_NAME}/data/camara-e2e-topology.json
- sed -i "s/NCE_IP/${HOST_IP}/g" src/tests/${TEST_NAME}/data/camara-e2e-topology.json
- sed -i "s/AGG_NET_PORT/${AGG_NET_PORT}/g" src/tests/${TEST_NAME}/data/camara-e2e-topology.json
- sed -i "s/NCE_PORT/${NCE_PORT}/g" src/tests/${TEST_NAME}/data/camara-e2e-topology.json
- docker buildx build -t "${TEST_NAME}:latest" -f ./src/tests/${TEST_NAME}/Dockerfile .
- docker tag "${TEST_NAME}:latest" "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest"
- docker push "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest"
- docker buildx build -t "${NCE_NAME}:latest" -f ./src/tests/tools/mock_nce_ctrl/Dockerfile .
- docker tag "${NCE_NAME}:latest" "$CI_REGISTRY_IMAGE/${NCE_NAME}:latest"
- docker push "$CI_REGISTRY_IMAGE/${NCE_NAME}:latest"
- docker buildx build -t "${AGG_NET_NAME}:latest" -f ./src/tests/tools/mock_ietf_network_slice_sdn_ctrl/Dockerfile .
- docker tag "${AGG_NET_NAME}:latest" "$CI_REGISTRY_IMAGE/${AGG_NET_NAME}:latest"
- docker push "$CI_REGISTRY_IMAGE/${AGG_NET_NAME}:latest"
after_script:
- docker images --filter="dangling=true" --quiet | xargs -r docker rmi
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
- changes:
- src/common/**/*.py
- proto/*.proto
- src/tests/${TEST_NAME}/**/*.{py,in,sh,yml}
- src/tests/${TEST_NAME}/Dockerfile
- .gitlab-ci.yml
# Deploy TeraFlowSDN and Execute end-2-end test
end2end_test ofc25:
variables:
TEST_NAME: 'ofc25'
NCE_NAME: 'nce'
AGG_NET_NAME: 'agg_net'
NCE_PORT: '9090'
AGG_NET_PORT: '9091'
stage: end2end_test
# Disable to force running it after all other tasks
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker rm -f ${TEST_NAME} || true
- docker pull "${CI_REGISTRY_IMAGE}/${NCE_NAME}:latest"
- docker run -d --name ${NCE_NAME} -p ${NCE_PORT}:8443 $CI_REGISTRY_IMAGE/${NCE_NAME}:latest
- docker pull "${CI_REGISTRY_IMAGE}/${AGG_NET_NAME}:latest"
- docker run -d --name ${AGG_NET_NAME} -p ${AGG_NET_PORT}:8443 $CI_REGISTRY_IMAGE/${AGG_NET_NAME}:latest
script:
# Download Docker image to run the test
- docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}:latest"
# Check MicroK8s is ready
- microk8s status --wait-ready
- kubectl get pods --all-namespaces
- source src/tests/${TEST_NAME}/deploy_specs.sh
# Deploy TeraFlowSDN
- ./deploy/crdb.sh
- ./deploy/nats.sh
- ./deploy/qdb.sh
- ./deploy/kafka.sh
- ./deploy/tfs.sh
- ./deploy/show.sh
- kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server
# Run end-to-end test: onboard scenario
- >
docker run -t --rm --name ${TEST_NAME} --network=host
$CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-onboarding.sh
# Run end-to-end test: configure service TFS
- >
docker run -t --rm --name ${TEST_NAME} --network=host
$CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-e2e-ietf-slice-operations.sh
after_script:
- kubectl --namespace tfs logs deployment/contextservice -c server
- kubectl --namespace tfs logs deployment/deviceservice -c server
- kubectl --namespace tfs logs deployment/pathcompservice -c frontend
- kubectl --namespace tfs logs deployment/serviceservice -c server
- kubectl --namespace tfs logs deployment/nbiservice -c server
# Destroy Scenario
- kubectl delete namespaces tfs || true
# Clean old docker images
- docker images --filter="dangling=true" --quiet | xargs -r docker rmi
#coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
artifacts:
when: always
reports:
junit: ./src/tests/${TEST_NAME}/report_*.xml
# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
FROM python:3.9-slim
# Install dependencies
RUN apt-get --yes --quiet --quiet update && \
apt-get --yes --quiet --quiet install wget g++ git && \
rm -rf /var/lib/apt/lists/*
# Set Python to show logs as they occur
ENV PYTHONUNBUFFERED=0
# Get generic Python packages
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --upgrade setuptools wheel
RUN python3 -m pip install --upgrade pip-tools
# Get common Python packages
# Note: this step enables sharing the previous Docker build steps among all the Python components
WORKDIR /var/teraflow
COPY common_requirements.in common_requirements.in
RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in
RUN python3 -m pip install -r common_requirements.txt
# Add common files into working directory
WORKDIR /var/teraflow/common
COPY src/common/. ./
RUN rm -rf proto
# Create proto sub-folder, copy .proto files, and generate Python code
RUN mkdir -p /var/teraflow/common/proto
WORKDIR /var/teraflow/common/proto
RUN touch __init__.py
COPY proto/*.proto ./
RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto
RUN rm *.proto
RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \;
# Create component sub-folders, get specific Python packages
RUN mkdir -p /var/teraflow/tests/ofc25
WORKDIR /var/teraflow/tests/ofc25
COPY src/tests/ofc25/requirements.in requirements.in
RUN pip-compile --quiet --output-file=requirements.txt requirements.in
RUN python3 -m pip install -r requirements.txt
# Add component files into working directory
WORKDIR /var/teraflow
COPY src/__init__.py ./__init__.py
COPY src/tests/*.py ./tests/
COPY src/tests/ofc25/__init__.py ./tests/ofc25/__init__.py
COPY src/tests/ofc25/data/. ./tests/ofc25/data/
COPY src/tests/ofc25/tests/. ./tests/ofc25/tests/
COPY src/tests/ofc25/scripts/. ./
RUN apt-get --yes --quiet --quiet update && \
apt-get --yes --quiet --quiet install tree && \
rm -rf /var/lib/apt/lists/*
RUN tree -la /var/teraflow
# DataPlane-in-a-Box - Control an Emulated DataPlane through TeraFlowSDN
## Emulated DataPlane Deployment
- Scenario
- Descriptor
## TeraFlowSDN Deployment
```bash
cd ~/tfs-ctrl
source ~/tfs-ctrl/src/tests/ofc25/deploy_specs.sh
./deploy/all.sh
```
## Deploy scenario
```bash
cd ~/tfs-ctrl/src/tests/ofc25/
sudo containerlab deploy --topo eucnc24.clab.yml
```
## Inspect scenario
```bash
cd ~/tfs-ctrl/src/tests/eucnc24/
sudo containerlab inspect --topo eucnc24.clab.yml
```
## Destroy scenario
```bash
cd ~/tfs-ctrl/src/tests/eucnc24/
sudo containerlab destroy --topo eucnc24.clab.yml
sudo rm -rf clab-eucnc24/ .eucnc24.clab.yml.bak
```
## Access cEOS Bash/CLI
```bash
docker exec -it clab-eucnc24-r1 bash
docker exec -it clab-eucnc24-r2 bash
docker exec -it clab-eucnc24-r3 bash
docker exec -it clab-eucnc24-r1 Cli
docker exec -it clab-eucnc24-r2 Cli
docker exec -it clab-eucnc24-r3 Cli
```
## Configure ContainerLab clients
```bash
docker exec -it clab-eucnc24-dc1 bash
ip address add 172.16.1.10/24 dev eth1
ip route add 172.16.2.0/24 via 172.16.1.1
ping 172.16.2.10
docker exec -it clab-eucnc24-dc2 bash
ip address add 172.16.2.10/24 dev eth1
ip route add 172.16.1.0/24 via 172.16.2.1
ping 172.16.1.10
```
## Install gNMIc
```bash
sudo bash -c "$(curl -sL https://get-gnmic.kmrd.dev)"
```
## gNMI Capabilities request
```bash
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure capabilities
```
## gNMI Get request
```bash
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path / > r1.json
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /interfaces/interface > r1-ifaces.json
```
## gNMI Set request
```bash
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --update-path /system/config/hostname --update-value srl11
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /system/config/hostname
```
## Subscribe request
```bash
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf subscribe --path /interfaces/interface[name=Management0]/state/
# In another terminal, you can generate traffic opening SSH connection
ssh admin@clab-eucnc24-r1
```
# Check configurations done:
```bash
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/network-instances' > r1-nis.json
gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/interfaces' > r1-ifs.json
```
# Delete elements:
```bash
--address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/network-instances/network-instance[name=b19229e8]'
--address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/1]/subinterfaces/subinterface[index=0]'
--address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/2]/subinterfaces/subinterface[index=0]'
```
# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
This diff is collapsed.
{
"connection-group": [
{
"id": "line2",
"connectivity-type": "point-to-point",
"connectivity-construct": [
{
"id": 1,
"p2p-sender-sdp": "1",
"p2p-receiver-sdp": "3",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "10"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "5000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
},
{
"id": 2,
"p2p-sender-sdp": "3",
"p2p-receiver-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "20"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "1000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
}
]
}
]
}
\ No newline at end of file
{
"connection-group": [
{
"id": "line2",
"connectivity-type": "point-to-point",
"connectivity-construct": [
{
"id": 1,
"p2p-sender-sdp": "1",
"p2p-receiver-sdp": "3",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "10"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "5000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
},
{
"id": 2,
"p2p-sender-sdp": "3",
"p2p-receiver-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "20"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "1000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
}
]
}
]
}
\ No newline at end of file
{
"match-criterion": [
{
"index": 2,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"101"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.1.101.22/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10200"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.16.104.222/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10500"
]
}
],
"target-connection-group-id": "line2"
}
]
}
\ No newline at end of file
{
"match-criterion": [
{
"index": 2,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"201"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.1.201.22/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10200"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.16.104.222/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10500"
]
}
],
"target-connection-group-id": "line2"
}
]
}
\ No newline at end of file
{
"slice-service": [
{
"id": "slice1",
"description": "network slice 1, connect to VM1",
"sdps": {
"sdp": [
{
"id": "1",
"node-id": "172.16.204.220",
"sdp-ip-address": [
"172.16.204.220"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"101"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.1.101.22/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line1"
}
]
},
"attachment-circuits": {
"attachment-circuit": [
{
"id": "AC POP to VM1",
"description": "AC VM1 connected to POP",
"ac-node-id": "172.16.204.220",
"ac-tp-id": "200"
}
]
}
},
{
"id": "2",
"node-id": "172.16.61.10",
"sdp-ip-address": [
"172.16.61.10"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"21"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.1.101.22/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line1"
}
]
},
"attachment-circuits": {
"attachment-circuit": [
{
"id": "AC ONT",
"description": "AC connected to PC1",
"ac-node-id": "172.16.61.10",
"ac-tp-id": "200"
}
]
}
}
]
},
"connection-groups": {
"connection-group": [
{
"id": "line1",
"connectivity-type": "point-to-point",
"connectivity-construct": [
{
"id": 1,
"p2p-sender-sdp": "1",
"p2p-receiver-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "10"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "5000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
},
{
"id": 2,
"p2p-sender-sdp": "2",
"p2p-receiver-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "20"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "1000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
}
]
}
]
}
}
]
}
\ No newline at end of file
{
"slice-service": [
{
"id": "slice2",
"description": "network slice 2, connect to VM2",
"sdps": {
"sdp": [
{
"id": "1",
"node-id": "172.16.204.220",
"sdp-ip-address": [
"172.16.204.220"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"201"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.1.201.22/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line1"
}
]
},
"attachment-circuits": {
"attachment-circuit": [
{
"id": "AC POP to VM2",
"description": "AC VM2 connected to POP",
"ac-node-id": "172.16.204.220",
"ac-tp-id": "201"
}
]
}
},
{
"id": "2",
"node-id": "172.16.61.10",
"sdp-ip-address": [
"172.16.61.10"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"31"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.1.201.22/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line1"
}
]
},
"attachment-circuits": {
"attachment-circuit": [
{
"id": "AC ONT",
"description": "AC connected to PC",
"ac-node-id": "172.16.61.10",
"ac-tp-id": "200",
"ac-ipv4-address": "172.16.61.10"
}
]
}
}
]
},
"connection-groups": {
"connection-group": [
{
"id": "line1",
"connectivity-type": "point-to-point",
"connectivity-construct": [
{
"id": 1,
"p2p-sender-sdp": "1",
"p2p-receiver-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "10"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "5000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
},
{
"id": 2,
"p2p-sender-sdp": "2",
"p2p-receiver-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds",
"bound": "20"
},
{
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps",
"bound": "1000"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": "0.001"
}
]
}
}
}
]
}
]
}
}
]
}
{
"sdp": [
{
"id": "3",
"node-id": "172.16.61.11",
"sdp-ip-address": [
"172.16.61.11"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"21"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.16.104.222/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.1.101.22/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line2"
}
]
},
"attachment-circuits": {
"attachment-circuit": [
{
"id": "AC ONT",
"description": "AC connected to PC2",
"ac-node-id": "172.16.61.11",
"ac-tp-id": "200"
}
]
}
}
]
}
\ No newline at end of file
{
"sdp": [
{
"id": "3",
"node-id": "172.16.61.11",
"sdp-ip-address": [
"172.16.61.11"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"31"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.16.104.222/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.1.201.22/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line2"
}
]
},
"attachment-circuits": {
"attachment-circuit": [
{
"id": "AC ONT",
"description": "AC connected to PC2",
"ac-node-id": "172.16.61.11",
"ac-tp-id": "200",
"ac-ipv4-address": "172.16.61.11"
}
]
}
}
]
}
\ No newline at end of file
This diff is collapsed.
[
{
"network-slice-services": {
"slice-service": [
{
"connection-groups": {
"connection-group": [
{
"connectivity-construct": [
{
"id": 1,
"p2p-receiver-sdp": "2",
"p2p-sender-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 10,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 5000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
},
{
"id": 2,
"p2p-receiver-sdp": "1",
"p2p-sender-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 20,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 1000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
}
],
"connectivity-type": "point-to-point",
"id": "line1"
}
]
},
"description": "dsc",
"id": "slice1",
"sdps": {
"sdp": [
{
"attachment-circuits": {
"attachment-circuit": [
{
"ac-node-id": "172.16.185.32",
"ac-tp-id": "200",
"description": "dsc",
"id": "0"
}
]
},
"id": "1",
"node-id": "172.16.185.32",
"sdp-ip-address": [
"172.16.185.32"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"101"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.1.101.22/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10200"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10500"
]
}
],
"target-connection-group-id": "line1"
}
]
}
},
{
"attachment-circuits": {
"attachment-circuit": [
{
"ac-node-id": "172.16.182.25",
"ac-tp-id": "200",
"description": "dsc",
"id": "0"
}
]
},
"id": "2",
"node-id": "172.16.182.25",
"sdp-ip-address": [
"172.16.182.25"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"21"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.1.101.22/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line1"
}
]
}
}
]
}
}
]
}
},
{
"network-slice-services": {
"slice-service": [
{
"connection-groups": {
"connection-group": [
{
"connectivity-construct": [
{
"id": 1,
"p2p-receiver-sdp": "2",
"p2p-sender-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 10,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 5000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
},
{
"id": 2,
"p2p-receiver-sdp": "1",
"p2p-sender-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 20,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 1000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
}
],
"connectivity-type": "point-to-point",
"id": "line1"
}
]
},
"description": "dsc",
"id": "slice2",
"sdps": {
"sdp": [
{
"attachment-circuits": {
"attachment-circuit": [
{
"ac-node-id": "172.16.185.32",
"ac-tp-id": "200",
"description": "dsc",
"id": "0"
}
]
},
"id": "1",
"node-id": "172.16.185.32",
"sdp-ip-address": [
"172.16.185.32"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"201"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.1.201.22/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10200"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10500"
]
}
],
"target-connection-group-id": "line1"
}
]
}
},
{
"attachment-circuits": {
"attachment-circuit": [
{
"ac-node-id": "172.16.182.25",
"ac-tp-id": "200",
"description": "dsc",
"id": "0"
}
]
},
"id": "2",
"node-id": "172.16.182.25",
"sdp-ip-address": [
"172.16.182.25"
],
"service-match-criteria": {
"match-criterion": [
{
"index": 1,
"match-type": [
{
"type": "ietf-network-slice-service:vlan",
"value": [
"31"
]
},
{
"type": "ietf-network-slice-service:source-ip-prefix",
"value": [
"172.16.104.221/24"
]
},
{
"type": "ietf-network-slice-service:source-tcp-port",
"value": [
"10500"
]
},
{
"type": "ietf-network-slice-service:destination-ip-prefix",
"value": [
"172.1.201.22/24"
]
},
{
"type": "ietf-network-slice-service:destination-tcp-port",
"value": [
"10200"
]
}
],
"target-connection-group-id": "line1"
}
]
}
}
]
}
}
]
}
}
]
[
{
"connectivity-construct": [
{
"id": 1,
"p2p-receiver-sdp": "2",
"p2p-sender-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 10,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 10000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
},
{
"id": 2,
"p2p-receiver-sdp": "1",
"p2p-sender-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 20,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 2000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
}
],
"connectivity-type": "point-to-point",
"id": "line1"
},
{
"connectivity-construct": [
{
"id": 1,
"p2p-receiver-sdp": "2",
"p2p-sender-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 10,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 10000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
},
{
"id": 2,
"p2p-receiver-sdp": "1",
"p2p-sender-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 20,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 2000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
}
],
"connectivity-type": "point-to-point",
"id": "line1"
},
{
"connectivity-construct": [
{
"id": 1,
"p2p-receiver-sdp": "2",
"p2p-sender-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 10,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 5000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
},
{
"id": 2,
"p2p-receiver-sdp": "1",
"p2p-sender-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 20,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 1000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
}
],
"connectivity-type": "point-to-point",
"id": "line1"
},
{
"connectivity-construct": [
{
"id": 1,
"p2p-receiver-sdp": "2",
"p2p-sender-sdp": "1",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 10,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 5000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
},
{
"id": 2,
"p2p-receiver-sdp": "1",
"p2p-sender-sdp": "2",
"service-slo-sle-policy": {
"slo-policy": {
"metric-bound": [
{
"bound": 20,
"metric-type": "ietf-network-slice-service:one-way-delay-maximum",
"metric-unit": "milliseconds"
},
{
"bound": 1000,
"metric-type": "ietf-network-slice-service:one-way-bandwidth",
"metric-unit": "Mbps"
},
{
"metric-type": "ietf-network-slice-service:two-way-packet-loss",
"metric-unit": "percentage",
"percentile-value": 0.001
}
]
}
}
}
],
"connectivity-type": "point-to-point",
"id": "line1"
}
]
{
"App_Flow_2_1_slice1": {
"app-flow": [
{
"app-name": "App_Flow_2_1_slice1",
"duration": 9999,
"max-online-users": 1,
"name": "App_Flow_2_1_slice1",
"qos-profile": "AR_VR_Gaming",
"service-profile": "service_2_1_slice1",
"stas": "00:3D:E1:18:82:9E",
"user-id": "a8b5b840-1548-46c9-892e-5c18f9ec8d99"
}
]
},
"App_Flow_3_1_slice1": {
"app-flow": [
{
"app-name": "App_Flow_3_1_slice1",
"duration": 9999,
"max-online-users": 1,
"name": "App_Flow_3_1_slice1",
"qos-profile": "AR_VR_Gaming",
"service-profile": "service_3_1_slice1",
"stas": "00:3D:E1:18:82:9E",
"user-id": "28a1c47b-0179-4ab8-85da-632e6f946491"
}
]
},
"App_Flow_2_1_slice2": {
"app-flow": [
{
"app-name": "App_Flow_2_1_slice2",
"duration": 9999,
"max-online-users": 1,
"name": "App_Flow_2_1_slice2",
"qos-profile": "AR_VR_Gaming",
"service-profile": "service_2_1_slice2",
"stas": "00:3D:E1:18:82:9E",
"user-id": "9df7b98a-d5c0-43d4-bd0e-8d81ee4485f0"
}
]
},
"App_Flow_3_1_slice2": {
"app-flow": [
{
"app-name": "App_Flow_3_1_slice2",
"duration": 9999,
"max-online-users": 1,
"name": "App_Flow_3_1_slice2",
"qos-profile": "AR_VR_Gaming",
"service-profile": "service_3_1_slice2",
"stas": "00:3D:E1:18:82:9E",
"user-id": "79b2becb-8500-42cc-b6be-c27c2ea60b22"
}
]
}
}
{
"App_Flow_2_1_slice1": {
"application": [
{
"app-features": {
"app-feature": [
{
"dest-ip": "172.1.101.22",
"dest-port": "10200",
"id": "feature_2_1_slice1",
"protocol": "tcp",
"src-ip": "172.16.104.221",
"src-port": "10500"
}
]
},
"app-id": "app_2_1_slice1",
"name": "App_Flow_2_1_slice1"
}
]
},
"App_Flow_3_1_slice1": {
"application": [
{
"app-features": {
"app-feature": [
{
"dest-ip": "172.1.101.22",
"dest-port": "10200",
"id": "feature_3_1_slice1",
"protocol": "tcp",
"src-ip": "172.16.104.222",
"src-port": "10500"
}
]
},
"app-id": "app_3_1_slice1",
"name": "App_Flow_3_1_slice1"
}
]
},
"App_Flow_2_1_slice2": {
"application": [
{
"app-features": {
"app-feature": [
{
"dest-ip": "172.1.201.22",
"dest-port": "10200",
"id": "feature_2_1_slice2",
"protocol": "tcp",
"src-ip": "172.16.104.221",
"src-port": "10500"
}
]
},
"app-id": "app_2_1_slice2",
"name": "App_Flow_2_1_slice2"
}
]
},
"App_Flow_3_1_slice2": {
"application": [
{
"app-features": {
"app-feature": [
{
"dest-ip": "172.1.201.22",
"dest-port": "10200",
"id": "feature_3_1_slice2",
"protocol": "tcp",
"src-ip": "172.16.104.222",
"src-port": "10500"
}
]
},
"app-id": "app_3_1_slice2",
"name": "App_Flow_3_1_slice2"
}
]
}
}
#!/bin/bash
# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----- TeraFlowSDN ------------------------------------------------------------
# Set the URL of the internal MicroK8s Docker registry where the images will be uploaded to.
export TFS_REGISTRY_IMAGES="http://localhost:32000/tfs/"
# Set the list of components, separated by spaces, you want to build images for, and deploy.
#export TFS_COMPONENTS="context device pathcomp service slice nbi webui load_generator"
export TFS_COMPONENTS="context device pathcomp service nbi"
# Uncomment to activate Monitoring (old)
#export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring"
# Uncomment to activate Monitoring Framework (new)
#export TFS_COMPONENTS="${TFS_COMPONENTS} kpi_manager kpi_value_writer kpi_value_api telemetry analytics automation"
# Uncomment to activate QoS Profiles
#export TFS_COMPONENTS="${TFS_COMPONENTS} qos_profile"
# Uncomment to activate BGP-LS Speaker
#export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker"
# Uncomment to activate Optical Controller
# To manage optical connections, "service" requires "opticalcontroller" to be deployed
# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the
# "opticalcontroller" only if "service" is already in TFS_COMPONENTS, and re-export it.
#if [[ "$TFS_COMPONENTS" == *"service"* ]]; then
# BEFORE="${TFS_COMPONENTS% service*}"
# AFTER="${TFS_COMPONENTS#* service}"
# export TFS_COMPONENTS="${BEFORE} opticalcontroller service ${AFTER}"
#fi
# Uncomment to activate ZTP
#export TFS_COMPONENTS="${TFS_COMPONENTS} ztp"
# Uncomment to activate Policy Manager
#export TFS_COMPONENTS="${TFS_COMPONENTS} policy"
# Uncomment to activate Optical CyberSecurity
#export TFS_COMPONENTS="${TFS_COMPONENTS} dbscanserving opticalattackmitigator opticalattackdetector opticalattackmanager"
# Uncomment to activate L3 CyberSecurity
#export TFS_COMPONENTS="${TFS_COMPONENTS} l3_attackmitigator l3_centralizedattackdetector"
# Uncomment to activate TE
#export TFS_COMPONENTS="${TFS_COMPONENTS} te"
# Uncomment to activate Forecaster
#export TFS_COMPONENTS="${TFS_COMPONENTS} forecaster"
# Uncomment to activate E2E Orchestrator
#export TFS_COMPONENTS="${TFS_COMPONENTS} e2e_orchestrator"
# Uncomment to activate DLT and Interdomain
#export TFS_COMPONENTS="${TFS_COMPONENTS} interdomain dlt"
#if [[ "$TFS_COMPONENTS" == *"dlt"* ]]; then
# export KEY_DIRECTORY_PATH="src/dlt/gateway/keys/priv_sk"
# export CERT_DIRECTORY_PATH="src/dlt/gateway/keys/cert.pem"
# export TLS_CERT_PATH="src/dlt/gateway/keys/ca.crt"
#fi
# Uncomment to activate QKD App
# To manage QKD Apps, "service" requires "qkd_app" to be deployed
# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the
# "qkd_app" only if "service" is already in TFS_COMPONENTS, and re-export it.
#if [[ "$TFS_COMPONENTS" == *"service"* ]]; then
# BEFORE="${TFS_COMPONENTS% service*}"
# AFTER="${TFS_COMPONENTS#* service}"
# export TFS_COMPONENTS="${BEFORE} qkd_app service ${AFTER}"
#fi
# Set the tag you want to use for your images.
export TFS_IMAGE_TAG="dev"
# Set the name of the Kubernetes namespace to deploy TFS to.
export TFS_K8S_NAMESPACE="tfs"
# Set additional manifest files to be applied after the deployment
export TFS_EXTRA_MANIFESTS="manifests/nginx_ingress_http.yaml"
# Uncomment to monitor performance of components
#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/servicemonitors.yaml"
# Uncomment when deploying Optical CyberSecurity
#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/cachingservice.yaml"
# Set the new Grafana admin password
export TFS_GRAFANA_PASSWORD="admin123+"
# Disable skip-build flag to rebuild the Docker images.
export TFS_SKIP_BUILD=""
# ----- CockroachDB ------------------------------------------------------------
# Set the namespace where CockroackDB will be deployed.
export CRDB_NAMESPACE="crdb"
# Set the external port CockroackDB Postgre SQL interface will be exposed to.
export CRDB_EXT_PORT_SQL="26257"
# Set the external port CockroackDB HTTP Mgmt GUI interface will be exposed to.
export CRDB_EXT_PORT_HTTP="8081"
# Set the database username to be used by Context.
export CRDB_USERNAME="tfs"
# Set the database user's password to be used by Context.
export CRDB_PASSWORD="tfs123"
# Set CockroachDB installation mode to 'single'. This option is convenient for development and testing.
# See ./deploy/all.sh or ./deploy/crdb.sh for additional details
export CRDB_DEPLOY_MODE="single"
# Disable flag for dropping database, if it exists.
export CRDB_DROP_DATABASE_IF_EXISTS="YES"
# Disable flag for re-deploying CockroachDB from scratch.
export CRDB_REDEPLOY=""
# ----- NATS -------------------------------------------------------------------
# Set the namespace where NATS will be deployed.
export NATS_NAMESPACE="nats"
# Set the external port NATS Client interface will be exposed to.
export NATS_EXT_PORT_CLIENT="4222"
# Set the external port NATS HTTP Mgmt GUI interface will be exposed to.
export NATS_EXT_PORT_HTTP="8222"
# Set NATS installation mode to 'single'. This option is convenient for development and testing.
# See ./deploy/all.sh or ./deploy/nats.sh for additional details
export NATS_DEPLOY_MODE="single"
# Disable flag for re-deploying NATS from scratch.
export NATS_REDEPLOY=""
# ----- QuestDB ----------------------------------------------------------------
# Set the namespace where QuestDB will be deployed.
export QDB_NAMESPACE="qdb"
# Set the external port QuestDB Postgre SQL interface will be exposed to.
export QDB_EXT_PORT_SQL="8812"
# Set the external port QuestDB Influx Line Protocol interface will be exposed to.
export QDB_EXT_PORT_ILP="9009"
# Set the external port QuestDB HTTP Mgmt GUI interface will be exposed to.
export QDB_EXT_PORT_HTTP="9000"
# Set the database username to be used for QuestDB.
export QDB_USERNAME="admin"
# Set the database user's password to be used for QuestDB.
export QDB_PASSWORD="quest"
# Set the table name to be used by Monitoring for KPIs.
export QDB_TABLE_MONITORING_KPIS="tfs_monitoring_kpis"
# Set the table name to be used by Slice for plotting groups.
export QDB_TABLE_SLICE_GROUPS="tfs_slice_groups"
# Disable flag for dropping tables if they exist.
export QDB_DROP_TABLES_IF_EXIST="YES"
# Disable flag for re-deploying QuestDB from scratch.
export QDB_REDEPLOY=""
# ----- K8s Observability ------------------------------------------------------
# Set the external port Prometheus Mgmt HTTP GUI interface will be exposed to.
export PROM_EXT_PORT_HTTP="9090"
# Set the external port Grafana HTTP Dashboards will be exposed to.
export GRAF_EXT_PORT_HTTP="3000"
# ----- Apache Kafka -----------------------------------------------------------
# Set the namespace where Apache Kafka will be deployed.
export KFK_NAMESPACE="kafka"
# Set the port Apache Kafka server will be exposed to.
export KFK_SERVER_PORT="9092"
# Set the flag to YES for redeploying of Apache Kafka
export KFK_REDEPLOY=""
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment