Merge "Add support for parameters to translate template"
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
|
||||
"""Common client utilities"""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
|
||||
|
||||
@@ -27,3 +28,18 @@ def env(*vars, **kwargs):
|
||||
if value:
|
||||
return value
|
||||
return kwargs.get('default', '')
|
||||
|
||||
|
||||
class KeyValueAction(argparse.Action):
|
||||
"""A custom action to parse arguments as key=value pairs. """
|
||||
|
||||
def __call__(self, parser, namespace, values, option_string=None):
|
||||
# Make sure we have an empty dict rather than None
|
||||
if getattr(namespace, self.dest, None) is None:
|
||||
setattr(namespace, self.dest, {})
|
||||
|
||||
# Add value if an assignment else remove it
|
||||
if '=' in values:
|
||||
getattr(namespace, self.dest, {}).update([values.split('=', 1)])
|
||||
else:
|
||||
getattr(namespace, self.dest, {}).pop(values, None)
|
||||
|
||||
@@ -19,6 +19,7 @@ import sys
|
||||
from cliff import command
|
||||
|
||||
from translator.hot.tosca_translator import TOSCATranslator
|
||||
from translator.osc import utils
|
||||
from translator.toscalib.tosca_template import ToscaTemplate
|
||||
|
||||
|
||||
@@ -45,6 +46,13 @@ class TranslateTemplate(command.Command):
|
||||
'--output-file',
|
||||
metavar='<output-file>',
|
||||
help='Path to place the translated content.')
|
||||
parser.add_argument(
|
||||
'--parameter',
|
||||
metavar='<key=value>',
|
||||
action=utils.KeyValueAction,
|
||||
help='Set a property for this template '
|
||||
'(repeat option to set multiple properties)',
|
||||
)
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
@@ -54,8 +62,11 @@ class TranslateTemplate(command.Command):
|
||||
sys.stdout.write('Could not find template file.')
|
||||
raise SystemExit
|
||||
|
||||
# TODO(stevemar): parsed_params doesn't default nicely
|
||||
parsed_params = {}
|
||||
if parsed_args.parameter:
|
||||
parsed_params = parsed_args.parameter
|
||||
else:
|
||||
parsed_params = {}
|
||||
|
||||
if parsed_args.template_type == "tosca":
|
||||
tosca = ToscaTemplate(parsed_args.template_file)
|
||||
translator = TOSCATranslator(tosca, parsed_params)
|
||||
|
||||
Reference in New Issue
Block a user