summaryrefslogtreecommitdiffstats
path: root/nfvparser/toscaparser/shell.py
diff options
context:
space:
mode:
authorshangxdy <shang.xiaodong@zte.com.cn>2017-09-26 20:40:39 +0800
committershangxdy <shang.xiaodong@zte.com.cn>2017-09-26 20:47:53 +0800
commit000ea52b78b072435f01d67dd799023117e67a2e (patch)
tree1f14cdb4485e2184904b553b82afd9e7139a18e5 /nfvparser/toscaparser/shell.py
parent53065490134870ead778bff590cfd9e43ddd9f77 (diff)
Sync code from nfv-toscaprser
Currently nfv-toscaparser has published the regular version of 0.5.1 the patch will synchronize the code. JIRA: MODELING-23 Change-Id: If95579fc366b69b2b14b2e441ff9a3e6807e3820 Signed-off-by: shangxdy <shang.xiaodong@zte.com.cn>
Diffstat (limited to 'nfvparser/toscaparser/shell.py')
-rw-r--r--nfvparser/toscaparser/shell.py54
1 files changed, 42 insertions, 12 deletions
diff --git a/nfvparser/toscaparser/shell.py b/nfvparser/toscaparser/shell.py
index 1d98f1a..88c7473 100644
--- a/nfvparser/toscaparser/shell.py
+++ b/nfvparser/toscaparser/shell.py
@@ -12,9 +12,11 @@
import argparse
+import logging
import os
import sys
+from toscaparser.common.exception import ValidationError
from toscaparser.tosca_template import ToscaTemplate
from toscaparser.utils.gettextutils import _
import toscaparser.utils.urlutils
@@ -38,6 +40,8 @@ e.g.
--template-file=toscaparser/tests/data/CSAR/csar_hello_world.zip
"""
+log = logging.getLogger("tosca.model")
+
class ParserShell(object):
@@ -49,41 +53,67 @@ class ParserShell(object):
required=True,
help=_('YAML template or CSAR file to parse.'))
+ parser.add_argument('-nrpv', dest='no_required_paras_check',
+ action='store_true', default=False,
+ help=_('Ignore input parameter validation '
+ 'when parse template.'))
+
+ parser.add_argument('--debug', dest='debug_mode',
+ action='store_true', default=False,
+ help=_('debug mode for print more details '
+ 'other than raise exceptions when '
+ 'errors happen as possible'))
+
return parser
def main(self, argv):
parser = self.get_parser(argv)
(args, extra_args) = parser.parse_known_args(argv)
path = args.template_file
+ nrpv = args.no_required_paras_check
+ debug = args.debug_mode
+
if os.path.isfile(path):
- self.parse(path)
+ self.parse(path, no_required_paras_check=nrpv, debug_mode=debug)
elif toscaparser.utils.urlutils.UrlUtils.validate_url(path):
- self.parse(path, False)
+ self.parse(path, False,
+ no_required_paras_check=nrpv,
+ debug_mode=debug)
else:
raise ValueError(_('"%(path)s" is not a valid file.')
% {'path': path})
- def parse(self, path, a_file=True):
- output = None
- tosca = ToscaTemplate(path, None, a_file)
-
- version = tosca.version
- if tosca.version:
+ def parse(self, path, a_file=True, no_required_paras_check=False,
+ debug_mode=False):
+ nrpv = no_required_paras_check
+ try:
+ tosca = ToscaTemplate(path, None, a_file,
+ no_required_paras_check=nrpv,
+ debug_mode=debug_mode)
+ except ValidationError as e:
+ log.error(e.message)
+ if debug_mode:
+ print(e.message)
+ else:
+ raise e
+
+ version = tosca.version if tosca else "unknown"
+ if tosca and tosca.version:
print("\nversion: " + version)
- if hasattr(tosca, 'description'):
+ if tosca and hasattr(tosca, 'description'):
description = tosca.description
if description:
print("\ndescription: " + description)
- if hasattr(tosca, 'inputs'):
+ if tosca and hasattr(tosca, 'inputs'):
inputs = tosca.inputs
if inputs:
print("\ninputs:")
for input in inputs:
print("\t" + input.name)
- if hasattr(tosca, 'nodetemplates'):
+ if tosca and hasattr(tosca, 'nodetemplates'):
nodetemplates = tosca.nodetemplates
if nodetemplates:
print("\nnodetemplates:")
@@ -102,7 +132,7 @@ class ParserShell(object):
for trigger in policy.triggers:
print("\ttrigger name:" + trigger.name)'''
- if hasattr(tosca, 'outputs'):
+ if tosca and hasattr(tosca, 'outputs'):
outputs = tosca.outputs
if outputs:
print("\noutputs:")