def get_mgmt_driver(template): mgmt_driver = None for nt in template.nodetemplates: if nt.type_definition.is_derived_from(TACKERVDU): if (mgmt_driver and nt.get_property_value('mgmt_driver') != mgmt_driver): raise vnfm.MultipleMGMTDriversSpecified() else: mgmt_driver = nt.get_property_value('mgmt_driver') return mgmt_driver
def _populate_flavour_data(tosca): flavours = [] if tosca.nested_tosca_templates_with_topology: for tp in tosca.nested_tosca_templates_with_topology: sw_image_list = [] # Setting up flavour data flavour_id = tp.substitution_mappings.properties.get('flavour_id') if flavour_id: flavour = {'flavour_id': flavour_id} tpl_dict = dict() # get from top-vnfd data for key, value in tosca.tpl.items(): if key in CONF.vnf_package.get_top_list: tpl_dict[key] = value # get from lower-vnfd data tpl_dict['topology_template'] = dict() tpl_dict['topology_template']['policies'] = \ tp.tpl.get('policies') tpl_dict['topology_template']['node_templates'] = \ deepcopy(tp.tpl.get('node_templates')) for e_node in CONF.vnf_package.exclude_node: if tpl_dict['topology_template']['node_templates'].\ get(e_node): del (tpl_dict['topology_template']['node_templates'] [e_node]) tpl_dict['topology_template']['inputs'] = \ deepcopy(tp.tpl.get('inputs')) for del_input in CONF.vnf_package.del_input_list: if tpl_dict['topology_template']['inputs'].get(del_input): del tpl_dict['topology_template']['inputs'][del_input] if len(tpl_dict['topology_template']['inputs']) < 1: del tpl_dict['topology_template']['inputs'] flavour.update({'tpl_dict': tpl_dict}) instantiation_levels = _get_instantiation_levels(tp.policies) if instantiation_levels: flavour.update( {'instantiation_levels': instantiation_levels}) mgmt_driver = None for template_name, node_tpl in \ tp.tpl.get('node_templates').items(): # check the flavour property in vnf data _update_flavour_data_from_vnf(tp.custom_defs, node_tpl, flavour) if node_tpl['type'] in CONF.vnf_package.get_lower_list: if node_tpl['type'] == "tosca.nodes.nfv.VDU.Tacker": # get mgmt_driver mgmt_driver_flavour = \ node_tpl['properties'].get('mgmt_driver') if mgmt_driver_flavour: if mgmt_driver and \ mgmt_driver_flavour != mgmt_driver: raise vnfm.MultipleMGMTDriversSpecified() mgmt_driver = mgmt_driver_flavour flavour.update({'mgmt_driver': mgmt_driver}) for template_name, node_tpl in \ tp.tpl.get('node_templates').items(): # Update the software image data sw_image = _get_software_image(tp.custom_defs, template_name, node_tpl) if sw_image: sw_image_list.append(sw_image) # Add software images for flavour if sw_image_list: flavour.update({'sw_images': sw_image_list}) if flavour: flavours.append(flavour) else: _get_flavour_data(tosca.topology_template, flavours) return flavours