Download a file from a given host.

        This method renames the file to the given string.

        :param source: Dictionary containing information about host.
        :type source: dict
        :param output_directory: Directory to place output in.
        :type output_directory: str
        :param filename: The filename to rename to.
        :type filename: str
        :returns: Dictionary with information about downloaded file.
        :rtype: dict

def download_from_host(self, source, output_directory, filename):
        """Download a file from a given host.

        This method renames the file to the given string.

        :param source: Dictionary containing information about host.
        :type source: dict
        :param output_directory: Directory to place output in.
        :type output_directory: str
        :param filename: The filename to rename to.
        :type filename: str
        :returns: Dictionary with information about downloaded file.
        :rtype: dict
        """
        result = self._run_command(
            ["plowdown", source["url"], "-o",
                output_directory, "--temp-rename"],
            stderr=open("/dev/null", "w")
        )

        result['host_name'] = source['host_name']

        if 'error' in result:
            return result

        temporary_filename = self.parse_output(
            result['host_name'], result['output'])
        result['filename'] = os.path.join(output_directory, filename)
        result.pop('output')

        os.rename(temporary_filename, result['filename'])

        return result