diff --git a/datacenterlight/tasks.py b/datacenterlight/tasks.py index 36c399de..3db6eb54 100644 --- a/datacenterlight/tasks.py +++ b/datacenterlight/tasks.py @@ -1,5 +1,4 @@ from datetime import datetime -from time import sleep from celery.exceptions import MaxRetriesExceededError from celery.utils.log import get_task_logger @@ -220,80 +219,3 @@ def create_vm_task(self, vm_template_id, user, specs, template, return return vm_id - - -@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) -def delete_vm_task(self, user_id, vm_id): - return_value = False - owner = CustomUser.objects.get(id=user_id) - logger.debug( - "Running delete_vm_task on {host} for {user} and VM {vm_id}".format( - host=current_task.request.hostname, user=owner.email, - vm_id=vm_id - ) - ) - try: - manager = OpenNebulaManager( - email=owner.email, - password=owner.password - ) - - terminated = manager.delete_vm(vm_id) - - if not terminated: - logger.error( - "manager.delete_vm returned False. Hence, error making " - "xml-rpc call to delete vm failed." - ) - else: - logger.debug("Start polling for delete vm") - # Time between two get_vm polls in seconds - inter_get_vm_poll_time = 5 - for t in range(15): - try: - manager.get_vm(vm_id) - except BaseException as base_exception: - logger.error( - "manager.get_vm returned exception: {details}. Hence, " - "the vm with id {vm_id} is no more accessible".format( - details=str(base_exception), vm_id=vm_id - ) - ) - return_value = True - break - else: - logger.debug( - "VM {vm_id} is still accessible. So, sleeping for " - "{sleep_time} and then retrying".format( - vm_id=vm_id, sleep_time=inter_get_vm_poll_time - ) - ) - sleep(inter_get_vm_poll_time) - if return_value is False: - raise Exception("Could not delete vm {}".format(vm_id)) - except Exception as e: - logger.error( - "An exception occurred while deleting VM {vm_id}. Details " - "below".format( - vm_id=vm_id - ) - ) - logger.error(str(e)) - try: - retry_task(self) - except MaxRetriesExceededError: - msg_text = 'Finished {} retries for delete_vm_task'.format( - self.request.retries - ) - logger.error(msg_text) - # Try sending email and stop - email_data = { - 'subject': '{} CELERY TASK ERROR: {}'.format(settings.DCL_TEXT, - msg_text), - 'from_email': current_task.request.hostname, - 'to': settings.DCL_ERROR_EMAILS_TO_LIST, - 'body': ',\n'.join(str(i) for i in self.request.args) - } - email = EmailMessage(**email_data) - email.send() - return return_value