From: Adam Israel Date: Thu, 13 Sep 2018 16:20:21 +0000 (+0200) Subject: Merge "Integration test for metrics + bug fix" X-Git-Tag: v5.0.0~13 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=commitdiff_plain;h=427f57893cb4bf8aebc0b6f56d0cb3f178d23cf1;hp=5afe05434f65dabf514636eff28cbb2069ccb419 Merge "Integration test for metrics + bug fix" --- diff --git a/n2vc/vnf.py b/n2vc/vnf.py index d3ad90c..f642ead 100644 --- a/n2vc/vnf.py +++ b/n2vc/vnf.py @@ -587,7 +587,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): diff --git a/setup.py b/setup.py index a4cceb1..1450a15 100644 --- a/setup.py +++ b/setup.py @@ -26,6 +26,7 @@ setup( 'pyyaml>=3.0,<4.0', 'theblues>=0.3.8,<1.0', 'websockets>=4.0,<5.0', + 'paramiko', ], include_package_data=True, maintainer='', diff --git a/tests/test_primitive_non-string_parameter.py b/tests/test_primitive_non-string_parameter.py index bae8379..9a2d5ad 100644 --- a/tests/test_primitive_non-string_parameter.py +++ b/tests/test_primitive_non-string_parameter.py @@ -89,20 +89,25 @@ vnfd:vnfd-catalog: name: config parameter: - name: ssh-hostname + data-type: STRING value: - name: ssh-username + data-type: STRING value: ubuntu - name: ssh-password + data-type: STRING value: ubuntu - seq: '2' name: touch parameter: - name: filename + data-type: STRING value: '/home/ubuntu/first-touch-dataVM' - seq: '3' name: testint parameter: - name: interval + data-type: INTEGER value: 20 config-primitive: - name: touch