summaryrefslogtreecommitdiffstats
path: root/adapter/acumos/aoconversion/spec_gen.py
diff options
context:
space:
mode:
Diffstat (limited to 'adapter/acumos/aoconversion/spec_gen.py')
-rw-r--r--adapter/acumos/aoconversion/spec_gen.py47
1 files changed, 39 insertions, 8 deletions
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: