From 80831c2d85240f2db26620bcf978853543fa2352 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Tue, 6 Aug 2019 09:59:12 -0400 Subject: [PATCH] Set uploader configs in __init__ Now missing configs cause the app to crash right at startup --- atst/domain/csp/file_uploads.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/atst/domain/csp/file_uploads.py b/atst/domain/csp/file_uploads.py index 749dac1b..6c4f04f7 100644 --- a/atst/domain/csp/file_uploads.py +++ b/atst/domain/csp/file_uploads.py @@ -34,7 +34,10 @@ class MockUploader(Uploader): class AzureUploader(Uploader): def __init__(self, config): - self.config = config + self.account_name = config["AZURE_ACCOUNT_NAME"] + self.storage_key = config["AZURE_STORAGE_KEY"] + self.container_name = config["AZURE_TO_BUCKET_NAME"] + self.timeout = timedelta(seconds=config["PERMANENT_SESSION_LIFETIME"]) def get_token(self): """ @@ -45,22 +48,26 @@ class AzureUploader(Uploader): - object_name is a string """ account = CloudStorageAccount( - account_name=self.config["AZURE_ACCOUNT_NAME"], - account_key=self.config["AZURE_STORAGE_KEY"], + account_name=self.account_name, account_key=self.storage_key ) bbs = account.create_block_blob_service() object_name = self.object_name() sas_token = bbs.generate_container_shared_access_signature( - self.config["AZURE_TO_BUCKET_NAME"], + self.container_name, ContainerPermissions.WRITE, - protocol="https" + datetime.utcnow() + self.timeout, + protocol="https", ) return ({"token": sas_token}, object_name) class AwsUploader(Uploader): def __init__(self, config): - self.config = config + self.access_key_id = config["AWS_ACCESS_KEY_ID"] + self.secret_key = config["AWS_SECRET_KEY"] + self.region_name = config["AWS_REGION_NAME"] + self.bucket_name = config["AWS_BUCKET_NAME"] + self.timeout_secs = config["PERMANENT_SESSION_LIFETIME"] def get_token(self): """ @@ -73,15 +80,15 @@ class AwsUploader(Uploader): """ s3_client = boto3.client( "s3", - aws_access_key_id=self.config["AWS_ACCESS_KEY_ID"], - aws_secret_access_key=self.config["AWS_SECRET_KEY"], + aws_access_key_id=self.access_key_id, + aws_secret_access_key=self.secret_key, config=boto3.session.Config( - signature_version="s3v4", region_name=self.config["AWS_REGION_NAME"] + signature_version="s3v4", region_name=self.region_name ), ) object_name = self.object_name() presigned_post = s3_client.generate_presigned_post( - self.config["AWS_BUCKET_NAME"], + self.bucket_name, object_name, ExpiresIn=3600, Conditions=[