diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py b/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py index 7cb5f4ca2..f72eb836e 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py @@ -402,7 +402,7 @@ def create_loadbalancer(self, context, loadbalancer, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.LoadBalancerManager(self.lbdriver) - mgr.create(loadbalancer, service) + mgr.create(context, loadbalancer, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to create loadbalancer %s", id) @@ -432,7 +432,7 @@ def update_loadbalancer(self, context, old_loadbalancer, try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.LoadBalancerManager(self.lbdriver) - mgr.update(old_loadbalancer, loadbalancer, service) + mgr.update(context, old_loadbalancer, loadbalancer, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to update loadbalancer %s", id) @@ -460,7 +460,7 @@ def delete_loadbalancer(self, context, loadbalancer, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.LoadBalancerManager(self.lbdriver) - mgr.delete(loadbalancer, service) + mgr.delete(context, loadbalancer, service) provision_status = constants_v2.F5_ACTIVE LOG.debug("Finish to delete loadbalancer %s", id) except iControlUnexpectedHTTPError as ex: @@ -528,7 +528,7 @@ def create_listener(self, context, listener, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.ListenerManager(self.lbdriver) - mgr.create(listener, service) + mgr.create(context, listener, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to create listener %s", id) @@ -560,7 +560,7 @@ def update_listener(self, context, old_listener, listener, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.ListenerManager(self.lbdriver) - mgr.update(old_listener, listener, service) + mgr.update(context, old_listener, listener, service) provision_status = constants_v2.F5_ACTIVE LOG.debug("Finish to update listener %s", id) except Exception as ex: @@ -591,7 +591,7 @@ def delete_listener(self, context, listener, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.ListenerManager(self.lbdriver) - mgr.delete(listener, service) + mgr.delete(context, listener, service) provision_status = constants_v2.F5_ACTIVE LOG.debug("Finish to delete listener %s", id) except Exception as ex: @@ -627,7 +627,7 @@ def create_pool(self, context, pool, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.PoolManager(self.lbdriver) - mgr.create(pool, service) + mgr.create(context, pool, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to create pool %s", id) @@ -660,7 +660,7 @@ def update_pool(self, context, old_pool, pool, service): bigip_device.set_bigips(service, self.conf) # TODO(qzhao): Deploy config to BIG-IP mgr = resource_manager.PoolManager(self.lbdriver) - mgr.update(old_pool, pool, service) + mgr.update(context, old_pool, pool, service) provision_status = constants_v2.F5_ACTIVE LOG.debug("Finish to update pool %s", id) except Exception as ex: @@ -691,7 +691,7 @@ def delete_pool(self, context, pool, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.PoolManager(self.lbdriver) - mgr.delete(pool, service) + mgr.delete(context, pool, service) provision_status = constants_v2.F5_ACTIVE LOG.debug("Finish to delete pool %s", id) except Exception as ex: @@ -729,7 +729,7 @@ def create_member( try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.MemberManager(self.lbdriver) - mgr.create(member, service) + mgr.create(context, member, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE if multiple: @@ -772,11 +772,15 @@ def create_member( if the_port_id: LOG.info(the_port_id) - self.plugin_rpc.delete_port(port_id=the_port_id) + self.plugin_rpc.delete_port( + context=context, port_id=the_port_id + ) if the_port_ids: LOG.info(the_port_ids) for each in the_port_ids: - self.plugin_rpc.delete_port(port_id=each) + self.plugin_rpc.delete_port( + context=context, port_id=each + ) except Exception as ex: if multiple: LOG.exception("Fail to update status of multiple members " @@ -794,7 +798,7 @@ def update_member(self, context, old_member, member, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.MemberManager(self.lbdriver) - mgr.update(old_member, member, service) + mgr.update(context, old_member, member, service) provision_status = constants_v2.F5_ACTIVE LOG.debug("Finish to update member %s", id) except Exception as ex: @@ -826,7 +830,7 @@ def delete_member(self, context, member, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.MemberManager(self.lbdriver) - mgr.delete(member, service) + mgr.delete(context, member, service) provision_status = constants_v2.F5_ACTIVE if multiple: LOG.debug("Finish to delete multiple members") @@ -890,7 +894,7 @@ def create_health_monitor(self, context, health_monitor, service): mgr = resource_manager.MonitorManager( self.lbdriver, type=health_monitor['type'] ) - mgr.create(health_monitor, service) + mgr.create(context, health_monitor, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to create monitor %s", id) @@ -927,7 +931,7 @@ def update_health_monitor(self, context, old_health_monitor, mgr = resource_manager.MonitorManager( self.lbdriver, type=health_monitor['type'] ) - mgr.update(old_health_monitor, health_monitor, service) + mgr.update(context, old_health_monitor, health_monitor, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to update health_monitor %s", id) @@ -961,7 +965,7 @@ def delete_health_monitor(self, context, health_monitor, service): mgr = resource_manager.MonitorManager( self.lbdriver, type=health_monitor['type'] ) - mgr.delete(health_monitor, service) + mgr.delete(context, health_monitor, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to delete health_monitor %s", id) @@ -1069,7 +1073,7 @@ def create_l7policy(self, context, l7policy, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.L7PolicyManager(self.lbdriver) - mgr.create(l7policy, service) + mgr.create(context, l7policy, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to create l7policy %s", id) @@ -1101,7 +1105,7 @@ def update_l7policy(self, context, old_l7policy, l7policy, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.L7PolicyManager(self.lbdriver) - mgr.update(old_l7policy, l7policy, service) + mgr.update(context, old_l7policy, l7policy, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to update l7policy %s", id) @@ -1133,7 +1137,7 @@ def delete_l7policy(self, context, l7policy, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.L7PolicyManager(self.lbdriver) - mgr.delete(l7policy, service) + mgr.delete(context, l7policy, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to delete l7policy %s", id) @@ -1168,7 +1172,7 @@ def create_l7rule(self, context, l7rule, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.L7RuleManager(self.lbdriver) - mgr.create(l7rule, service) + mgr.create(context, l7rule, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to create l7rule %s", id) @@ -1200,7 +1204,7 @@ def update_l7rule(self, context, old_l7rule, l7rule, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.L7RuleManager(self.lbdriver) - mgr.update(old_l7rule, l7rule, service) + mgr.update(context, old_l7rule, l7rule, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to update l7rule %s", id) @@ -1233,7 +1237,7 @@ def delete_l7rule(self, context, l7rule, service): bigip_device.set_bigips(service, self.conf) # TODO(qzhao): Deploy config to BIG-IP mgr = resource_manager.L7RuleManager(self.lbdriver) - mgr.delete(l7rule, service) + mgr.delete(context, l7rule, service) provision_status = constants_v2.F5_ACTIVE operating_status = constants_v2.F5_ONLINE LOG.debug("Finish to delete l7rule %s", id) @@ -1265,7 +1269,7 @@ def create_acl_group(self, context, acl_group): id = acl_group['id'] try: mgr = resource_manager.ACLGroupManager(self.lbdriver) - mgr.create(acl_group) + mgr.create(context, acl_group) LOG.debug("Finish to create acl_group %s", id) except Exception as ex: LOG.error("Fail to create acl_group %s " @@ -1276,7 +1280,7 @@ def delete_acl_group(self, context, acl_group): """Handle RPC cast from plugin to delete ACL Group.""" try: mgr = resource_manager.ACLGroupManager(self.lbdriver) - mgr.delete(acl_group) + mgr.delete(context, acl_group) LOG.debug("Finish to delete ACL Group %s", id) except Exception as ex: LOG.error("Fail to delete ACL Group %s " @@ -1290,7 +1294,7 @@ def update_acl_group(self, context, acl_group, service): try: bigip_device.set_bigips(service, self.conf) mgr = resource_manager.ACLGroupManager(self.lbdriver) - mgr.update(old_acl_group, acl_group, service) + mgr.update(context, old_acl_group, acl_group, service) LOG.debug("Finish to update acl_group %s", id) except Exception as ex: LOG.exception("Fail to update acl group %s.\n" @@ -1312,7 +1316,7 @@ def add_acl_bind(self, context, listener, # create acl data group on each bigips first bigip_device.set_bigips(service, self.conf) mgr = resource_manager.ACLGroupManager(self.lbdriver) - mgr.create(acl_group, service) + mgr.create(context, acl_group, service) LOG.debug("Finish to create data group of acl group %s", acl_id) diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py b/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py index be5462757..bb2bd5f44 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py @@ -259,7 +259,7 @@ def remove_lb_default_route( route_helper.remove_default_route( bigip, subnet) - def config_selfips(self, service, **kwargs): + def config_selfips(self, context, service, **kwargs): lb_network = kwargs.get("network", service['lb_netinfo']["network"]) lb_subnets = kwargs.get("subnets", service['lb_netinfo']["subnets"]) @@ -268,9 +268,10 @@ def config_selfips(self, service, **kwargs): subnetinfo['subnet'] = subnet for bigip in service['bigips']: self.bigip_selfip_manager.assure_bigip_selfip( + context, bigip, service, subnetinfo) - def config_snat(self, service): + def config_snat(self, context, service): flavor = service["loadbalancer"].get("flavor") if flavor in [7, 8]: MyHelper = LargeSNATHelper @@ -283,9 +284,9 @@ def config_snat(self, service): self.l2_service, net_service=self ) - snat_helper.snat_create() + snat_helper.snat_create(context) - def remove_flavor_snat(self, service): + def remove_flavor_snat(self, context, service): flavor = service["loadbalancer"].get("flavor") if flavor in [7, 8]: MyHelper = LargeSNATHelper @@ -298,7 +299,7 @@ def remove_flavor_snat(self, service): self.l2_service, net_service=self ) - snat_helper.snat_remove() + snat_helper.snat_remove(context) def update_flavor_snat( self, old_loadbalancer, loadbalancer, service @@ -488,7 +489,7 @@ def _allocate_gw_addr(self, subnetinfo): LOG.exception(ermsg) return True - def post_service_networking(self, service): + def post_service_networking(self, context, service): # Assure networks are deleted from big-ips if self.conf.f5_global_routed_mode: return @@ -505,6 +506,7 @@ def post_service_networking(self, service): for port_name in deleted_names: self.driver.plugin_rpc.delete_port_by_name( + context=context, port_name=port_name) def update_bigip_l2(self, service): @@ -865,7 +867,7 @@ def snat_pools_exist(self): (snatpool_name, bigip.hostname) ) - def snat_create(self): + def snat_create(self, context): # Ensure snat for subnet exists on bigips bigips = self.service['bigips'] tenant_id = self.service['loadbalancer']['tenant_id'] @@ -915,6 +917,7 @@ def snat_create(self): if len(port) == 0: port = self.driver.plugin_rpc.create_port_on_subnet( + context=context, subnet_id=subnet['id'], name=snat_name, fixed_address_count=snats_per_subnet, @@ -960,12 +963,12 @@ def count_SNATIPs(self, ipversion, flavor=None): flavor = self.flavor return self.FLAVOR_MAP[ipversion][flavor] - def snat_remove(self): + def snat_remove(self, context): bigips = self.service['bigips'] self.snat_pools_exist() - self.lb_snat_delete(bigips) + self.lb_snat_delete(context, bigips) - def lb_snat_delete(self, bigips): + def lb_snat_delete(self, context, bigips): lb_id = self.service['loadbalancer']['id'] LOG.debug("Getting snat addrs for: %s" % self.snat_net['subnets']) @@ -993,6 +996,7 @@ def lb_snat_delete(self, bigips): else: cast = True self.driver.plugin_rpc.delete_port_by_name( + context=context, port_name=snat_name, cast=cast) def snat_update( @@ -1090,9 +1094,9 @@ def __init__(self, driver, service, lb_netinfo, ) self.net_service = kwargs.get("net_service") - def snat_create(self): + def snat_create(self, context): # Create dedicated SNAT network - self.create_large_snat_network() + self.create_large_snat_network(context) # Modify snat network information in memory and utilize # the existing code to allocate SNAT IPs @@ -1101,13 +1105,13 @@ def snat_create(self): for key in self.large_snat_subnet: self.snat_net["subnets"].append(self.large_snat_subnet[key]) - super(LargeSNATHelper, self).snat_create() + super(LargeSNATHelper, self).snat_create(context) - def snat_remove(self): - super(LargeSNATHelper, self).snat_remove() - self.delete_large_snat_network() + def snat_remove(self, context): + super(LargeSNATHelper, self).snat_remove(context) + self.delete_large_snat_network(context) - def create_large_snat_network(self, ip_version=4): + def create_large_snat_network(self, context, ip_version=4): tenant_id = self.service['loadbalancer']['tenant_id'] lb_id = self.service['loadbalancer']['id'] network_name = "snat-" + lb_id @@ -1164,6 +1168,7 @@ def create_large_snat_network(self, ip_version=4): pool_id = self.driver.conf.snat_subnetpool_v4 subnet_name = subnet_v4_name + # todo maybe also add for this part self.large_snat_subnet[ip_version] = \ self.driver.plugin_rpc.create_subnet( name=subnet_name, @@ -1216,12 +1221,13 @@ def create_large_snat_network(self, ip_version=4): # Create selfip in bigips self.net_service.config_selfips( + context, self.service, network=self.large_snat_network, subnets=self.large_snat_subnet.values() ) - def delete_large_snat_network(self): + def delete_large_snat_network(self, context): lb_id = self.service['loadbalancer']['id'] network_name = "snat-" + lb_id subnet_v4_name = "snat-v4-" + lb_id @@ -1253,6 +1259,7 @@ def delete_large_snat_network(self): bigip, selfip, partition=self.partition ) self.driver.plugin_rpc.delete_port_by_name( + context=context, port_name=selfip, cast=False) # Empty subnets can be deleted along with network diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/plugin_rpc.py b/f5_openstack_agent/lbaasv2/drivers/bigip/plugin_rpc.py index cf39e7c26..d0fb79983 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/plugin_rpc.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/plugin_rpc.py @@ -509,7 +509,7 @@ def get_subnets_info(self, subnet_ids): return subnets_info @log_helpers.log_method_call - def create_port_on_subnet(self, subnet_id=None, + def create_port_on_subnet(self, context=None, subnet_id=None, name=None, fixed_address_count=1, device_id=None, @@ -521,7 +521,7 @@ def create_port_on_subnet(self, subnet_id=None, port = None try: port = self._call( - self.context, + context or self.context, self._make_msg('create_port_on_subnet', subnet_id=subnet_id, name=name, @@ -592,7 +592,7 @@ def create_port_on_network(self, network_id=None, mac_address=None, return port @log_helpers.log_method_call - def delete_port_by_name(self, port_name=None, cast=True): + def delete_port_by_name(self, context=None, port_name=None, cast=True): """Delete ports with the given name.""" if cast: invoke = self._cast @@ -601,7 +601,7 @@ def delete_port_by_name(self, port_name=None, cast=True): try: return invoke( - self.context, + context or self.context, self._make_msg('delete_port_by_name', port_name=port_name), topic=self.topic @@ -611,10 +611,10 @@ def delete_port_by_name(self, port_name=None, cast=True): "delet_port_by_name") @log_helpers.log_method_call - def delete_port(self, port_id=None, mac_address=None): + def delete_port(self, context=None, port_id=None, mac_address=None): """Delete port with the given port_id.""" return self._cast( - self.context, + context or self.context, self._make_msg('delete_port', port_id=port_id, mac_address=mac_address), diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py b/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py index ae1963911..25a8d685b 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py @@ -148,7 +148,7 @@ def _update_needed(self, payload, old_resource, resource): return True @log_helpers.log_method_call - def create(self, resource, service=dict(), **kwargs): + def create(self, context, resource, service=dict(), **kwargs): if service and not service.get(self._key): self._search_element(resource, service) payload = kwargs.get("payload", @@ -170,7 +170,9 @@ def create(self, resource, service=dict(), **kwargs): LOG.debug("Finish to create %s %s", self._resource, payload['name']) @log_helpers.log_method_call - def update(self, old_resource, resource, service=dict(), **kwargs): + def update( + self, context, old_resource, resource, service=dict(), **kwargs + ): if service and not service.get(self._key): self._search_element(resource, service) payload = kwargs.get("payload", @@ -193,7 +195,7 @@ def update(self, old_resource, resource, service=dict(), **kwargs): LOG.debug("Finish to update %s %s", self._resource, payload['name']) @log_helpers.log_method_call - def delete(self, resource, service=dict(), **kwargs): + def delete(self, context, resource, service=dict(), **kwargs): if service and not service.get(self._key): self._search_element(resource, service) payload = kwargs.get("payload", @@ -238,9 +240,10 @@ def _create_payload(self, loadbalancer, service): @serialized('LoadBalancerManager.create') @log_helpers.log_method_call - def create(self, loadbalancer, service, **kwargs): - self._pre_create(service) + def create(self, context, loadbalancer, service, **kwargs): + self._pre_create(context, service) super(LoadBalancerManager, self).create( + context, service["loadbalancer"], service) self._post_create(service) @@ -328,7 +331,7 @@ def _post_create(self, service): if not self.driver.conf.f5_global_routed_mode: self.driver.network_builder.update_bigip_l2(service) - def _pre_create(self, service): + def _pre_create(self, context, service): self._check_nonshared_network(service) loadbalancer = service["loadbalancer"] @@ -345,8 +348,8 @@ def _pre_create(self, service): if not self.driver.conf.f5_global_routed_mode: self.driver.network_builder.prep_service_networking( service, traffic_group) - self.driver.network_builder.config_selfips(service) - self.driver.network_builder.config_snat(service) + self.driver.network_builder.config_selfips(context, service) + self.driver.network_builder.config_snat(context, service) self.driver.network_builder.config_lb_default_route( service) @@ -510,12 +513,15 @@ def _update_2_limits(self, old_loadbalancer, loadbalancer, service): @serialized('LoadBalancerManager.update') @log_helpers.log_method_call - def update(self, old_loadbalancer, loadbalancer, service, **kwargs): + def update( + self, context, old_loadbalancer, loadbalancer, service, **kwargs + ): self._update_bwc(old_loadbalancer, loadbalancer, service) self._update_2_limits(old_loadbalancer, loadbalancer, service) self._update_flavor_snat(old_loadbalancer, loadbalancer, service) super(LoadBalancerManager, self).update( + context, old_loadbalancer, loadbalancer, service) def _update_flavor_snat( @@ -531,10 +537,10 @@ def _update_flavor_snat( @serialized('LoadBalancerManager.delete') @log_helpers.log_method_call - def delete(self, loadbalancer, service, **kwargs): + def delete(self, context, loadbalancer, service, **kwargs): self._pre_delete(service) - super(LoadBalancerManager, self).delete(loadbalancer, service) - self._post_delete(service) + super(LoadBalancerManager, self).delete(context, loadbalancer, service) + self._post_delete(context, service) def _pre_delete(self, service): # assign neutron network object in service @@ -552,13 +558,13 @@ def _pre_delete(self, service): subnet_id=loadbalancer["vip_subnet_id"], ip_address=loadbalancer["vip_address"]) - def _post_delete(self, service): + def _post_delete(self, context, service): # self.driver.network_builder is None in global routed mode if self.driver.network_builder: - self.driver.network_builder.remove_flavor_snat(service) + self.driver.network_builder.remove_flavor_snat(context, service) self.driver.network_builder.post_service_networking( - service) - self.tenant_manager.assure_tenant_cleanup(service) + context, service) + self.tenant_manager.assure_tenant_cleanup(context, service) class ListenerManager(ResourceManager): @@ -1402,7 +1408,7 @@ def _delete(self, bigip, vs, listener, service): @serialized('ListenerManager.create') @log_helpers.log_method_call - def create(self, listener, service, **kwargs): + def create(self, context, listener, service, **kwargs): loadbalancer = service.get("loadbalancer", None) traffic_group = self.driver.get_traffic_group_1() loadbalancer['traffic_group'] = traffic_group @@ -1411,12 +1417,13 @@ def create(self, listener, service, **kwargs): if not self.driver.conf.f5_global_routed_mode: self.driver.network_builder.prep_service_networking( service, traffic_group) - super(ListenerManager, self).create(listener, service) + super(ListenerManager, self).create(context, listener, service) @serialized('ListenerManager.update') @log_helpers.log_method_call - def update(self, old_listener, listener, service, **kwargs): + def update(self, context, old_listener, listener, service, **kwargs): super(ListenerManager, self).update( + context, old_listener, listener, service) # we may change this to bind_acl @@ -1471,10 +1478,12 @@ def update_acl_bind(self, listener, acl_bind, service, **kwargs): @serialized('ListenerManager.delete') @log_helpers.log_method_call - def delete(self, listener, service, **kwargs): + def delete(self, context, listener, service, **kwargs): self._search_element(listener, service) payload = self.driver.service_adapter.get_virtual_name(service) - super(ListenerManager, self).delete(listener, service, payload=payload) + super(ListenerManager, self).delete( + context, listener, service, payload=payload + ) class PoolManager(ResourceManager): @@ -1630,19 +1639,19 @@ def _delete(self, bigip, payload, pool, service): @serialized('PoolManager.create') @log_helpers.log_method_call - def create(self, pool, service, **kwargs): - super(PoolManager, self).create(pool, service) + def create(self, context, pool, service, **kwargs): + super(PoolManager, self).create(context, pool, service) @serialized('PoolManager.update') @log_helpers.log_method_call - def update(self, old_pool, pool, service, **kwargs): - super(PoolManager, self).update(old_pool, pool, service) + def update(self, context, old_pool, pool, service, **kwargs): + super(PoolManager, self).update(context, old_pool, pool, service) @serialized('PoolManager.delete') @log_helpers.log_method_call - def delete(self, pool, service, **kwargs): + def delete(self, context, pool, service, **kwargs): self.driver.annotate_service_members(service) - super(PoolManager, self).delete(pool, service) + super(PoolManager, self).delete(context, pool, service) class MonitorManager(ResourceManager): @@ -1750,13 +1759,14 @@ def _delete(self, bigip, payload, healthmonitor, service): @serialized('MonitorManager.create') @log_helpers.log_method_call - def create(self, monitor, service, **kwargs): - super(MonitorManager, self).create(monitor, service) + def create(self, context, monitor, service, **kwargs): + super(MonitorManager, self).create(context, monitor, service) @serialized('MonitorManager.update') @log_helpers.log_method_call - def update(self, old_monitor, monitor, service, **kwargs): + def update(self, context, old_monitor, monitor, service, **kwargs): super(MonitorManager, self).update( + context, old_monitor, monitor, service) def _update_payload(self, old_resource, resource, service, **kwargs): @@ -1787,8 +1797,8 @@ def _update_payload(self, old_resource, resource, service, **kwargs): @serialized('MonitorManager.delete') @log_helpers.log_method_call - def delete(self, monitor, service, **kwargs): - super(MonitorManager, self).delete(monitor, service) + def delete(self, context, monitor, service, **kwargs): + super(MonitorManager, self).delete(context, monitor, service) class MemberManager(ResourceManager): @@ -1879,7 +1889,7 @@ def _merge_members(self, lbaas_members, bigip_members, pool_id, service): @serialized('MemberManager.create') @log_helpers.log_method_call - def create(self, resource, service, **kwargs): + def create(self, context, resource, service, **kwargs): self._create_single(resource, service, **kwargs) @@ -1932,7 +1942,7 @@ def _create_single(self, resource, service, **kwargs): @serialized('MemberManager.delete') @log_helpers.log_method_call - def delete(self, resource, service, **kwargs): + def delete(self, context, resource, service, **kwargs): if not service.get(self._key): self._search_element(resource, service) @@ -1987,7 +1997,7 @@ def delete(self, resource, service, **kwargs): @serialized('MemberManager.update') @log_helpers.log_method_call - def update(self, old_resource, resource, service, **kwargs): + def update(self, context, old_resource, resource, service, **kwargs): self.driver.annotate_service_members(service) if not service.get(self._key): self._search_element(resource, service) @@ -2154,18 +2164,19 @@ def _delete(self, bigip, payload, l7policy, service, **kwargs): @serialized('L7PolicyManager.create') @log_helpers.log_method_call - def create(self, l7policy, service, **kwargs): - super(L7PolicyManager, self).create(l7policy, service) + def create(self, context, l7policy, service, **kwargs): + super(L7PolicyManager, self).create(context, l7policy, service) @serialized('L7PolicyManager.update') @log_helpers.log_method_call - def update(self, old_l7policy, l7policy, service, **kwargs): - super(L7PolicyManager, self).create(l7policy, service) + def update(self, context, old_l7policy, l7policy, service, **kwargs): + # todo should also update update() signature + super(L7PolicyManager, self).create(context, l7policy, service) @serialized('L7PolicyManager.delete') @log_helpers.log_method_call - def delete(self, l7policy, service, **kwargs): - super(L7PolicyManager, self).delete(l7policy, service) + def delete(self, context, l7policy, service, **kwargs): + super(L7PolicyManager, self).delete(context, l7policy, service) class L7RuleManager(ResourceManager): @@ -2251,59 +2262,61 @@ def _delete(self, bigip, payload, l7rule, service, **kwargs): @serialized('L7RuleManager._create_irule') @log_helpers.log_method_call - def _create_irule(self, l7rule, service, **kwargs): + def _create_irule(self, context, l7rule, service, **kwargs): # Just a wrapper to utilize serialized decorator appropriately - super(L7RuleManager, self).create(l7rule, service) + # todo here also needs + super(L7RuleManager, self).create(context, l7rule, service) @serialized('L7RuleManager._update_irule') @log_helpers.log_method_call - def _update_irule(self, old_l7rule, l7rule, service, **kwargs): + def _update_irule(self, context, old_l7rule, l7rule, service, **kwargs): + # seems never used. # Just a wrapper to utilize serialized decorator appropriately - super(L7RuleManager, self).update(old_l7rule, l7rule, service) + super(L7RuleManager, self).update(context, old_l7rule, l7rule, service) @serialized('L7RuleManager._delete_irule') @log_helpers.log_method_call - def _delete_irule(self, l7rule, service, **kwargs): + def _delete_irule(self, context, l7rule, service, **kwargs): # Just a wrapper to utilize serialized decorator appropriately - super(L7RuleManager, self).delete(l7rule, service) + super(L7RuleManager, self).delete(context, l7rule, service) @log_helpers.log_method_call - def _update_ltm_policy(self, l7policy, service): - self.l7policy_mgr.create(l7policy, service) + def _update_ltm_policy(self, context, l7policy, service): + self.l7policy_mgr.create(context, l7policy, service) @log_helpers.log_method_call - def create(self, l7rule, service, **kwargs): + def create(self, context, l7rule, service, **kwargs): self._search_l7policy_and_listener(l7rule, service) if l7rule['compare_type'] == "REGEX": # Create iRule - self._create_irule(l7rule, service, **kwargs) + self._create_irule(context, l7rule, service, **kwargs) else: # Update LTM policy - self._update_ltm_policy(self._l7policy, service) + self._update_ltm_policy(context, self._l7policy, service) @log_helpers.log_method_call - def update(self, old_l7rule, l7rule, service, **kwargs): + def update(self, context, old_l7rule, l7rule, service, **kwargs): self._search_l7policy_and_listener(l7rule, service) # Neutron LBaaS may have bugs. The old_l7rule and l7rule are always # identical, so that we are not able to identify the detail infomation. # Have to always update LTM policy and refresh iRule in any cases. - self._update_ltm_policy(self._l7policy, service) + self._update_ltm_policy(context, self._l7policy, service) if l7rule['compare_type'] == "REGEX": # Create iRule - self._create_irule(l7rule, service, **kwargs) + self._create_irule(context, l7rule, service, **kwargs) else: # Delete iRule - self._delete_irule(l7rule, service, **kwargs) + self._delete_irule(context, l7rule, service, **kwargs) @log_helpers.log_method_call - def delete(self, l7rule, service, **kwargs): + def delete(self, context, l7rule, service, **kwargs): self._search_l7policy_and_listener(l7rule, service) if l7rule['compare_type'] == "REGEX": # Delete iRule - self._delete_irule(l7rule, service, **kwargs) + self._delete_irule(context, l7rule, service, **kwargs) else: # Update LTM policy - self._update_ltm_policy(self._l7policy, service) + self._update_ltm_policy(context, self._l7policy, service) class ACLGroupManager(ResourceManager): diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/selfips.py b/f5_openstack_agent/lbaasv2/drivers/bigip/selfips.py index 0c9a9287a..643e1c8b5 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/selfips.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/selfips.py @@ -95,7 +95,7 @@ def _create_bigip_selfip(self, bigip, model): return created - def assure_bigip_selfip(self, bigip, service, subnetinfo): + def assure_bigip_selfip(self, context, bigip, service, subnetinfo): u"""Ensure the BigIP has a selfip address on the tenant subnet.""" network = None @@ -140,6 +140,7 @@ def assure_bigip_selfip(self, bigip, service, subnetinfo): } selfip_address = self._get_bigip_selfip_address( + context, bigip, subnet, lb_id, binding_profile) if 'route_domain_id' not in network: LOG.error("network route domain is not set") @@ -176,7 +177,7 @@ def assure_bigip_selfip(self, bigip, service, subnetinfo): ip_address=selfip_address) def _get_bigip_selfip_address( - self, bigip, subnet, lb_id, binding_profile + self, context, bigip, subnet, lb_id, binding_profile ): u"""Ensure a selfip address is allocated on Neutron network.""" # Get ip address for selfip to use on BIG-IP. @@ -201,6 +202,7 @@ def _get_bigip_selfip_address( LOG.info(host_passed) port = self.driver.plugin_rpc.create_port_on_subnet( + context=context, subnet_id=subnet['id'], name=selfip_name, fixed_address_count=1, diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/tenants.py b/f5_openstack_agent/lbaasv2/drivers/bigip/tenants.py index d26cef0db..3853b1e3c 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/tenants.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/tenants.py @@ -86,20 +86,20 @@ def assure_tenant_created(self, service, sync=False): "Folder creation error for tenant %s" % (tenant_id)) - def assure_tenant_cleanup(self, service): + def assure_tenant_cleanup(self, context, service): """Delete tenant partition.""" # Called for every bigip only in replication mode, # otherwise called once. for bigip in service['bigips']: - self._assure_bigip_tenant_cleanup(bigip, service) + self._assure_bigip_tenant_cleanup(context, bigip, service) # called for every bigip only in replication mode. # otherwise called once - def _assure_bigip_tenant_cleanup(self, bigip, service): + def _assure_bigip_tenant_cleanup(self, context, bigip, service): tenant_id = service['loadbalancer']['tenant_id'] - self._remove_tenant_replication_mode(bigip, tenant_id) + self._remove_tenant_replication_mode(context, bigip, tenant_id) - def _remove_tenant_replication_mode(self, bigip, tenant_id): + def _remove_tenant_replication_mode(self, context, bigip, tenant_id): # Remove tenant in replication sync-mode partition = self.service_adapter.get_folder_name(tenant_id) domain_names = self.network_helper.get_route_domain_names(bigip, @@ -122,6 +122,7 @@ def _remove_tenant_replication_mode(self, bigip, tenant_id): for r in helper.get_resources(bigip, partition): try: self.driver.plugin_rpc.delete_port_by_name( + context=context, port_name=r.name) except Exception as err: LOG.debug("Failed to delete port: %s", err.message) diff --git a/test/functional/neutronless/testlib/fake_rpc.py b/test/functional/neutronless/testlib/fake_rpc.py index 1b5a07452..2a1145b57 100644 --- a/test/functional/neutronless/testlib/fake_rpc.py +++ b/test/functional/neutronless/testlib/fake_rpc.py @@ -102,6 +102,7 @@ def get_ports_for_mac_addresses(self, mac_addresses=list()): @track_call def create_port_on_subnet(self, + context=None, subnet_id=None, mac_address=None, name=None, @@ -120,7 +121,7 @@ def create_port_on_subnet(self, if fixed_address_count != 1: raise InvalidArgumentError if vnic_type != "baremetal": - raise InvalideArgumentError + raise InvalidArgumentError ip_address = next(self._subnets[subnet_id])