<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def step(self, con=None, path=None, peer_table=None, local_inv=None):
 """ Find peers with stale zonefile inventory data, and refresh them. Return True on success Return False on error """

        if path is None:
            path = self.atlasdb_path

        peer_hostports = []
        stale_peers = []

        num_peers = None
        peer_hostports = None

        with AtlasPeerTableLocked(peer_table) as ptbl:
            num_peers = len(ptbl.keys())
            peer_hostports = ptbl.keys()[:]

            # who are we going to ping?
            # someone we haven't pinged in a while, chosen at random
            for peer in peer_hostports:
                if not atlas_peer_has_fresh_zonefile_inventory( peer, peer_table=ptbl ):
                    # haven't talked to this peer in a while
                    stale_peers.append(peer)
                    log.debug("Peer %s has a stale zonefile inventory" % peer)

        if len(stale_peers) > 0:
            log.debug("Refresh zonefile inventories for %s peers" % len(stale_peers))

        for peer_hostport in stale_peers:
            # refresh everyone
            log.debug("%s: Refresh zonefile inventory for %s" % (self.hostport, peer_hostport))
            res = atlas_peer_refresh_zonefile_inventory( self.hostport, peer_hostport, 0, con=con, path=path, peer_table=peer_table, local_inv=local_inv )
            if res is None:
                log.warning("Failed to refresh zonefile inventory for %s" % peer_hostport)
        
        return