aboutsummaryrefslogtreecommitdiffstats
path: root/onap-client/onap_client/engine.py
diff options
context:
space:
mode:
Diffstat (limited to 'onap-client/onap_client/engine.py')
-rw-r--r--onap-client/onap_client/engine.py46
1 files changed, 34 insertions, 12 deletions
diff --git a/onap-client/onap_client/engine.py b/onap-client/onap_client/engine.py
index a352163..daac47d 100644
--- a/onap-client/onap_client/engine.py
+++ b/onap-client/onap_client/engine.py
@@ -37,11 +37,14 @@
import argparse
import json
+import logging
from onap_client.resource import Resource
-from onap_client.config import LOG as logger
from onap_client.client.clients import import_submodules
from onap_client.exceptions import InvalidSpecException, ResourceTypeNotFoundException
+from onap_client.client.clients import get_client
+
+logger = logging.getLogger("ONAP_CLIENT")
def dumper(obj):
@@ -70,7 +73,7 @@ def show_resource_spec(resource_name):
list_spec_resources()
-def load_spec(input_spec, validate_only=False, submit=True):
+def load_spec(input_spec, validate_only=False, submit=True, suppress_out=False, config=None):
try:
with open(input_spec, "r") as f:
jdata = json.loads(f.read())
@@ -79,7 +82,7 @@ def load_spec(input_spec, validate_only=False, submit=True):
raise
engine = SpecEngine()
- return engine.load_spec(jdata, validate_only=validate_only, distribute=submit)
+ return engine.load_spec(jdata, validate_only=validate_only, distribute=submit, suppress_out=suppress_out, config=config)
def spec_cli(args):
@@ -102,10 +105,18 @@ def spec_cli(args):
)
parser.add_argument(
+ "--oc-config", required=False, help="Path to configuration file for ONAP Client."
+ )
+
+ parser.add_argument(
"--no-submit", action="store_false", required=False, default=True, help="Dont execute submit() for each resource in spec."
)
parser.add_argument(
+ "--no-outputs", action="store_true", required=False, default=False, help="Don't return the full output from each created resource."
+ )
+
+ parser.add_argument(
"--list-spec-resources",
action="store_true",
required=False,
@@ -119,9 +130,9 @@ def spec_cli(args):
elif arguments.show_resource_spec:
show_resource_spec(arguments.show_resource_spec)
elif arguments.validate_spec:
- print(json.dumps(load_spec(arguments.validate_spec, validate_only=True), indent=4))
+ print(json.dumps(load_spec(arguments.validate_spec, validate_only=True, suppress_out=arguments.no_outputs), indent=4))
elif arguments.load_spec:
- load_spec(arguments.load_spec, submit=arguments.no_submit)
+ print(json.dumps(load_spec(arguments.load_spec, submit=arguments.no_submit, suppress_out=arguments.no_outputs, config=arguments.oc_config), indent=4))
class SpecEngine:
@@ -132,15 +143,23 @@ class SpecEngine:
def initialize(self):
import_submodules("onap_client")
- def load_spec(self, spec, distribute=True, validate_only=False):
+ def load_spec(self, spec, distribute=True, validate_only=False, suppress_out=False, config=None):
# print("loading spec {}".format(spec))
+
+ if config:
+ oc = get_client(config) # noqa: F841
+
self.spec = resolve_spec(spec)
self.validate(self.spec.get("spec", {}))
+ logger.info("Loading spec into spec engine:")
+ logger.info(json.dumps(self.spec, indent=4))
+
+ out = self.spec
if not validate_only:
- self._create(self.spec.get("spec", {}), distribute)
+ out = self._create(self.spec.get("spec", {}), distribute, suppress_out)
- return self.spec
+ return out
def validate(self, spec):
if not isinstance(spec, list):
@@ -174,7 +193,7 @@ class SpecEngine:
)
subclass.validate(resource_spec)
- def _create(self, spec, distribute):
+ def _create(self, spec, distribute, suppress_out):
full_engine_spec = []
for item_spec in spec:
resource_type = item_spec.get("type")
@@ -186,10 +205,13 @@ class SpecEngine:
)
full_spec = subclass.validate(resource_spec)
logger.debug(json.dumps(full_spec, indent=4))
- subclass.create_from_spec(full_spec, submit=distribute)
- full_engine_spec.append({"type": resource_type, "resource_spec": full_spec})
+ t = subclass.create_from_spec(full_spec, submit=distribute)
+ finished_spec = {"type": resource_type, "resource_spec": full_spec}
+ if not suppress_out:
+ finished_spec["output"] = t._output()
+ full_engine_spec.append(finished_spec)
- logger.info(json.dumps(full_engine_spec, indent=4))
+ return full_engine_spec
def resolve_spec(spec_dict):