def add_additional_resource(self, description, location, copy_file=False): """ Add any kind of additional resource. If copy_file is set to False, the location and description will be added as-is. This is useful e.g. for the case of providing a URL to a web-based resource. If copy_file is set to True, we will try to copy the file from the location you have given into the output directory. This only works if the location is a local file. If the location you gave does not exist or points to a file larger than 100 MB, a RuntimeError will be raised. While the file checks are performed immediately (i.e. the file must exist when this function is called), the actual copying only happens once create_files function of the submission object is called. :param description: Description of what the resource is. :type description: string. :param location: Can be either a URL pointing to a web-based resource or a local file path. :type: string :param copy_file: If set to true, will attempt to copy a local file to the tar ball. :type copy_file: bool """ resource = {} resource["description"] = description if copy_file: helpers.check_file_existence(location) helpers.check_file_size(location, upper_limit=100) resource["location"] = os.path.basename(location) else: resource["location"] = location self.additional_resources.append(resource) self.files_to_copy.append(location)
def copy_files(self, outdir): """ Copy the files in the files_to_copy list to the output directory. :param outdir: Output directory path to copy to. :type outdir: string """ for ifile in self.files_to_copy: helpers.check_file_existence(ifile) helpers.check_file_size(ifile, upper_limit=100) shutil.copy2(ifile, outdir)