code: def collect_state(self, configurations):
          
          num_ex_gw_ports = 0
          num_interfaces = 0
          num_floating_ips = 0
          router_infos = self.router_info.values()
          num_routers = len(router_infos)
          num_hd_routers = collections.defaultdict(int)
          for ri in router_infos:
              ex_gw_port = ri.router.get('gw_port')
              if ex_gw_port:
                  num_ex_gw_ports += 1
              num_interfaces += len(ri.router.get(
                  bc.constants.INTERFACE_KEY, []))
              num_floating_ips += len(ri.router.get(
                  bc.constants.FLOATINGIP_KEY, []))
              hd = ri.router['hosting_device']
              if hd:
                  num_hd_routers[hd['id']] += 1
          routers_per_hd = dict((hd_id, {'routers': num})
                                for hd_id, num in num_hd_routers.items())
          non_responding = self._dev_status.get_backlogged_hosting_devices()
          configurations['total routers'] = num_routers
          configurations['total ex_gw_ports'] = num_ex_gw_ports
          configurations['total interfaces'] = num_interfaces
          configurations['total floating_ips'] = num_floating_ips
          configurations['hosting_devices'] = routers_per_hd
          configurations['non_responding_hosting_devices'] = non_responding
          return configurations
docs: Collect state from this helper.
  
          A set of attributes which summarizes the state of the routers and
          configurations managed by this config agent.
          :param configurations: dict of configuration values
          :return dict of updated configuration values