def notify_security_groups_member_updated_bulk(self, context, ports):
        sg_provider_updated_networks = set()
        sec_groups = set()
        for port in ports:
            if port['device_owner'] == const.DEVICE_OWNER_DHCP:
                sg_provider_updated_networks.add(
                    port['network_id'])
            # For IPv6, provider rule need to be updated in case router
            # interface is created or updated after VM port is created.
            # NOTE (Swami): ROUTER_INTERFACE_OWNERS check is required
            # since it includes the legacy router interface device owners
            # and DVR router interface device owners.
            elif port['device_owner'] in const.ROUTER_INTERFACE_OWNERS:
                if any(netaddr.IPAddress(fixed_ip['ip_address']).version == 6
                       for fixed_ip in port['fixed_ips']):
                    sg_provider_updated_networks.add(
                        port['network_id'])
            else:
                sec_groups |= set(port.get(ext_sg.SECURITYGROUPS))

        if sg_provider_updated_networks:
            ports_query = context.session.query(models_v2.Port.id).filter(
                models_v2.Port.network_id.in_(
                    sg_provider_updated_networks)).all()
            ports_to_update = [p.id for p in ports_query]
            self.notifier.security_groups_provider_updated(
                context, ports_to_update)
        if sec_groups:
            self.notifier.security_groups_member_updated(
                context, list(sec_groups))
Notify update event of security group members for ports.
dataset/ETHPy150Open openstack/neutron/neutron/db/securitygroups_rpc_base.py/SecurityGroupServerRpcMixin.notify_security_groups_member_updated_bulk