def upload_new_backups_to_ftp_servers(backups, vmPathBackupFolderTree):
    failedUploads = {}

    logging.debug('-----------')
    logging.debug('FIX- upload_new_backups_to_ftp_server')
    logging.debug(backups)
    logging.debug('-----------')
    for vmName in backups:
        logging.debug(backups[vmName])
    logging.debug('end fix -----------')


    for vmName in backups:
        try:
            ftphost = _get_ftpHost_by_vmName(vmName)
            logging.info("** backup's upload for VM {0} with ftp server {1} will now start!".format(vmName, ftphost.hostname))
            ftphost.connect_to_host()
            backupsToDelete, backupsToUpload = backupManager.get_backups_for_upload_and_delete(backups, ftphost)
            ftphost.disconnect_from_host()
            # unico pezzo dove non e richiesta una connessione aperta

            if len(backupsToUpload) > 0:
                if _use_real_ftp_sync:
                    backupManager.upload_backups_to_ftpHost(backupsToUpload, ftphost, vmName, vmPathBackupFolderTree, uploadMethod=_upload_method)

        except Exception as ex:
            logging.error('An error occurred during the upload of ' + vmName)
            logging.error(ex)
            failedUploads[vmName] = backups

    return failedUploads
def deleted_old_backups_from_ftp_servers(backups):
    ftpServersCleaned = []
    for vmName in backups:
        connectionInfo = _get_connectionInfo_by_vmName(vmName)
        if connectionInfo[0] not in ftpServersCleaned:
            logging.warn("* a connection to ftp server [{0}] will be performed to see if contains old backups. "\
                         "If old backups are found, they will be deleted".format(connectionInfo[0]))
            ftpServersCleaned.append(connectionInfo[0])
            ftphost = _get_ftpHost_by_vmName(vmName)
            ftphost.connect_to_host()

            backupsOnRemoteFtpServer =  backupManager.getBackupsFromFtpServer(ftphost)
            logging.debug("** Ftp Server [{0}] stores the following backups: \n{1}".format(connectionInfo[0],
                backupRender.get_backups_infos(backupsOnRemoteFtpServer)))

            backupsToDelete, backupsToUpload = backupManager.get_backups_for_upload_and_delete(backups, ftphost)
            if len(backupsToDelete) > 0:
                logging.warn(
                    "** Ftp Server [{0}] contains {1} old backups that will be now deleted.".format(connectionInfo[0],
                        len(backupsToDelete)))
                logging.debug("** this are the backups that will be deleted:\n{0}".format(
                    backupRender.get_backups_infos(backupsToDelete)))
                if _use_real_ftp_sync:
                    backupManager.delete_backups_from_ftpHost(backupsToDelete, ftphost)
            else:
                logging.info(
                    "Ftp Server [{0}] does not contains old backups. No file deletions will be performed.".format(
                        connectionInfo[0]))

            ftphost.disconnect_from_host()