Пример #1
0
 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')
Пример #2
0
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')
Пример #3
0
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')
Пример #4
0
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()
Пример #5
0
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()