def get(self, coverage_id, environment_type, data_type): available_data_types = ['ntfs'] if data_type.lower() not in available_data_types: raise InvalidArguments('Bad data type {} (expected formats: {}).' .format(data_type, ','.join(available_data_types))) coverage = models.Coverage.get(coverage_id) if coverage is None: raise ObjectNotFound("Coverage {} not found.".format(coverage_id)) if environment_type not in coverage.environments: raise ObjectNotFound("Environment{}' not found.".format(environment_type)) ntfs_file_id = coverage.environments[environment_type].current_ntfs_id ntfs_file = models.get_file_from_gridfs(ntfs_file_id) return flask.send_file(ntfs_file, mimetype='application/zip')
def send_file_to_tyr_and_discard(self, coverage_id, environment_type, file_id): coverage = models.Coverage.get(coverage_id) url = coverage.environments[environment_type].tyr_url file = models.get_file_from_gridfs(file_id) logging.debug('file: %s', file) logger.info('trying to send %s to %s', file.filename, url) #TODO: how to handle timeout? try: response = upload_file(url, file.filename, file) if response.status_code != 200: raise self.retry() else: models.delete_file_from_gridfs(file_id) except: logging.exception('error')
def send_ntfs_to_tyr(self, coverage_id, environment_type): coverage = models.Coverage.get(coverage_id) url = coverage.environments[environment_type].tyr_url ntfs_file = models.get_file_from_gridfs(coverage.environments[environment_type].current_ntfs_id) grid_calendars_file = coverage.get_grid_calendars() response = None if grid_calendars_file: with tempfile.TemporaryDirectory() as tmpdirname: output_ntfs_file = os.path.join(tmpdirname, '{}-database.zip'\ .format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))) logger.debug("Working to generate [{}]".format(output_ntfs_file)) _do_merge_calendar(grid_calendars_file, ntfs_file, output_ntfs_file) logger.info('trying to send data to %s', url) #TODO: how to handle the timeout? with open(output_ntfs_file, 'rb') as file: response = upload_file(url, output_ntfs_file, file) else: response = upload_file(url, ntfs_file.filename, ntfs_file) if response.status_code != 200: raise self.retry()
def send_ntfs_to_tyr(self, coverage_id, environment_type): coverage = models.Coverage.get(coverage_id) url = coverage.environments[environment_type].tyr_url ntfs_file = models.get_file_from_gridfs( coverage.environments[environment_type].current_ntfs_id) grid_calendars_file = coverage.get_grid_calendars() response = None if grid_calendars_file: with tempfile.TemporaryDirectory() as tmpdirname: output_ntfs_file = os.path.join(tmpdirname, '{}-database.zip'\ .format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))) logger.debug("Working to generate [{}]".format(output_ntfs_file)) _do_merge_calendar(grid_calendars_file, ntfs_file, output_ntfs_file) logger.info('trying to send data to %s', url) #TODO: how to handle the timeout? with open(output_ntfs_file, 'rb') as file: response = upload_file(url, output_ntfs_file, file) else: response = upload_file(url, ntfs_file.filename, ntfs_file) if response.status_code != 200: raise self.retry()