Merge branch 'task/3736/refactor_compute_vm_price' into task/3730/refactor_price_parameter
This commit is contained in:
commit
b17af3bb09
5 changed files with 49 additions and 24 deletions
|
@ -12,6 +12,7 @@ from datacenterlight.models import VMTemplate
|
||||||
from datacenterlight.tasks import create_vm_task
|
from datacenterlight.tasks import create_vm_task
|
||||||
from membership.models import StripeCustomer
|
from membership.models import StripeCustomer
|
||||||
from opennebula_api.serializers import VMTemplateSerializer
|
from opennebula_api.serializers import VMTemplateSerializer
|
||||||
|
from utils.hosting_utils import get_vm_price
|
||||||
from utils.models import BillingAddress
|
from utils.models import BillingAddress
|
||||||
from utils.stripe_utils import StripeUtils
|
from utils.stripe_utils import StripeUtils
|
||||||
|
|
||||||
|
@ -94,12 +95,11 @@ class CeleryTaskTestCase(TestCase):
|
||||||
cpu = specs.get('cpu')
|
cpu = specs.get('cpu')
|
||||||
memory = specs.get('memory')
|
memory = specs.get('memory')
|
||||||
disk_size = specs.get('disk_size')
|
disk_size = specs.get('disk_size')
|
||||||
amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6)
|
amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory,
|
||||||
plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
|
disk_size=disk_size)
|
||||||
cpu=cpu,
|
plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
|
||||||
memory=memory,
|
memory=memory,
|
||||||
disk_size=disk_size)
|
disk_size=disk_size)
|
||||||
|
|
||||||
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
||||||
ram=memory,
|
ram=memory,
|
||||||
ssd=disk_size,
|
ssd=disk_size,
|
||||||
|
|
|
@ -17,6 +17,7 @@ from opennebula_api.models import OpenNebulaManager
|
||||||
from opennebula_api.serializers import VirtualMachineTemplateSerializer, \
|
from opennebula_api.serializers import VirtualMachineTemplateSerializer, \
|
||||||
VMTemplateSerializer
|
VMTemplateSerializer
|
||||||
from utils.forms import BillingAddressForm
|
from utils.forms import BillingAddressForm
|
||||||
|
from utils.hosting_utils import get_vm_price
|
||||||
from utils.mailer import BaseEmail
|
from utils.mailer import BaseEmail
|
||||||
from utils.stripe_utils import StripeUtils
|
from utils.stripe_utils import StripeUtils
|
||||||
from utils.tasks import send_plain_email_task
|
from utils.tasks import send_plain_email_task
|
||||||
|
@ -531,12 +532,11 @@ class OrderConfirmationView(DetailView):
|
||||||
cpu = specs.get('cpu')
|
cpu = specs.get('cpu')
|
||||||
memory = specs.get('memory')
|
memory = specs.get('memory')
|
||||||
disk_size = specs.get('disk_size')
|
disk_size = specs.get('disk_size')
|
||||||
amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6)
|
amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory,
|
||||||
plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
|
disk_size=disk_size)
|
||||||
cpu=cpu,
|
plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
|
||||||
memory=memory,
|
memory=memory,
|
||||||
disk_size=disk_size)
|
disk_size=disk_size)
|
||||||
|
|
||||||
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
||||||
ram=memory,
|
ram=memory,
|
||||||
ssd=disk_size,
|
ssd=disk_size,
|
||||||
|
|
|
@ -35,6 +35,7 @@ from utils.mailer import BaseEmail
|
||||||
from utils.stripe_utils import StripeUtils
|
from utils.stripe_utils import StripeUtils
|
||||||
from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \
|
from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \
|
||||||
LoginViewMixin
|
LoginViewMixin
|
||||||
|
from utils.hosting_utils import get_vm_price
|
||||||
from .forms import HostingUserSignupForm, HostingUserLoginForm, \
|
from .forms import HostingUserSignupForm, HostingUserLoginForm, \
|
||||||
UserHostingKeyForm, generate_ssh_key_name
|
UserHostingKeyForm, generate_ssh_key_name
|
||||||
from .mixins import ProcessVMSelectionMixin
|
from .mixins import ProcessVMSelectionMixin
|
||||||
|
@ -724,12 +725,11 @@ class OrdersHostingDetailView(LoginRequiredMixin,
|
||||||
cpu = specs.get('cpu')
|
cpu = specs.get('cpu')
|
||||||
memory = specs.get('memory')
|
memory = specs.get('memory')
|
||||||
disk_size = specs.get('disk_size')
|
disk_size = specs.get('disk_size')
|
||||||
amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6)
|
amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory,
|
||||||
plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
|
disk_size=disk_size)
|
||||||
cpu=cpu,
|
plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
|
||||||
memory=memory,
|
memory=memory,
|
||||||
disk_size=disk_size)
|
disk_size=disk_size)
|
||||||
|
|
||||||
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
||||||
ram=memory,
|
ram=memory,
|
||||||
ssd=disk_size,
|
ssd=disk_size,
|
||||||
|
@ -775,8 +775,8 @@ class OrdersHostingDetailView(LoginRequiredMixin,
|
||||||
'redirect': reverse('hosting:virtual_machines'),
|
'redirect': reverse('hosting:virtual_machines'),
|
||||||
'msg_title': str(_('Thank you for the order.')),
|
'msg_title': str(_('Thank you for the order.')),
|
||||||
'msg_body': str(_('Your VM will be up and running in a few moments.'
|
'msg_body': str(_('Your VM will be up and running in a few moments.'
|
||||||
' We will send you a confirmation email as soon as'
|
' We will send you a confirmation email as soon as'
|
||||||
' it is ready.'))
|
' it is ready.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
return HttpResponse(json.dumps(response),
|
return HttpResponse(json.dumps(response),
|
||||||
|
|
|
@ -9,3 +9,16 @@ def get_all_public_keys(customer):
|
||||||
"""
|
"""
|
||||||
return UserHostingKey.objects.filter(user_id=customer.id).values_list(
|
return UserHostingKey.objects.filter(user_id=customer.id).values_list(
|
||||||
"public_key", flat=True)
|
"public_key", flat=True)
|
||||||
|
|
||||||
|
|
||||||
|
def get_vm_price(cpu, memory, disk_size):
|
||||||
|
"""
|
||||||
|
A helper function that computes price of a VM from given cpu, ram and
|
||||||
|
ssd parameters
|
||||||
|
|
||||||
|
:param cpu: Number of cores of the VM
|
||||||
|
:param memory: RAM of the VM
|
||||||
|
:param disk_size: Disk space of the VM
|
||||||
|
:return: The price of the VM
|
||||||
|
"""
|
||||||
|
return (cpu * 5) + (memory * 2) + (disk_size * 0.6)
|
||||||
|
|
|
@ -238,7 +238,7 @@ class StripeUtils(object):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_stripe_plan_id(cpu, ram, ssd, version, app='dcl', hdd=None):
|
def get_stripe_plan_id(cpu, ram, ssd, version, app='dcl', hdd=None):
|
||||||
"""
|
"""
|
||||||
Returns the stripe plan id string of the form
|
Returns the Stripe plan id string of the form
|
||||||
`dcl-v1-cpu-2-ram-5gb-ssd-10gb` based on the input parameters
|
`dcl-v1-cpu-2-ram-5gb-ssd-10gb` based on the input parameters
|
||||||
|
|
||||||
:param cpu: The number of cores
|
:param cpu: The number of cores
|
||||||
|
@ -256,7 +256,19 @@ class StripeUtils(object):
|
||||||
if hdd is not None:
|
if hdd is not None:
|
||||||
dcl_plan_string = '{dcl_plan_string}-hdd-{hdd}gb'.format(
|
dcl_plan_string = '{dcl_plan_string}-hdd-{hdd}gb'.format(
|
||||||
dcl_plan_string=dcl_plan_string, hdd=hdd)
|
dcl_plan_string=dcl_plan_string, hdd=hdd)
|
||||||
stripe_plan_id_string = '{app}-v{version}-{plan}'.format(app=app,
|
stripe_plan_id_string = '{app}-v{version}-{plan}'.format(
|
||||||
version=version,
|
app=app,
|
||||||
plan=dcl_plan_string)
|
version=version,
|
||||||
|
plan=dcl_plan_string)
|
||||||
return stripe_plan_id_string
|
return stripe_plan_id_string
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_stripe_plan_name(cpu, memory, disk_size):
|
||||||
|
"""
|
||||||
|
Returns the Stripe plan name
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
return "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
|
||||||
|
cpu=cpu,
|
||||||
|
memory=memory,
|
||||||
|
disk_size=disk_size)
|
||||||
|
|
Loading…
Reference in a new issue