CC-5888: Handle file deletion if the file is stored in the cloud

This commit is contained in:
drigato 2014-07-16 12:03:22 -04:00
parent aaee522ec6
commit 7ca6b91cdf
4 changed files with 17 additions and 17 deletions

View file

@ -402,6 +402,8 @@ SQL;
$CC_CONFIG = Config::getConfig(); $CC_CONFIG = Config::getConfig();
$apiKey = $CC_CONFIG["apiKey"][0]; $apiKey = $CC_CONFIG["apiKey"][0];
//If the file was successfully deleted from the cloud the analyzer
//will make a request to the Media API to do the deletion cleanup.
$callbackUrl = 'http://'.$_SERVER['HTTP_HOST'].'/rest/media/'.$file_id.'/delete-success'; $callbackUrl = 'http://'.$_SERVER['HTTP_HOST'].'/rest/media/'.$file_id.'/delete-success';
Application_Model_RabbitMq::SendDeleteMessageToAnalyzer( Application_Model_RabbitMq::SendDeleteMessageToAnalyzer(

View file

@ -330,11 +330,13 @@ class Rest_MediaController extends Zend_Rest_Controller
$requestData = json_decode($this->getRequest()->getRawBody(), true); $requestData = json_decode($this->getRequest()->getRawBody(), true);
if ($requestData["import_status"] == 1) {
$con = Propel::getConnection(); $con = Propel::getConnection();
$storedFile = new Application_Model_StoredFile(CcFilesQuery::create()->findPk($id), $con); $storedFile = new Application_Model_StoredFile(CcFilesQuery::create()->findPk($id), $con);
$storedFile->doFileDeletionCleanup($requestData["filesize"]); $storedFile->doFileDeletionCleanup($requestData["filesize"]);
} }
}
private function getId() private function getId()
{ {

View file

@ -17,7 +17,6 @@ class CloudStorageUploader:
file_name, extension = os.path.splitext(file_base_name) file_name, extension = os.path.splitext(file_base_name)
object_name = "%s_%s%s" % (file_name, str(uuid.uuid4()), extension) object_name = "%s_%s%s" % (file_name, str(uuid.uuid4()), extension)
#cls = get_driver(getattr(Provider, self._provider))
driver = self.get_cloud_driver() driver = self.get_cloud_driver()
try: try:
@ -49,16 +48,14 @@ class CloudStorageUploader:
def delete_obj(self, obj_name): def delete_obj(self, obj_name):
driver = self.get_cloud_driver() driver = self.get_cloud_driver()
return_msg = dict()
return_msg["success"] = False
try: try:
cloud_obj = driver.get_object(container_name=self._bucket, cloud_obj = driver.get_object(container_name=self._bucket,
object_name=obj_name) object_name=obj_name)
return_msg["filesize"] = getattr(cloud_obj, 'size') filesize = getattr(cloud_obj, 'size')
return_msg["success"] = driver.delete_object(obj=cloud_obj) driver.delete_object(obj=cloud_obj)
return return_msg return filesize
except ObjectDoesNotExistError: except ObjectDoesNotExistError:
logging.info("Could not find object on %s" % self._provider) raise Exception("Could not find object on %s" % self._provider)
def get_cloud_driver(self): def get_cloud_driver(self):
cls = get_driver(getattr(Provider, self._provider)) cls = get_driver(getattr(Provider, self._provider))

View file

@ -176,12 +176,11 @@ class MessageListener:
elif message_type == "delete": elif message_type == "delete":
object_name = msg_dict["object_name"] object_name = msg_dict["object_name"]
csu = CloudStorageUploader(self._provider, self._bucket, self._api_key, self._api_key_secret) csu = CloudStorageUploader(self._provider, self._bucket, self._api_key, self._api_key_secret)
response = csu.delete_obj(object_name) filesize = csu.delete_obj(object_name)
if response["success"]: return_data = dict()
audio_metadata = dict() return_data["filesize"] = filesize
audio_metadata["delete_success"] = True return_data["import_status"] = 1
audio_metadata["filesize"] = response["filesize"] StatusReporter.report_success_to_callback_url(callback_url, api_key, return_data)
StatusReporter.report_success_to_callback_url(callback_url, api_key, audio_metadata)
except KeyError as e: except KeyError as e:
# A field in msg_dict that we needed was missing (eg. audio_file_path) # A field in msg_dict that we needed was missing (eg. audio_file_path)