X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=xapp_onboarder%2Fxapp_onboarder%2Fapi%2Fonboard.py;h=71b8f62a9cb5c7bfc1ccd2de544d361b7d5eb811;hb=cd4b9aaa9aa6f3f0bfef09c4808315f10a385310;hp=bdc80ebb47e707db2b3380e0630616dcec0e137d;hpb=873846987e07978e790f264341c58699c5c8dfb0;p=it%2Fdev.git diff --git a/xapp_onboarder/xapp_onboarder/api/onboard.py b/xapp_onboarder/xapp_onboarder/api/onboard.py index bdc80eb..71b8f62 100644 --- a/xapp_onboarder/xapp_onboarder/api/onboard.py +++ b/xapp_onboarder/xapp_onboarder/api/onboard.py @@ -16,18 +16,19 @@ import logging import json +import copy from jsonschema import ValidationError, SchemaError from jsonschema import validate, Draft7Validator from xapp_onboarder.helm_controller.xApp_builder import xApp, xAppError from xapp_onboarder.server import settings from xapp_onboarder.repo_manager.repo_manager import requests_retry_session, repo_manager from xapp_onboarder.api.models.response_models import error_message_model, response, status_message_model - +from xapp_onboarder.helm_controller.xapp_schema import schema as xapp_schema log = logging.getLogger(__name__) -def onboard(config_file, schema_file): +def onboard(config_file, controls_schema_file): if not repo_manager.is_repo_ready(): response_message = response(model=error_message_model, status_code=500, error_source="xapp_onboarder", @@ -35,6 +36,11 @@ def onboard(config_file, schema_file): status="Service not ready.") return response_message.get_return() + schema_file = copy.deepcopy(xapp_schema) + + if controls_schema_file: + schema_file["properties"]["controls"] = controls_schema_file + try: Draft7Validator.check_schema(schema_file) validate(config_file, schema_file) @@ -67,7 +73,7 @@ def onboard(config_file, schema_file): return response(model=status_message_model, status_code=201, status="Created").get_return() -def download_config_and_schema_and_onboard(config_file_url, schema_url): +def download_config_and_schema_and_onboard(config_file_url, controls_schema_url): if not repo_manager.is_repo_ready(): response_message = response(model=error_message_model, status_code=500, error_source="xapp_onboarder", @@ -96,24 +102,27 @@ def download_config_and_schema_and_onboard(config_file_url, schema_url): return response_message.get_return() config_file = json.loads(response_content.content) - try: - response_content = session.get(schema_url, timeout=settings.HTTP_TIME_OUT) - except Exception as err: - log.error(err.message) - response_message = response(model=error_message_model, status_code=500, - error_source="schema.json", - error_message=err.message, - status="Downloading schema.json failed") - return response_message.get_return() - else: - if response_content.status_code != 200: - error_message = "Wrong response code. {}, {}".format(response_content.status_code, response_content.content.decode("utf-8")) - log.error(error_message) + controls_schema_file = None + if controls_schema_url: + try: + response_content = session.get(controls_schema_url, timeout=settings.HTTP_TIME_OUT) + except Exception as err: + log.error(err.message) response_message = response(model=error_message_model, status_code=500, error_source="schema.json", - error_message=error_message, + error_message=err.message, status="Downloading schema.json failed") return response_message.get_return() - schema_file = json.loads(response_content.content) + else: + if response_content.status_code != 200: + error_message = "Wrong response code. {}, {}".format(response_content.status_code, response_content.content.decode("utf-8")) + log.error(error_message) + response_message = response(model=error_message_model, status_code=500, + error_source="schema.json", + error_message=error_message, + status="Downloading schema.json failed") + return response_message.get_return() + controls_schema_file = json.loads(response_content.content) + - return onboard(config_file, schema_file) + return onboard(config_file, controls_schema_file)