Move Stripe subscription cancelation before deleting vm
This commit is contained in:
parent
78fa06aa94
commit
7d683e1257
1 changed files with 52 additions and 45 deletions
|
@ -1060,6 +1060,53 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
|
|
||||||
opennebula_vm_id = self.kwargs.get('pk')
|
opennebula_vm_id = self.kwargs.get('pk')
|
||||||
|
|
||||||
|
# Cancel subscription
|
||||||
|
stripe_utils = StripeUtils()
|
||||||
|
error_msg_subject = (
|
||||||
|
'Error canceling subscription for '
|
||||||
|
'{user} and vm id {vm_id}'.format(
|
||||||
|
user=owner.email,
|
||||||
|
vm_id=opennebula_vm_id
|
||||||
|
)
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
hosting_order = HostingOrder.objects.get(
|
||||||
|
vm_id=opennebula_vm_id
|
||||||
|
)
|
||||||
|
result = stripe_utils.unsubscribe_customer(
|
||||||
|
subscription_id=hosting_order.subscription_id
|
||||||
|
)
|
||||||
|
stripe_subscription_obj = result.get('response_object')
|
||||||
|
# Check if the subscription was canceled
|
||||||
|
if (stripe_subscription_obj is None or
|
||||||
|
stripe_subscription_obj.status != 'canceled'):
|
||||||
|
error_msg = result.get('error')
|
||||||
|
logger.error(error_msg_subject)
|
||||||
|
logger.error(error_msg)
|
||||||
|
email_data = {
|
||||||
|
'subject': error_msg_subject,
|
||||||
|
'from_email': settings.DCL_SUPPORT_FROM_ADDRESS,
|
||||||
|
'to': settings.DCL_ERROR_EMAILS_TO_LIST,
|
||||||
|
'body': error_msg,
|
||||||
|
}
|
||||||
|
email = EmailMessage(**email_data)
|
||||||
|
email.send()
|
||||||
|
except HostingOrder.DoesNotExist:
|
||||||
|
error_msg = (
|
||||||
|
"HostingOrder corresponding to vm_id={vm_id} does"
|
||||||
|
"not exist. Hence, can not find subscription to "
|
||||||
|
"cancel ".format(vm_id=opennebula_vm_id)
|
||||||
|
)
|
||||||
|
logger.error(error_msg)
|
||||||
|
email_data = {
|
||||||
|
'subject': error_msg_subject,
|
||||||
|
'from_email': settings.DCL_SUPPORT_FROM_ADDRESS,
|
||||||
|
'to': settings.DCL_ERROR_EMAILS_TO_LIST,
|
||||||
|
'body': error_msg,
|
||||||
|
}
|
||||||
|
email = EmailMessage(**email_data)
|
||||||
|
email.send()
|
||||||
|
|
||||||
manager = OpenNebulaManager(
|
manager = OpenNebulaManager(
|
||||||
email=owner.email,
|
email=owner.email,
|
||||||
password=owner.password
|
password=owner.password
|
||||||
|
@ -1093,54 +1140,14 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
).first()
|
).first()
|
||||||
vm_detail_obj.terminated_at = datetime.utcnow()
|
vm_detail_obj.terminated_at = datetime.utcnow()
|
||||||
vm_detail_obj.save()
|
vm_detail_obj.save()
|
||||||
# Cancel subscription
|
except BaseException as base_exception:
|
||||||
stripe_utils = StripeUtils()
|
logger.error(
|
||||||
error_msg_subject = (
|
"manager.get_vm returned exception: {details}. Hence, "
|
||||||
'Error canceling subscription for '
|
"the vm with id {vm_id} is no more accessible".format(
|
||||||
'{user} and vm id {vm_id}'.format(
|
details=str(base_exception),
|
||||||
user=owner.email,
|
|
||||||
vm_id=opennebula_vm_id
|
vm_id=opennebula_vm_id
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
try:
|
|
||||||
hosting_order = HostingOrder.objects.get(
|
|
||||||
vm_id=opennebula_vm_id
|
|
||||||
)
|
|
||||||
result = stripe_utils.unsubscribe_customer(
|
|
||||||
subscription_id=hosting_order.subscription_id
|
|
||||||
)
|
|
||||||
stripe_subscription_obj = result.get(
|
|
||||||
'response_object')
|
|
||||||
# Check if the subscription was canceled
|
|
||||||
if (stripe_subscription_obj is None or
|
|
||||||
stripe_subscription_obj.status != 'canceled'):
|
|
||||||
error_msg = result.get('error')
|
|
||||||
logger.error(error_msg)
|
|
||||||
email_data = {
|
|
||||||
'subject': error_msg_subject,
|
|
||||||
'from_email': settings.DCL_SUPPORT_FROM_ADDRESS,
|
|
||||||
'to': settings.DCL_ERROR_EMAILS_TO_LIST,
|
|
||||||
'body': error_msg,
|
|
||||||
}
|
|
||||||
email = EmailMessage(**email_data)
|
|
||||||
email.send()
|
|
||||||
except HostingOrder.DoesNotExist:
|
|
||||||
error_msg = (
|
|
||||||
"HostingOrder corresponding to vm_id={vm_id} does"
|
|
||||||
"not exist. Hence, can not find subscription to "
|
|
||||||
"cancel ".format(vm_id=opennebula_vm_id)
|
|
||||||
)
|
|
||||||
logger.error(error_msg)
|
|
||||||
email_data = {
|
|
||||||
'subject': error_msg_subject,
|
|
||||||
'from_email': settings.DCL_SUPPORT_FROM_ADDRESS,
|
|
||||||
'to': settings.DCL_ERROR_EMAILS_TO_LIST,
|
|
||||||
'body': error_msg,
|
|
||||||
}
|
|
||||||
email = EmailMessage(**email_data)
|
|
||||||
email.send()
|
|
||||||
break
|
|
||||||
except BaseException:
|
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
sleep(2)
|
sleep(2)
|
||||||
|
|
Loading…
Reference in a new issue