'Run a replication pass once.'

def run_once(self, *args, **kwargs):

    self._zero_stats()
    dirs = []
    ips = whataremyips(self.bind_ip)
    if (not ips):
        self.logger.error(_('ERROR    Failed    to    get    my    own    IPs?'))
        return
    self._local_device_ids = set()
    found_local = False
    for node in self.ring.devs:
        if (node and is_local_device(ips, self.port, node['replication_ip'], node['replication_port'])):
            found_local = True
            if (self.mount_check and (not ismount(os.path.join(self.root, node['device'])))):
                self._add_failure_stats([(failure_dev['replication_ip'], failure_dev['device']) for failure_dev in self.ring.devs if failure_dev])
                self.logger.warning((_('Skipping    %(device)s    as    it    is    not    mounted') % node))
                continue
            unlink_older_than(os.path.join(self.root, node['device'], 'tmp'), (time.time() - self.reclaim_age))
            datadir = os.path.join(self.root, node['device'], self.datadir)
            if os.path.isdir(datadir):
                self._local_device_ids.add(node['id'])
                dirs.append((datadir, node['id']))
    if (not found_local):
        self.logger.error("Can't    find    itself    %s    with    port    %s    in    ring    file,    not    replicating", ',    '.join(ips), self.port)
    self.logger.info(_('Beginning    replication    run'))
    for (part, object_file, node_id) in roundrobin_datadirs(dirs):
        self.cpool.spawn_n(self._replicate_object, part, object_file, node_id)
    self.cpool.waitall()
    self.logger.info(_('Replication    run    OVER'))
    self._report_stats()
