diff --git a/hosting/views.py b/hosting/views.py index 5e006fee..c16b6d07 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -1400,7 +1400,7 @@ class VirtualMachineView(LoginRequiredMixin, View): terminated = manager.delete_vm(vm.id) if not terminated: - logger.debug( + logger.error( "manager.delete_vm returned False. Hence, error making " "xml-rpc call to delete vm failed." ) @@ -1410,6 +1410,9 @@ class VirtualMachineView(LoginRequiredMixin, View): try: manager.get_vm(vm.id) except WrongIdError: + logger.error( + "VM {} not found. So, its terminated.".format(vm.id) + ) response['status'] = True response['text'] = ugettext('Terminated') vm_detail_obj = VMDetail.objects.filter( @@ -1427,6 +1430,12 @@ class VirtualMachineView(LoginRequiredMixin, View): break else: sleep(2) + if not response['status']: + response['details'] = ( + "Called VM terminate xml-rpc and waited for over " + "30 seconds for the VM to disappear. But, it did " + "not happen. So, please verify!" + ) context = { 'vm_name': vm_name, 'base_url': "{0}://{1}".format( @@ -1447,11 +1456,13 @@ class VirtualMachineView(LoginRequiredMixin, View): email = BaseEmail(**email_data) email.send() admin_email_body.update(response) + admin_msg_sub = "VM and Subscription for VM {} and user: {}".format( + vm.id, + owner.email + ) email_to_admin_data = { - 'subject': "Deleted VM and Subscription for VM {vm_id} and " - "user: {user}".format( - vm_id=vm.id, user=owner.email - ), + 'subject': ("Deleted " if response['status'] + else "ERROR deleting ") + admin_msg_sub, 'from_email': settings.DCL_SUPPORT_FROM_ADDRESS, 'to': ['info@ungleich.ch'], 'body': "\n".join( diff --git a/opennebula_api/models.py b/opennebula_api/models.py index 3682c5da..0ce5e8a2 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -110,7 +110,7 @@ class OpenNebulaManager(): raise UserExistsError() except OpenNebulaException as err: logger.error('OpenNebulaException error: {0}'.format(err)) - logger.debug('User exists but password is wrong') + logger.error('User exists but password is wrong') raise UserCredentialError() except WrongNameError: @@ -148,7 +148,7 @@ class OpenNebulaManager(): ) return opennebula_user except ConnectionRefusedError: - logger.info( + logger.error( 'Could not connect to host: {host} via protocol {protocol}'.format( host=settings.OPENNEBULA_DOMAIN, protocol=settings.OPENNEBULA_PROTOCOL) @@ -160,7 +160,7 @@ class OpenNebulaManager(): user_pool = oca.UserPool(self.oneadmin_client) user_pool.info() except ConnectionRefusedError: - logger.info( + logger.error( 'Could not connect to host: {host} via protocol {protocol}'.format( host=settings.OPENNEBULA_DOMAIN, protocol=settings.OPENNEBULA_PROTOCOL) @@ -174,7 +174,7 @@ class OpenNebulaManager(): vm_pool.info() return vm_pool except AttributeError: - logger.info('Could not connect via client, using oneadmin instead') + logger.error('Could not connect via client, using oneadmin instead') try: vm_pool = oca.VirtualMachinePool(self.oneadmin_client) vm_pool.info(filter=-2) @@ -183,7 +183,7 @@ class OpenNebulaManager(): raise ConnectionRefusedError except ConnectionRefusedError: - logger.info( + logger.error( 'Could not connect to host: {host} via protocol {protocol}'.format( host=settings.OPENNEBULA_DOMAIN, protocol=settings.OPENNEBULA_PROTOCOL) @@ -325,14 +325,14 @@ class OpenNebulaManager(): ) vm_terminated = True except socket.timeout as socket_err: - logger.info("Socket timeout error: {0}".format(socket_err)) + logger.error("Socket timeout error: {0}".format(socket_err)) except OpenNebulaException as opennebula_err: - logger.info( + logger.error( "OpenNebulaException error: {0}".format(opennebula_err)) except OSError as os_err: - logger.info("OSError : {0}".format(os_err)) + logger.error("OSError : {0}".format(os_err)) except ValueError as value_err: - logger.info("ValueError : {0}".format(value_err)) + logger.error("ValueError : {0}".format(value_err)) return vm_terminated @@ -342,7 +342,7 @@ class OpenNebulaManager(): template_pool.info() return template_pool except ConnectionRefusedError: - logger.info( + logger.error( """Could not connect to host: {host} via protocol {protocol}""".format( host=settings.OPENNEBULA_DOMAIN, diff --git a/utils/hosting_utils.py b/utils/hosting_utils.py index 2918deb3..8354f485 100644 --- a/utils/hosting_utils.py +++ b/utils/hosting_utils.py @@ -127,7 +127,7 @@ def get_vm_price_with_vat(cpu, memory, ssd_size, hdd_size=0, vat = vat.quantize(cents, decimal.ROUND_HALF_UP) discount = { 'name': pricing.discount_name, - 'amount': round(float(pricing.discount_amount),2) + 'amount': round(float(pricing.discount_amount), 2) } return (round(float(price), 2), round(float(vat), 2), round(float(vat_percent)), discount)