From 83420510ee4dbee22b7c647d7441722b96fc7dc0 Mon Sep 17 00:00:00 2001 From: Kraiem Taha Yassine Date: Fri, 8 Jul 2022 16:13:21 +0200 Subject: [PATCH] v1.7.0 hot fixes feat(api): refactored s3 helper feat(api): fixed s3 undefined tagging --- api/chalicelib/utils/s3.py | 29 +++++++++---------- .../core/sessions_favorite_viewed.py | 28 +++++++++++++++--- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/api/chalicelib/utils/s3.py b/api/chalicelib/utils/s3.py index b6575ccb5..efcb09226 100644 --- a/api/chalicelib/utils/s3.py +++ b/api/chalicelib/utils/s3.py @@ -15,14 +15,19 @@ else: region_name=config("sessions_region")) +def __get_s3_resource(): + if not config("S3_HOST", default=False): + return boto3.resource('s3') + return boto3.resource('s3', endpoint_url=config("S3_HOST"), + aws_access_key_id=config("S3_KEY"), + aws_secret_access_key=config("S3_SECRET"), + config=Config(signature_version='s3v4'), + region_name=config("sessions_region")) + + def exists(bucket, key): try: - boto3.resource('s3', endpoint_url=config("S3_HOST"), - aws_access_key_id=config("S3_KEY"), - aws_secret_access_key=config("S3_SECRET"), - config=Config(signature_version='s3v4'), - region_name=config("sessions_region")) \ - .Object(bucket, key).load() + __get_s3_resource().Object(bucket, key).load() except botocore.exceptions.ClientError as e: if e.response['Error']['Code'] == "404": return False @@ -76,21 +81,13 @@ def get_file(source_bucket, source_key): def rename(source_bucket, source_key, target_bucket, target_key): - s3 = boto3.resource('s3', endpoint_url=config("S3_HOST"), - aws_access_key_id=config("S3_KEY"), - aws_secret_access_key=config("S3_SECRET"), - config=Config(signature_version='s3v4'), - region_name=config("sessions_region")) + s3 = __get_s3_resource() s3.Object(target_bucket, target_key).copy_from(CopySource=f'{source_bucket}/{source_key}') s3.Object(source_bucket, source_key).delete() def schedule_for_deletion(bucket, key): - s3 = boto3.resource('s3', endpoint_url=config("S3_HOST"), - aws_access_key_id=config("S3_KEY"), - aws_secret_access_key=config("S3_SECRET"), - config=Config(signature_version='s3v4'), - region_name=config("sessions_region")) + s3 = __get_s3_resource() s3_object = s3.Object(bucket, key) s3_object.copy_from(CopySource={'Bucket': bucket, 'Key': key}, Expires=datetime.now() + timedelta(days=7), diff --git a/ee/api/chalicelib/core/sessions_favorite_viewed.py b/ee/api/chalicelib/core/sessions_favorite_viewed.py index bef7787d1..896ba4a99 100644 --- a/ee/api/chalicelib/core/sessions_favorite_viewed.py +++ b/ee/api/chalicelib/core/sessions_favorite_viewed.py @@ -46,11 +46,31 @@ def add_viewed_session(project_id, user_id, session_id): def favorite_session(project_id, user_id, session_id): if favorite_session_exists(user_id=user_id, session_id=session_id): - s3_extra.tag_file(session_id=str(session_id), tag_value=config('RETENTION_D_VALUE', default='default')) - s3_extra.tag_file(session_id=str(session_id) + "e", tag_value=config('RETENTION_D_VALUE', default='default')) + key = str(session_id) + try: + s3_extra.tag_file(session_id=key, tag_value=config('RETENTION_D_VALUE', default='default')) + except Exception as e: + print(f"!!!Error while tagging: {key} to default") + print(str(e)) + key = str(session_id) + "e" + try: + s3_extra.tag_file(session_id=key, tag_value=config('RETENTION_D_VALUE', default='default')) + except Exception as e: + print(f"!!!Error while tagging: {key} to default") + print(str(e)) return remove_favorite_session(project_id=project_id, user_id=user_id, session_id=session_id) - s3_extra.tag_file(session_id=str(session_id), tag_value=config('RETENTION_L_VALUE', default='vault')) - s3_extra.tag_file(session_id=str(session_id) + "e", tag_value=config('RETENTION_L_VALUE', default='vault')) + key = str(session_id) + try: + s3_extra.tag_file(session_id=key, tag_value=config('RETENTION_L_VALUE', default='vault')) + except Exception as e: + print(f"!!!Error while tagging: {key} to vault") + print(str(e)) + key = str(session_id) + "e" + try: + s3_extra.tag_file(session_id=key, tag_value=config('RETENTION_L_VALUE', default='vault')) + except Exception as e: + print(f"!!!Error while tagging: {key} to vault") + print(str(e)) return add_favorite_session(project_id=project_id, user_id=user_id, session_id=session_id)