From f3637436673c64344e9fa6828cb907e8d101bf3e Mon Sep 17 00:00:00 2001 From: shabs2020 Date: Mon, 6 Dec 2021 09:35:52 +0100 Subject: Acumos Adapter updates to support v3 schema Enhanced Adapter to support component spec v3 schema of Istanbul release Additionally corrected config file for no_proxy variable Issue-ID: DCAEGEN2-2877 Signed-off-by: shabs2020 Change-Id: Ie6f2decb6afcd1e164fafab6fd943d6b6c8e7cf0 Signed-off-by: shabs2020 --- adapter/acumos/aoconversion/convert.py | 3 +- adapter/acumos/aoconversion/docker_gen.py | 4 +-- adapter/acumos/aoconversion/scanner.py | 1 - adapter/acumos/aoconversion/spec_gen.py | 47 +++++++++++++++++++++++++------ 4 files changed, 43 insertions(+), 12 deletions(-) (limited to 'adapter/acumos/aoconversion') diff --git a/adapter/acumos/aoconversion/convert.py b/adapter/acumos/aoconversion/convert.py index e41820a..305dd37 100644 --- a/adapter/acumos/aoconversion/convert.py +++ b/adapter/acumos/aoconversion/convert.py @@ -2,6 +2,7 @@ # org.onap.dcae # ============================================================================= # Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. +# Copyright (c) 2021 highstreet technologies GmbH. All rights reserved. # ============================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,5 +30,5 @@ def gen_dcae_artifacts_for_model(config, model_name, model_version="latest"): model_repo_path = config.tmpdir docker_uri = docker_gen.build_and_push_docker(config, model_name, model_version) data_formats = dataformat_gen.generate_dcae_data_formats(model_repo_path, model_name) - spec = spec_gen.generate_spec(model_repo_path, model_name, data_formats, docker_uri) + spec = spec_gen.generate_spec(model_repo_path, model_name, data_formats, model_version) return docker_uri, data_formats, spec diff --git a/adapter/acumos/aoconversion/docker_gen.py b/adapter/acumos/aoconversion/docker_gen.py index 07cc9d7..5f497c9 100644 --- a/adapter/acumos/aoconversion/docker_gen.py +++ b/adapter/acumos/aoconversion/docker_gen.py @@ -2,7 +2,6 @@ # org.onap.dcae # ============================================================================= # Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. -# ============================================================================= # Copyright (c) 2021 highstreet technologies GmbH. All rights reserved. # ============================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); @@ -44,7 +43,8 @@ def _generate_dockerfile(meta, model_name, http_proxy, https_proxy, no_proxy): ENV no_proxy={no_proxy} ENV NO_PROXY={no_proxy} RUN pip install -r /app/requirements.txt && \ - pip install acumos_dcae_model_runner + pip install acumos_dcae_model_runner && \ + pip install pyyaml ENV DCAEPORT=10000 EXPOSE $DCAEPORT diff --git a/adapter/acumos/aoconversion/scanner.py b/adapter/acumos/aoconversion/scanner.py index 18dd701..f8b45312 100644 --- a/adapter/acumos/aoconversion/scanner.py +++ b/adapter/acumos/aoconversion/scanner.py @@ -2,7 +2,6 @@ # org.onap.dcae # ============================================================================= # Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved. -# ============================================================================= # Copyright (c) 2021 highstreet technologies GmbH. All rights reserved. # ============================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/adapter/acumos/aoconversion/spec_gen.py b/adapter/acumos/aoconversion/spec_gen.py index a08b720..e3f2c82 100644 --- a/adapter/acumos/aoconversion/spec_gen.py +++ b/adapter/acumos/aoconversion/spec_gen.py @@ -21,7 +21,6 @@ Generates DCAE component specs """ - import json from jsonschema import validate from aoconversion import utils @@ -38,12 +37,12 @@ def _get_format_version(target_name, data_formats): return df["self"]["version"] -def _generate_spec(model_name, meta, dcae_cs_schema, data_formats, docker_uri): +def _generate_spec(model_name, meta, dcae_cs_schema, data_formats, model_version): """ Function that generates the component spec from the model metadata and docker info Broken out to be unit-testable. """ - + docker_uri = "{}:{}".format(model_name, model_version) spec = { "self": { "version": "1.0.0", # hopefully we get this from somewhere and not hardcode this @@ -54,7 +53,13 @@ def _generate_spec(model_name, meta, dcae_cs_schema, data_formats, docker_uri): "services": {"calls": [], "provides": []}, "streams": {"subscribes": [], "publishes": []}, "parameters": [], - "auxilary": {"healthcheck": {"type": "http", "endpoint": "/healthcheck"}}, + "auxilary": {"helm": {"service": {"type": "ClusterIP", + "name": model_name, + "has_internal_only_ports": "true", + "ports": [{"name": "http", "port": 8443, "plain_port": 8080, + "port_protocol": "http"}]}}, + "healthcheck": {"type": "HTTP", "interval": "15s", "timeout": "1s", "port": 8080, + "endpoint": "/healthcheck"}}, "artifacts": [{"type": "docker image", "uri": docker_uri}], } @@ -62,7 +67,6 @@ def _generate_spec(model_name, meta, dcae_cs_schema, data_formats, docker_uri): # each model method gets a subscruber and a publisher, using the methood name pstype = "message_router" for method in meta["methods"]: - df_in_name = utils.validate_format(meta, method, "input") subscriber = { "config_key": "{0}_subscriber".format(method), @@ -82,21 +86,48 @@ def _generate_spec(model_name, meta, dcae_cs_schema, data_formats, docker_uri): "type": pstype, } + publisher = { + "config_key": "{0}_publisher".format(method), + "format": df_out_name, + "version": _get_format_version(df_out_name, data_formats), + "type": pstype, + } + parameter_subscriber = { + "name": "streams_subscribes", + "value": "{{\"{0}_subscriber\":{{\"dmaap_info\":{{\"topic_url\":\"http://message-router:3904/events/unauthenticated.{1}_In\"}},\"type\":\"message_router\"}}}}".format( + method, model_name), + + "description": "standard http port collector will open for listening;", + "sourced_at_deployment": False, + "policy_editable": False, + "designer_editable": False + } + paramter_publisher = { + "name": "streams_publishes", + "value": "{{\"{0}_publisher\":{{\"dmaap_info\":{{\"topic_url\":\"http://message-router:3904/events/unauthenticated.{1}_Out\"}},\"type\":\"message_router\"}}}}".format( + method, model_name), + "description": "standard http port collector will open for listening;", + "sourced_at_deployment": False, + "policy_editable": False, + "designer_editable": False + } spec["streams"]["publishes"].append(publisher) + spec["parameters"].append(parameter_subscriber) + spec["parameters"].append(paramter_publisher) # Validate that we have a valid spec validate(instance=spec, schema=dcae_cs_schema) - return spec -def generate_spec(model_repo_path, model_name, data_formats, docker_uri): +def generate_spec(model_repo_path, model_name, data_formats, model_version): """ Generate and write the component spec to disk Returns the spec """ spec = _generate_spec( - model_name, utils.get_metadata(model_repo_path, model_name), utils.component_schema.get(), data_formats, docker_uri + model_name, utils.get_metadata(model_repo_path, model_name), utils.component_schema.get(), data_formats, + model_version ) fname = "{0}_dcae_component_specification.json".format(model_name) with open("{0}/{1}".format(model_repo_path, fname), "w") as f: -- cgit 1.2.3-korg