X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=n2vc%2Fvnf.py;h=35bb215b44d4c8799764259262e983f09d63a8e6;hb=refs%2Fchanges%2F79%2F6379%2F1;hp=d6c87dc34fcfa89356fbffc7d9717c0b9567308e;hpb=42d88e6b4854c4088e8b2c42ef5155274612db97;p=osm%2FN2VC.git diff --git a/n2vc/vnf.py b/n2vc/vnf.py index d6c87dc..35bb215 100644 --- a/n2vc/vnf.py +++ b/n2vc/vnf.py @@ -397,7 +397,7 @@ class N2VC: **primitives[primitive]['parameters'], ) except N2VCPrimitiveExecutionFailed as e: - self.debug.log( + self.log.debug( "[N2VC] Exception executing primitive: {}".format(e) ) raise @@ -447,7 +447,7 @@ class N2VC: await model.disconnect() except Exception as e: self.log.debug("Caught exception while executing primitive: {}".format(e)) - raise e + raise N2VCPrimitiveExecutionFailed(e) return uuid async def RemoveCharms(self, model_name, application_name, callback=None, *callback_args): @@ -554,7 +554,50 @@ class N2VC: if parameter['value'] == "": params[param] = str(values[parameter['value']]) else: - params[param] = str(parameter['value']) + """ + The Juju API uses strictly typed data-types, so we must make + sure the parameters from the VNFD match the appropriate type. + + The honus will still be on the operator, to make sure the + data-type in the VNFD matches the one in the charm. N2VC will + raise N2VCPrimitiveExecutionFailed when there is a mismatch. + + There are three data types supported by the YANG model: + # - STRING + # - INTEGER + # - BOOLEAN + + Each parameter will look like this: + { + 'seq': '3', + 'name': 'testint', + 'parameter': [ + { + 'name': 'interval', + 'data-type': 'INTEGER', + 'value': 20 + } + ] + } + """ + + if 'value' in parameter: + # String is the default format + val = str(parameter['value']) + + # If the data-type is explicitly set, cast to that type. + if 'data-type' in parameter: + dt = parameter['data-type'].upper() + if dt == "INTEGER": + val = int(val) + + elif dt == "BOOLEAN": + if val in ['true', 'false', '0', '1']: + val = True + else: + val = False + + params[param] = val return params def _get_config_from_yang(self, config_primitive, values):