rabbitmq/assetsweeper_message_processor.py (27 lines of code) (raw):
from .MessageProcessor import MessageProcessor
import logging
from gnm_deliverables.models import DeliverableAsset
logger = logging.getLogger(__name__)
class AssetSweeperMessageProcessor(MessageProcessor):
routing_key = "assetsweeper.permissions_monitor.vidispine_job_rerun"
schema = {
"type": "object",
"properties": {
"old": {"type": "string"},
"new": {"type": "string"},
"path": {"type": "string"}
}
}
def valid_message_receive(self, exchange_name, routing_key, delivery_tag, body):
"""
Takes an incoming message, looks up the asset based on the old Vidispine job id. and replaces it with the new one.
:param exchange_name:
:param routing_key:
:param delivery_tag:
:param body:
:return:
"""
logger.debug("Got incoming message: " + str(body))
logger.debug("Exchange name: {0}".format(exchange_name))
logger.debug("Routing key: {0}".format(routing_key))
logger.debug("Delivery tag: {0}".format(delivery_tag))
try:
asset = DeliverableAsset.objects.get(job_id=body["old"])
except DeliverableAsset.DoesNotExist:
logger.info("Received a message for job {0}. Cannot find a matching asset.".format(body["old"]))
return
logger.info("Received a message for job {0}. Tied this job to asset {1} from bundle {2}. Setting job on asset to {3}.".format(body["old"], asset.id, asset.deliverable_id, body["new"]))
asset.job_id = body["new"]
asset.save()