Exemplo n.º 1
0
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
Exemplo n.º 2
0
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