def test_network_helper_delete_fdb_entries( self, l2_service, service, bigips): # delete member fdb entry loadbalancer = None members = list() member = service['members'][1] network_id = member['network_id'] member['network'] = service['networks'][network_id] members.append(member) tunnel_records = l2_service.create_fdb_records(loadbalancer, members) network_helper = NetworkHelper() tunnel = mock.MagicMock() tunnel.exists = mock.MagicMock(return_value=True) tunnel_record = mock.MagicMock() tunnel.records_s.records.load = mock.MagicMock( return_value=tunnel_record) tunnel.records_s.records.exist = mock.MagicMock(return_value=True) bigip = bigips[0] bigip.tm.net.fdb.tunnels.tunnel.load = mock.MagicMock( return_value=tunnel) network_helper.delete_fdb_entries(bigip, fdb_entries=tunnel_records) # expect to delete tunnel_record.delete.assert_called()
def __init__(self, driver, f5_global_routed_mode): self.conf = driver.conf self.driver = driver self.f5_global_routed_mode = f5_global_routed_mode self.vlan_binding = None self.fdb_connector = None self.interface_mapping = {} self.tagging_mapping = {} self.system_helper = SystemHelper() self.network_helper = NetworkHelper() self.service_adapter = ServiceModelAdapter(self.conf) if not f5_global_routed_mode: self.fdb_connector = FDBConnectorML2(self.conf) if self.conf.vlan_binding_driver: try: self.vlan_binding = importutils.import_object( self.conf.vlan_binding_driver, self.conf, self) except ImportError: LOG.error('Failed to import VLAN binding driver: %s' % self.conf.vlan_binding_driver) raise # map format is phynet:interface:tagged for maps in self.conf.f5_external_physical_mappings: intmap = maps.split(':') net_key = str(intmap[0]).strip() if len(intmap) > 3: net_key = net_key + ':' + str(intmap[3]).strip() self.interface_mapping[net_key] = str(intmap[1]).strip() self.tagging_mapping[net_key] = str(intmap[2]).strip() LOG.debug('physical_network %s = interface %s, tagged %s' % (net_key, intmap[1], intmap[2]))
def purge_folder_contents(self, bigip, folder): network_helper = NetworkHelper() if folder not in self.exempt_folders: # First remove all LTM resources. ltm_types = [ ResourceType.virtual, ResourceType.pool, ResourceType.http_monitor, ResourceType.https_monitor, ResourceType.tcp_monitor, ResourceType.ping_monitor, ResourceType.node, ResourceType.snat, ResourceType.snatpool, ResourceType.snat_translation, ResourceType.rule ] for ltm_type in ltm_types: resource = BigIPResourceHelper(ltm_type) [r.delete() for r in resource.get_resources(bigip, folder)] # Remove all net resources net_types = [ ResourceType.arp, ResourceType.selfip, ResourceType.vlan, ResourceType.route_domain ] for net_type in net_types: resource = BigIPResourceHelper(net_type) [r.delete() for r in resource.get_resources(bigip, folder)] # Tunnels and fdb's require some special attention. resource = BigIPResourceHelper(ResourceType.tunnel) tunnels = resource.get_resources(bigip, folder) for tunnel in tunnels: network_helper.delete_all_fdb_entries(bigip, tunnel.name, folder) network_helper.delete_tunnel(bigip, tunnel.name, folder)
def __init__(self, conf, driver): # XXX maybe we need a better name: conf """Create a BigipTenantManager.""" self.conf = conf self.driver = driver self.system_helper = SystemHelper() self.network_helper = NetworkHelper() self.service_adapter = self.driver.service_adapter
def __init__(self, driver, l2_service, l3_binding): self.driver = driver self.l2_service = l2_service self.l3_binding = l3_binding self.snatpool_manager = BigIPResourceHelper(ResourceType.snatpool) self.snat_translation_manager = BigIPResourceHelper( ResourceType.snat_translation) self.network_helper = NetworkHelper()
def test_add_remove_fdbs(bigip, icontrol_driver): """ Test simulating L2 pop events to add/remove fdb entries.""" net_helper = NetworkHelper() tunnels = list() fdb_entries = list() seg_id_start = 167 seg_id_end = 176 n_records = 9 # create tunnels on BIG-IP, and fake fdb entries for seg_id in range(seg_id_start, seg_id_end): tunnel_name = 'tunnel-vxlan-{}'.format(seg_id) model = { 'name': tunnel_name, 'key': seg_id, 'profile': 'vxlan_ovs', 'localAddress': '201.0.155.10' } net_helper.create_multipoint_tunnel(bigip.bigip, model) tunnels.append(tunnel_name) # create a set of fdb entries that reference network seg ID for _ in range(n_records): entry = create_fdb_entry(seg_id) fdb_entries.append(entry) # add fdb entries for fdb_entry in fdb_entries: # mimic neutron L2 pop add_fdb_entries icontrol_driver.fdb_add(fdb_entry) for fdb_entry in fdb_entries: # mimic neutron L2 pop add_fdb_entries icontrol_driver.fdb_add(fdb_entry) # check created for tunnel_name in tunnels: records = net_helper.get_fdb_entry(bigip.bigip, tunnel_name=tunnel_name) assert records # remove fdb entries for fdb_entry in fdb_entries: # mimic neutron L2 pop remove_fdb_entries icontrol_driver.fdb_remove(fdb_entry) # check removed for tunnel_name in tunnels: records = net_helper.get_fdb_entry(bigip.bigip, tunnel_name=tunnel_name) assert not records net_helper.delete_tunnel(bigip.bigip, tunnel_name)
def __init__(self, f5_global_routed_mode, conf, driver, l3_binding=None): self.f5_global_routed_mode = f5_global_routed_mode self.conf = conf self.driver = driver self.l3_binding = l3_binding self.l2_service = L2ServiceBuilder(driver, f5_global_routed_mode) self.bigip_selfip_manager = BigipSelfIpManager(self.driver, self.l2_service, self.driver.l3_binding) self.bigip_snat_manager = BigipSnatManager(self.driver, self.l2_service, self.driver.l3_binding) self.rds_cache = {} self.interface_mapping = self.l2_service.interface_mapping self.network_helper = NetworkHelper() self.service_adapter = self.driver.service_adapter
def test_network_helper_add_fdb_entries(self, l2_service, service, bigips): # add first member fdb entry loadbalancer = None members = list() member = service['members'][0] network_id = member['network_id'] member['network'] = service['networks'][network_id] members.append(member) tunnel_records = l2_service.create_fdb_records(loadbalancer, members) network_helper = NetworkHelper() fdb_entry = mock.MagicMock() fdb_entry.modify = mock.MagicMock() bigip = bigips[0] bigip.tm.net.fdb.tunnels.tunnel.load = mock.MagicMock( return_value=fdb_entry) network_helper.add_fdb_entries(bigip, fdb_entries=tunnel_records) # expect to modify with first member's VTEP and MAC addr fdb_entry.modify.assert_called_with( records=[{ 'endpoint': '192.168.130.59', 'name': 'fa:16:3e:0d:fa:c8' }]) # add second member fdb entry members = list() member = service['members'][1] network_id = member['network_id'] member['network'] = service['networks'][network_id] members.append(member) tunnel_records = l2_service.create_fdb_records(loadbalancer, members) network_helper.add_fdb_entries(bigip, fdb_entries=tunnel_records) # expect to modify with second member's VTEP and MAC addr fdb_entry.modify.assert_called_with( records=[{ 'endpoint': '192.168.130.60', 'name': 'fa:16:3e:0d:fa:c6' }])
def test_network_helper_delete_fdb_entries(self, l2_service, service, bigips): # delete member fdb entry loadbalancer = None members = list() member = service['members'][1] network_id = member['network_id'] member['network'] = service['networks'][network_id] members.append(member) tunnel_records = l2_service.create_fdb_records(loadbalancer, members) network_helper = NetworkHelper() fdb_entry = mock.MagicMock() fdb_entry.modify = mock.MagicMock() bigip = bigips[0] bigip.tm.net.fdb.tunnels.tunnel.load = mock.MagicMock( return_value=fdb_entry) network_helper.delete_fdb_entries(bigip, fdb_entries=tunnel_records) # expect to modify with no records (i.e, removing entry) fdb_entry.modify.assert_called_with(records=None)
def __init__(self, driver, l2_service, l3_binding): self.driver = driver self.l2_service = l2_service self.l3_binding = l3_binding self.selfip_manager = BigIPResourceHelper(ResourceType.selfip) self.network_helper = NetworkHelper()
def __init__(self): self.network_name = DisconnectedService.network_name self.network_helper = NetworkHelper()
import pytest import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) from f5_openstack_agent.lbaasv2.drivers.bigip.network_helper import \ NetworkHelper from f5_openstack_agent.lbaasv2.drivers.bigip.system_helper import \ SystemHelper from pprint import pprint from requests.exceptions import HTTPError network_helper = NetworkHelper() system_helper = SystemHelper() default_partition = 'test' def log_test_call(func): def wrapper(func, *args, **kwargs): print("\nRunning %s" % func.func_name) return func(*args, **kwargs) return decorator.decorator(wrapper, func) def delete_resource(resource): try: resource.delete() except HTTPError as err:
def network_helper(self, bigip): nh = NetworkHelper() nh.get_route_domain_by_id = mock.MagicMock( return_value=bigip.tm.net.route_domains.route_domain) return nh