@db_api.retry_db_errors<EOL><INDENT>def update_floatingip_statuses_cfg(self, context, router_id, fip_statuses):<DEDENT>
with context.session.begin(subtransactions=True):<EOL><INDENT>for (floatingip_id, status) in six.iteritems(fip_statuses):<EOL><INDENT>LOG.debug("<STR_LIT>"<EOL>"<STR_LIT>", {'<STR_LIT>': floatingip_id,<EOL>'<STR_LIT:status>': status})<EOL>try:<EOL><INDENT>self._l3plugin.update_floatingip_status(<EOL>context, floatingip_id, status)<EOL><DEDENT>except l3_exceptions.FloatingIPNotFound:<EOL><INDENT>LOG.debug("<STR_LIT>",<EOL>floatingip_id)<EOL><DEDENT><DEDENT>known_router_fips = self._l3plugin.get_floatingips(<EOL>context, {'<STR_LIT>': [router_id]})<EOL>fips_to_disable = (fip['<STR_LIT:id>'] for fip in known_router_fips<EOL>if not fip['<STR_LIT>'])<EOL>for fip_id in fips_to_disable:<EOL><INDENT>LOG.debug("<STR_LIT>", fip_id)<EOL>self._l3plugin.update_floatingip_status(<EOL>context, fip_id, bc.constants.FLOATINGIP_STATUS_DOWN)<EOL><DEDENT><DEDENT>
Update operational status for one or several floating IPs.

        This is called by Cisco cfg agent to update the status of one or
        several floatingips.

        :param context: contains user information
        :param router_id: id of router associated with the floatingips
        :param router_id: dict with floatingip_id as key and status as value