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)
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))
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