"""Module for working with status notifications.""" import common_config import sns import util def send_failure_status( function, status, filename, error_code=None, description=None, bucket=None): """Send general status notification about file processing by lambda. Args: function (str): Status source lambda function name. status (str): Status. filename (str): Current processed publishing filename. error_code (str): Status error code (for error status). description (str|list): Status description (if any). bucket (str): Current processed publishing source bucket name. Returns: dict: Info about published status message. """ s3_object = {'key': filename} if bucket: s3_object['bucket'] = bucket if isinstance(description, list): description = '; '.join(description) message = { 'function': function, 'status': status, 's3_object': s3_object, 'error_code': error_code, 'error_description': description or None } return sns.send_notification( common_config.SNS_PHF_PROCESSING_FAILED_TOPIC_ARN, util.remove_none_entries(message))