def _do_update_floatingip(self, context, floatingip_id,<EOL>floatingip, add_fip=False):
orig_fl_ip = super(L3RouterApplianceDBMixin, self).get_floatingip(<EOL>context, floatingip_id)<EOL>before_router_id = orig_fl_ip['<STR_LIT>']<EOL>if before_router_id:<EOL><INDENT>router_type_id = self.get_router_type_id(context, before_router_id)<EOL>driver = self._get_router_type_driver(context,<EOL>router_type_id)<EOL>if driver:<EOL><INDENT>fip_ctxt = driver_context.FloatingipContext(<EOL>floatingip.get('<STR_LIT>'), orig_fl_ip)<EOL>driver.update_floatingip_precommit(context, fip_ctxt)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>fip_ctxt = None<EOL><DEDENT>info = super(L3RouterApplianceDBMixin, self).update_floatingip(<EOL>context, floatingip_id, floatingip)<EOL>router_ids = []<EOL>if before_router_id:<EOL><INDENT>router_ids.append(before_router_id)<EOL><DEDENT>r_id = info['<STR_LIT>']<EOL>if r_id and r_id != before_router_id:<EOL><INDENT>router_ids.append(r_id)<EOL><DEDENT>if r_id:<EOL><INDENT>router_type_id = self.get_router_type_id(context, r_id)<EOL>driver = self._get_router_type_driver(context,<EOL>router_type_id)<EOL>if not fip_ctxt:<EOL><INDENT>fip_ctxt = driver_context.FloatingipContext(<EOL>floatingip.get('<STR_LIT>'), orig_fl_ip)<EOL><DEDENT>if driver:<EOL><INDENT>if add_fip:<EOL><INDENT>context.result = info<EOL><DEDENT>driver.update_floatingip_postcommit(context, fip_ctxt)<EOL><DEDENT><DEDENT>self._notify_affected_routers(context, router_ids, '<STR_LIT>')<EOL>return info<EOL>
Modified version of update_floatingip.

        This modifies the existing update_floatingip call with a flag
        used to add the result of the superclass call to the context
        for the postcommit call.