X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwcal%2Fplugins%2Fvala%2Frwcal_openstack%2Frift%2Frwcal%2Fopenstack%2Futils%2Fcompute.py;h=55382017dee623142b458bc3e40fcdfff1f9d0e9;hb=ee71ccf6da85650a8fbd2019293535082f017b78;hp=fc053c2276d5f90b25d180d81f3f7cf3eded3a97;hpb=9eae504f9fffaa02255241b1d93f6dc4b072926f;p=osm%2FSO.git diff --git a/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/utils/compute.py b/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/utils/compute.py index fc053c22..55382017 100644 --- a/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/utils/compute.py +++ b/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/utils/compute.py @@ -283,6 +283,12 @@ class ComputeUtils(object): } """ kwargs = dict() + metadata = dict() + + if vdu_params.has_field('node_id'): + metadata['rift_node_id'] = vdu_params.node_id + kwargs['metadata'] = metadata + if vdu_params.has_field('vdu_init') and vdu_params.vdu_init.has_field('userdata'): kwargs['userdata'] = vdu_params.vdu_init.userdata else: @@ -302,11 +308,15 @@ class ComputeUtils(object): else: kwargs['config_drive'] = False - if vdu_params.supplemental_boot_data.has_field('custom_meta_data'): - metadata = dict() - for cm in vdu_params.supplemental_boot_data.custom_meta_data: - metadata[cm] = cm.value - kwargs['metadata'] = metadata + try: + # Rift model only + if vdu_params.supplemental_boot_data.has_field('custom_meta_data'): + metadata = dict() + for cm in vdu_params.supplemental_boot_data.custom_meta_data: + metadata[cm.name] = cm.value + kwargs['metadata'] = metadata + except Exception as e: + pass return kwargs @@ -490,6 +500,38 @@ class ComputeUtils(object): else: return str() + def _parse_vdu_boot_config_data(self, vm_info): + """ + Parses VDU supplemental boot data + Arguments: + vm_info : A dictionary returned by novaclient library listing VM attributes + + Returns: + List of RwcalYang.VDUInfoParams_SupplementalBootData() + """ + supplemental_boot_data = None + node_id = None + if 'config_drive' in vm_info: + supplemental_boot_data = RwcalYang.VDUInfoParams_SupplementalBootData() + supplemental_boot_data.boot_data_drive = vm_info['config_drive'] + # Look for any metadata + if 'metadata' not in vm_info: + return node_id, supplemental_boot_data + if supplemental_boot_data is None: + supplemental_boot_data = RwcalYang.VDUInfoParams_SupplementalBootData() + for key, value in vm_info['metadata'].items(): + if key == 'rift_node_id': + node_id = value + else: + try: + # rift only + cm = supplemental_boot_data.custom_meta_data.add() + cm.name = key + cm.value = str(value) + except Exception as e: + pass + return node_id, supplemental_boot_data + def _parse_vdu_volume_info(self, vm_info): """ Get VDU server group information @@ -595,6 +637,8 @@ class ComputeUtils(object): ha = vdu.host_aggregate.add() ha.from_dict(aggr.as_dict()) + vdu.node_id, vdu.supplemental_boot_data = self._parse_vdu_boot_config_data(vm_info) + cp_list = self._parse_vdu_cp_info(vdu.vdu_id) for cp in cp_list: vdu.connection_points.append(cp)