def _populate_ha_information(self, context, router):
r_r_b = self._get_redundancy_router_bindings(<EOL>context, redundancy_router_id=router['<STR_LIT:id>'])<EOL>if not r_r_b:<EOL><INDENT>if router[ha.ENABLED]:<EOL><INDENT>user_router_id = router['<STR_LIT:id>']<EOL>fips = []<EOL><DEDENT>else:<EOL><INDENT>return<EOL><DEDENT><DEDENT>else:<EOL><INDENT>user_router_id = r_r_b[<NUM_LIT:0>].user_router_id<EOL>fips = self.get_floatingips(context,<EOL>{'<STR_LIT>': [user_router_id]})<EOL><DEDENT>if router['<STR_LIT:id>'] != user_router_id:<EOL><INDENT>user_router_db = self._get_router(context, user_router_id)<EOL>self._extend_router_dict_ha(router, user_router_db)<EOL><DEDENT>hag_dbs = self._get_subnet_id_indexed_ha_groups(context,<EOL>user_router_id)<EOL>e_context = context.elevated()<EOL>if router.get('<STR_LIT>'):<EOL><INDENT>modified_interfaces = []<EOL>interface_port = self._populate_port_ha_information(<EOL>e_context, router['<STR_LIT>'], router['<STR_LIT:id>'], hag_dbs,<EOL>user_router_id, modified_interfaces)<EOL>if not interface_port:<EOL><INDENT>router['<STR_LIT:status>'] = cisco_constants.ROUTER_INFO_INCOMPLETE<EOL>return<EOL><DEDENT>if modified_interfaces:<EOL><INDENT>router['<STR_LIT>'] = interface_port<EOL><DEDENT><DEDENT>modified_interfaces = []<EOL>for itfc in router.get(bc.constants.INTERFACE_KEY, []):<EOL><INDENT>interface_port = self._populate_port_ha_information(<EOL>e_context, itfc, router['<STR_LIT:id>'], hag_dbs, user_router_id,<EOL>modified_interfaces)<EOL>if not interface_port:<EOL><INDENT>router['<STR_LIT:status>'] = cisco_constants.ROUTER_INFO_INCOMPLETE<EOL>return<EOL><DEDENT><DEDENT>if modified_interfaces:<EOL><INDENT>router[bc.constants.INTERFACE_KEY] = modified_interfaces<EOL><DEDENT>if fips:<EOL><INDENT>router[bc.constants.FLOATINGIP_KEY] = fips<EOL><DEDENT>
To be called when router information, including router interface
        list, (for the l3_cfg_agent) has been collected so it is extended
        with ha information.