def mount_failed(task_uuid, driverCls, provider, identity, volume_id, unmount=False, **celery_task_args): try: logger.debug("mount_failed task started at %s." % datetime.now()) logger.info("task_uuid=%s" % task_uuid) result = app.AsyncResult(task_uuid) with allow_join_result(): exc = result.get(propagate=False) err_str = "Mount Error Traceback:%s" % (result.traceback, ) logger.error(err_str) driver = get_driver(driverCls, provider, identity) volume = driver.get_volume(volume_id) if unmount: tmp_status = 'umount_error' else: tmp_status = 'mount_error' return volume_service.update_volume_metadata( driver, volume, metadata={'tmp_status': tmp_status}) logger.debug("mount_failed task finished at %s." % datetime.now()) except Exception as exc: logger.warn(exc) mount_failed.retry(exc=exc)
def deploy_failed(task_uuid, driverCls, provider, identity, instance_id, **celery_task_args): from core.models.instance import Instance from core.email import send_deploy_failed_email try: logger.debug("deploy_failed task started at %s." % datetime.now()) logger.info("task_uuid=%s" % task_uuid) result = app.AsyncResult(task_uuid) with allow_join_result(): exc = result.get(propagate=False) err_str = "DEPLOYERROR::%s" % (result.traceback, ) logger.error(err_str) driver = get_driver(driverCls, provider, identity) instance = driver.get_instance(instance_id) update_instance_metadata(driver, instance, data={'tmp_status': 'deploy_error'}, replace=False) #Send deploy email core_instance = Instance.objects.get(provider_alias=instance_id) send_deploy_failed_email(core_instance, err_str) logger.debug("deploy_failed task finished at %s." % datetime.now()) except Exception as exc: logger.warn(exc) deploy_failed.retry(exc=exc)
def machine_request_error(task_uuid, machine_request_id): logger.info("machine_request_id=%s" % machine_request_id) logger.info("task_uuid=%s" % task_uuid) result = app.AsyncResult(task_uuid) with allow_join_result(): exc = result.get(propagate=False) err_str = "ERROR - %r Exception:%r" % ( result.result, result.traceback, ) logger.error(err_str) machine_request = MachineRequest.objects.get(id=machine_request_id) machine_request.status = err_str machine_request.save()