CC-5888: Handle file deletion if the file is stored in the cloud
This commit is contained in:
parent
aaee522ec6
commit
7ca6b91cdf
4 changed files with 17 additions and 17 deletions
|
@ -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(
|
||||||
|
|
|
@ -330,10 +330,12 @@ class Rest_MediaController extends Zend_Rest_Controller
|
||||||
|
|
||||||
$requestData = json_decode($this->getRequest()->getRawBody(), true);
|
$requestData = json_decode($this->getRequest()->getRawBody(), true);
|
||||||
|
|
||||||
$con = Propel::getConnection();
|
if ($requestData["import_status"] == 1) {
|
||||||
$storedFile = new Application_Model_StoredFile(CcFilesQuery::create()->findPk($id), $con);
|
$con = Propel::getConnection();
|
||||||
|
$storedFile = new Application_Model_StoredFile(CcFilesQuery::create()->findPk($id), $con);
|
||||||
$storedFile->doFileDeletionCleanup($requestData["filesize"]);
|
|
||||||
|
$storedFile->doFileDeletionCleanup($requestData["filesize"]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getId()
|
private function getId()
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue