Loading services/docker-compose-capif.yml +1 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ services: restart: unless-stopped volumes: - ${SERVICES_DIR}/helper/config.yaml:/usr/src/app/config.yaml - ${SERVICES_DIR}/helper/helper_service/certs:/usr/src/app/helper_service/certs extra_hosts: - host.docker.internal:host-gateway - fluent-bit:host-gateway Loading services/helper/config.yaml +28 −19 Original line number Diff line number Diff line mongo: { 'user': 'root', 'password': 'example', 'db': 'capif', 'invoker_col': 'invokerdetails', 'provider_col': 'providerenrolmentdetails', 'col_services': "serviceapidescriptions", 'col_security': "security", 'col_event': "eventsdetails", 'col_capif_configuration': "capif_configuration", 'host': 'mongo', 'port': "27017" } mongo: user: root password: example db: capif invoker_col: invokerdetails provider_col: providerenrolmentdetails col_services: serviceapidescriptions col_security: security col_event: eventsdetails col_capif_configuration: capif_configuration host: mongo port: 27017 ca_factory: url: vault port: 8200 token: dev-only-token verify: False ca_factory: { "url": "vault", "port": "8200", "token": "dev-only-token", "verify": False } capif_configuration: config_description: Default CAPIF Configuration Loading @@ -36,3 +36,12 @@ capif_configuration: oauth: 1 pki: 2 psk: 3 package_paths: helper_api: path: /api openapi_file: api/openapi/openapi.yaml configuration_api: path: /configuration openapi_file: configuration/openapi/openapi.yaml services/helper/helper_service/app.py +40 −3 Original line number Diff line number Diff line Loading @@ -4,12 +4,27 @@ import os import requests from config import Config from controllers.helper_controller import helper_routes from pathlib import Path from db.db import MongoDatabse import connexion import sys from flask import Flask from OpenSSL.crypto import FILETYPE_PEM, TYPE_RSA, PKey, X509Req, dump_certificate_request, dump_privatekey from asgiref.wsgi import WsgiToAsgi app = Flask(__name__) # --- Paths setup: make 'services' discoverable so "import api..." works --- BASE_DIR = Path(__file__).resolve().parent SERVICES_DIR = BASE_DIR / "services" # Insert services directory at front of sys.path if SERVICES_DIR.is_dir(): services_path_str = str(SERVICES_DIR) if services_path_str not in sys.path: sys.path.insert(0, services_path_str) else: raise RuntimeError(f"Services directory not found at {SERVICES_DIR!s}") app = connexion.App(__name__, specification_dir=str(SERVICES_DIR)) config = Config().get_config() # Connect MongoDB and get TTL for superadmin certificate Loading Loading @@ -77,7 +92,29 @@ cert_file = open("certs/ca_root.crt", 'wb') cert_file.write(bytes(ca_root, 'utf-8')) cert_file.close() app.register_blueprint(helper_routes) app.logger.setLevel(numeric_level) package_paths = config.get("package_paths", {}) if not package_paths: logger.error("No package paths defined in configuration.") raise Exception("No package paths defined in configuration.") # Add API endpoints app.add_api( package_paths["configuration_api"]["openapi_file"], arguments={"title": "Helper Configuration API"}, pythonic_params=True, base_path=package_paths["configuration_api"]["path"] ) app.add_api( package_paths["helper_api"]["openapi_file"], arguments={"title": "Helper API"}, pythonic_params=True, base_path=package_paths["helper_api"]["path"] ) app.app.logger.setLevel(numeric_level) asgi_app = WsgiToAsgi(app) No newline at end of file services/helper/helper_service/generate.sh 0 → 100755 +64 −0 Original line number Diff line number Diff line #!/bin/bash set -e rm -rf services/configuration services/api # Generate API 1 openapi-generator generate \ -i openapi_helper_configuration.yaml \ -g python-flask \ -o services/configuration \ --additional-properties=packageName=configuration # Generate API 2 openapi-generator generate \ -i openapi_helper_api.yaml \ -g python-flask \ -o services/api \ --additional-properties=packageName=api # ✅ Move generated inner folder to root service folder mv services/configuration/configuration/* services/configuration/ rm -rf services/configuration/configuration mv services/api/api/* services/api/ rm -rf services/api/api # 🧹 Files to remove FILES_TO_DELETE=( ".dockerignore" ".gitignore" ".openapi-generator-ignore" ".travis.yml" "Dockerfile" "git_push.sh" "README.md" "requirements.txt" "setup.py" "test-requirements.txt" "tox.ini" ) # 🗑 Directories to remove DIRS_TO_DELETE=( ".openapi-generator" ".github" "test" "docs" ) for service in services/configuration services/api; do # Remove files for file in "${FILES_TO_DELETE[@]}"; do rm -f "$service/$file" done # Remove directories for dir in "${DIRS_TO_DELETE[@]}"; do rm -rf "$service/$dir" done done echo "✅ Services generated, reorganized and cleaned successfully." services/helper/helper_service/openapi_helper_api.yaml 0 → 100644 +1390 −0 File added.Preview size limit exceeded, changes collapsed. Show changes Loading
services/docker-compose-capif.yml +1 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ services: restart: unless-stopped volumes: - ${SERVICES_DIR}/helper/config.yaml:/usr/src/app/config.yaml - ${SERVICES_DIR}/helper/helper_service/certs:/usr/src/app/helper_service/certs extra_hosts: - host.docker.internal:host-gateway - fluent-bit:host-gateway Loading
services/helper/config.yaml +28 −19 Original line number Diff line number Diff line mongo: { 'user': 'root', 'password': 'example', 'db': 'capif', 'invoker_col': 'invokerdetails', 'provider_col': 'providerenrolmentdetails', 'col_services': "serviceapidescriptions", 'col_security': "security", 'col_event': "eventsdetails", 'col_capif_configuration': "capif_configuration", 'host': 'mongo', 'port': "27017" } mongo: user: root password: example db: capif invoker_col: invokerdetails provider_col: providerenrolmentdetails col_services: serviceapidescriptions col_security: security col_event: eventsdetails col_capif_configuration: capif_configuration host: mongo port: 27017 ca_factory: url: vault port: 8200 token: dev-only-token verify: False ca_factory: { "url": "vault", "port": "8200", "token": "dev-only-token", "verify": False } capif_configuration: config_description: Default CAPIF Configuration Loading @@ -36,3 +36,12 @@ capif_configuration: oauth: 1 pki: 2 psk: 3 package_paths: helper_api: path: /api openapi_file: api/openapi/openapi.yaml configuration_api: path: /configuration openapi_file: configuration/openapi/openapi.yaml
services/helper/helper_service/app.py +40 −3 Original line number Diff line number Diff line Loading @@ -4,12 +4,27 @@ import os import requests from config import Config from controllers.helper_controller import helper_routes from pathlib import Path from db.db import MongoDatabse import connexion import sys from flask import Flask from OpenSSL.crypto import FILETYPE_PEM, TYPE_RSA, PKey, X509Req, dump_certificate_request, dump_privatekey from asgiref.wsgi import WsgiToAsgi app = Flask(__name__) # --- Paths setup: make 'services' discoverable so "import api..." works --- BASE_DIR = Path(__file__).resolve().parent SERVICES_DIR = BASE_DIR / "services" # Insert services directory at front of sys.path if SERVICES_DIR.is_dir(): services_path_str = str(SERVICES_DIR) if services_path_str not in sys.path: sys.path.insert(0, services_path_str) else: raise RuntimeError(f"Services directory not found at {SERVICES_DIR!s}") app = connexion.App(__name__, specification_dir=str(SERVICES_DIR)) config = Config().get_config() # Connect MongoDB and get TTL for superadmin certificate Loading Loading @@ -77,7 +92,29 @@ cert_file = open("certs/ca_root.crt", 'wb') cert_file.write(bytes(ca_root, 'utf-8')) cert_file.close() app.register_blueprint(helper_routes) app.logger.setLevel(numeric_level) package_paths = config.get("package_paths", {}) if not package_paths: logger.error("No package paths defined in configuration.") raise Exception("No package paths defined in configuration.") # Add API endpoints app.add_api( package_paths["configuration_api"]["openapi_file"], arguments={"title": "Helper Configuration API"}, pythonic_params=True, base_path=package_paths["configuration_api"]["path"] ) app.add_api( package_paths["helper_api"]["openapi_file"], arguments={"title": "Helper API"}, pythonic_params=True, base_path=package_paths["helper_api"]["path"] ) app.app.logger.setLevel(numeric_level) asgi_app = WsgiToAsgi(app) No newline at end of file
services/helper/helper_service/generate.sh 0 → 100755 +64 −0 Original line number Diff line number Diff line #!/bin/bash set -e rm -rf services/configuration services/api # Generate API 1 openapi-generator generate \ -i openapi_helper_configuration.yaml \ -g python-flask \ -o services/configuration \ --additional-properties=packageName=configuration # Generate API 2 openapi-generator generate \ -i openapi_helper_api.yaml \ -g python-flask \ -o services/api \ --additional-properties=packageName=api # ✅ Move generated inner folder to root service folder mv services/configuration/configuration/* services/configuration/ rm -rf services/configuration/configuration mv services/api/api/* services/api/ rm -rf services/api/api # 🧹 Files to remove FILES_TO_DELETE=( ".dockerignore" ".gitignore" ".openapi-generator-ignore" ".travis.yml" "Dockerfile" "git_push.sh" "README.md" "requirements.txt" "setup.py" "test-requirements.txt" "tox.ini" ) # 🗑 Directories to remove DIRS_TO_DELETE=( ".openapi-generator" ".github" "test" "docs" ) for service in services/configuration services/api; do # Remove files for file in "${FILES_TO_DELETE[@]}"; do rm -f "$service/$file" done # Remove directories for dir in "${DIRS_TO_DELETE[@]}"; do rm -rf "$service/$dir" done done echo "✅ Services generated, reorganized and cleaned successfully."
services/helper/helper_service/openapi_helper_api.yaml 0 → 100644 +1390 −0 File added.Preview size limit exceeded, changes collapsed. Show changes