From a19fb92bfdc3db128c3a64d8cbae84229ab5e541 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Tue, 30 Jun 2026 17:39:02 +0200 Subject: [PATCH 01/10] Added configurable environment to local deployments --- .../ocf-register/templates/deployment.yaml | 2 + .../config.yaml | 4 +- .../config.yaml | 4 +- .../config.yaml | 4 +- services/check_services_are_running.sh | 11 ++- services/clean_capif_docker_services.sh | 31 +++++--- services/clean_mock_server.sh | 11 ++- services/create_users.sh | 11 ++- services/docker-compose-capif.yml | 74 +++++++++++-------- services/docker-compose-mock-server.yml | 5 +- services/docker-compose-register.yml | 20 ++--- services/docker-compose-vault.yml | 3 +- services/helper/config.yaml | 5 +- services/remove_users.sh | 11 ++- services/run.sh | 32 +++++--- services/run_capif_tests.sh | 11 ++- services/run_mock_server.sh | 11 ++- services/show_logs.sh | 10 ++- services/variables.sh | 55 ++++++++++++++ services/vault/Dockerfile | 3 +- services/vault/vault_prepare_certs.sh | 2 - 21 files changed, 237 insertions(+), 83 deletions(-) diff --git a/helm/05_capif_register/charts/ocf-register/templates/deployment.yaml b/helm/05_capif_register/charts/ocf-register/templates/deployment.yaml index 31afe69..b92e6f2 100644 --- a/helm/05_capif_register/charts/ocf-register/templates/deployment.yaml +++ b/helm/05_capif_register/charts/ocf-register/templates/deployment.yaml @@ -55,6 +55,8 @@ spec: value: {{ quote .Values.env.timeout }} - name: REGISTER_HOSTNAME value: {{ quote .Values.env.registerHostname }} + - name: CAPIF_HOSTNAME + value: {{ quote .Values.env.capifHostname }} livenessProbe: {{- toYaml .Values.livenessProbe | nindent 12 }} readinessProbe: diff --git a/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml b/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml index c3e9f07..3bfce10 100644 --- a/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml +++ b/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml @@ -11,8 +11,8 @@ mongo: { ca_factory: url: !ENV ${VAULT_HOSTNAME} - port: "8200" - token: "dev-only-token" + port: !ENV ${VAULT_PORT} + token: !ENV ${VAULT_ACCESS_TOKEN} verify: False diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml b/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml index e2bb0de..11db4a7 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml +++ b/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml @@ -11,8 +11,8 @@ mongo: { ca_factory: url: !ENV ${VAULT_HOSTNAME} - port: "8200" - token: "dev-only-token" + port: !ENV ${VAULT_PORT} + token: !ENV ${VAULT_ACCESS_TOKEN} verify: False diff --git a/services/TS29222_CAPIF_Publish_Service_API/config.yaml b/services/TS29222_CAPIF_Publish_Service_API/config.yaml index e3458b2..73b0a2c 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/config.yaml +++ b/services/TS29222_CAPIF_Publish_Service_API/config.yaml @@ -22,8 +22,8 @@ monitoring: ca_factory: url: !ENV ${VAULT_HOSTNAME} - port: 8200 - token: dev-only-token + port: !ENV ${VAULT_PORT} + token: !ENV ${VAULT_ACCESS_TOKEN} verify: False capif_configuration: diff --git a/services/check_services_are_running.sh b/services/check_services_are_running.sh index a278793..a27de51 100755 --- a/services/check_services_are_running.sh +++ b/services/check_services_are_running.sh @@ -1,5 +1,14 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh export CAPIF_PRIV_KEY= export CAPIF_PRIV_KEY_BASE_64= diff --git a/services/clean_capif_docker_services.sh b/services/clean_capif_docker_services.sh index 171bc55..50b08f0 100755 --- a/services/clean_capif_docker_services.sh +++ b/services/clean_capif_docker_services.sh @@ -1,5 +1,14 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh help() { echo "Usage: $1 " @@ -93,16 +102,16 @@ for FILE in "${FILES[@]}"; do fi done -# Path to the register config.yaml file -REGISTER_CONFIG_FILE="$SERVICES_DIR/register/config.yaml" -# Check if the backup config.yaml file exists before restoring -if [ -f "$REGISTER_CONFIG_FILE.bak" ]; then - git update-index --no-assume-unchanged "$REGISTER_CONFIG_FILE.bak" - mv "$REGISTER_CONFIG_FILE.bak" "$REGISTER_CONFIG_FILE" - git update-index --no-assume-unchanged "$REGISTER_CONFIG_FILE" -else - echo "Backup config file not found, skipping restore." -fi +# # Path to the register config.yaml file +# REGISTER_CONFIG_FILE="$SERVICES_DIR/register/config.yaml" +# # Check if the backup config.yaml file exists before restoring +# if [ -f "$REGISTER_CONFIG_FILE.bak" ]; then +# git update-index --no-assume-unchanged "$REGISTER_CONFIG_FILE.bak" +# mv "$REGISTER_CONFIG_FILE.bak" "$REGISTER_CONFIG_FILE" +# git update-index --no-assume-unchanged "$REGISTER_CONFIG_FILE" +# else +# echo "Backup config file not found, skipping restore." +# fi docker network rm capif-network diff --git a/services/clean_mock_server.sh b/services/clean_mock_server.sh index 31b6541..737bc3e 100755 --- a/services/clean_mock_server.sh +++ b/services/clean_mock_server.sh @@ -1,5 +1,14 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh # Directories variables setup (no modification needed) FILE="$SERVICES_DIR/docker-compose-mock-server.yml" diff --git a/services/create_users.sh b/services/create_users.sh index c740deb..3bca9ec 100755 --- a/services/create_users.sh +++ b/services/create_users.sh @@ -1,5 +1,14 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh # User to create TOTAL_USERS=1 diff --git a/services/docker-compose-capif.yml b/services/docker-compose-capif.yml index db54e22..e3922aa 100644 --- a/services/docker-compose-capif.yml +++ b/services/docker-compose-capif.yml @@ -1,9 +1,10 @@ services: redis: + container_name: ${REDIS_CONTAINER_NAME:-redis} image: "labs.etsi.org:5050/ocf/capif/redis:7.4.2-alpine" command: redis-server - ports: - - "6379:6379" + # ports: + # - "6379:6379" volumes: - ${SERVICES_DIR}/redis-data:/var/lib/redis - ${SERVICES_DIR}/redis.conf:/usr/local/etc/redis/redis.conf @@ -12,11 +13,11 @@ services: helper: + container_name: ${HELPER_CONTAINER_NAME:-helper} build: context: ${SERVICES_DIR}/helper expose: - "8080" - container_name: helper restart: unless-stopped volumes: - ${SERVICES_DIR}/helper/config.yaml:/usr/src/app/config.yaml @@ -30,16 +31,17 @@ services: - vault:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=helper + - CONTAINER_NAME=${HELPER_CONTAINER_NAME} - VAULT_HOSTNAME=${CAPIF_VAULT} - - VAULT_ACCESS_TOKEN=dev-only-token - - VAULT_PORT=8200 + - VAULT_ACCESS_TOKEN=${CAPIF_VAULT_TOKEN} + - VAULT_PORT=${CAPIF_VAULT_PORT} - LOG_LEVEL=${LOG_LEVEL} image: ${REGISTRY_BASE_URL}/helper:${OCF_VERSION} # depends_on: # - nginx access-control-policy: + container_name: ${ACCESS_CONTROL_POLICY_CONTAINER_NAME:-access-control-policy} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Access_Control_Policy_API expose: @@ -52,7 +54,7 @@ services: - otel-collector:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=access-control-policy + - CONTAINER_NAME=${ACCESS_CONTROL_POLICY_CONTAINER_NAME} - MONITORING=${MONITORING} - LOG_LEVEL=${LOG_LEVEL} restart: unless-stopped @@ -62,6 +64,7 @@ services: - nginx api-invoker-management: + container_name: ${API_INVOKER_MANAGEMENT_CONTAINER_NAME:-api-invoker-management} build: context: ${SERVICES_DIR}/TS29222_CAPIF_API_Invoker_Management_API expose: @@ -76,11 +79,11 @@ services: - vault:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=api-invoker-management + - CONTAINER_NAME=${API_INVOKER_MANAGEMENT_CONTAINER_NAME} - MONITORING=${MONITORING} - VAULT_HOSTNAME=${CAPIF_VAULT} - - VAULT_ACCESS_TOKEN=dev-only-token - - VAULT_PORT=8200 + - VAULT_ACCESS_TOKEN=${CAPIF_VAULT_TOKEN} + - VAULT_PORT=${CAPIF_VAULT_PORT} - LOG_LEVEL=${LOG_LEVEL} restart: unless-stopped image: ${REGISTRY_BASE_URL}/ocf-api-invoker-management-api:${OCF_VERSION} @@ -89,6 +92,7 @@ services: - nginx api-provider-management: + container_name: ${API_PROVIDER_MANAGEMENT_CONTAINER_NAME:-api-provider-management} build: context: ${SERVICES_DIR}/TS29222_CAPIF_API_Provider_Management_API expose: @@ -104,17 +108,18 @@ services: image: ${REGISTRY_BASE_URL}/ocf-api-provider-management-api:${OCF_VERSION} environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=api-provider-management + - CONTAINER_NAME=${API_PROVIDER_MANAGEMENT_CONTAINER_NAME} - MONITORING=${MONITORING} - VAULT_HOSTNAME=${CAPIF_VAULT} - - VAULT_ACCESS_TOKEN=dev-only-token - - VAULT_PORT=8200 + - VAULT_ACCESS_TOKEN=${CAPIF_VAULT_TOKEN} + - VAULT_PORT=${CAPIF_VAULT_PORT} - LOG_LEVEL=${LOG_LEVEL} depends_on: - redis - nginx logs: + container_name: ${LOGS_CONTAINER_NAME:-logs} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Auditing_API expose: @@ -129,13 +134,14 @@ services: image: ${REGISTRY_BASE_URL}/ocf-auditing-api:${OCF_VERSION} environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=api-auditing + - CONTAINER_NAME=${LOGS_CONTAINER_NAME} - MONITORING=${MONITORING} - LOG_LEVEL=${LOG_LEVEL} depends_on: - mongo service-apis: + container_name: ${SERVICE_APIS_CONTAINER_NAME:-service-apis} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Discover_Service_API expose: @@ -150,13 +156,14 @@ services: image: ${REGISTRY_BASE_URL}/ocf-discover-service-api:${OCF_VERSION} environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=services-apis + - CONTAINER_NAME=${SERVICE_APIS_CONTAINER_NAME} - MONITORING=${MONITORING} - LOG_LEVEL=${LOG_LEVEL} depends_on: - mongo capif-events: + container_name: ${CAPIF_EVENTS_CONTAINER_NAME:-capif-events} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Events_API expose: @@ -166,7 +173,7 @@ services: image: ${REGISTRY_BASE_URL}/ocf-events-api:${OCF_VERSION} environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=api-events + - CONTAINER_NAME=${CAPIF_EVENTS_CONTAINER_NAME} - MONITORING=${MONITORING} - LOG_LEVEL=${LOG_LEVEL} - TIMEOUT=10 @@ -179,6 +186,7 @@ services: - mongo celery_worker: + container_name: ${CELERY_WORKER_CONTAINER_NAME:-celery_worker} build: context: ${SERVICES_DIR}/celery environment: @@ -191,6 +199,7 @@ services: - mongo celery_beat: + container_name: ${CELERY_BEAT_CONTAINER_NAME:-celery_beat} build: context: ${SERVICES_DIR}/celery environment: @@ -202,6 +211,7 @@ services: - redis - mongo api-invocation-logs: + container_name: ${API_INVOCATION_LOGS_CONTAINER_NAME:-api-invocation-logs} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Logging_API_Invocation_API expose: @@ -216,13 +226,14 @@ services: - otel-collector:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=api-invocation-logs + - CONTAINER_NAME=${API_INVOCATION_LOGS_CONTAINER_NAME} - MONITORING=${MONITORING} - LOG_LEVEL=${LOG_LEVEL} depends_on: - mongo published-apis: + container_name: ${PUBLISHED_APIS_CONTAINER_NAME:-published-apis} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Publish_Service_API expose: @@ -238,17 +249,18 @@ services: - vault:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=api-publish-apis + - CONTAINER_NAME=${PUBLISHED_APIS_CONTAINER_NAME} - MONITORING=${MONITORING} - VAULT_HOSTNAME=${CAPIF_VAULT} - - VAULT_ACCESS_TOKEN=dev-only-token - - VAULT_PORT=8200 + - VAULT_ACCESS_TOKEN=${CAPIF_VAULT_TOKEN} + - VAULT_PORT=${CAPIF_VAULT_PORT} - LOG_LEVEL=${LOG_LEVEL} depends_on: - redis - mongo capif-routing-info: + container_name: ${CAPIF_ROUTING_INFO_CONTAINER_NAME:-capif-routing-info} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Routing_Info_API expose: @@ -256,6 +268,7 @@ services: image: ${REGISTRY_BASE_URL}/ocf-routing-info-api:${OCF_VERSION} capif-security: + container_name: ${CAPIF_SECURITY_CONTAINER_NAME:-capif-security} build: context: ${SERVICES_DIR}/TS29222_CAPIF_Security_API expose: @@ -267,11 +280,11 @@ services: image: ${REGISTRY_BASE_URL}/ocf-security-api:${OCF_VERSION} environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - CONTAINER_NAME=api-security + - CONTAINER_NAME=${CAPIF_SECURITY_CONTAINER_NAME} - MONITORING=${MONITORING} - VAULT_HOSTNAME=${CAPIF_VAULT} - - VAULT_ACCESS_TOKEN=dev-only-token - - VAULT_PORT=8200 + - VAULT_ACCESS_TOKEN=${CAPIF_VAULT_TOKEN} + - VAULT_PORT=${CAPIF_VAULT_PORT} - LOG_LEVEL=${LOG_LEVEL} - TIMEOUT=10 extra_hosts: @@ -284,6 +297,7 @@ services: - nginx mongo: + container_name: ${MONGO_CCF_CONTAINER_NAME:-mongo} image: labs.etsi.org:5050/ocf/capif/mongo:6.0.2 logging: driver: 'none' @@ -293,12 +307,13 @@ services: MONGO_INITDB_ROOT_PASSWORD: example mongo-express: + container_name: ${MONGO_EXPRESS_CCF_CONTAINER_NAME:-mongo-express} image: labs.etsi.org:5050/ocf/capif/mongo-express:1.0.0-alpha.4 logging: driver: 'none' restart: unless-stopped ports: - - 8082:8081 + - ${MONGO_EXPRESS_CCF_PORT:-8081}:8081 environment: ME_CONFIG_MONGODB_ENABLE_ADMIN: true ME_CONFIG_BASICAUTH_USERNAME: admin @@ -310,17 +325,18 @@ services: - mongo nginx: + container_name: ${NGINX_CONTAINER_NAME:-nginx} build: context: ${SERVICES_DIR}/nginx ports: - - "8080:8080" - - "443:443" + - ${CAPIF_HTTP_PORT:-8080}:8080 + - ${CAPIF_HTTPS_PORT:-443}:443 image: labs.etsi.org:5050/ocf/capif/nginx-ocf-patched:1.27.1 environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - VAULT_HOSTNAME=${CAPIF_VAULT} - - VAULT_ACCESS_TOKEN=dev-only-token - - VAULT_PORT=8200 + - VAULT_ACCESS_TOKEN=${CAPIF_VAULT_TOKEN} + - VAULT_PORT=${CAPIF_VAULT_PORT} - LOG_LEVEL=${LOG_LEVEL} hostname: ${CAPIF_HOSTNAME} volumes: @@ -340,5 +356,5 @@ services: networks: default: - name: capif-network + name: ${CAPIF_NETWORK_NAME:-capif-network} external: true diff --git a/services/docker-compose-mock-server.yml b/services/docker-compose-mock-server.yml index 851f9f2..220c996 100644 --- a/services/docker-compose-mock-server.yml +++ b/services/docker-compose-mock-server.yml @@ -1,9 +1,10 @@ services: mock-server: + container_name: ${MOCK_SERVER_CONTAINER_NAME:-mock-server} build: context: ${SERVICES_DIR}/mock_server ports: - - 9100:9100 + - ${MOCK_SERVER_PORT:-9100}:9100 volumes: - ${SERVICES_DIR}/mock_server:/usr/src/app extra_hosts: @@ -15,7 +16,7 @@ services: networks: default: - name: capif-network + name: ${CAPIF_NETWORK_NAME:-capif-network} external: true diff --git a/services/docker-compose-register.yml b/services/docker-compose-register.yml index 5f12ed8..949c37e 100644 --- a/services/docker-compose-register.yml +++ b/services/docker-compose-register.yml @@ -1,22 +1,22 @@ services: register: - hostname: ${CAPIF_REGISTER} - container_name: ${CAPIF_REGISTER} + hostname: ${CAPIF_REGISTER:-register} + container_name: ${REGISTER_CONTAINER_NAME:-register} build: context: ${SERVICES_DIR}/register ports: - - 8084:8080 + - ${CAPIF_REGISTER_PORT:-8084}:8080 volumes: - ${SERVICES_DIR}/register/config.yaml:/usr/src/app/config.yaml environment: - CAPIF_PRIV_KEY=${CAPIF_PRIV_KEY} - VAULT_HOSTNAME=${CAPIF_VAULT} - - VAULT_ACCESS_TOKEN=dev-only-token - - VAULT_PORT=8200 + - VAULT_ACCESS_TOKEN=${CAPIF_VAULT_TOKEN} + - VAULT_PORT=${CAPIF_VAULT_PORT} - LOG_LEVEL=${LOG_LEVEL} - TIMEOUT=10 - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - - REGISTER_HOSTNAME=${CAPIF_REGISTER} + - REGISTER_HOSTNAME=${CAPIF_REGISTER:-register} extra_hosts: - host.docker.internal:host-gateway - vault:host-gateway @@ -26,6 +26,7 @@ services: - mongo_register mongo_register: + container_name: ${REGISTER_MONGO_CONTAINER_NAME:-mongo_register} image: labs.etsi.org:5050/ocf/capif/mongo:6.0.2 logging: driver: 'none' @@ -35,25 +36,26 @@ services: MONGO_INITDB_ROOT_PASSWORD: example mongo_register_express: + container_name: ${REGISTER_MONGO_EXPRESS_CONTAINER_NAME:-mongo_register_express} image: labs.etsi.org:5050/ocf/capif/mongo-express:1.0.0-alpha.4 logging: driver: 'none' restart: unless-stopped ports: - - 8083:8081 + - ${MONGO_REGISTER_EXPRESS_PORT:-8083}:8081 environment: ME_CONFIG_MONGODB_ENABLE_ADMIN: true ME_CONFIG_BASICAUTH_USERNAME: admin ME_CONFIG_BASICAUTH_PASSWORD: admin ME_CONFIG_MONGODB_ADMINUSERNAME: root ME_CONFIG_MONGODB_ADMINPASSWORD: example - ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo_register:27017/ + ME_CONFIG_MONGODB_URL: mongodb://root:example@${REGISTER_MONGO_CONTAINER_NAME:-mongo_register}:27017/ depends_on: - mongo_register networks: default: - name: capif-network + name: ${CAPIF_NETWORK_NAME:-capif-network} external: true diff --git a/services/docker-compose-vault.yml b/services/docker-compose-vault.yml index f143912..0796097 100644 --- a/services/docker-compose-vault.yml +++ b/services/docker-compose-vault.yml @@ -1,11 +1,12 @@ services: vault: + container_name: ${VAULT_CONTAINER_NAME:-vault} image: ${REGISTRY_BASE_URL}/vault:${OCF_VERSION} build: context: ${SERVICES_DIR}/vault restart: unless-stopped ports: - - 8200:8200 + - ${CAPIF_VAULT_PORT:-8200}:8200 cap_add: - IPC_LOCK environment: diff --git a/services/helper/config.yaml b/services/helper/config.yaml index 9452d8d..62784b3 100644 --- a/services/helper/config.yaml +++ b/services/helper/config.yaml @@ -12,11 +12,10 @@ mongo: host: mongo port: 27017 - ca_factory: url: !ENV ${VAULT_HOSTNAME} - port: 8200 - token: dev-only-token + port: !ENV ${VAULT_PORT} + token: !ENV ${VAULT_ACCESS_TOKEN} verify: False diff --git a/services/remove_users.sh b/services/remove_users.sh index 01cceb4..243df61 100755 --- a/services/remove_users.sh +++ b/services/remove_users.sh @@ -1,5 +1,14 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh # User to remove USERNAME_PREFIX= diff --git a/services/run.sh b/services/run.sh index a0ca8ae..6f8704d 100755 --- a/services/run.sh +++ b/services/run.sh @@ -1,5 +1,15 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh + +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh help() { echo "Usage: $1 " @@ -111,7 +121,7 @@ if [ "$MONITORING_STATE" == "true" ] ; then fi fi -docker network create capif-network +docker network create ${CAPIF_NETWORK_NAME} ## Deploy Vault service if [ "$CAPIF_VAULT" == "vault" ] ; then @@ -137,19 +147,19 @@ else exit $status fi -# Path to the register config.yaml file -REGISTER_CONFIG_FILE="$SERVICES_DIR/register/config.yaml" -# Backup Original config.yaml file -cp $REGISTER_CONFIG_FILE $REGISTER_CONFIG_FILE.bak -# Mark the file as assume-unchanged -git update-index --assume-unchanged "$REGISTER_CONFIG_FILE" +# # Path to the register config.yaml file +# REGISTER_CONFIG_FILE="$SERVICES_DIR/register/config.yaml" +# # Backup Original config.yaml file +# cp $REGISTER_CONFIG_FILE $REGISTER_CONFIG_FILE.bak +# # Mark the file as assume-unchanged +# git update-index --assume-unchanged "$REGISTER_CONFIG_FILE" -# Edit Register Service URL within ccf in the config.yaml file -yq eval ".ccf.url = \"$CAPIF_HOSTNAME\"" -i "$REGISTER_CONFIG_FILE" -P +# # Edit Register Service URL within ccf in the config.yaml file +# yq eval ".ccf.url = \"$CAPIF_HOSTNAME\"" -i "$REGISTER_CONFIG_FILE" -P # Deploy Register service CAPIF_PRIV_KEY_BASE_64=$(echo "$(cat ${SERVICES_DIR}/nginx/certs/server.key)") -REGISTRY_BASE_URL=$REGISTRY_BASE_URL SERVICES_DIR=$SERVICES_DIR OCF_VERSION=$OCF_VERSION CAPIF_PRIV_KEY=$CAPIF_PRIV_KEY_BASE_64 LOG_LEVEL=$LOG_LEVEL CAPIF_REGISTER=$CAPIF_REGISTER docker compose -f "$SERVICES_DIR/docker-compose-register.yml" up --detach $BUILD $CACHED_INFO +REGISTRY_BASE_URL=$REGISTRY_BASE_URL SERVICES_DIR=$SERVICES_DIR OCF_VERSION=$OCF_VERSION CAPIF_PRIV_KEY=$CAPIF_PRIV_KEY_BASE_64 LOG_LEVEL=$LOG_LEVEL CAPIF_REGISTER=$CAPIF_REGISTER CAPIF_HOSTNAME=$CAPIF_HOSTNAME docker compose -f "$SERVICES_DIR/docker-compose-register.yml" up --detach $BUILD $CACHED_INFO status=$? if [ $status -eq 0 ]; then diff --git a/services/run_capif_tests.sh b/services/run_capif_tests.sh index 65c9a45..e80d66c 100755 --- a/services/run_capif_tests.sh +++ b/services/run_capif_tests.sh @@ -1,5 +1,14 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh PLATFORM=$(uname -m) if [ "x86_64" == "$PLATFORM" ]; then diff --git a/services/run_mock_server.sh b/services/run_mock_server.sh index 5f62cf5..ce52bf7 100755 --- a/services/run_mock_server.sh +++ b/services/run_mock_server.sh @@ -1,5 +1,14 @@ #!/bin/bash -source $(dirname "$(readlink -f "$0")")/variables.sh +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi + +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" +# source $(dirname "$(readlink -f "$0")")/variables.sh help() { echo "Usage: $1 " diff --git a/services/show_logs.sh b/services/show_logs.sh index d71ae68..dba559c 100755 --- a/services/show_logs.sh +++ b/services/show_logs.sh @@ -1,7 +1,15 @@ #!/bin/bash +# Capture the first parameter as a possible environment +ENVIRONMENT="dev" +if [[ "$1" != -* && -n "$1" ]]; then + ENVIRONMENT="$1" + shift +fi +# Load variables for the selected environment +source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" # Directories variables setup (no modification needed) -export SERVICES_DIR=$(dirname "$(readlink -f "$0")") +# export SERVICES_DIR=$(dirname "$(readlink -f "$0")") help() { echo "Usage: $0 " diff --git a/services/variables.sh b/services/variables.sh index dd99ae3..09ddc85 100755 --- a/services/variables.sh +++ b/services/variables.sh @@ -7,6 +7,9 @@ export TEST_FOLDER=$CAPIF_BASE_DIR/tests export RESULT_FOLDER=$CAPIF_BASE_DIR/results export ROBOT_DOCKER_FILE_FOLDER=$CAPIF_BASE_DIR/tools/robot +# Check Docker compose version +export COMPOSE_PROJECT_NAME=ocf + # Image URL and version export REGISTRY_BASE_URL="labs.etsi.org:5050/ocf/capif/prod" export OCF_VERSION="v2.x.x-release" @@ -16,9 +19,39 @@ export CAPIF_HOSTNAME=capifcore export CAPIF_HTTP_PORT=8080 export CAPIF_HTTPS_PORT=443 +export MONGO_EXPRESS_CCF_PORT=8081 + # Register hostname and port export CAPIF_REGISTER=register export CAPIF_REGISTER_PORT=8084 +export MONGO_REGISTER_EXPRESS_PORT=8083 + +# Services docker names +export VAULT_CONTAINER_NAME=vault +export REGISTER_CONTAINER_NAME=register +export REGISTER_MONGO_CONTAINER_NAME=mongo_register +export REGISTER_MONGO_EXPRESS_CONTAINER_NAME=mongo_register_express +export REDIS_CONTAINER_NAME=redis +export HELPER_CONTAINER_NAME=helper +export ACCESS_CONTROL_POLICY_CONTAINER_NAME=access-control-policy +export API_INVOKER_MANAGEMENT_CONTAINER_NAME=api-invoker-management +export API_PROVIDER_MANAGEMENT_CONTAINER_NAME=api-provider-management +export LOGS_CONTAINER_NAME=logs +export SERVICE_APIS_CONTAINER_NAME=service-apis +export API_INVOCATION_LOGS_CONTAINER_NAME=api-invocation-logs +export CAPIF_EVENTS_CONTAINER_NAME=capif-events +export CELERY_WORKER_CONTAINER_NAME=celery_worker +export CELERY_BEAT_CONTAINER_NAME=celery_beat +export PUBLISHED_APIS_CONTAINER_NAME=published-apis +export CAPIF_ROUTING_INFO_CONTAINER_NAME=capif-routing-info +export CAPIF_SECURITY_CONTAINER_NAME=capif-security +export MONGO_CCF_CONTAINER_NAME=mongo +export MONGO_EXPRESS_CCF_CONTAINER_NAME=mongo-express +export NGINX_CONTAINER_NAME=nginx +export MOCK_SERVER_CONTAINER_NAME=mock-server + +# Network name +export CAPIF_NETWORK_NAME=capif-network # VAULT access configuration export CAPIF_VAULT=vault @@ -47,7 +80,29 @@ export DOCKER_ROBOT_IMAGE=labs.etsi.org:5050/ocf/capif/robot-tests-image export DOCKER_ROBOT_IMAGE_VERSION=1.0 export DOCKER_ROBOT_TTY_OPTIONS="-ti" + Load environment variables from file +# Directories variables setup (no modification needed) +export SCRIPTS_DIR=$(dirname "$(readlink -f "$0")") +# export HELM_DIR=$(dirname "$SCRIPTS_DIR") +# export CAPIF_BASE_DIR=$(dirname "$HELM_DIR") +## Directory for environment variables +ENV_DIR="$SCRIPTS_DIR/envs" + +## Environment selection (default: dev) +ENVIRONMENT="${1:-dev}" +ENV_FILE="$ENV_DIR/$ENVIRONMENT.env" + +if [ -f "$ENV_FILE" ]; then + echo "Loading environment configuration: $ENVIRONMENT" + set -a + source "$ENV_FILE" + set +a +else + echo "Environment file not found: $ENV_FILE. Using default values." +fi + # Mock server variables export MOCK_SERVER_URL=http://mock-server:${MOCK_SERVER_PORT} export NOTIFICATION_DESTINATION_URL=http://mock-server:${MOCK_SERVER_PORT} +# \ No newline at end of file diff --git a/services/vault/Dockerfile b/services/vault/Dockerfile index ebf61f5..1626385 100644 --- a/services/vault/Dockerfile +++ b/services/vault/Dockerfile @@ -8,5 +8,4 @@ COPY ./vault_prepare_certs.sh /vault_prepare_certs.sh RUN chmod a+x /vault_prepare_certs.sh - -CMD sh -c "vault server -dev / & sleep 5 && /vault_prepare_certs.sh && tail -f /dev/null" +CMD ["sh", "-c", "vault server -dev / & sleep 5 && /vault_prepare_certs.sh && tail -f /dev/null"] diff --git a/services/vault/vault_prepare_certs.sh b/services/vault/vault_prepare_certs.sh index 0be8b85..38944e8 100755 --- a/services/vault/vault_prepare_certs.sh +++ b/services/vault/vault_prepare_certs.sh @@ -3,9 +3,7 @@ # Setup environment variables for Vault export VAULT_ADDR="http://$VAULT_DEV_LISTEN_ADDRESS" export VAULT_TOKEN=$VAULT_DEV_ROOT_TOKEN_ID -CAPIF_HOSTNAME="${CAPIF_HOSTNAME:-capifcore}" -echo "CAPIF_HOSTNAME: $CAPIF_HOSTNAME" echo "VAULT_ADDR: $VAULT_ADDR" echo "VAULT_TOKEN: $VAULT_TOKEN" -- GitLab From d3f44d2250a5f431e6045f3490a56f40c99d6ea8 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Tue, 7 Jul 2026 15:43:53 +0200 Subject: [PATCH 02/10] Added configuration to allow 2 splitted ccfs locally deployed --- services/clean_capif_docker_services.sh | 2 +- services/docker-compose-capif.yml | 12 ++-- services/docker-compose-mock-server.yml | 3 +- services/docker-compose-register.yml | 2 +- services/envs/dev1.env | 46 +++++++++++++ services/envs/dev2.env | 48 ++++++++++++++ services/helper/config.yaml | 1 - services/run.sh | 2 +- services/variables.sh | 12 ++-- .../Helper/Interconnection API/__init__.robot | 2 + .../Interconnection API/interconnection.robot | 64 +++++++++++++++++++ tests/features/__init__.robot | 16 +++++ .../libraries/helper_service/bodyRequests.py | 17 ++++- tests/resources/common.resource | 1 + tests/resources/common/basicRequests.robot | 26 ++++++++ 15 files changed, 238 insertions(+), 16 deletions(-) create mode 100644 services/envs/dev1.env create mode 100644 services/envs/dev2.env create mode 100644 tests/features/Helper/Interconnection API/__init__.robot create mode 100644 tests/features/Helper/Interconnection API/interconnection.robot diff --git a/services/clean_capif_docker_services.sh b/services/clean_capif_docker_services.sh index 50b08f0..bbd1e65 100755 --- a/services/clean_capif_docker_services.sh +++ b/services/clean_capif_docker_services.sh @@ -113,7 +113,7 @@ done # echo "Backup config file not found, skipping restore." # fi -docker network rm capif-network +docker network rm ${CAPIF_NETWORK_NAME} docker volume prune --all --force diff --git a/services/docker-compose-capif.yml b/services/docker-compose-capif.yml index e3922aa..a872165 100644 --- a/services/docker-compose-capif.yml +++ b/services/docker-compose-capif.yml @@ -28,7 +28,7 @@ services: - host.docker.internal:host-gateway - fluent-bit:host-gateway - otel-collector:host-gateway - - vault:host-gateway + - ${CAPIF_VAULT}:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - CONTAINER_NAME=${HELPER_CONTAINER_NAME} @@ -76,7 +76,7 @@ services: - host.docker.internal:host-gateway - fluent-bit:host-gateway - otel-collector:host-gateway - - vault:host-gateway + - ${CAPIF_VAULT}:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - CONTAINER_NAME=${API_INVOKER_MANAGEMENT_CONTAINER_NAME} @@ -104,7 +104,7 @@ services: - host.docker.internal:host-gateway - fluent-bit:host-gateway - otel-collector:host-gateway - - vault:host-gateway + - ${CAPIF_VAULT}:host-gateway image: ${REGISTRY_BASE_URL}/ocf-api-provider-management-api:${OCF_VERSION} environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} @@ -246,7 +246,7 @@ services: - host.docker.internal:host-gateway - fluent-bit:host-gateway - otel-collector:host-gateway - - vault:host-gateway + - ${CAPIF_VAULT}:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - CONTAINER_NAME=${PUBLISHED_APIS_CONTAINER_NAME} @@ -291,7 +291,7 @@ services: - host.docker.internal:host-gateway - fluent-bit:host-gateway - otel-collector:host-gateway - - vault:host-gateway + - ${CAPIF_VAULT}:host-gateway depends_on: - redis - nginx @@ -344,7 +344,7 @@ services: - ${SERVICES_DIR}/nginx/nginx_prepare.sh:/nginx_prepare.sh extra_hosts: - host.docker.internal:host-gateway - - vault:host-gateway + - ${CAPIF_VAULT}:host-gateway restart: unless-stopped depends_on: - redis diff --git a/services/docker-compose-mock-server.yml b/services/docker-compose-mock-server.yml index 220c996..6f7c12f 100644 --- a/services/docker-compose-mock-server.yml +++ b/services/docker-compose-mock-server.yml @@ -4,13 +4,14 @@ services: build: context: ${SERVICES_DIR}/mock_server ports: - - ${MOCK_SERVER_PORT:-9100}:9100 + - ${MOCK_SERVER_EXTERNAL_PORT:-9100}:${MOCK_SERVER_INTERNAL_PORT:-9100} volumes: - ${SERVICES_DIR}/mock_server:/usr/src/app extra_hosts: - host.docker.internal:host-gateway environment: - DEBUG_MODE=True + - PORT=${MOCK_SERVER_INTERNAL_PORT:-9100} restart: unless-stopped image: ${REGISTRY_BASE_URL}/mock-server:${OCF_VERSION} diff --git a/services/docker-compose-register.yml b/services/docker-compose-register.yml index 949c37e..9a7c4f9 100644 --- a/services/docker-compose-register.yml +++ b/services/docker-compose-register.yml @@ -19,7 +19,7 @@ services: - REGISTER_HOSTNAME=${CAPIF_REGISTER:-register} extra_hosts: - host.docker.internal:host-gateway - - vault:host-gateway + - ${CAPIF_VAULT}:host-gateway restart: unless-stopped image: ${REGISTRY_BASE_URL}/register:${OCF_VERSION} depends_on: diff --git a/services/envs/dev1.env b/services/envs/dev1.env new file mode 100644 index 0000000..229c288 --- /dev/null +++ b/services/envs/dev1.env @@ -0,0 +1,46 @@ +export CAPIF_NETWORK_NAME=capif-network-a +export COMPOSE_PROJECT_NAME=ocf_a + +# Capif vault configuration +export CAPIF_VAULT_PORT=8200 +export CAPIF_VAULT=vault-a + +# Capif hostname +export CAPIF_HOSTNAME=capifcore-a +export CAPIF_HTTP_PORT=8080 +export CAPIF_HTTPS_PORT=443 +export MONGO_EXPRESS_CCF_PORT=8081 + +# Mock server variables +export MOCK_SERVER_INTERNAL_HOSTNAME=mock-server +export MOCK_SERVER_EXTERNAL_HOSTNAME=mock-server +export MOCK_SERVER_INTERNAL_PORT=9100 +export MOCK_SERVER_EXTERNAL_PORT=9100 +# Register hostname and port +export CAPIF_REGISTER=register-a +export CAPIF_REGISTER_PORT=8084 +export MONGO_REGISTER_EXPRESS_PORT=8083 + +# Services docker names +export VAULT_CONTAINER_NAME=vault-a +export REGISTER_CONTAINER_NAME=register-a +export REGISTER_MONGO_CONTAINER_NAME=mongo-register-a +export REGISTER_MONGO_EXPRESS_CONTAINER_NAME=mongo-register-express-a +export REDIS_CONTAINER_NAME=redis-a +export HELPER_CONTAINER_NAME=helper-a +export ACCESS_CONTROL_POLICY_CONTAINER_NAME=access-control-policy-a +export API_INVOKER_MANAGEMENT_CONTAINER_NAME=api-invoker-management-a +export API_PROVIDER_MANAGEMENT_CONTAINER_NAME=api-provider-management-a +export LOGS_CONTAINER_NAME=logs-a +export SERVICE_APIS_CONTAINER_NAME=service-apis-a +export API_INVOCATION_LOGS_CONTAINER_NAME=api-invocation-logs-a +export CAPIF_EVENTS_CONTAINER_NAME=capif-events-a +export CELERY_WORKER_CONTAINER_NAME=celery-worker-a +export CELERY_BEAT_CONTAINER_NAME=celery-beat-a +export PUBLISHED_APIS_CONTAINER_NAME=published-apis-a +export CAPIF_ROUTING_INFO_CONTAINER_NAME=capif-routing-info-a +export CAPIF_SECURITY_CONTAINER_NAME=capif-security-a +export MONGO_CCF_CONTAINER_NAME=mongo-a +export MONGO_EXPRESS_CCF_CONTAINER_NAME=mongo-express-a +export NGINX_CONTAINER_NAME=nginx-a +export MOCK_SERVER_CONTAINER_NAME=mock-server-a \ No newline at end of file diff --git a/services/envs/dev2.env b/services/envs/dev2.env new file mode 100644 index 0000000..c332aec --- /dev/null +++ b/services/envs/dev2.env @@ -0,0 +1,48 @@ +export CAPIF_NETWORK_NAME=capif-network-b +export COMPOSE_PROJECT_NAME=ocf_b + +# Capif vault configuration +export DEPLOY_VAULT=false +export CAPIF_VAULT_PORT=8200 +export CAPIF_VAULT=vault-a + +# Capif hostname +export CAPIF_HOSTNAME=capifcore-b +export CAPIF_HTTP_PORT=8180 +export CAPIF_HTTPS_PORT=1443 +export MONGO_EXPRESS_CCF_PORT=8181 + +# Mock server variables +export MOCK_SERVER_INTERNAL_HOSTNAME=mock-server +export MOCK_SERVER_EXTERNAL_HOSTNAME=mock-server +export MOCK_SERVER_INTERNAL_PORT=9100 +export MOCK_SERVER_EXTERNAL_PORT=9200 + +# Register hostname and port +export CAPIF_REGISTER=register-b +export CAPIF_REGISTER_PORT=8184 +export MONGO_REGISTER_EXPRESS_PORT=8183 + +# Services docker names +export VAULT_CONTAINER_NAME=vault-b +export REGISTER_CONTAINER_NAME=register-b +export REGISTER_MONGO_CONTAINER_NAME=mongo-register-b +export REGISTER_MONGO_EXPRESS_CONTAINER_NAME=mongo-register-express-b +export REDIS_CONTAINER_NAME=redis-b +export HELPER_CONTAINER_NAME=helper-b +export ACCESS_CONTROL_POLICY_CONTAINER_NAME=access-control-policy-b +export API_INVOKER_MANAGEMENT_CONTAINER_NAME=api-invoker-management-b +export API_PROVIDER_MANAGEMENT_CONTAINER_NAME=api-provider-management-b +export LOGS_CONTAINER_NAME=logs-b +export SERVICE_APIS_CONTAINER_NAME=service-apis-b +export API_INVOCATION_LOGS_CONTAINER_NAME=api-invocation-logs-b +export CAPIF_EVENTS_CONTAINER_NAME=capif-events-b +export CELERY_WORKER_CONTAINER_NAME=celery-worker-b +export CELERY_BEAT_CONTAINER_NAME=celery-beat-b +export PUBLISHED_APIS_CONTAINER_NAME=published-apis-b +export CAPIF_ROUTING_INFO_CONTAINER_NAME=capif-routing-info-b +export CAPIF_SECURITY_CONTAINER_NAME=capif-security-b +export MONGO_CCF_CONTAINER_NAME=mongo-b +export MONGO_EXPRESS_CCF_CONTAINER_NAME=mongo-express-b +export NGINX_CONTAINER_NAME=nginx-b +export MOCK_SERVER_CONTAINER_NAME=mock-server-b \ No newline at end of file diff --git a/services/helper/config.yaml b/services/helper/config.yaml index 62784b3..d414688 100644 --- a/services/helper/config.yaml +++ b/services/helper/config.yaml @@ -47,7 +47,6 @@ package_paths: interconnection_api: path: /interconnection openapi_file: interconnection/openapi/openapi.yaml - visibility_control: path: /visibility-control openapi_file: visibility_control/openapi/openapi.yaml diff --git a/services/run.sh b/services/run.sh index 6f8704d..7b70696 100755 --- a/services/run.sh +++ b/services/run.sh @@ -124,7 +124,7 @@ fi docker network create ${CAPIF_NETWORK_NAME} ## Deploy Vault service -if [ "$CAPIF_VAULT" == "vault" ] ; then +if [ "$DEPLOY_VAULT" == "true" ] ; then REGISTRY_BASE_URL=$REGISTRY_BASE_URL OCF_VERSION=$OCF_VERSION CAPIF_HOSTNAME=$CAPIF_HOSTNAME docker compose -f "$SERVICES_DIR/docker-compose-vault.yml" up --detach $BUILD $CACHED_INFO status=$? diff --git a/services/variables.sh b/services/variables.sh index 09ddc85..563e9dc 100755 --- a/services/variables.sh +++ b/services/variables.sh @@ -54,6 +54,7 @@ export MOCK_SERVER_CONTAINER_NAME=mock-server export CAPIF_NETWORK_NAME=capif-network # VAULT access configuration +export DEPLOY_VAULT=true export CAPIF_VAULT=vault export CAPIF_VAULT_PORT=8200 export CAPIF_VAULT_TOKEN=dev-only-token @@ -72,15 +73,18 @@ export DUID=$(id -u) export DGID=$(id -g) # Mock Server configuration +export MOCK_SERVER_INTERNAL_HOSTNAME=mock-server +export MOCK_SERVER_EXTERNAL_HOSTNAME=mock-server export MOCK_SERVER_IP=0.0.0.0 -export MOCK_SERVER_PORT=9100 +export MOCK_SERVER_INTERNAL_PORT=9100 +export MOCK_SERVER_EXTERNAL_PORT=9100 # Robot tests variables export DOCKER_ROBOT_IMAGE=labs.etsi.org:5050/ocf/capif/robot-tests-image export DOCKER_ROBOT_IMAGE_VERSION=1.0 export DOCKER_ROBOT_TTY_OPTIONS="-ti" - Load environment variables from file +# Load environment variables from file # Directories variables setup (no modification needed) export SCRIPTS_DIR=$(dirname "$(readlink -f "$0")") # export HELM_DIR=$(dirname "$SCRIPTS_DIR") @@ -102,7 +106,7 @@ else fi # Mock server variables -export MOCK_SERVER_URL=http://mock-server:${MOCK_SERVER_PORT} -export NOTIFICATION_DESTINATION_URL=http://mock-server:${MOCK_SERVER_PORT} +export MOCK_SERVER_URL=http://${MOCK_SERVER_EXTERNAL_HOSTNAME}:${MOCK_SERVER_EXTERNAL_PORT} +export NOTIFICATION_DESTINATION_URL=http://${MOCK_SERVER_INTERNAL_HOSTNAME}:${MOCK_SERVER_INTERNAL_PORT} # \ No newline at end of file diff --git a/tests/features/Helper/Interconnection API/__init__.robot b/tests/features/Helper/Interconnection API/__init__.robot new file mode 100644 index 0000000..4993aab --- /dev/null +++ b/tests/features/Helper/Interconnection API/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Test Tags -all interconnection \ No newline at end of file diff --git a/tests/features/Helper/Interconnection API/interconnection.robot b/tests/features/Helper/Interconnection API/interconnection.robot new file mode 100644 index 0000000..49aefda --- /dev/null +++ b/tests/features/Helper/Interconnection API/interconnection.robot @@ -0,0 +1,64 @@ +*** Settings *** +Resource /opt/robot-tests/tests/resources/common.resource +Library /opt/robot-tests/tests/libraries/bodyRequests.py +Library XML +Library String +Resource /opt/robot-tests/tests/resources/common/basicRequests.robot +Resource /opt/robot-tests/tests/resources/common.resource +Resource /opt/robot-tests/tests/resources/common/basicRequests.robot + +Suite Teardown Reset Testing Environment +Test Setup Reset Testing Environment +Test Teardown Reset Testing Environment + + +*** Variables *** +${API_INVOKER_NOT_REGISTERED} not-valid +${SUBSCRIBER_ID_NOT_VALID} not-valid +${SUBSCRIPTION_ID_NOT_VALID} not-valid + + +*** Test Cases *** +Interconnection 2 CCF + [Tags] interconnection-1 + + ${DESTINATION_PROVIDER_DOMAIN}= Set Variable capifcore-b:1443 + + ${ccf_id}= Get Capif Ccf Id + + ${body}= Create Interconnection Request Body ${DESTINATION_PROVIDER_DOMAIN} + ${resp}= Post Request Capif + ... /helper/interconnection/interconnect + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... username=${SUPERADMIN_USERNAME} + ... json=${body} + + Should Be Equal As Integers ${resp.status_code} 201 + Log Dictionary ${resp.json()} + +Interconnection 2 CCF X + [Tags] interconnection-2 + + ${DESTINATION_PROVIDER_DOMAIN}= Set Variable capifcore-b:1443 + + ${ccf_id}= Get Capif Ccf Id + + ${ccf_crt}= Read File Utf8 ${CCF_USERNAME}.crt + ${ccf_key}= Read File Utf8 ${CCF_USERNAME}.key + ${ccf_ca}= Read File Utf8 ${CCF_USERNAME}_ca.crt + + ${body}= Create Connection Request Body + ... ${ccf_ca} + ... ${ccf_id} + ... ${DESTINATION_PROVIDER_DOMAIN} + ... ${ccf_crt} + ${resp}= Post Request Capif + ... /helper/interconnection/connect + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... username=${CCF_USERNAME} + ... json=${body} + + Should Be Equal As Integers ${resp.status_code} 201 + Log Dictionary ${resp.json()} diff --git a/tests/features/__init__.robot b/tests/features/__init__.robot index 3ac73ab..77f0252 100644 --- a/tests/features/__init__.robot +++ b/tests/features/__init__.robot @@ -48,6 +48,8 @@ Prepare environment Retrieve Superadmin Cert + Retrieve CCF Cert + Reset Testing Environment Retrieve Ca Root @@ -65,3 +67,17 @@ Retrieve Superadmin Cert Log ${resp.json()['data']['certificate']} Store In File ${SUPERADMIN_USERNAME}.crt ${resp.json()['data']['certificate']} +Retrieve CCF Cert + [Documentation] This keyword retrieve ccf certificate from CAPIF and store it at ccf.crt in order to use at TLS communications + + ${ccf_id}= Get Capif Ccf Id + Log CCF ID obtained: ${ccf_id} + + + ${resp}= Obtain CCF Cert From Vault /v1/secret/data/capif/${ccf_id}/nginx ${CAPIF_HTTP_VAULT_URL} + Status Should Be 200 ${resp} + Log Dictionary ${resp.json()} + Log ${resp.json()['data']['data']} + Store In File ${CCF_USERNAME}.crt ${resp.json()['data']['data']['server_crt']} + Store In File ${CCF_USERNAME}.key ${resp.json()['data']['data']['server_key']} + Store In File ${CCF_USERNAME}_ca.crt ${resp.json()['data']['data']['ca']} diff --git a/tests/libraries/helper_service/bodyRequests.py b/tests/libraries/helper_service/bodyRequests.py index ffa9960..31d737e 100644 --- a/tests/libraries/helper_service/bodyRequests.py +++ b/tests/libraries/helper_service/bodyRequests.py @@ -41,4 +41,19 @@ def create_visibility_control_rule_body_2(): "apiProviderId": ["capif-prov-01"], "userName": "AMF_ROBOT_TESTING_PROVIDER" } - } \ No newline at end of file + } + + +def create_interconnection_request_body(dstProvDom="provider-b.example.com"): + return { + "dstProvDom": dstProvDom + } + + +def create_connection_request_body(caRoot, ccfId, dstProvDom, publicKey): + return { + "caRoot": caRoot, + "ccfId": ccfId, + "dstProvDom": dstProvDom, + "publicKey": publicKey + } diff --git a/tests/resources/common.resource b/tests/resources/common.resource index 96b0942..119db76 100644 --- a/tests/resources/common.resource +++ b/tests/resources/common.resource @@ -10,6 +10,7 @@ Resource /opt/robot-tests/tests/resources/common/expectedMessages.robot *** Variables *** ${SUPERADMIN_USERNAME} ROBOT_TESTING_SUPERADMIN +${CCF_USERNAME} ROBOT_TESTING_CCF ${INVOKER_USERNAME} ROBOT_TESTING_INVOKER ${PROVIDER_USERNAME} ROBOT_TESTING_PROVIDER ${APF_PROVIDER_USERNAME} APF_${PROVIDER_USERNAME} diff --git a/tests/resources/common/basicRequests.robot b/tests/resources/common/basicRequests.robot index e02a9c9..f328094 100644 --- a/tests/resources/common/basicRequests.robot +++ b/tests/resources/common/basicRequests.robot @@ -260,6 +260,32 @@ Obtain Superadmin Cert From Vault ... cert=${cert} RETURN ${resp} +Obtain CCF Cert From Vault + [Timeout] ${REQUESTS_TIMEOUT} + [Arguments] + ... ${endpoint} + ... ${server}=${NONE} + ... ${access_token}=${NONE} + ... ${auth}=${NONE} + ... ${verify}=${FALSE} + ... ${cert}=${NONE} + ... ${username}=${NONE} + + ${headers}= Create CAPIF Session ${server} ${access_token} vault_token=${CAPIF_VAULT_TOKEN} + + IF '${username}' != '${NONE}' + ${cert}= Set variable ${{ ('${username}.crt','${username}.key') }} + END + + ${resp}= Get On Session + ... apisession + ... ${endpoint} + ... headers=${headers} + ... expected_status=any + ... verify=${verify} + ... cert=${cert} + RETURN ${resp} + Put Request Capif [Timeout] ${REQUESTS_TIMEOUT} [Arguments] -- GitLab From dedfd76c755198c468332a1940d23e4448c21b83 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Wed, 8 Jul 2026 10:36:02 +0200 Subject: [PATCH 03/10] Added new functionality and solved some issues launching parallel environments --- services/clean_capif_docker_services.sh | 7 +- services/clean_capif_temporary_files.sh | 2 +- services/create_users.sh | 7 +- services/docker-compose-capif.yml | 1 + services/remove_users.sh | 7 +- services/run.sh | 7 +- services/run_interconnection_environment.sh | 209 ++++++++++++++++++ services/run_mock_server.sh | 7 +- services/show_logs.sh | 7 +- services/variables.sh | 4 +- .../Helper/Interconnection API/__init__.robot | 2 +- 11 files changed, 251 insertions(+), 9 deletions(-) create mode 100755 services/run_interconnection_environment.sh diff --git a/services/clean_capif_docker_services.sh b/services/clean_capif_docker_services.sh index bbd1e65..1a53d33 100755 --- a/services/clean_capif_docker_services.sh +++ b/services/clean_capif_docker_services.sh @@ -11,7 +11,12 @@ source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" # source $(dirname "$(readlink -f "$0")")/variables.sh help() { - echo "Usage: $1 " + echo "Usage: $0 [environment] [options]" + echo "" + echo " environment Optional. Environment name to use (e.g. dev, prod)." + echo " If not specified, 'dev' will be used by default." + echo "" + echo "Options:" echo " -c : Clean capif services" echo " -v : Clean vault service" echo " -r : Clean register service" diff --git a/services/clean_capif_temporary_files.sh b/services/clean_capif_temporary_files.sh index 4becd8b..222a7ca 100755 --- a/services/clean_capif_temporary_files.sh +++ b/services/clean_capif_temporary_files.sh @@ -1,7 +1,7 @@ #!/bin/bash help() { - echo "Usage: $1 " + echo "Usage: $0 " echo " -c : Clean capif services tmp files" echo " -m : Clean monitoring service tmp files" echo " -t : Clean robot-test service tmp files" diff --git a/services/create_users.sh b/services/create_users.sh index 3bca9ec..3401d6f 100755 --- a/services/create_users.sh +++ b/services/create_users.sh @@ -16,7 +16,12 @@ USERNAME_PREFIX= USER_PASSWORD= help() { - echo "Usage: $1 " + echo "Usage: $0 [environment] [options]" + echo "" + echo " environment Optional. Environment name to use (e.g. dev, prod)." + echo " If not specified, 'dev' will be used by default." + echo "" + echo "Options:" echo " -u : User prefix to use" echo " -p : Password to set for user" echo " -l : Local usage of script (default true)" diff --git a/services/docker-compose-capif.yml b/services/docker-compose-capif.yml index a872165..bab7b16 100644 --- a/services/docker-compose-capif.yml +++ b/services/docker-compose-capif.yml @@ -29,6 +29,7 @@ services: - fluent-bit:host-gateway - otel-collector:host-gateway - ${CAPIF_VAULT}:host-gateway + - ${CAPIF_INTERCONNECTION_HOSTNAME:-capifcore-b}:host-gateway environment: - CAPIF_HOSTNAME=${CAPIF_HOSTNAME} - CONTAINER_NAME=${HELPER_CONTAINER_NAME} diff --git a/services/remove_users.sh b/services/remove_users.sh index 243df61..27cee23 100755 --- a/services/remove_users.sh +++ b/services/remove_users.sh @@ -14,7 +14,12 @@ source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" USERNAME_PREFIX= help() { - echo "Usage: $1 " + echo "Usage: $0 [environment] [options]" + echo "" + echo " environment Optional. Environment name to use (e.g. dev, prod)." + echo " If not specified, 'dev' will be used by default." + echo "" + echo "Options:" echo " -u : User prefix to use" echo " -h : show this help" exit 1 diff --git a/services/run.sh b/services/run.sh index 7b70696..a9c9798 100755 --- a/services/run.sh +++ b/services/run.sh @@ -12,7 +12,12 @@ source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" # source $(dirname "$(readlink -f "$0")")/variables.sh help() { - echo "Usage: $1 " + echo "Usage: $0 [environment] [options]" + echo "" + echo " environment Optional. Environment name to use (e.g. dev, prod)." + echo " If not specified, 'dev' will be used by default." + echo "" + echo "Options:" echo " -c : Setup different hostname for capif" echo " -a : Setup different hostname for vault" echo " -R : Setup different hostname for register service" diff --git a/services/run_interconnection_environment.sh b/services/run_interconnection_environment.sh new file mode 100755 index 0000000..8c9cfaf --- /dev/null +++ b/services/run_interconnection_environment.sh @@ -0,0 +1,209 @@ +#!/bin/bash + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ENVS_DIR="${SCRIPT_DIR}/envs" +RUN_SCRIPT="${SCRIPT_DIR}/run.sh" +VARIABLES_FILE="${SCRIPT_DIR}/variables.sh" + +show_help() { + echo "Usage: $0 " + echo + echo "Description:" + echo " Runs two environments and sets interconnection host variables" + echo " to the CAPIF_HOSTNAME from the opposite environment." + echo " CAPIF_HOSTNAME defaults to the value from variables.sh when missing." + echo " CAPIF_PORT defaults to CAPIF_HTTP_PORT (or variables.sh default)." + echo + echo "Arguments:" + echo " environment_1 Name of the first environment (file envs/.env)" + echo " environment_2 Name of the second environment (file envs/.env)" + echo + echo "Options:" + echo " -h, --help Show this help message and exit" + echo + echo "Example:" + echo " $0 dev pre" +} + +get_var_from_file() { + local file_path="$1" + local var_name="$2" + + awk -v var_name="${var_name}" -F= ' + $0 ~ "^[[:space:]]*(export[[:space:]]+)?" var_name "[[:space:]]*=" { + val = substr($0, index($0, "=") + 1) + gsub(/^[[:space:]]+|[[:space:]]+$/, "", val) + gsub(/^\"|\"$/, "", val) + gsub(/^\047|\047$/, "", val) + print val + exit + } + ' "${file_path}" +} + +get_env_var_with_default() { + local env_name="$1" + local var_name="$2" + local default_value="$3" + local env_file="${ENVS_DIR}/${env_name}.env" + local raw_value + + if [[ ! -f "${env_file}" ]]; then + echo "Error: environment file not found: ${env_file}" >&2 + exit 1 + fi + + raw_value="$(get_var_from_file "${env_file}" "${var_name}")" + if [[ -z "${raw_value}" ]]; then + echo "${default_value}" + else + echo "${raw_value}" + fi +} + +get_capif_port_with_default() { + local env_name="$1" + local default_port="$2" + local port_value + + port_value="$(get_env_var_with_default "${env_name}" "CAPIF_PORT" "")" + if [[ -z "${port_value}" ]]; then + port_value="$(get_env_var_with_default "${env_name}" "CAPIF_HTTP_PORT" "${default_port}")" + fi + + echo "${port_value}" +} + +wait_for_project_containers() { + local compose_project="$1" + local timeout_seconds="$2" + local interval_seconds="$3" + local start_ts elapsed ids id state health all_ready + + start_ts="$(date +%s)" + echo "Waiting for containers in compose project '${compose_project}' to be running/healthy..." + + while true; do + ids="$(docker ps -a --filter "label=com.docker.compose.project=${compose_project}" --format '{{.ID}}')" + all_ready=true + + if [[ -z "${ids}" ]]; then + all_ready=false + else + for id in ${ids}; do + state="$(docker inspect -f '{{.State.Status}}' "${id}" 2>/dev/null || true)" + health="$(docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}}' "${id}" 2>/dev/null || true)" + + if [[ "${state}" != "running" ]]; then + all_ready=false + break + fi + + if [[ "${health}" != "none" && "${health}" != "healthy" ]]; then + all_ready=false + break + fi + done + fi + + if [[ "${all_ready}" == "true" ]]; then + echo "All containers for '${compose_project}' are ready." + return 0 + fi + + elapsed="$(( $(date +%s) - start_ts ))" + if (( elapsed >= timeout_seconds )); then + echo "Error: timeout waiting for containers in project '${compose_project}' after ${timeout_seconds}s." >&2 + docker ps -a --filter "label=com.docker.compose.project=${compose_project}" --format 'table {{.Names}}\t{{.Status}}' >&2 || true + return 1 + fi + + sleep "${interval_seconds}" + done +} + +if [[ ! -f "${VARIABLES_FILE}" ]]; then + echo "Error: variables file not found: ${VARIABLES_FILE}" >&2 + exit 1 +fi + +DEFAULT_CAPIF_HOSTNAME="$(get_var_from_file "${VARIABLES_FILE}" "CAPIF_HOSTNAME")" +DEFAULT_CAPIF_PORT="$(get_var_from_file "${VARIABLES_FILE}" "CAPIF_PORT")" +DEFAULT_COMPOSE_PROJECT_NAME="$(get_var_from_file "${VARIABLES_FILE}" "COMPOSE_PROJECT_NAME")" +if [[ -z "${DEFAULT_CAPIF_PORT}" ]]; then + DEFAULT_CAPIF_PORT="$(get_var_from_file "${VARIABLES_FILE}" "CAPIF_HTTP_PORT")" +fi + +if [[ -z "${DEFAULT_CAPIF_HOSTNAME}" ]]; then + echo "Error: CAPIF_HOSTNAME default not found in ${VARIABLES_FILE}" >&2 + exit 1 +fi + +if [[ -z "${DEFAULT_CAPIF_PORT}" ]]; then + echo "Error: CAPIF_PORT/CAPIF_HTTP_PORT default not found in ${VARIABLES_FILE}" >&2 + exit 1 +fi + +if [[ -z "${DEFAULT_COMPOSE_PROJECT_NAME}" ]]; then + echo "Error: COMPOSE_PROJECT_NAME default not found in ${VARIABLES_FILE}" >&2 + exit 1 +fi + +if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then + show_help + exit 0 +fi + +if [[ $# -ne 2 ]]; then + echo "Error: you must provide exactly 2 environments." >&2 + echo >&2 + show_help >&2 + exit 1 +fi + +ENVIRONMENT_1="$1" +ENVIRONMENT_2="$2" + +if [[ ! -x "${RUN_SCRIPT}" ]]; then + echo "Error: run script not found or not executable: ${RUN_SCRIPT}" >&2 + exit 1 +fi + +CAPIF_HOSTNAME_1="$(get_env_var_with_default "${ENVIRONMENT_1}" "CAPIF_HOSTNAME" "${DEFAULT_CAPIF_HOSTNAME}")" +CAPIF_HOSTNAME_2="$(get_env_var_with_default "${ENVIRONMENT_2}" "CAPIF_HOSTNAME" "${DEFAULT_CAPIF_HOSTNAME}")" +CAPIF_PORT_1="$(get_capif_port_with_default "${ENVIRONMENT_1}" "${DEFAULT_CAPIF_PORT}")" +CAPIF_PORT_2="$(get_capif_port_with_default "${ENVIRONMENT_2}" "${DEFAULT_CAPIF_PORT}")" +COMPOSE_PROJECT_1="$(get_env_var_with_default "${ENVIRONMENT_1}" "COMPOSE_PROJECT_NAME" "${DEFAULT_COMPOSE_PROJECT_NAME}")" +COMPOSE_PROJECT_2="$(get_env_var_with_default "${ENVIRONMENT_2}" "COMPOSE_PROJECT_NAME" "${DEFAULT_COMPOSE_PROJECT_NAME}")" + +WAIT_TIMEOUT_SECONDS="${WAIT_TIMEOUT_SECONDS:-300}" +WAIT_INTERVAL_SECONDS="${WAIT_INTERVAL_SECONDS:-5}" + +if [[ "${CAPIF_HOSTNAME_1}" == "${CAPIF_HOSTNAME_2}" && "${CAPIF_PORT_1}" == "${CAPIF_PORT_2}" ]]; then + echo "Error: both environments resolve to the same CAPIF_HOSTNAME and CAPIF_PORT (${CAPIF_HOSTNAME_1}:${CAPIF_PORT_1})." >&2 + echo "Please use different CAPIF_HOSTNAME and/or CAPIF_PORT (or CAPIF_HTTP_PORT) values." >&2 + exit 1 +fi + +echo "Environment 1: ${ENVIRONMENT_1}" +echo "Environment 2: ${ENVIRONMENT_2}" +echo "CAPIF_HOSTNAME (${ENVIRONMENT_1}): ${CAPIF_HOSTNAME_1}" +echo "CAPIF_HOSTNAME (${ENVIRONMENT_2}): ${CAPIF_HOSTNAME_2}" +echo "CAPIF_PORT (${ENVIRONMENT_1}): ${CAPIF_PORT_1}" +echo "CAPIF_PORT (${ENVIRONMENT_2}): ${CAPIF_PORT_2}" +echo "Compose project (${ENVIRONMENT_1}): ${COMPOSE_PROJECT_1}" +echo "Compose project (${ENVIRONMENT_2}): ${COMPOSE_PROJECT_2}" + +echo "Running ${ENVIRONMENT_1} with interconnection host=${CAPIF_HOSTNAME_2}" +CAPIF_INTERCONNECTION_HOSTNAME="${CAPIF_HOSTNAME_2}" \ +"${RUN_SCRIPT}" "${ENVIRONMENT_1}" +wait_for_project_containers "${COMPOSE_PROJECT_1}" "${WAIT_TIMEOUT_SECONDS}" "${WAIT_INTERVAL_SECONDS}" + + + +echo "Running ${ENVIRONMENT_2} with interconnection host=${CAPIF_HOSTNAME_1}" +CAPIF_INTERCONNECTION_HOSTNAME="${CAPIF_HOSTNAME_1}" \ +"${RUN_SCRIPT}" "${ENVIRONMENT_2}" +wait_for_project_containers "${COMPOSE_PROJECT_2}" "${WAIT_TIMEOUT_SECONDS}" "${WAIT_INTERVAL_SECONDS}" diff --git a/services/run_mock_server.sh b/services/run_mock_server.sh index ce52bf7..ec72592 100755 --- a/services/run_mock_server.sh +++ b/services/run_mock_server.sh @@ -11,7 +11,12 @@ source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" # source $(dirname "$(readlink -f "$0")")/variables.sh help() { - echo "Usage: $1 " + echo "Usage: $0 [environment] [options]" + echo "" + echo " environment Optional. Environment name to use (e.g. dev, prod)." + echo " If not specified, 'dev' will be used by default." + echo "" + echo "Options:" echo " -i : Setup different host ip for mock server (default 0.0.0.0)" echo " -p : Setup different port for mock server (default 9100)" echo " -h : show this help" diff --git a/services/show_logs.sh b/services/show_logs.sh index dba559c..da0b4b7 100755 --- a/services/show_logs.sh +++ b/services/show_logs.sh @@ -12,7 +12,12 @@ source "$(dirname "$0")/variables.sh" "$ENVIRONMENT" # export SERVICES_DIR=$(dirname "$(readlink -f "$0")") help() { - echo "Usage: $0 " + echo "Usage: $0 [environment] [options]" + echo "" + echo " environment Optional. Environment name to use (e.g. dev, prod)." + echo " If not specified, 'dev' will be used by default." + echo "" + echo "Options:" echo " -c : Show capif services" echo " -v : Show vault service" echo " -r : Show register service" diff --git a/services/variables.sh b/services/variables.sh index 563e9dc..9eeaa19 100755 --- a/services/variables.sh +++ b/services/variables.sh @@ -18,7 +18,6 @@ export OCF_VERSION="v2.x.x-release" export CAPIF_HOSTNAME=capifcore export CAPIF_HTTP_PORT=8080 export CAPIF_HTTPS_PORT=443 - export MONGO_EXPRESS_CCF_PORT=8081 # Register hostname and port @@ -26,6 +25,9 @@ export CAPIF_REGISTER=register export CAPIF_REGISTER_PORT=8084 export MONGO_REGISTER_EXPRESS_PORT=8083 +# Capif interconnection +export CAPIF_INTERCONNECTION_HOSTNAME=capifcore-b + # Services docker names export VAULT_CONTAINER_NAME=vault export REGISTER_CONTAINER_NAME=register diff --git a/tests/features/Helper/Interconnection API/__init__.robot b/tests/features/Helper/Interconnection API/__init__.robot index 4993aab..40da171 100644 --- a/tests/features/Helper/Interconnection API/__init__.robot +++ b/tests/features/Helper/Interconnection API/__init__.robot @@ -1,2 +1,2 @@ *** Settings *** -Test Tags -all interconnection \ No newline at end of file +Test Tags interconnection \ No newline at end of file -- GitLab From 761616704e598140fb147a6b592d6d2f7af174a1 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Wed, 8 Jul 2026 12:19:31 +0200 Subject: [PATCH 04/10] Modified way to generate certificate for CCF, using as CN the CCF_ID --- services/envs/dev1.env | 4 +- services/envs/dev2.env | 6 +- .../core/capifdomaindetails.py | 37 ++- ...CF_Interconnection.postman_collection.json | 298 ++++++++++++++++++ services/nginx/nginx_prepare.sh | 6 +- 5 files changed, 333 insertions(+), 18 deletions(-) create mode 100644 services/helper/helper_service/services/interconnection/openapi/CCF_Interconnection.postman_collection.json diff --git a/services/envs/dev1.env b/services/envs/dev1.env index 229c288..adb5836 100644 --- a/services/envs/dev1.env +++ b/services/envs/dev1.env @@ -12,8 +12,8 @@ export CAPIF_HTTPS_PORT=443 export MONGO_EXPRESS_CCF_PORT=8081 # Mock server variables -export MOCK_SERVER_INTERNAL_HOSTNAME=mock-server -export MOCK_SERVER_EXTERNAL_HOSTNAME=mock-server +export MOCK_SERVER_INTERNAL_HOSTNAME=mock-server-a +export MOCK_SERVER_EXTERNAL_HOSTNAME=mock-server-a export MOCK_SERVER_INTERNAL_PORT=9100 export MOCK_SERVER_EXTERNAL_PORT=9100 # Register hostname and port diff --git a/services/envs/dev2.env b/services/envs/dev2.env index c332aec..e80b476 100644 --- a/services/envs/dev2.env +++ b/services/envs/dev2.env @@ -13,9 +13,9 @@ export CAPIF_HTTPS_PORT=1443 export MONGO_EXPRESS_CCF_PORT=8181 # Mock server variables -export MOCK_SERVER_INTERNAL_HOSTNAME=mock-server -export MOCK_SERVER_EXTERNAL_HOSTNAME=mock-server -export MOCK_SERVER_INTERNAL_PORT=9100 +export MOCK_SERVER_INTERNAL_HOSTNAME=mock-server-b +export MOCK_SERVER_EXTERNAL_HOSTNAME=mock-server-b +export MOCK_SERVER_INTERNAL_PORT=9200 export MOCK_SERVER_EXTERNAL_PORT=9200 # Register hostname and port diff --git a/services/helper/helper_service/services/interconnection/core/capifdomaindetails.py b/services/helper/helper_service/services/interconnection/core/capifdomaindetails.py index 6292ba1..08263f5 100644 --- a/services/helper/helper_service/services/interconnection/core/capifdomaindetails.py +++ b/services/helper/helper_service/services/interconnection/core/capifdomaindetails.py @@ -4,7 +4,7 @@ from datetime import datetime import requests import json -from flask import current_app +from flask import current_app, Response # from pymongo import ReturnDocument from db.db import get_mongo @@ -71,16 +71,33 @@ class CapifDomainOperations(Resource): 'Content-Type': 'application/json' } - response = requests.request("POST", url, headers=headers, data=payload, - cert=('certs/server.crt', 'certs/server.key'), - verify='certs/ca.crt') + try: + response = requests.request("POST", url, headers=headers, data=payload, + cert=('certs/server.crt', 'certs/server.key'), + verify='certs/ca.crt') + except requests.exceptions.RequestException as exc: + detail = "Error calling interconnection endpoint: {}".format(str(exc)) + current_app.logger.error(detail) + return internal_server_error(detail=detail, cause="REQUEST_FAILURE") + + try: + inter_ccf = response.json() + except ValueError: + inter_ccf = response.text - inter_ccf = response.json() current_app.logger.debug(inter_ccf) - if response.status_code == 201 or response.status_code == 200: - interconnected_col.insert_one(inter_ccf) + if response.status_code in (200, 201): + if isinstance(inter_ccf, dict): + interconnected_col.insert_one(inter_ccf) + ccfinstancedetails_new = CcfInstanceDetails().from_dict(dict_to_camel_case(inter_ccf)) + return make_response(object=ccfinstancedetails_new, status=response.status_code) + + # If upstream returns a non-JSON success body, propagate it as-is. + return Response(response.text, status=response.status_code, mimetype="application/json") + + remote_mimetype = response.headers.get("Content-Type", "application/problem+json").split(";")[0] + if isinstance(inter_ccf, (dict, list)): + return Response(json.dumps(inter_ccf), status=response.status_code, mimetype=remote_mimetype) - ccfinstancedetails_new = CcfInstanceDetails().from_dict(dict_to_camel_case(inter_ccf)) - res = make_response(object=ccfinstancedetails_new, status=response.status_code) - return res + return Response(response.text, status=response.status_code, mimetype=remote_mimetype) diff --git a/services/helper/helper_service/services/interconnection/openapi/CCF_Interconnection.postman_collection.json b/services/helper/helper_service/services/interconnection/openapi/CCF_Interconnection.postman_collection.json new file mode 100644 index 0000000..4845c9b --- /dev/null +++ b/services/helper/helper_service/services/interconnection/openapi/CCF_Interconnection.postman_collection.json @@ -0,0 +1,298 @@ +{ + "info": { + "_postman_id": "9f3f0f74-53c2-4fdc-b6b4-6c895d2486b9", + "name": "CCF Interconnection API", + "description": "Postman collection for CCF Interconnection API endpoints.", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Create Interconnection - POST /connect", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"caRoot\": \"-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----\",\n \"publicKey\": \"-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----\",\n \"ccfId\": \"ccf-001\",\n \"dstProvDom\": \"provider-b.example.com\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/connect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "connect" + ] + }, + "description": "Create a new interconnection between CCFs." + }, + "response": [ + { + "name": "201 Interconnection succeeded", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"caRoot\": \"-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----\",\n \"publicKey\": \"-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----\",\n \"ccfId\": \"ccf-001\",\n \"dstProvDom\": \"provider-b.example.com\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/connect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "connect" + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"caRoot\": \"-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----\",\n \"publicKey\": \"-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----\",\n \"ccfId\": \"ccf-001\",\n \"dstProvDom\": \"provider-b.example.com\"\n}" + }, + { + "name": "400 Bad Request", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/connect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "connect" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/problem+json" + } + ], + "body": "{\n \"type\": \"https://example.com/problems/invalid-request\",\n \"title\": \"Bad Request\",\n \"status\": 400,\n \"detail\": \"Request body contains invalid or missing parameters.\",\n \"instance\": \"/interconnection/connect\",\n \"cause\": \"MANDATORY_IE_MISSING\",\n \"invalidParams\": [\n {\n \"param\": \"/ccfId\",\n \"reason\": \"is required\"\n },\n {\n \"param\": \"/publicKey\",\n \"reason\": \"must be a valid PEM public key\"\n }\n ],\n \"supportedFeatures\": \"1F\"\n}" + }, + { + "name": "401 Unauthorized", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/connect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "connect" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/problem+json" + } + ], + "body": "{\n \"type\": \"https://example.com/problems/unauthorized\",\n \"title\": \"Unauthorized\",\n \"status\": 401,\n \"detail\": \"Missing or invalid authentication credentials.\",\n \"instance\": \"/interconnection/connect\",\n \"cause\": \"INVALID_TOKEN\"\n}" + }, + { + "name": "403 Forbidden", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/connect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "connect" + ] + } + }, + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/problem+json" + } + ], + "body": "{\n \"type\": \"https://example.com/problems/forbidden\",\n \"title\": \"Forbidden\",\n \"status\": 403,\n \"detail\": \"The client is not allowed to perform this operation.\",\n \"instance\": \"/interconnection/connect\",\n \"cause\": \"INSUFFICIENT_SCOPE\"\n}" + }, + { + "name": "404 Not Found", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/connect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "connect" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/problem+json" + } + ], + "body": "{\n \"type\": \"https://example.com/problems/not-found\",\n \"title\": \"Not Found\",\n \"status\": 404,\n \"detail\": \"The target resource was not found.\",\n \"instance\": \"/interconnection/connect\",\n \"cause\": \"RESOURCE_NOT_FOUND\"\n}" + } + ] + }, + { + "name": "Interconnect Request - POST /interconnect", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"dstProvDom\": \"provider-b.example.com\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/interconnect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "interconnect" + ] + }, + "description": "Send a new interconnection request to another CAPIF domain." + }, + "response": [ + { + "name": "201 Interconnection request succeeded", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"dstProvDom\": \"provider-b.example.com\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/interconnect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "interconnect" + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"dstProvDom\": \"provider-b.example.com\"\n}" + }, + { + "name": "400 Bad Request", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/interconnect", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "interconnect" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/problem+json" + } + ], + "body": "{\n \"type\": \"https://example.com/problems/invalid-request\",\n \"title\": \"Bad Request\",\n \"status\": 400,\n \"detail\": \"dstProvDom is missing or invalid.\",\n \"instance\": \"/interconnection/interconnect\",\n \"cause\": \"MANDATORY_IE_MISSING\",\n \"invalidParams\": [\n {\n \"param\": \"/dstProvDom\",\n \"reason\": \"is required\"\n }\n ]\n}" + } + ] + } + ], + "variable": [ + { + "key": "baseUrl", + "value": "http://localhost:8080/interconnection", + "type": "string" + } + ] +} diff --git a/services/nginx/nginx_prepare.sh b/services/nginx/nginx_prepare.sh index 2019266..0d46582 100644 --- a/services/nginx/nginx_prepare.sh +++ b/services/nginx/nginx_prepare.sh @@ -81,11 +81,11 @@ generate_server_key_and_sign() { echo "[STEP 3] Server certificate not found" echo "[STEP 3] Generating CSR for CAPIF service" - echo "[INFO] Common Name (CN): CCF$CAPIF_HOSTNAME" + echo "[INFO] Common Name (CN): $CCF_ID" # Generate CSR using the previously generated server.key openssl req -new -key $CERTS_FOLDER/server.key \ - -subj "/CN=CCF$CAPIF_HOSTNAME" \ + -subj "/CN=$CCF_ID" \ -addext "subjectAltName=DNS:$CAPIF_HOSTNAME" \ -out $CERTS_FOLDER/server.csr @@ -106,7 +106,7 @@ generate_server_key_and_sign() { # POST /v1/pki_int/sign/my-ca intermediate's endpoint to sign the CSR SIGN_RESPONSE=$(curl -s -X POST \ -H "X-Vault-Token: $VAULT_TOKEN" \ - -d "{\"csr\":\"$CSR_CONTENT\",\"format\":\"pem_bundle\",\"common_name\":\"CCF$CAPIF_HOSTNAME\",\"alt_names\":\"$CAPIF_HOSTNAME\"}" \ + -d "{\"csr\":\"$CSR_CONTENT\",\"format\":\"pem_bundle\",\"common_name\":\"$CCF_ID\",\"alt_names\":\"$CAPIF_HOSTNAME\"}" \ "$VAULT_ADDR/v1/pki_int/sign/my-ca") # SIGN_RESPONSE; return a PEM bundle format with the signed certificate + intermediate certificate chain (but without the root). -- GitLab From 6c1b7b87eda817e70a7eb818f49b12f32e6d5b21 Mon Sep 17 00:00:00 2001 From: Stavros-Anastasios Charismiadis Date: Wed, 8 Jul 2026 18:20:24 +0300 Subject: [PATCH 05/10] Fix: vault-a was not accessible from robot container. vault and mock_server hosts added --- services/run_capif_tests.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/run_capif_tests.sh b/services/run_capif_tests.sh index e80d66c..aac1d1a 100755 --- a/services/run_capif_tests.sh +++ b/services/run_capif_tests.sh @@ -66,6 +66,8 @@ docker run $DOCKER_ROBOT_TTY_OPTIONS --rm --network="host" \ --add-host mock-server:host-gateway \ --add-host $CAPIF_HOSTNAME:host-gateway \ --add-host $CAPIF_REGISTER:host-gateway \ + --add-host $CAPIF_VAULT:host-gateway \ + --add-host $MOCK_SERVER_EXTERNAL_HOSTNAME:host-gateway \ -v $TEST_FOLDER:/opt/robot-tests/tests \ -v $RESULT_FOLDER:/opt/robot-tests/results ${DOCKER_ROBOT_IMAGE}:${DOCKER_ROBOT_IMAGE_VERSION} \ --variable CAPIF_HOSTNAME:$CAPIF_HOSTNAME \ -- GitLab From 0ca40d0e0e79fe6bdb9844cca05a75dbb6346021 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Thu, 9 Jul 2026 12:09:50 +0200 Subject: [PATCH 06/10] improvement over run_capif_tests2 --- services/run_capif_tests.sh | 90 +++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/services/run_capif_tests.sh b/services/run_capif_tests.sh index aac1d1a..bc29df9 100755 --- a/services/run_capif_tests.sh +++ b/services/run_capif_tests.sh @@ -19,6 +19,7 @@ fi echo "CAPIF_HOSTNAME = $CAPIF_HOSTNAME" echo "CAPIF_REGISTER = $CAPIF_REGISTER" +echo "CAPIF_INTERCONNECTION_HOSTNAME = $CAPIF_INTERCONNECTION_HOSTNAME" echo "CAPIF_HTTP_PORT = $CAPIF_HTTP_PORT" echo "CAPIF_HTTPS_PORT = $CAPIF_HTTPS_PORT" echo "CAPIF_VAULT = $CAPIF_VAULT" @@ -27,6 +28,95 @@ echo "CAPIF_VAULT_TOKEN = $CAPIF_VAULT_TOKEN" echo "MOCK_SERVER_URL = $MOCK_SERVER_URL" echo "DOCKER_ROBOT_IMAGE = $DOCKER_ROBOT_IMAGE:$DOCKER_ROBOT_IMAGE_VERSION" +resolve_hostname() { + local hostname="$1" + + if command -v getent >/dev/null 2>&1; then + getent hosts "$hostname" >/dev/null 2>&1 + return $? + fi + + if command -v dscacheutil >/dev/null 2>&1; then + dscacheutil -q host -a name "$hostname" | grep -q "^ip_address:" + return $? + fi + + if command -v host >/dev/null 2>&1; then + host "$hostname" >/dev/null 2>&1 + return $? + fi + + if command -v nslookup >/dev/null 2>&1; then + nslookup "$hostname" >/dev/null 2>&1 + return $? + fi + + return 1 +} + +has_localhost_hosts_entry() { + local hostname="$1" + + awk -v host="$hostname" ' + $0 !~ /^[[:space:]]*#/ && $1 == "127.0.0.1" { + for (i = 2; i <= NF; i++) { + if ($i == host) { + found = 1 + } + } + } + END { exit(found ? 0 : 1) } + ' /etc/hosts +} + +validate_hostname_or_local_hosts() { + local hostnames=("$CAPIF_HOSTNAME" "$CAPIF_REGISTER" "$CAPIF_INTERCONNECTION_HOSTNAME") + local missing=() + + for hostname in "${hostnames[@]}"; do + if resolve_hostname "$hostname"; then + echo "Hostname '$hostname' resolves correctly." + continue + fi + + echo "Hostname '$hostname' does not resolve via DNS/system resolver." + if has_localhost_hosts_entry "$hostname"; then + echo "Found local mapping in /etc/hosts: 127.0.0.1 $hostname" + else + missing+=("$hostname") + fi + done + + if [[ ${#missing[@]} -gt 0 ]]; then + echo "Error: missing local host mappings for: ${missing[*]}" >&2 + echo "Please add entries in /etc/hosts at least as 127.0.0.1 for each hostname, for example:" >&2 + for hostname in "${missing[@]}"; do + echo " 127.0.0.1 $hostname" >&2 + done + exit 1 + fi +} + +validate_required_variables() { + local required_vars=("CAPIF_HOSTNAME" "CAPIF_REGISTER" "CAPIF_INTERCONNECTION_HOSTNAME") + local missing=() + + for var_name in "${required_vars[@]}"; do + if [[ -z "${!var_name:-}" ]]; then + missing+=("$var_name") + fi + done + + if [[ ${#missing[@]} -gt 0 ]]; then + echo "Error: required environment variables are not set: ${missing[*]}" >&2 + exit 1 + fi +} + +validate_required_variables + +validate_hostname_or_local_hosts + INPUT_OPTIONS=$@ # Check if input is provided if [ -z "$1" ]; then -- GitLab From e0fc8fc3e6ca000059f33777c06b00a5fc4272eb Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Thu, 9 Jul 2026 12:14:16 +0200 Subject: [PATCH 07/10] Modify starlette version in order to be compatible with flask 3.1.0 version --- .../TS29222_CAPIF_API_Invoker_Management_API/requirements.txt | 3 ++- .../TS29222_CAPIF_API_Provider_Management_API/requirements.txt | 1 + .../TS29222_CAPIF_Access_Control_Policy_API/requirements.txt | 3 ++- services/TS29222_CAPIF_Auditing_API/requirements.txt | 1 + services/TS29222_CAPIF_Discover_Service_API/requirements.txt | 1 + services/TS29222_CAPIF_Events_API/requirements.txt | 3 ++- .../TS29222_CAPIF_Logging_API_Invocation_API/requirements.txt | 1 + services/TS29222_CAPIF_Publish_Service_API/requirements.txt | 2 +- services/TS29222_CAPIF_Routing_Info_API/requirements.txt | 1 + services/TS29222_CAPIF_Security_API/requirements.txt | 3 ++- 10 files changed, 14 insertions(+), 5 deletions(-) diff --git a/services/TS29222_CAPIF_API_Invoker_Management_API/requirements.txt b/services/TS29222_CAPIF_API_Invoker_Management_API/requirements.txt index 4243aa9..d2bc7d5 100644 --- a/services/TS29222_CAPIF_API_Invoker_Management_API/requirements.txt +++ b/services/TS29222_CAPIF_API_Invoker_Management_API/requirements.txt @@ -22,4 +22,5 @@ flask_executor == 1.0.0 Flask-APScheduler == 1.13.1 werkzeug == 3.1.4 gunicorn == 23.0.0 -packaging == 24.0 \ No newline at end of file +packaging == 24.0 +starlette == 0.52.1 \ No newline at end of file diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/requirements.txt b/services/TS29222_CAPIF_API_Provider_Management_API/requirements.txt index 5c88471..7a55a99 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/requirements.txt +++ b/services/TS29222_CAPIF_API_Provider_Management_API/requirements.txt @@ -21,3 +21,4 @@ flask_executor == 1.0.0 werkzeug == 3.1.3 gunicorn == 23.0.0 packaging == 24.0 +starlette == 0.52.1 \ No newline at end of file diff --git a/services/TS29222_CAPIF_Access_Control_Policy_API/requirements.txt b/services/TS29222_CAPIF_Access_Control_Policy_API/requirements.txt index fca0da9..c5676ce 100644 --- a/services/TS29222_CAPIF_Access_Control_Policy_API/requirements.txt +++ b/services/TS29222_CAPIF_Access_Control_Policy_API/requirements.txt @@ -20,4 +20,5 @@ flask_executor == 1.0.0 Flask-APScheduler == 1.13.1 Flask-Script == 2.0.6 gunicorn == 23.0.0 -packaging == 24.0 \ No newline at end of file +packaging == 24.0 +starlette == 0.52.1 \ No newline at end of file diff --git a/services/TS29222_CAPIF_Auditing_API/requirements.txt b/services/TS29222_CAPIF_Auditing_API/requirements.txt index 1dcdb98..95d1a60 100644 --- a/services/TS29222_CAPIF_Auditing_API/requirements.txt +++ b/services/TS29222_CAPIF_Auditing_API/requirements.txt @@ -21,3 +21,4 @@ werkzeug == 3.1.3 pyopenssl == 25.3.0 gunicorn == 23.0.0 packaging == 24.0 +starlette == 0.52.1 \ No newline at end of file diff --git a/services/TS29222_CAPIF_Discover_Service_API/requirements.txt b/services/TS29222_CAPIF_Discover_Service_API/requirements.txt index 5c88471..7a55a99 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/requirements.txt +++ b/services/TS29222_CAPIF_Discover_Service_API/requirements.txt @@ -21,3 +21,4 @@ flask_executor == 1.0.0 werkzeug == 3.1.3 gunicorn == 23.0.0 packaging == 24.0 +starlette == 0.52.1 \ No newline at end of file diff --git a/services/TS29222_CAPIF_Events_API/requirements.txt b/services/TS29222_CAPIF_Events_API/requirements.txt index 00e06c2..a9d508a 100644 --- a/services/TS29222_CAPIF_Events_API/requirements.txt +++ b/services/TS29222_CAPIF_Events_API/requirements.txt @@ -24,4 +24,5 @@ async-timeout == 4.0.3 werkzeug == 3.1.3 pyopenssl == 25.3.0 gunicorn == 23.0.0 -packaging == 24.0 \ No newline at end of file +packaging == 24.0 +starlette == 0.52.1 \ No newline at end of file diff --git a/services/TS29222_CAPIF_Logging_API_Invocation_API/requirements.txt b/services/TS29222_CAPIF_Logging_API_Invocation_API/requirements.txt index 92016a4..d429a19 100644 --- a/services/TS29222_CAPIF_Logging_API_Invocation_API/requirements.txt +++ b/services/TS29222_CAPIF_Logging_API_Invocation_API/requirements.txt @@ -22,3 +22,4 @@ werkzeug == 3.1.3 pyopenssl == 25.3.0 gunicorn == 23.0.0 packaging == 24.0 +starlette == 0.52.1 diff --git a/services/TS29222_CAPIF_Publish_Service_API/requirements.txt b/services/TS29222_CAPIF_Publish_Service_API/requirements.txt index a5d5750..9d89531 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/requirements.txt +++ b/services/TS29222_CAPIF_Publish_Service_API/requirements.txt @@ -23,4 +23,4 @@ gunicorn == 23.0.0 packaging == 24.0 requests == 2.32.2 pyopenssl == 25.3.0 - +starlette == 0.52.1 diff --git a/services/TS29222_CAPIF_Routing_Info_API/requirements.txt b/services/TS29222_CAPIF_Routing_Info_API/requirements.txt index a1ce6ce..35249f4 100644 --- a/services/TS29222_CAPIF_Routing_Info_API/requirements.txt +++ b/services/TS29222_CAPIF_Routing_Info_API/requirements.txt @@ -6,3 +6,4 @@ Flask == 3.0.3 werkzeug == 3.1.3 gunicorn == 23.0.0 packaging == 24.0 +starlette == 0.52.1 diff --git a/services/TS29222_CAPIF_Security_API/requirements.txt b/services/TS29222_CAPIF_Security_API/requirements.txt index ce229e4..51a08b2 100644 --- a/services/TS29222_CAPIF_Security_API/requirements.txt +++ b/services/TS29222_CAPIF_Security_API/requirements.txt @@ -21,4 +21,5 @@ Flask-APScheduler == 1.13.1 flask_executor == 1.0.0 werkzeug == 3.1.3 gunicorn == 23.0.0 -packaging == 24.0 \ No newline at end of file +packaging == 24.0 +starlette == 0.52.1 \ No newline at end of file -- GitLab From 59f100d713d1d9c89589fcf5f02e9354bf3fd1b0 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Thu, 9 Jul 2026 14:59:50 +0200 Subject: [PATCH 08/10] Fixed helms to be allow deploy on HIVE envionment --- .../templates/configmap.yaml | 8 ++-- .../templates/configmap.yaml | 9 +++-- .../templates/ocf-helper-configmap.yaml | 11 ++++-- .../templates/configmap.yaml | 8 ++++ .../templates/deployment.yaml | 6 +++ .../ocf-publish-service-api/values.yaml | 3 ++ .../ocf-register/templates/configmap.yaml | 9 +++-- helm/scripts/04_install_capif_services.sh | 3 ++ .../config.yaml | 39 +++++++++---------- .../config.yaml | 3 -- .../config.yaml | 18 --------- services/helper/config.yaml | 1 - 12 files changed, 61 insertions(+), 57 deletions(-) diff --git a/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml b/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml index f068889..51abd6c 100644 --- a/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml +++ b/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml @@ -15,6 +15,7 @@ data: 'host': 'mongo', 'port': "27017" } + mongo_register: { 'user': '{{ .Values.env.mongoRegister.mongoInitdbRootUsername }}', 'password': '{{ .Values.env.mongoRegister.mongoInitdbRootPassword }}', @@ -23,10 +24,11 @@ data: 'host': 'mongo-register', 'port': '27017' } + ca_factory: { - "url": {{ quote .Values.env.vaultHostname }}, - "port": {{ quote .Values.env.vaultPort }}, - "token": {{ quote .Values.env.vaultAccessToken }} + "url": !ENV ${VAULT_HOSTNAME}, + "port": !ENV ${VAULT_PORT}, + "token": !ENV ${VAULT_ACCESS_TOKEN} } monitoring: { diff --git a/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml b/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml index 6da59dd..b10c108 100644 --- a/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml +++ b/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml @@ -14,6 +14,7 @@ data: 'host': 'mongo', 'port': "27017" } + mongo_register: { 'user': '{{ .Values.env.mongoRegister.mongoInitdbRootUsername }}', 'password': '{{ .Values.env.mongoRegister.mongoInitdbRootPassword }}', @@ -22,13 +23,13 @@ data: 'host': 'mongo-register', 'port': '27017' } + ca_factory: { - "url": {{ quote .Values.env.vaultHostname }}, - "port": {{ quote .Values.env.vaultPort }}, - "token": {{ quote .Values.env.vaultAccessToken }} + "url": !ENV ${VAULT_HOSTNAME}, + "port": !ENV ${VAULT_PORT}, + "token": !ENV ${VAULT_ACCESS_TOKEN} } - monitoring: { "fluent_bit_host": fluent-bit, "fluent_bit_port": 24224, diff --git a/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml b/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml index f422d44..2104496 100644 --- a/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml +++ b/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml @@ -14,14 +14,15 @@ data: 'col_security': "security", 'col_event': "eventsdetails", 'col_capif_configuration': "capif_configuration", + 'col_interconnected': "interconnected", 'host': '{{ .Values.env.mongoHost }}', 'port': "{{ .Values.env.mongoPort }}" } ca_factory: { - "url": {{ quote .Values.env.vaultHostname }}, - "port": {{ quote .Values.env.vaultPort }}, - "token": {{ quote .Values.env.vaultAccessToken }} + "url": !ENV ${VAULT_HOSTNAME}, + "port": !ENV ${VAULT_PORT}, + "token": !ENV ${VAULT_ACCESS_TOKEN}, } {{- if .Values.capifConfiguration }} @@ -37,6 +38,10 @@ data: "path": "/configuration", "openapi_file": "configuration/openapi/openapi.yaml" }, + "interconnection_api": { + "path": "/interconnection", + "openapi_file": "interconnection/openapi/openapi.yaml" + }, "visibility_control": { "path": "/visibility-control", "openapi_file": "visibility_control/openapi/openapi.yaml" diff --git a/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml b/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml index 651ad05..0217710 100644 --- a/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml +++ b/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml @@ -11,6 +11,8 @@ data: 'col': 'serviceapidescriptions', 'certs_col': 'certs', 'capif_provider_col': 'providerenrolmentdetails', + 'col_interconnected': 'interconnected', + 'col_capif_configuration': 'capif_configuration', 'host': 'mongo', 'port': "27017" } @@ -24,4 +26,10 @@ data: "opentelemetry_schedule_delay_millis": 20000, "opentelemetry_max_export_batch_size": 2048, "opentelemetry_export_timeout_millis": 60000 + } + + ca_factory: { + "url": !ENV ${VAULT_HOSTNAME}, + "port": !ENV ${VAULT_PORT}, + "token": !ENV ${VAULT_ACCESS_TOKEN}, } \ No newline at end of file diff --git a/helm/04_capif_services/charts/ocf-publish-service-api/templates/deployment.yaml b/helm/04_capif_services/charts/ocf-publish-service-api/templates/deployment.yaml index 7df0807..177d2c6 100644 --- a/helm/04_capif_services/charts/ocf-publish-service-api/templates/deployment.yaml +++ b/helm/04_capif_services/charts/ocf-publish-service-api/templates/deployment.yaml @@ -44,6 +44,12 @@ spec: value: {{ quote .Values.env.monitoring }} - name: CAPIF_HOSTNAME value: {{ quote .Values.env.capifHostname }} + - name: VAULT_HOSTNAME + value: {{ quote .Values.env.vaultHostname }} + - name: VAULT_PORT + value: {{ quote .Values.env.vaultPort }} + - name: VAULT_ACCESS_TOKEN + value: {{ quote .Values.env.vaultAccessToken }} - name: LOG_LEVEL value: {{ quote .Values.env.logLevel }} livenessProbe: diff --git a/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml b/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml index f22c2b2..7ea8900 100644 --- a/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml +++ b/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml @@ -19,6 +19,9 @@ env: capifHostname: capif mongoInitdbRootUsername: root mongoInitdbRootPassword: example + vaultHostname: vault + vaultPort: 8200 + vaultAccessToken: dev-only-token logLevel: "INFO" serviceAccount: diff --git a/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml b/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml index 2b89f18..9244ef6 100644 --- a/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml +++ b/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml @@ -14,13 +14,14 @@ data: 'host': '{{ .Values.env.mongoHost }}', 'port': '{{ .Values.env.mongoPort }}' } + ca_factory: { - "url": "{{ .Values.env.vaultHostname }}", - "port": "{{ .Values.env.vaultPort }}", - "token": "{{ .Values.env.vaultAccessToken }}" + "url": !ENV ${VAULT_HOSTNAME}, + "port": !ENV ${VAULT_PORT}, + "token": !ENV ${VAULT_ACCESS_TOKEN}, } ccf: { - "url": "{{ .Values.env.capifHostname }}", + "url": !ENV ${CAPIF_HOSTNAME}, "helper_remove_user": "/helper/deleteEntities/" } register: { diff --git a/helm/scripts/04_install_capif_services.sh b/helm/scripts/04_install_capif_services.sh index b9bf4c2..7f965ef 100755 --- a/helm/scripts/04_install_capif_services.sh +++ b/helm/scripts/04_install_capif_services.sh @@ -88,6 +88,9 @@ install_capif_helm() { --set ocf-publish-service-api.image.tag=$CAPIF_IMAGE_TAG \ --set ocf-publish-service-api.env.monitoring="true" \ --set ocf-publish-service-api.env.capifHostname=$CAPIF_HOSTNAME \ + --set ocf-publish-service-api.env.vaultHostname=$VAULT_INTERNAL_HOSTNAME \ + --set ocf-publish-service-api.env.vaultPort=$VAULT_PORT \ + --set ocf-publish-service-api.env.vaultAccessToken=$VAULT_ACCESS_TOKEN \ --set ocf-publish-service-api.env.logLevel="$LOG_LEVEL" \ --set ocf-discover-service-api.image.repository=$CAPIF_DOCKER_REGISTRY/ocf-discover-service-api \ --set ocf-discover-service-api.image.tag=$CAPIF_IMAGE_TAG \ diff --git a/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml b/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml index 3bfce10..09cd712 100644 --- a/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml +++ b/services/TS29222_CAPIF_API_Invoker_Management_API/config.yaml @@ -1,13 +1,12 @@ -mongo: { - 'user': 'root', - 'password': 'example', - 'db': 'capif', - 'col': 'invokerdetails', - 'certs_col': "certs", - 'service_col': 'serviceapidescriptions', - 'host': 'mongo', - 'port': "27017" -} +mongo: + user: 'root' + password: 'example' + db: 'capif' + col: 'invokerdetails' + certs_col: "certs" + service_col: 'serviceapidescriptions' + host: 'mongo' + port: "27017" ca_factory: url: !ENV ${VAULT_HOSTNAME} @@ -15,14 +14,12 @@ ca_factory: token: !ENV ${VAULT_ACCESS_TOKEN} verify: False - -monitoring: { - "fluent_bit_host": fluent-bit, - "fluent_bit_port": 24224, - "opentelemetry_url": "otel-collector", - "opentelemetry_port": "55680", - "opentelemetry_max_queue_size": 8192, - "opentelemetry_schedule_delay_millis": 20000, - "opentelemetry_max_export_batch_size": 2048, - "opentelemetry_export_timeout_millis": 60000 -} \ No newline at end of file +monitoring: + fluent_bit_host: fluent-bit + fluent_bit_port: 24224 + opentelemetry_url: otel-collector + opentelemetry_port: 55680 + opentelemetry_max_queue_size: 8192 + opentelemetry_schedule_delay_millis: 20000 + opentelemetry_max_export_batch_size: 2048 + opentelemetry_export_timeout_millis: 60000 \ No newline at end of file diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml b/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml index 11db4a7..4f8ed39 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml +++ b/services/TS29222_CAPIF_API_Provider_Management_API/config.yaml @@ -8,15 +8,12 @@ mongo: { 'port': "27017" } - ca_factory: url: !ENV ${VAULT_HOSTNAME} port: !ENV ${VAULT_PORT} token: !ENV ${VAULT_ACCESS_TOKEN} verify: False - - monitoring: { "fluent_bit_host": fluent-bit, "fluent_bit_port": 24224, diff --git a/services/TS29222_CAPIF_Publish_Service_API/config.yaml b/services/TS29222_CAPIF_Publish_Service_API/config.yaml index 73b0a2c..afe0131 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/config.yaml +++ b/services/TS29222_CAPIF_Publish_Service_API/config.yaml @@ -25,21 +25,3 @@ ca_factory: port: !ENV ${VAULT_PORT} token: !ENV ${VAULT_ACCESS_TOKEN} verify: False - -capif_configuration: - config_description: Default CAPIF Configuration - config_name: default - config_version: "1.0" - settings: - acl_policy_settings: - allowed_invocation_time_range_days: 365 - allowed_invocations_per_second: 10 - allowed_total_invocations: 5 - certificates_expiry: - ttl_invoker_cert: 4300h - ttl_provider_cert: 4300h - ttl_superadmin_cert: 4300h - security_method_priority: - oauth: 1 - pki: 2 - psk: 3 \ No newline at end of file diff --git a/services/helper/config.yaml b/services/helper/config.yaml index d414688..eb90f75 100644 --- a/services/helper/config.yaml +++ b/services/helper/config.yaml @@ -18,7 +18,6 @@ ca_factory: token: !ENV ${VAULT_ACCESS_TOKEN} verify: False - capif_configuration: config_description: Default CAPIF Configuration config_name: default -- GitLab From ebbbdc494d346dafd746b0abce8f632b177bb38d Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Thu, 9 Jul 2026 15:29:57 +0200 Subject: [PATCH 09/10] minor fix_configmap helper --- .../templates/ocf-helper-configmap.yaml | 70 +++++++++---------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml b/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml index 2104496..6fff198 100644 --- a/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml +++ b/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml @@ -4,46 +4,40 @@ metadata: name: ocf-helper-configmap data: config.yaml: | - mongo: { - 'user': '{{ .Values.env.mongoInitdbRootUsername }}', - 'password': '{{ .Values.env.mongoInitdbRootPassword }}', - 'db': 'capif', - 'invoker_col': 'invokerdetails', - 'provider_col': 'providerenrolmentdetails', - 'col_services': "serviceapidescriptions", - 'col_security': "security", - 'col_event': "eventsdetails", - 'col_capif_configuration': "capif_configuration", - 'col_interconnected': "interconnected", - 'host': '{{ .Values.env.mongoHost }}', - 'port': "{{ .Values.env.mongoPort }}" - } + mongo: + user: '{{ .Values.env.mongoInitdbRootUsername }}' + password: '{{ .Values.env.mongoInitdbRootPassword }}' + db: capif + invoker_col: invokerdetails + provider_col: providerenrolmentdetails + col_services: serviceapidescriptions + col_security: security + col_event: eventsdetails + col_capif_configuration: capif_configuration + col_interconnected: interconnected + host: '{{ .Values.env.mongoHost }}' + port: "{{ .Values.env.mongoPort }}" - ca_factory: { - "url": !ENV ${VAULT_HOSTNAME}, - "port": !ENV ${VAULT_PORT}, - "token": !ENV ${VAULT_ACCESS_TOKEN}, - } + ca_factory: + url: !ENV "${VAULT_HOSTNAME}" + port: !ENV "${VAULT_PORT}" + token: !ENV "${VAULT_ACCESS_TOKEN}" {{- if .Values.capifConfiguration }} - capif_configuration: {{ .Values.capifConfiguration | toYaml | nindent 6 }} + capif_configuration: +{{ .Values.capifConfiguration | toYaml | nindent 6 }} {{- end }} - package_paths: { - "helper_api": { - "path": "/api", - "openapi_file": "api/openapi/openapi.yaml" - }, - "configuration_api": { - "path": "/configuration", - "openapi_file": "configuration/openapi/openapi.yaml" - }, - "interconnection_api": { - "path": "/interconnection", - "openapi_file": "interconnection/openapi/openapi.yaml" - }, - "visibility_control": { - "path": "/visibility-control", - "openapi_file": "visibility_control/openapi/openapi.yaml" - } - } \ No newline at end of file + package_paths: + helper_api: + path: /api + openapi_file: api/openapi/openapi.yaml + configuration_api: + path: /configuration + openapi_file: configuration/openapi/openapi.yaml + interconnection_api: + path: /interconnection + openapi_file: interconnection/openapi/openapi.yaml + visibility_control: + path: /visibility-control + openapi_file: visibility_control/openapi/openapi.yaml \ No newline at end of file -- GitLab From 1e94ad6b240a906004767fa4cc1803b7cc2e57f8 Mon Sep 17 00:00:00 2001 From: Jorge Moratinos Salcines Date: Thu, 9 Jul 2026 15:48:59 +0200 Subject: [PATCH 10/10] Fixed config maps --- .../templates/configmap.yaml | 64 +++++++++---------- .../ocf-api-invoker-management/values.yaml | 4 ++ .../templates/configmap.yaml | 62 +++++++++--------- .../ocf-api-provider-management/values.yaml | 4 ++ .../templates/ocf-helper-configmap.yaml | 3 +- .../templates/configmap.yaml | 53 ++++++++------- .../ocf-publish-service-api/values.yaml | 2 + .../ocf-register/templates/configmap.yaml | 51 ++++++++------- 8 files changed, 120 insertions(+), 123 deletions(-) diff --git a/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml b/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml index 51abd6c..63291c9 100644 --- a/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml +++ b/helm/04_capif_services/charts/ocf-api-invoker-management/templates/configmap.yaml @@ -4,40 +4,36 @@ metadata: name: capif-invoker-configmap data: config.yaml: | - mongo: { - 'user': '{{ .Values.env.mongoInitdbRootUsername }}', - 'password': '{{ .Values.env.mongoInitdbRootPassword }}', - 'db': 'capif', - 'col': 'invokerdetails', - 'capif_users_col': 'user', - 'certs_col': 'certs', - 'service_col': 'serviceapidescriptions', - 'host': 'mongo', - 'port': "27017" - } + mongo: + user: '{{ .Values.env.mongoInitdbRootUsername }}' + password: '{{ .Values.env.mongoInitdbRootPassword }}' + db: capif + col: invokerdetails + capif_users_col: user + certs_col: certs + service_col: serviceapidescriptions + host: '{{ .Values.env.mongoHost }}' + port: '{{ .Values.env.mongoPort }}' - mongo_register: { - 'user': '{{ .Values.env.mongoRegister.mongoInitdbRootUsername }}', - 'password': '{{ .Values.env.mongoRegister.mongoInitdbRootPassword }}', - 'db': 'capif_users', - 'col': 'user', - 'host': 'mongo-register', - 'port': '27017' - } + mongo_register: + user: '{{ .Values.env.mongoRegister.mongoInitdbRootUsername }}' + password: '{{ .Values.env.mongoRegister.mongoInitdbRootPassword }}' + db: 'capif_users' + col: 'user' + host: '{{ .Values.env.mongoRegister.mongoHost }}' + port: '{{ .Values.env.mongoRegister.mongoPort }}' - ca_factory: { - "url": !ENV ${VAULT_HOSTNAME}, - "port": !ENV ${VAULT_PORT}, - "token": !ENV ${VAULT_ACCESS_TOKEN} - } + ca_factory: + url: !ENV "${VAULT_HOSTNAME}" + port: !ENV "${VAULT_PORT}" + token: !ENV "${VAULT_ACCESS_TOKEN}" - monitoring: { - "fluent_bit_host": fluent-bit, - "fluent_bit_port": 24224, - "opentelemetry_url": "otel-collector", - "opentelemetry_port": "55680", - "opentelemetry_max_queue_size": 8192, - "opentelemetry_schedule_delay_millis": 20000, - "opentelemetry_max_export_batch_size": 2048, - "opentelemetry_export_timeout_millis": 60000 - } \ No newline at end of file + monitoring: + fluent_bit_host: fluent-bit + fluent_bit_port: 24224 + opentelemetry_url: otel-collector + opentelemetry_port: 55680 + opentelemetry_max_queue_size: 8192 + opentelemetry_schedule_delay_millis: 20000 + opentelemetry_max_export_batch_size: 2048 + opentelemetry_export_timeout_millis: 60000 \ No newline at end of file diff --git a/helm/04_capif_services/charts/ocf-api-invoker-management/values.yaml b/helm/04_capif_services/charts/ocf-api-invoker-management/values.yaml index 0fbda23..2ebd960 100644 --- a/helm/04_capif_services/charts/ocf-api-invoker-management/values.yaml +++ b/helm/04_capif_services/charts/ocf-api-invoker-management/values.yaml @@ -20,12 +20,16 @@ env: vaultHostname: vault vaultPort: 8200 vaultAccessToken: dev-only-token + mongoHost: mongo + mongoPort: 27017 mongoInitdbRootUsername: root mongoInitdbRootPassword: example logLevel: "INFO" mongoRegister: mongoInitdbRootUsername: root mongoInitdbRootPassword: example + mongoHost: mongo-register + mongoPort: 27017 serviceAccount: # Specifies whether a service account should be created diff --git a/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml b/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml index b10c108..20431cf 100644 --- a/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml +++ b/helm/04_capif_services/charts/ocf-api-provider-management/templates/configmap.yaml @@ -4,39 +4,35 @@ metadata: name: capif-provider-configmap data: config.yaml: | - mongo: { - 'user': '{{ .Values.env.mongoInitdbRootUsername }}', - 'password': '{{ .Values.env.mongoInitdbRootPassword }}', - 'db': 'capif', - 'col': 'providerenrolmentdetails', - 'certs_col': 'certs', - 'capif_users': 'user', - 'host': 'mongo', - 'port': "27017" - } + mongo: + user: '{{ .Values.env.mongoInitdbRootUsername }}' + password: '{{ .Values.env.mongoInitdbRootPassword }}' + db: 'capif' + col: 'providerenrolmentdetails' + certs_col: 'certs' + capif_users: 'user' + host: '{{ .Values.env.mongoHost }}' + port: '{{ .Values.env.mongoPort }}' - mongo_register: { - 'user': '{{ .Values.env.mongoRegister.mongoInitdbRootUsername }}', - 'password': '{{ .Values.env.mongoRegister.mongoInitdbRootPassword }}', - 'db': 'capif_users', - 'col': 'user', - 'host': 'mongo-register', - 'port': '27017' - } + mongo_register: + user: '{{ .Values.env.mongoRegister.mongoInitdbRootUsername }}' + password: '{{ .Values.env.mongoRegister.mongoInitdbRootPassword }}' + db: 'capif_users' + col: 'user' + host: '{{ .Values.env.mongoRegister.mongoHost }}' + port: '{{ .Values.env.mongoRegister.mongoPort }}' - ca_factory: { - "url": !ENV ${VAULT_HOSTNAME}, - "port": !ENV ${VAULT_PORT}, - "token": !ENV ${VAULT_ACCESS_TOKEN} - } + ca_factory: + url: !ENV "${VAULT_HOSTNAME}" + port: !ENV "${VAULT_PORT}" + token: !ENV "${VAULT_ACCESS_TOKEN}" - monitoring: { - "fluent_bit_host": fluent-bit, - "fluent_bit_port": 24224, - "opentelemetry_url": "otel-collector", - "opentelemetry_port": "55680", - "opentelemetry_max_queue_size": 8192, - "opentelemetry_schedule_delay_millis": 20000, - "opentelemetry_max_export_batch_size": 2048, - "opentelemetry_export_timeout_millis": 60000 - } \ No newline at end of file + monitoring: + fluent_bit_host: fluent-bit + fluent_bit_port: 24224 + opentelemetry_url: otel-collector + opentelemetry_port: 55680 + opentelemetry_max_queue_size: 8192 + opentelemetry_schedule_delay_millis: 20000 + opentelemetry_max_export_batch_size: 2048 + opentelemetry_export_timeout_millis: 60000 diff --git a/helm/04_capif_services/charts/ocf-api-provider-management/values.yaml b/helm/04_capif_services/charts/ocf-api-provider-management/values.yaml index b38cb0f..ba58fd6 100644 --- a/helm/04_capif_services/charts/ocf-api-provider-management/values.yaml +++ b/helm/04_capif_services/charts/ocf-api-provider-management/values.yaml @@ -20,12 +20,16 @@ env: vaultHostname: vault vaultPort: 8200 vaultAccessToken: dev-only-token + mongoHost: mongo + mongoPort: 27017 mongoInitdbRootUsername: root mongoInitdbRootPassword: example logLevel: "INFO" mongoRegister: mongoInitdbRootUsername: root mongoInitdbRootPassword: example + mongoHost: mongo-register + mongoPort: 27017 serviceAccount: # Specifies whether a service account should be created diff --git a/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml b/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml index 6fff198..41e6f60 100644 --- a/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml +++ b/helm/04_capif_services/charts/ocf-helper/templates/ocf-helper-configmap.yaml @@ -24,8 +24,7 @@ data: token: !ENV "${VAULT_ACCESS_TOKEN}" {{- if .Values.capifConfiguration }} - capif_configuration: -{{ .Values.capifConfiguration | toYaml | nindent 6 }} + capif_configuration: {{ .Values.capifConfiguration | toYaml | nindent 6 }} {{- end }} package_paths: diff --git a/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml b/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml index 0217710..7fcc25e 100644 --- a/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml +++ b/helm/04_capif_services/charts/ocf-publish-service-api/templates/configmap.yaml @@ -4,32 +4,29 @@ metadata: name: capif-published-configmap data: config.yaml: | - mongo: { - 'user': '{{ .Values.env.mongoInitdbRootUsername }}', - 'password': '{{ .Values.env.mongoInitdbRootPassword }}', - 'db': 'capif', - 'col': 'serviceapidescriptions', - 'certs_col': 'certs', - 'capif_provider_col': 'providerenrolmentdetails', - 'col_interconnected': 'interconnected', - 'col_capif_configuration': 'capif_configuration', - 'host': 'mongo', - 'port': "27017" - } + mongo: + user: '{{ .Values.env.mongoInitdbRootUsername }}' + password: '{{ .Values.env.mongoInitdbRootPassword }}' + db: 'capif' + col: 'serviceapidescriptions' + certs_col: 'certs' + capif_provider_col: 'providerenrolmentdetails' + col_interconnected: 'interconnected' + col_capif_configuration: 'capif_configuration' + host: '{{ .Values.env.mongoHost }}' + port: '{{ .Values.env.mongoPort }}' - monitoring: { - "fluent_bit_host": fluent-bit, - "fluent_bit_port": 24224, - "opentelemetry_url": "otel-collector", - "opentelemetry_port": "55680", - "opentelemetry_max_queue_size": 8192, - "opentelemetry_schedule_delay_millis": 20000, - "opentelemetry_max_export_batch_size": 2048, - "opentelemetry_export_timeout_millis": 60000 - } - - ca_factory: { - "url": !ENV ${VAULT_HOSTNAME}, - "port": !ENV ${VAULT_PORT}, - "token": !ENV ${VAULT_ACCESS_TOKEN}, - } \ No newline at end of file + monitoring: + fluent_bit_host: fluent-bit + fluent_bit_port: 24224 + opentelemetry_url: otel-collector + opentelemetry_port: 55680 + opentelemetry_max_queue_size: 8192 + opentelemetry_schedule_delay_millis: 20000 + opentelemetry_max_export_batch_size: 2048 + opentelemetry_export_timeout_millis: 60000 + + ca_factory: + url: !ENV "${VAULT_HOSTNAME}" + port: !ENV "${VAULT_PORT}" + token: !ENV "${VAULT_ACCESS_TOKEN}" \ No newline at end of file diff --git a/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml b/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml index 7ea8900..90a8f8f 100644 --- a/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml +++ b/helm/04_capif_services/charts/ocf-publish-service-api/values.yaml @@ -19,6 +19,8 @@ env: capifHostname: capif mongoInitdbRootUsername: root mongoInitdbRootPassword: example + mongoHost: mongo + mongoPort: 27017 vaultHostname: vault vaultPort: 8200 vaultAccessToken: dev-only-token diff --git a/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml b/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml index 9244ef6..e7fc7ee 100644 --- a/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml +++ b/helm/05_capif_register/charts/ocf-register/templates/configmap.yaml @@ -4,33 +4,32 @@ metadata: name: register-configmap data: config.yaml: |- - mongo: { - 'user': 'root', - 'password': 'example', - 'db': 'capif_users', - 'col': 'user', - 'col_capif_configuration': 'capif_configuration', - 'admins': 'admins', - 'host': '{{ .Values.env.mongoHost }}', - 'port': '{{ .Values.env.mongoPort }}' - } + mongo: + user: 'root' + password: 'example' + db: 'capif_users' + col: 'user' + col_capif_configuration: 'capif_configuration' + admins: 'admins' + host: '{{ .Values.env.mongoHost }}' + port: '{{ .Values.env.mongoPort }}' - ca_factory: { - "url": !ENV ${VAULT_HOSTNAME}, - "port": !ENV ${VAULT_PORT}, - "token": !ENV ${VAULT_ACCESS_TOKEN}, - } - ccf: { - "url": !ENV ${CAPIF_HOSTNAME}, - "helper_remove_user": "/helper/deleteEntities/" - } - register: { - register_uuid: '6ba7b810-9dad-11d1-80b4-00c04fd430c8', - refresh_expiration: 30, #days - token_expiration: 10, #mins - admin_users: {admin_user: "admin", - admin_pass: "password123"} - } + ca_factory: + url: !ENV "${VAULT_HOSTNAME}" + port: !ENV "${VAULT_PORT}" + token: !ENV "${VAULT_ACCESS_TOKEN}" + + ccf: + url: !ENV "${CAPIF_HOSTNAME}" + helper_remove_user: "/helper/deleteEntities/" + + register: + register_uuid: '6ba7b810-9dad-11d1-80b4-00c04fd430c8' + refresh_expiration: 30 #days + token_expiration: 10 #mins + admin_users: + admin_user: "admin" + admin_pass: "password123" {{- if .Values.capifConfiguration }} capif_configuration: {{ .Values.capifConfiguration | toYaml | nindent 6 }} -- GitLab