示例#1
0
 def _get_nova_flavor(self, name, vdu_data, vnf_data):
     resource_type = 'OS::Nova::Flavor'
     resource_prop = {
         'flavorid': str(vnf_data['deploymentFlavour'][0]['flavourId']),
         'name': str(name),
         'is_public': False
     }
     # virtualMemory and virtualCpu properties
     if 'virtualComputeDesc' in vdu_data and vdu_data[
             'virtualComputeDesc'] is not None:
         for vcd in vnf_data['virtualComputeDesc']:
             if vcd['virtualComputeDescId'] == vdu_data[
                     'virtualComputeDesc']:
                 resource_prop['ram'] = int(
                     vcd['virtualMemory']['virtualMemSize'])
                 resource_prop['vcpus'] = int(
                     vcd['virtualCpu']['numVirtualCpu'])
     # virtualStorageDesc
     if 'virtualStorageDesc' in vdu_data and vdu_data[
             'virtualStorageDesc'] is not None:
         for vsd in vnf_data['virtualStorageDesc']:
             if vsd['id'] == vdu_data['virtualStorageDesc']:
                 resource_prop['disk'] = str(vsd['sizeOfStorage'])
                 resource_prop['swap'] = 0
     new_hot_resource = HotResource(name, resource_type, resource_prop)
     return new_hot_resource
示例#2
0
    def _get_neutron_port(self, intcpd, vnf_data):
        resource_type = 'OS::Neutron::Port'
        resource_prop = {}
        name = intcpd['cpdId']
        network_name = intcpd['intVirtualLinkDesc']

        extCpd = self._isIntCpd_conn_extCpd(intcpd, vnf_data)
        if extCpd:
            neutron_elem = self._translate_vnfExtCpd(extCpd, vnf_data)
        else:
            neutron_elem = self._get_neutron_net(network_name, vnf_data)
        self.hot_template.add_resource(network_name, neutron_elem)

        metadata_list = vnf_data['modifiableAttributes']['metadata']
        for metadata in metadata_list:
            if 'CPIPv4FixedIP' in metadata:
                for index, fixed_ip in enumerate(metadata['CPIPv4FixedIP']):

                    if name in fixed_ip:
                        if 'fixed_ips' not in resource_prop:
                            resource_prop['fixed_ips'] = []
                        resource_prop['fixed_ips'].append(
                            {'ip_address': str(fixed_ip[name])})
                        # print "SUBNET for cpid:", name, network_name
                        subnet_name = 'subnet_' + name + '_' + str(index)
                        # neutron_subnet = self._get_resource_subnet(subnet_name, intcpd, vnf_data)
                        # self.hot_template.add_resource(subnet_name, neutron_subnet)
            if 'properties' in metadata:
                for prop in metadata['properties']:
                    if name in prop:
                        meta_prop = dict(pair for d in prop[name]
                                         for pair in d.items())
                        resource_prop.update(meta_prop)
        if 'addressData' in intcpd:
            for addr in intcpd['addressData']:
                if 'l2AddressData' in addr:
                    resource_prop['mac_address'] = str(addr['l2AddressData'])
                if 'l3AddressData' in addr and addr['l3AddressData'][
                        'floatingIpActivated']:
                    if 'association' in addr['l3AddressData'] and addr[
                            'l3AddressData']['association']:
                        float_name = name + "_floating_ip_association"
                        neutron_floating_ip = self._get_floating_ip_association(
                            float_name, intcpd, vnf_data)
                        self.hot_template.add_resource(float_name,
                                                       neutron_floating_ip)
                    else:
                        float_name = name + "_floating_ip"
                        neutron_floating_ip = self._get_floating_ip(
                            float_name, intcpd, vnf_data)
                        self.hot_template.add_resource(float_name,
                                                       neutron_floating_ip)
        if 'network' in resource_prop:
            resource_prop['network']['get_resource'] = str(network_name)
        else:
            resource_prop['network'] = {'get_resource': str(network_name)}
        new_hot_resource = HotResource(name, resource_type, resource_prop)
        return new_hot_resource
示例#3
0
 def _get_neutron_provider_net(self, ext_cpd, vnf_data):
     resource_type = 'OS::Neutron::ProviderNet'
     resource_prop = {'name': str(ext_cpd['intVirtualLinkDesc'])}
     meta_pro = self._get_properties_from_metadata(ext_cpd['cpdId'],
                                                   'properties', vnf_data)
     resource_prop.update(meta_pro)
     new_hot_resource = HotResource(ext_cpd['intVirtualLinkDesc'],
                                    resource_type, resource_prop)
     return new_hot_resource
示例#4
0
 def _translate_vdu(self, vdu_data, vnf_data):
     log.debug('_translate_vdu id: %s', vdu_data['vduId'])
     resource_type = self._infer_resource_type(vdu_data['vduId'], vnf_data)
     log.debug('Resource type: %s', resource_type)
     resource_properties = self._get_properties_vdu(resource_type, vdu_data,
                                                    vnf_data)
     log.debug('Resource prop: %s', resource_properties)
     new_hot_resource = HotResource(vdu_data['vduId'], resource_type,
                                    resource_properties)
     self.hot_template.add_resource(vdu_data['vduId'], new_hot_resource)
示例#5
0
 def _get_nova_key_pair(self, name, vdu_data, vnf_data):
     resource_type = 'OS::Nova::KeyPair'
     resource_prop = {'name': str(name)}
     for prop in vdu_data['configurableProperties'][
             'additionalVnfcConfigurableProperty']:
         if 'SSHPubKey' in prop:
             resource_prop['public_key'] = prop['SSHPubKey']
             break
     new_hot_resource = HotResource(name, resource_type, resource_prop)
     return new_hot_resource
示例#6
0
 def _get_neutron_router_interface(self, router_id, intcpd, vnf_data):
     resource_type = 'OS::Neutron::RouterInterface'
     resource_prop = {'router': {'get_resource': str(router_id)}}
     neutron_port_name = 'port_' + intcpd['cpdId']
     neutron_port_res = self._get_neutron_port(intcpd, vnf_data)
     self.hot_template.add_resource(neutron_port_name, neutron_port_res)
     resource_prop['port'] = {'get_resource': str(neutron_port_name)}
     new_hot_resource = HotResource('interf_' + router_id, resource_type,
                                    resource_prop)
     return new_hot_resource
示例#7
0
 def _get_subnet(self, subnet_name, prop, vnf_data):
     resource_type = 'OS::Neutron::Subnet'
     resource_prop = {
         'name': subnet_name,
         'network': {
             'get_resource': str(prop['network'])
         },
         'cidr': str(prop['cidr'])
     }
     if 'dns_nameservers' in prop:
         resource_prop['dns_nameservers'] = prop['dns_nameservers']
     new_hot_resource = HotResource(subnet_name, resource_type,
                                    resource_prop)
     return new_hot_resource
示例#8
0
 def _get_floating_ip(self, float_name, intcpd, vnf_data):
     resource_type = 'OS::Neutron::FloatingIP'
     resource_prop = {
         'port_id': {
             'get_resource': 'port_' + str(intcpd['cpdId'])
         }
     }
     meta_float_ip = self._get_properties_from_metadata(
         intcpd['cpdId'], 'CPIPv4FloatingIP', vnf_data)
     resource_prop.update(
         {'floating_ip_address': str(meta_float_ip['CPIPv4FloatingIP'])})
     meta_prop = self._get_properties_from_metadata(float_name,
                                                    'properties', vnf_data)
     resource_prop.update(meta_prop)
     new_hot_resource = HotResource(float_name, resource_type,
                                    resource_prop)
     return new_hot_resource
示例#9
0
 def _get_neutron_net(self, name, vnf_data):
     resource_type = 'OS::Neutron::Net'
     resource_prop = {'name': str(name)}
     new_hot_resource = HotResource(name, resource_type, resource_prop)
     return new_hot_resource