コード例 #1
0
    def get_neutron_net_short_name(network):
        # Return <network_type>-<seg_id> for neutron network
        net_type = network.get('provider:network_type', None)
        net_seg_key = network.get('provider:segmentation_id', None)
        if not net_type or not net_seg_key:
            raise f5_ex.InvalidNetworkType(
                'Provider network attributes not complete:'
                'provider: network_type - {0} '
                'and provider:segmentation_id - {1}'.format(
                    net_type, net_seg_key))

        return net_type + '-' + str(net_seg_key)
コード例 #2
0
    def assure_bigip_network(self, bigip, network):
        # Ensure bigip has configured network object
        if not network:
            LOG.error('assure_bigip_network: '
                      'Attempted to assure a network with no id..skipping.')
            return

        if network['id'] in bigip.assured_networks:
            return

        if network['id'] in self.conf.common_network_ids:
            LOG.debug('assure_bigip_network: '
                      'Network is a common global network... skipping.')
            return

        LOG.debug("assure_bigip_network network: %s" % str(network))
        start_time = time()
        if self.is_common_network(network):
            network_folder = 'Common'
        else:
            network_folder = self.service_adapter.get_folder_name(
                network['tenant_id']
            )

        # setup all needed L2 network segments
        if network['provider:network_type'] == 'flat':
            network_name = self._assure_device_network_flat(
                network, bigip, network_folder)
        elif network['provider:network_type'] == 'vlan':
            network_name = self._assure_device_network_vlan(
                network, bigip, network_folder)
        elif network['provider:network_type'] == 'vxlan':
            network_name = self._assure_device_network_vxlan(
                network, bigip, network_folder)
        elif network['provider:network_type'] == 'gre':
            network_name = self._assure_device_network_gre(
                network, bigip, network_folder)
        elif network['provider:network_type'] == 'opflex':
            raise f5_ex.NetworkNotReady(
                "Opflex network segment definition required")
        else:
            error_message = 'Unsupported network type %s.' \
                            % network['provider:network_type'] + \
                            ' Cannot setup network.'
            LOG.error(error_message)
            raise f5_ex.InvalidNetworkType(error_message)
        bigip.assured_networks[network['id']] = network_name

        if time() - start_time > .001:
            LOG.debug("        assure bigip network took %.5f secs" %
                      (time() - start_time))
コード例 #3
0
 def get_network_name(self, bigip, network):
     # This constructs a name for a tunnel or vlan interface
     preserve_network_name = False
     if network['id'] in self.conf.common_network_ids:
         network_name = self.conf.common_network_ids[network['id']]
         preserve_network_name = True
     elif network['provider:network_type'] == 'vlan':
         network_name = self.get_vlan_name(network, bigip.hostname)
     elif network['provider:network_type'] == 'flat':
         network_name = self.get_vlan_name(network, bigip.hostname)
     elif network['provider:network_type'] == 'vxlan':
         network_name = _get_tunnel_name(network)
     elif network['provider:network_type'] == 'gre':
         network_name = _get_tunnel_name(network)
     else:
         error_message = 'Unsupported network type %s.' \
                         % network['provider:network_type'] + \
                         ' Cannot setup selfip or snat.'
         LOG.error(error_message)
         raise f5_ex.InvalidNetworkType(error_message)
     return network_name, preserve_network_name