'Compare swift.conf md5sum with that on remote hosts
:param hosts: set of hosts to check. in the format of:
set([(\'127.0.0.1\', 6020), (\'127.0.0.2\', 6030)])
:param printfn: function to print text; defaults to print()'

def get_swiftconfmd5(self, hosts, printfn=print):

    matches = 0
    errors = 0
    conf_sum = md5_hash_for_file(SWIFT_CONF_FILE)
    recon = Scout('swiftconfmd5', self.verbose, self.suppress_errors, self.timeout)
    printfn(('[%s]    Checking    swift.conf    md5sum' % self._ptime()))
    if self.verbose:
        printfn(('->    On    disk    swift.conf    md5sum:    %s' % (conf_sum,)))
    for (url, response, status, ts_start, ts_end) in self.pool.imap(recon.scout, hosts):
        if (status == 200):
            if (response[SWIFT_CONF_FILE] != conf_sum):
                printfn(("!!    %s    (%s)    doesn't    match    on    disk    md5sum" % (url, response[SWIFT_CONF_FILE])))
            else:
                matches = (matches + 1)
                if self.verbose:
                    printfn(('->    %s    matches.' % url))
        else:
            errors = (errors + 1)
    printfn(('%s/%s    hosts    matched,    %s    error[s]    while    checking    hosts.' % (matches, len(hosts), errors)))
    printfn(('=' * 79))
