Merge "Integration test for metrics + bug fix"
authorAdam Israel <adam.israel@canonical.com>
Thu, 13 Sep 2018 16:20:21 +0000 (18:20 +0200)
committerGerrit Code Review <root@osm.etsi.org>
Thu, 13 Sep 2018 16:20:21 +0000 (18:20 +0200)
1  2 
n2vc/vnf.py

diff --combined n2vc/vnf.py
@@@ -332,6 -332,10 +332,10 @@@ class N2VC
          if 'rw_mgmt_ip' in params:
              rw_mgmt_ip = params['rw_mgmt_ip']
  
+         # initial_config = {}
+         if 'initial-config-primitive' not in params:
+             params['initial-config-primitive'] = {}
          initial_config = self._get_config_from_dict(
              params['initial-config-primitive'],
              {'<rw_mgmt_ip>': rw_mgmt_ip}
              if parameter['value'] == "<rw_mgmt_ip>":
                  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):